aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--.library/IkiWiki/Plugin/copyright.pm49
-rw-r--r--.library/IkiWiki/Plugin/field.pm722
-rw-r--r--.library/IkiWiki/Plugin/getfield.pm126
-rw-r--r--.library/IkiWiki/Plugin/license.pm48
-rw-r--r--.library/IkiWiki/Plugin/reset_mtimes.pm84
-rw-r--r--.library/IkiWiki/Plugin/ymlfront.pm434
-rw-r--r--.templates/autotag.tmpl15
-rw-r--r--.templates/editpage.tmpl81
-rw-r--r--.templates/newsitem.tmpl80
-rw-r--r--.templates/page.tmpl202
-rw-r--r--Hurd/ABITransitionStatus.mdwn9
-rw-r--r--Hurd/AptConfOffline.mdwn28
-rw-r--r--Hurd/CrossPlatformAliases.mdwn8
-rw-r--r--Hurd/ExtTwofsTranslator.mdwn4
-rw-r--r--Hurd/FtpfsTranslator.mdwn7
-rw-r--r--Hurd/GNOME.mdwn11
-rw-r--r--Hurd/HurdDevelopers.mdwn30
-rw-r--r--Hurd/HurdNames.mdwn61
-rw-r--r--Hurd/HurdOnL4.mdwn173
-rw-r--r--Hurd/HurdOnL4/menu.lst55
-rw-r--r--Hurd/InstallNotes.mdwn295
-rw-r--r--Hurd/LuisBustamanteHurdPage.mdwn11
-rw-r--r--Hurd/PppDaemon.mdwn6
-rw-r--r--Hurd/TheGnuHurd.mdwn30
-rw-r--r--Hurd/Translation.mdwn18
-rw-r--r--Hurd/TranslatorExamples.mdwn65
-rw-r--r--Hurd/TranslatorPages.mdwn51
-rw-r--r--Hurd/WhoRunsGNU.mdwn32
-rw-r--r--Mach/PortToL4.mdwn42
-rw-r--r--abac.mdwn6
-rw-r--r--advantages.mdwn77
-rw-r--r--asbestos.mdwn6
-rw-r--r--asking_questions.mdwn23
-rw-r--r--binutils.mdwn20
-rw-r--r--boehm_gc.mdwn17
-rw-r--r--capability.mdwn120
-rw-r--r--challenges.mdwn24
-rw-r--r--colophon.mdwn64
-rw-r--r--colophon/about_the_twiki_to_ikiwiki_conversion.mdwn (renamed from about_the_twiki_to_ikiwiki_conversion.mdwn)8
-rw-r--r--community.mdwn26
-rw-r--r--community/communication.mdwn12
-rw-r--r--community/facebook.mdwn6
-rw-r--r--community/gsoc.mdwn108
-rw-r--r--community/gsoc/2007.mdwn16
-rw-r--r--community/gsoc/2008.mdwn89
-rw-r--r--community/gsoc/2008/minutes-2008-04-25.mdwn (renamed from community/25april08minutes.mdwn)6
-rw-r--r--community/gsoc/2008/minutes-2008-05-02.mdwn (renamed from community/02may08minutes.mdwn)6
-rw-r--r--community/gsoc/2008/minutes-2008-05-16.mdwn (renamed from community/16may08minutes.mdwn)6
-rw-r--r--community/gsoc/2009.mdwn23
-rw-r--r--community/gsoc/2010.mdwn35
-rw-r--r--community/gsoc/organization_application.mdwn271
-rw-r--r--community/gsoc/project_ideas.mdwn1111
-rw-r--r--community/gsoc/project_ideas/cdparanoia.mdwn30
-rw-r--r--community/gsoc/project_ideas/debian_installer.mdwn41
-rw-r--r--community/gsoc/project_ideas/disk_io_performance.mdwn50
-rw-r--r--community/gsoc/project_ideas/download_backends.mdwn47
-rw-r--r--community/gsoc/project_ideas/driver_glue_code.mdwn73
-rw-r--r--community/gsoc/project_ideas/dtrace.mdwn62
-rw-r--r--community/gsoc/project_ideas/file_locking.mdwn38
-rw-r--r--community/gsoc/project_ideas/gccgo.mdwn29
-rw-r--r--community/gsoc/project_ideas/gnat.mdwn27
-rw-r--r--community/gsoc/project_ideas/gnumach_cleanup.mdwn46
-rw-r--r--community/gsoc/project_ideas/hardware_libs.mdwn42
-rw-r--r--community/gsoc/project_ideas/language_bindings.mdwn72
-rw-r--r--community/gsoc/project_ideas/lexical_dot-dot.mdwn40
-rw-r--r--community/gsoc/project_ideas/libcap.mdwn41
-rw-r--r--community/gsoc/project_ideas/libcap/details.mdwn766
-rw-r--r--community/gsoc/project_ideas/libdiskfs_locking.mdwn45
-rw-r--r--community/gsoc/project_ideas/libgtop.mdwn34
-rw-r--r--community/gsoc/project_ideas/maxpath.mdwn46
-rw-r--r--community/gsoc/project_ideas/mtab.mdwn74
-rw-r--r--community/gsoc/project_ideas/namespace-based_translator_selection.mdwn82
-rw-r--r--community/gsoc/project_ideas/nfs.mdwn45
-rw-r--r--community/gsoc/project_ideas/package_manager.mdwn51
-rw-r--r--community/gsoc/project_ideas/perl_python.mdwn41
-rw-r--r--community/gsoc/project_ideas/procfs.mdwn52
-rw-r--r--community/gsoc/project_ideas/pthreads.mdwn49
-rw-r--r--community/gsoc/project_ideas/secure_chroot.mdwn48
-rw-r--r--community/gsoc/project_ideas/server_overriding.mdwn74
-rw-r--r--community/gsoc/project_ideas/sound.mdwn42
-rw-r--r--community/gsoc/project_ideas/tcp_ip_stack.mdwn42
-rw-r--r--community/gsoc/project_ideas/testing_framework.mdwn55
-rw-r--r--community/gsoc/project_ideas/testing_framework/discussion.mdwn272
-rw-r--r--community/gsoc/project_ideas/testsuites.mdwn62
-rw-r--r--community/gsoc/project_ideas/tmpfs.mdwn45
-rw-r--r--community/gsoc/project_ideas/unionfs_boot.mdwn45
-rw-r--r--community/gsoc/project_ideas/unionmount.mdwn11
-rw-r--r--community/gsoc/project_ideas/valgrind.mdwn83
-rw-r--r--community/gsoc/project_ideas/virtualization.mdwn76
-rw-r--r--community/gsoc/project_ideas/vm_tuning.mdwn35
-rw-r--r--community/gsoc/project_ideas/xattr.mdwn47
-rw-r--r--community/gsoc/project_ideas/xmlfs.mdwn54
-rw-r--r--community/gsoc/student_application_form.mdwn227
-rw-r--r--community/gsoc/xorg_ideas.mdwn67
-rw-r--r--community/meetings.mdwn39
-rw-r--r--community/meetings/debconf10.mdwn27
-rw-r--r--community/meetings/eurosys_2009.mdwn25
-rw-r--r--community/meetings/fosdem_2005.mdwn8
-rw-r--r--community/meetings/fosdem_2006.mdwn10
-rw-r--r--community/meetings/fosdem_2007.mdwn19
-rw-r--r--community/meetings/fosdem_2008.mdwn45
-rw-r--r--community/meetings/fosdem_2010.mdwn86
-rw-r--r--community/meetings/fosdem_2011.mdwn36
-rw-r--r--community/meetings/ghm2010.mdwn26
-rw-r--r--community/meetings/ghm2011.mdwn13
-rw-r--r--community/meetings/rmll_2006.mdwn8
-rw-r--r--community/meetings/self-organised.mdwn (renamed from community/meetings/self-organised_2008.mdwn)12
-rw-r--r--community/meetings/stesie_2007-10-12.mdwn6
-rw-r--r--community/scolobb.mdwn166
-rw-r--r--community/weblogs.mdwn17
-rw-r--r--community/weblogs/ArneBab.mdwn16
-rw-r--r--community/weblogs/ArneBab/2008-07-12-codeswarm-movies-for-the-hurd.mdwn16
-rw-r--r--community/weblogs/ArneBab/2008-08-02-gnu_hurd_and_x.mdwn38
-rw-r--r--community/weblogs/ArneBab/2011-04-06-application-pyhurd.mdwn148
-rw-r--r--community/weblogs/ArneBab/2011-04-06-application-python-test.mdwn1
-rw-r--r--community/weblogs/ArneBab/Hurd-showcase-qemu-image.mdwn111
-rw-r--r--community/weblogs/ArneBab/What_a_Hurd_release_should_be_able_to_do_for_me.mdwn40
-rw-r--r--community/weblogs/ArneBab/hurd-gsoc2008-code_swarm.mdwn11
-rw-r--r--community/weblogs/ArneBab/metadata-and-program-communication-akonadi-nepomuk-dbus.mdwn20
-rw-r--r--community/weblogs/ArneBab/niches_for_the_hurd.mdwn361
-rw-r--r--community/weblogs/ArneBab/porting-simple-packages.mdwn72
-rw-r--r--community/weblogs/ArneBab/tasks-for-the-hurd.mdwn63
-rw-r--r--community/weblogs/ArneBab/technical-advantages-of-the-hurd.mdwn56
-rw-r--r--community/weblogs/ArneBab/technical-advantages-of-the-hurd/discussion.mdwn248
-rw-r--r--community/weblogs/ArneBab/what_we_need.mdwn39
-rw-r--r--community/weblogs/ArneBab/xkb-woes-trying-to-get-a-german-keyboard-layout.mdwn6
-rw-r--r--community/weblogs/antrik.mdwn15
-rw-r--r--community/weblogs/antrik/hurd-mission-statement.mdwn39
-rw-r--r--community/weblogs/antrik/plan9-and-the-hurd-major-differences.mdwn50
-rw-r--r--community/weblogs/hook.mdwn25
-rw-r--r--community/weblogs/hook/Post.mdwn27
-rw-r--r--community/weblogs/tschwinge.mdwn15
-rw-r--r--community/weblogs/tschwinge/2009-06-23_split_patch_and_git_rebase_--interactive.mdwn545
-rw-r--r--community/weblogs/tschwinge/2009-06-23_split_patch_and_git_rebase_--interactive/0001-Bla.patch.bz2bin0 -> 33750 bytes
-rw-r--r--community/weblogs/tschwinge/2009-06-24_importing_from_gnu_arch_into_git.mdwn104
-rw-r--r--config_edittemplate.mdwn14
-rw-r--r--config_edittemplate/open_issue_page.mdwn33
-rw-r--r--config_edittemplate/regular_page.mdwn21
-rw-r--r--confused_deputy.mdwn6
-rw-r--r--contact_us.mdwn26
-rw-r--r--contributing.mdwn205
-rw-r--r--contributing/copyright_assignment.mdwn28
-rw-r--r--contributing/discussion.mdwn21
-rw-r--r--contributing/questionnaire.mdwn13
-rw-r--r--contributing/web_pages.mdwn245
-rw-r--r--contributing/web_pages/news.mdwn36
-rw-r--r--contributing/web_pages/news/2011-q2-ps.mdwn131
-rw-r--r--contributing/web_pages/news/moth_next.mdwn77
-rw-r--r--contributing/web_pages/news/skeleton.mdwn44
-rw-r--r--contributing/web_pages/news/writing_the_moth.mdwn77
-rw-r--r--contributing/wiki.mdwn167
-rw-r--r--copyright.html1
-rw-r--r--copyright.mdwn2
-rw-r--r--dde.mdwn42
-rw-r--r--designation.mdwn6
-rw-r--r--destructive_interference.mdwn8
-rw-r--r--documentation.mdwn85
-rw-r--r--donate.mdwn104
-rw-r--r--donate/foss_factory/logo.pngbin0 -> 3558 bytes
-rw-r--r--download.mdwn (renamed from hurd/gettinghelp.mdwn)10
-rw-r--r--dsl.mdwn22
-rw-r--r--emulation.mdwn11
-rw-r--r--extensibility.mdwn13
-rw-r--r--faq.mdwn28
-rw-r--r--faq/ghamp.mdwn18
-rw-r--r--faq/how_many_developers.mdwn63
-rw-r--r--faq/how_many_developers/discussion.mdwn61
-rw-r--r--faq/posix_compatibility.mdwn32
-rw-r--r--faq/posix_compatibility/discussion.mdwn25
-rw-r--r--faq/sharing_the_user_space.mdwn23
-rw-r--r--faq/smp.mdwn28
-rw-r--r--faq/system_port.mdwn47
-rw-r--r--faq/which_microkernel.mdwn55
-rw-r--r--faq/which_microkernel/discussion.mdwn94
-rw-r--r--fdl.texi10
-rw-r--r--gcc.mdwn20
-rw-r--r--gdb.mdwn33
-rw-r--r--gdb/backtrace.mdwn6
-rwxr-xr-xgenerate_interface_redir_pages25
-rw-r--r--getting_help.mdwn29
-rw-r--r--glibc.mdwn77
-rw-r--r--glibc/debugging.mdwn11
-rw-r--r--glibc/debugging/ld_so_console.mdwn20
-rw-r--r--glibc/debugging/ld_so_console/dl-sysdep.c.patch63
-rw-r--r--glibc/discussion.mdwn25
-rw-r--r--glibc/environment_variable.mdwn15
-rw-r--r--glibc/fallocate.mdwn17
-rw-r--r--glibc/file_descriptor.mdwn13
-rw-r--r--glibc/fork.mdwn66
-rw-r--r--glibc/poll.mdwn15
-rw-r--r--glibc/process.mdwn26
-rw-r--r--glibc/signal.mdwn35
-rw-r--r--glibc/signal/signal_thread.mdwn100
-rw-r--r--gnu.mdwn21
-rw-r--r--grub.mdwn (renamed from unsorted/GrubNotes.mdwn)81
-rw-r--r--grub/tftp_boot.mdwn (renamed from Mach/AdvancedGrubUsage.mdwn)0
-rw-r--r--history.mdwn94
-rw-r--r--history/hurd-announce47
-rw-r--r--history/hurd-announce2143
-rw-r--r--history/hurd-flash22
-rw-r--r--history/hurd-flash1025
-rw-r--r--history/hurd-flash1125
-rw-r--r--history/hurd-flash1276
-rw-r--r--history/hurd-flash13120
-rw-r--r--history/hurd-flash1462
-rw-r--r--history/hurd-flash1560
-rw-r--r--history/hurd-flash2152
-rw-r--r--history/hurd-flash377
-rw-r--r--history/hurd-flash4101
-rw-r--r--history/hurd-flash523
-rw-r--r--history/hurd-flash646
-rw-r--r--history/hurd-flash717
-rw-r--r--history/hurd-flash873
-rw-r--r--history/hurd-flash939
-rw-r--r--history/port_to_another_microkernel.mdwn178
-rw-r--r--history/port_to_another_microkernel/discussion.mdwn69
-rw-r--r--history/port_to_l4.mdwn13
-rw-r--r--hurd-and-linux.html49
-rw-r--r--hurd-l4.mdwn13
-rw-r--r--hurd-paper.html761
-rw-r--r--hurd-talk.html1062
-rw-r--r--hurd.mdwn53
-rw-r--r--hurd/authentication.mdwn8
-rw-r--r--hurd/binutils.mdwn13
-rw-r--r--hurd/building.mdwn14
-rw-r--r--hurd/building/cross-compiling.mdwn260
-rw-r--r--hurd/building/cross-compiling/Makefile168
-rw-r--r--hurd/building/cross-compiling/discussion.mdwn26
-rw-r--r--hurd/building/example.mdwn8
-rw-r--r--hurd/concepts.mdwn6
-rw-r--r--hurd/console.mdwn4
-rw-r--r--hurd/contributing.mdwn48
-rw-r--r--hurd/critique.mdwn12
-rw-r--r--hurd/dde.mdwn25
-rw-r--r--hurd/dde/guide.mdwn213
-rw-r--r--hurd/dde/guide/discussion.mdwn17
-rw-r--r--hurd/debugging.mdwn15
-rw-r--r--hurd/debugging/gdb.mdwn6
-rw-r--r--hurd/debugging/gdb/noninvasive_debugging.mdwn6
-rw-r--r--hurd/debugging/glibc.mdwn68
-rw-r--r--hurd/debugging/rpctrace.mdwn43
-rw-r--r--hurd/debugging/subhurd.mdwn2
-rw-r--r--hurd/debugging/translator.mdwn15
-rw-r--r--hurd/debugging/translator/capturing_stdout_and_stderr.mdwn37
-rw-r--r--hurd/debugging/translator/gdb.mdwn (renamed from hurd/debugging/hurd.mdwn)20
-rw-r--r--hurd/debugging/trap_in_the_kernel.mdwn27
-rw-r--r--hurd/documentation.mdwn68
-rw-r--r--hurd/documentation/auth.html168
-rw-r--r--hurd/documentation/hurd-and-linux.mdwn (renamed from mailinglists.mdwn)8
-rw-r--r--hurd/documentation/hurd-paper.mdwn (renamed from Hurd/GNUHurdStatus.mdwn)8
-rw-r--r--hurd/documentation/hurd-talk.mdwn (renamed from recentchanges.mdwn)8
-rw-r--r--hurd/documentation/translator_primer.mdwn85
-rw-r--r--hurd/documentation/translators.html236
-rw-r--r--hurd/faq.mdwn13
-rw-r--r--hurd/faq/gramatically_speaking.mdwn42
-rw-r--r--hurd/faq/how_about_drivers.mdwn17
-rw-r--r--hurd/faq/how_to_switch_microkernels.mdwn15
-rw-r--r--hurd/faq/l4.mdwn24
-rw-r--r--hurd/faq/off.mdwn25
-rw-r--r--hurd/faq/old-stuff.mdwn14
-rw-r--r--hurd/faq/old_faq.txt (renamed from faq.en.in)15
-rw-r--r--hurd/faq/old_hurd_faq.txt289
-rw-r--r--hurd/faq/release.mdwn8
-rw-r--r--hurd/faq/slash_usr_symlink.mdwn10
-rw-r--r--hurd/faq/still_useful.mdwn46
-rw-r--r--hurd/faq/top.mdwn16
-rw-r--r--hurd/gcc.mdwn14
-rw-r--r--hurd/getting_help.mdwn26
-rw-r--r--hurd/glibc.mdwn9
-rw-r--r--hurd/glibc/hurd-specific_api.mdwn23
-rw-r--r--hurd/history.mdwn12
-rw-r--r--hurd/hurd_hacking_guide.mdwn24
-rw-r--r--hurd/interface.mdwn16
-rw-r--r--hurd/interface/dir_link.mdwn11
-rw-r--r--hurd/interface/dir_lookup.mdwn11
-rw-r--r--hurd/interface/dir_mkdir.mdwn11
-rw-r--r--hurd/interface/dir_mkfile.mdwn11
-rw-r--r--hurd/interface/dir_notice_changes.mdwn11
-rw-r--r--hurd/interface/dir_readdir.mdwn11
-rw-r--r--hurd/interface/dir_rename.mdwn11
-rw-r--r--hurd/interface/dir_rmdir.mdwn11
-rw-r--r--hurd/interface/dir_unlink.mdwn11
-rw-r--r--hurd/interface/file_chauthor.mdwn11
-rw-r--r--hurd/interface/file_check_access.mdwn11
-rw-r--r--hurd/interface/file_chflags.mdwn11
-rw-r--r--hurd/interface/file_chmod.mdwn11
-rw-r--r--hurd/interface/file_chown.mdwn11
-rw-r--r--hurd/interface/file_exec.mdwn11
-rw-r--r--hurd/interface/file_get_fs_options.mdwn11
-rw-r--r--hurd/interface/file_get_storage_info.mdwn11
-rw-r--r--hurd/interface/file_get_translator.mdwn11
-rw-r--r--hurd/interface/file_get_translator_cntl.mdwn11
-rw-r--r--hurd/interface/file_getcontrol.mdwn11
-rw-r--r--hurd/interface/file_getfh.mdwn11
-rw-r--r--hurd/interface/file_getlinknode.mdwn11
-rw-r--r--hurd/interface/file_lock.mdwn11
-rw-r--r--hurd/interface/file_lock_stat.mdwn11
-rw-r--r--hurd/interface/file_notice_changes.mdwn11
-rw-r--r--hurd/interface/file_reparent.mdwn11
-rw-r--r--hurd/interface/file_set_size.mdwn11
-rw-r--r--hurd/interface/file_set_translator.mdwn11
-rw-r--r--hurd/interface/file_statfs.mdwn11
-rw-r--r--hurd/interface/file_sync.mdwn11
-rw-r--r--hurd/interface/file_syncfs.mdwn11
-rw-r--r--hurd/interface/file_utimes.mdwn11
-rw-r--r--hurd/interface/fs.mdwn25
-rw-r--r--hurd/interface/fs/00.mdwn30
-rw-r--r--hurd/interface/fs/01.mdwn20
-rw-r--r--hurd/interface/fs/02.mdwn36
-rw-r--r--hurd/interface/fs/03.mdwn19
-rw-r--r--hurd/interface/fs/04.mdwn19
-rw-r--r--hurd/interface/fs/05.mdwn23
-rw-r--r--hurd/interface/fs/06.mdwn21
-rw-r--r--hurd/interface/fs/07.mdwn19
-rw-r--r--hurd/interface/fs/08.mdwn21
-rw-r--r--hurd/interface/fs/09.mdwn24
-rw-r--r--hurd/interface/fs/10.mdwn20
-rw-r--r--hurd/interface/fs/11.mdwn19
-rw-r--r--hurd/interface/fs/12.mdwn19
-rw-r--r--hurd/interface/fs/13.mdwn60
-rw-r--r--hurd/interface/fs/14.mdwn67
-rw-r--r--hurd/interface/fs/15.mdwn23
-rw-r--r--hurd/interface/fs/16.mdwn20
-rw-r--r--hurd/interface/fs/17.mdwn41
-rw-r--r--hurd/interface/fs/18.mdwn34
-rw-r--r--hurd/interface/fs/19.mdwn29
-rw-r--r--hurd/interface/fs/20.mdwn20
-rw-r--r--hurd/interface/fs/21.mdwn19
-rw-r--r--hurd/interface/fs/22.mdwn19
-rw-r--r--hurd/interface/fs/23.mdwn27
-rw-r--r--hurd/interface/fs/24.mdwn24
-rw-r--r--hurd/interface/fs/25.mdwn25
-rw-r--r--hurd/interface/fs/26.mdwn20
-rw-r--r--hurd/interface/fs/27.mdwn29
-rw-r--r--hurd/interface/fs/28.mdwn19
-rw-r--r--hurd/interface/fs/29.mdwn20
-rw-r--r--hurd/interface/fs/30.mdwn20
-rw-r--r--hurd/interface/fs/31.mdwn21
-rw-r--r--hurd/interface/fsys.mdwn15
-rw-r--r--hurd/interface/fsys/00.mdwn23
-rw-r--r--hurd/interface/fsys/01.mdwn19
-rw-r--r--hurd/interface/fsys/02.mdwn33
-rw-r--r--hurd/interface/fsys/03.mdwn22
-rw-r--r--hurd/interface/fsys/04.mdwn58
-rw-r--r--hurd/interface/fsys/05.mdwn20
-rw-r--r--hurd/interface/fsys/06.mdwn20
-rw-r--r--hurd/interface/fsys/07.mdwn19
-rw-r--r--hurd/interface/fsys/08.mdwn23
-rw-r--r--hurd/interface/fsys/09.mdwn19
-rw-r--r--hurd/interface/fsys_forward.mdwn11
-rw-r--r--hurd/interface/fsys_get_options.mdwn11
-rw-r--r--hurd/interface/fsys_getfile.mdwn11
-rw-r--r--hurd/interface/fsys_getpriv.mdwn11
-rw-r--r--hurd/interface/fsys_getroot.mdwn11
-rw-r--r--hurd/interface/fsys_goaway.mdwn11
-rw-r--r--hurd/interface/fsys_init.mdwn11
-rw-r--r--hurd/interface/fsys_set_options.mdwn11
-rw-r--r--hurd/interface/fsys_startup.mdwn11
-rw-r--r--hurd/interface/fsys_syncfs.mdwn11
-rw-r--r--hurd/io_path.mdwn37
-rw-r--r--hurd/libchannel.mdwn14
-rw-r--r--hurd/libfshelp.mdwn29
-rw-r--r--hurd/libhello_example.mdwn6
-rw-r--r--hurd/libihash.mdwn57
-rw-r--r--hurd/libnetfs.mdwn298
-rw-r--r--hurd/libpager.mdwn11
-rw-r--r--hurd/libports.mdwn20
-rw-r--r--hurd/libstore.mdwn43
-rw-r--r--hurd/libstore/bunzip2_store.mdwn12
-rw-r--r--hurd/libstore/concat_store.mdwn12
-rw-r--r--hurd/libstore/copy_store.mdwn25
-rw-r--r--hurd/libstore/device_store.mdwn12
-rw-r--r--hurd/libstore/examples/ramdisk.mdwn32
-rw-r--r--hurd/libstore/file_store.mdwn12
-rw-r--r--hurd/libstore/gunzip_store.mdwn12
-rw-r--r--hurd/libstore/ileave_store.mdwn12
-rw-r--r--hurd/libstore/nbd_store.mdwn12
-rw-r--r--hurd/libstore/part.mdwn26
-rw-r--r--hurd/libstore/query_store.mdwn12
-rw-r--r--hurd/libstore/remap_store.mdwn12
-rw-r--r--hurd/libstore/task_store.mdwn12
-rw-r--r--hurd/libstore/typed_store.mdwn12
-rw-r--r--hurd/libstore/url_store.mdwn12
-rw-r--r--hurd/libstore/zero_store.mdwn19
-rw-r--r--hurd/libtrivfs.mdwn31
-rw-r--r--hurd/logo.mdwn24
-rw-r--r--hurd/logo.pngbin15125 -> 0 bytes
-rw-r--r--hurd/neighborhurd.mdwn6
-rw-r--r--hurd/network.mdwn43
-rw-r--r--hurd/networking.mdwn33
-rw-r--r--hurd/ng.mdwn57
-rw-r--r--hurd/ng/choiceofmicrokernel.mdwn4
-rw-r--r--hurd/ng/discussion.mdwn13
-rw-r--r--hurd/ng/history.mdwn50
-rw-r--r--hurd/ng/issues_with_mach.mdwn12
-rw-r--r--hurd/ng/limitations_of_the_original_hurd_design.mdwn6
-rw-r--r--hurd/ng/microkernelcoyotos.mdwn9
-rw-r--r--hurd/ng/part2systemstructure.mdwn15
-rw-r--r--hurd/ng/position_paper.mdwn15
-rw-r--r--hurd/ng/resource_management_problems.mdwn19
-rw-r--r--hurd/ng/trivialconfinementvsconstructorvsfork.mdwn24
-rw-r--r--hurd/ng/usecaseprivatekeys.mdwn6
-rw-r--r--hurd/ng/usecaseuserfilesystem.mdwn2
-rw-r--r--hurd/porting.mdwn14
-rw-r--r--hurd/porting/guidelines.mdwn356
-rw-r--r--hurd/porting/system_api_limitations.mdwn29
-rw-r--r--hurd/reference_manual.mdwn18
-rw-r--r--hurd/running.mdwn17
-rw-r--r--hurd/running/arch_hurd.mdwn21
-rw-r--r--hurd/running/debian.mdwn30
-rw-r--r--hurd/running/debian/BtsFiling.mdwn52
-rw-r--r--hurd/running/debian/CrossInstall.mdwn2
-rw-r--r--hurd/running/debian/DebianAptOffline.mdwn6
-rw-r--r--hurd/running/debian/GnuDebianRelationship.mdwn4
-rw-r--r--hurd/running/debian/MediaPressKitDiscuss.mdwn2
-rw-r--r--hurd/running/debian/after_install.mdwn62
-rw-r--r--hurd/running/debian/creating_image_tarball.mdwn21
-rw-r--r--hurd/running/debian/creating_image_tarball/anonftpsync-ports180
-rw-r--r--hurd/running/debian/dhcp.mdwn31
-rw-r--r--hurd/running/debian/faq.mdwn14
-rw-r--r--hurd/running/debian/faq/2_gib_partition_limit.mdwn8
-rw-r--r--hurd/running/debian/faq/512_mib_ram_limit.mdwn23
-rw-r--r--hurd/running/debian/faq/apt_umount.mdwn10
-rw-r--r--hurd/running/debian/faq/bad_hypermeta_data.mdwn6
-rw-r--r--hurd/running/debian/faq/debugging_inside_glibc.mdwn19
-rw-r--r--hurd/running/debian/faq/debugging_translators.mdwn10
-rw-r--r--hurd/running/debian/faq/dev_random.mdwn12
-rw-r--r--hurd/running/debian/faq/df.mdwn18
-rw-r--r--hurd/running/debian/faq/eata.mdwn13
-rw-r--r--hurd/running/debian/faq/free_memory.mdwn6
-rw-r--r--hurd/running/debian/faq/hurd_console.mdwn6
-rw-r--r--hurd/running/debian/faq/kernel_logs.mdwn6
-rw-r--r--hurd/running/debian/faq/other_repositories.mdwn6
-rw-r--r--hurd/running/debian/faq/ps_hangs.mdwn9
-rw-r--r--hurd/running/debian/faq/reporting_bugs.mdwn6
-rw-r--r--hurd/running/debian/faq/sata_disk_drives.mdwn6
-rw-r--r--hurd/running/debian/faq/sshd.mdwn12
-rw-r--r--hurd/running/debian/faq/sshd_only_works_for_root_logins.mdwn20
-rw-r--r--hurd/running/debian/faq/xserver-common.mdwn6
-rw-r--r--hurd/running/debian/logo.pngbin2463 -> 0 bytes
-rw-r--r--hurd/running/debian/package_troubleshooting.mdwn7
-rw-r--r--hurd/running/debian/patch_submission.mdwn68
-rw-r--r--hurd/running/debian/porting.mdwn56
-rw-r--r--hurd/running/debian/qemu_image.mdwn23
-rw-r--r--hurd/running/distrib.mdwn28
-rw-r--r--hurd/running/faq.mdwn20
-rw-r--r--hurd/running/faq/native-install_doesnt_finish.mdwn24
-rw-r--r--hurd/running/gentoo.mdwn34
-rw-r--r--hurd/running/gnu.mdwn23
-rw-r--r--hurd/running/gnu/create_an_image.mdwn12
-rw-r--r--hurd/running/gnu/discussion.mdwn19
-rw-r--r--hurd/running/gnu/gnu.mdwn9
-rw-r--r--hurd/running/gnu/logo.pngbin3112 -> 0 bytes
-rw-r--r--hurd/running/gnu/names.mdwn2
-rw-r--r--hurd/running/gnu/setup.mdwn8
-rw-r--r--hurd/running/gnu/universal_package_manager.mdwn28
-rw-r--r--hurd/running/live_cd.mdwn15
-rw-r--r--hurd/running/qemu.mdwn276
-rw-r--r--hurd/running/qemu/babhurd_image.mdwn67
-rw-r--r--hurd/running/qemu/discussion.mdwn144
-rw-r--r--hurd/running/qemu/microsoft_windows.mdwn6
-rw-r--r--hurd/running/qemu/networking.mdwn6
-rw-r--r--hurd/running/qemu/networking/sharing_files.mdwn6
-rw-r--r--hurd/running/virtualbox.mdwn28
-rw-r--r--hurd/running/vmware.mdwn6
-rw-r--r--hurd/running/vmware/discussion.mdwn18
-rw-r--r--hurd/settrans.mdwn37
-rw-r--r--hurd/settrans/discussion.mdwn18
-rw-r--r--hurd/status.mdwn96
-rw-r--r--hurd/status/hurd-fvwm-screenshot-2009-11-12.pngbin0 -> 195807 bytes
-rw-r--r--hurd/subhurd.mdwn83
-rw-r--r--hurd/subhurd/discussion.mdwn69
-rw-r--r--hurd/subhurd/running_a_subhurd.mdwn42
-rw-r--r--hurd/syncfs.mdwn17
-rw-r--r--hurd/toolchain.mdwn17
-rw-r--r--hurd/translator.mdwn231
-rw-r--r--hurd/translator/auth.mdwn13
-rw-r--r--hurd/translator/cvsfs.mdwn6
-rw-r--r--hurd/translator/devfs.mdwn20
-rw-r--r--hurd/translator/discussion.mdwn25
-rw-r--r--hurd/translator/emailfs.mdwn6
-rw-r--r--hurd/translator/examples.mdwn12
-rw-r--r--hurd/translator/exec.mdwn12
-rw-r--r--hurd/translator/ext2fs.mdwn35
-rw-r--r--hurd/translator/ext2fs/filetype.mdwn33
-rw-r--r--hurd/translator/ext2fs/large_stores.txt520
-rw-r--r--hurd/translator/ext2fs/ogi-fosdem2005.mgp165
-rw-r--r--hurd/translator/fatfs.mdwn10
-rw-r--r--hurd/translator/gopherfs.mdwn16
-rw-r--r--hurd/translator/libguestfs.mdwn15
-rw-r--r--hurd/translator/magic.mdwn13
-rw-r--r--hurd/translator/mboxfs.mdwn6
-rw-r--r--hurd/translator/netio.mdwn17
-rw-r--r--hurd/translator/nsmux.mdwn121
-rw-r--r--hurd/translator/pfinet.mdwn37
-rw-r--r--hurd/translator/pfinet/dhcp.mdwn (renamed from Hurd/DhcpClient.mdwn)30
-rw-r--r--hurd/translator/pfinet/implementation.mdwn13
-rw-r--r--hurd/translator/pfinet/ipv6.mdwn15
-rw-r--r--hurd/translator/pflocal.mdwn13
-rw-r--r--hurd/translator/procfs.mdwn38
-rw-r--r--hurd/translator/procfs/htop.mdwn25
-rw-r--r--hurd/translator/procfs/jkoenig.mdwn23
-rw-r--r--hurd/translator/procfs/jkoenig/discussion.mdwn215
-rw-r--r--hurd/translator/procfs/killall.mdwn23
-rw-r--r--hurd/translator/procfs/procps.mdwn23
-rw-r--r--hurd/translator/procfs/top.mdwn18
-rw-r--r--hurd/translator/short-circuiting.mdwn88
-rw-r--r--hurd/translator/storeio.mdwn8
-rw-r--r--hurd/translator/stowfs.mdwn8
-rw-r--r--hurd/translator/tarfs.mdwn25
-rw-r--r--hurd/translator/tmpfs.mdwn22
-rw-r--r--hurd/translator/tmpfs/discussion.mdwn17
-rw-r--r--hurd/translator/tmpfs/notes_bing.mdwn9
-rw-r--r--hurd/translator/tmpfs/notes_various.mdwn14
-rw-r--r--hurd/translator/tmpfs/tmpfs_vs_defpager.mdwn233
-rw-r--r--hurd/translator/unionfs.mdwn151
-rw-r--r--hurd/translator/unionmount.mdwn (renamed from how_to_contribute_to_this_wiki.mdwn)8
-rw-r--r--hurd/translator/wishlist_1.mdwn129
-rw-r--r--hurd/translator/wishlist_2.mdwn (renamed from Hurd/TranslatorWishList.mdwn)18
-rw-r--r--hurd/translator/writing/example.mdwn6
-rw-r--r--hurd/translator/xmlfs.mdwn6
-rw-r--r--hurd/virtual_file_system.mdwn8
-rw-r--r--hurd/virtualization.mdwn12
-rw-r--r--hurd/what_is_the_gnu_hurd.mdwn51
-rw-r--r--hurd/what_is_the_gnu_hurd/gramatically_speaking.mdwn54
-rw-r--r--hurd/what_is_the_gnu_hurd/origin_of_the_name.mdwn50
-rw-r--r--ibac.mdwn6
-rw-r--r--idl.mdwn29
-rw-r--r--ikiwiki.setup387
-rw-r--r--index.mdwn153
-rw-r--r--index/discussion.mdwn11
-rw-r--r--install.mdwn (renamed from community/self-organised_2008.mdwn)10
-rw-r--r--ipc.mdwn17
-rw-r--r--irc.mdwn88
-rw-r--r--isolation.mdwn6
-rw-r--r--kernel.mdwn21
-rw-r--r--libpthread.mdwn30
-rw-r--r--license.html5
-rw-r--r--license.mdwn6
-rw-r--r--liedtke.mdwn6
-rw-r--r--local.css192
-rw-r--r--logo.mdwn25
-rw-r--r--logo.pngbin17674 -> 0 bytes
-rw-r--r--logo/boxes-redrawn.png (renamed from hurd/logo/boxes-redrawn.png)bin1764 -> 1764 bytes
-rw-r--r--logo/boxes-redrawn.svg (renamed from hurd/logo/boxes-redrawn.svg)0
-rw-r--r--lttng.mdwn35
-rw-r--r--mailing_lists.mdwn61
-rw-r--r--mailing_lists/bug-hurd.mdwn8
-rw-r--r--mailing_lists/debian-hurd.mdwn8
-rw-r--r--mailing_lists/gnu-system-discuss.mdwn8
-rw-r--r--mailing_lists/help-hurd.mdwn8
-rw-r--r--mailing_lists/hurd-devel-readers.mdwn8
-rw-r--r--mailing_lists/hurd-devel.mdwn8
-rw-r--r--mailing_lists/l4-hurd.mdwn8
-rw-r--r--mailing_lists/libc-alpha.mdwn11
-rw-r--r--mailing_lists/unmoderated.mdwn11
-rw-r--r--mailing_lists/web-hurd.mdwn8
-rw-r--r--mechanism.mdwn8
-rw-r--r--media_appearances.mdwn55
-rw-r--r--microkernel.mdwn34
-rw-r--r--microkernel/barrelfish.mdwn24
-rw-r--r--microkernel/coyotos.mdwn33
-rw-r--r--microkernel/discussion.mdwn24
-rw-r--r--microkernel/eros.mdwn15
-rw-r--r--microkernel/faq.mdwn16
-rw-r--r--microkernel/faq/multiserver_microkernel.mdwn14
-rw-r--r--microkernel/for_beginners.mdwn6
-rw-r--r--microkernel/fud.mdwn21
-rw-r--r--microkernel/l4.mdwn36
-rw-r--r--microkernel/mach.mdwn90
-rw-r--r--microkernel/mach/concepts.mdwn35
-rw-r--r--microkernel/mach/continuation.mdwn24
-rw-r--r--microkernel/mach/discussion.mdwn23
-rw-r--r--microkernel/mach/documentation.mdwn52
-rw-r--r--microkernel/mach/external_pager_mechanism.mdwn180
-rw-r--r--microkernel/mach/gnumach.mdwn74
-rw-r--r--microkernel/mach/gnumach/boot_trace.mdwn15
-rw-r--r--microkernel/mach/gnumach/building.mdwn129
-rw-r--r--microkernel/mach/gnumach/building/example.mdwn54
-rw-r--r--microkernel/mach/gnumach/debugging.mdwn79
-rw-r--r--microkernel/mach/gnumach/hardware_compatibility_list.mdwn25
-rw-r--r--microkernel/mach/gnumach/hardware_compatibility_list/discussion.mdwn29
-rw-r--r--microkernel/mach/gnumach/hardwarecompatibilitylist.mdwn11
-rw-r--r--microkernel/mach/gnumach/memory_management.mdwn82
-rw-r--r--microkernel/mach/gnumach/ports.mdwn21
-rw-r--r--microkernel/mach/gnumach/ports/xen.mdwn115
-rw-r--r--microkernel/mach/gnumach/ports/xen/discussion.mdwn14
-rw-r--r--microkernel/mach/gnumach/ports/xen/internals.mdwn8
-rw-r--r--microkernel/mach/gnumach/ports/xen/networking_configuration.mdwn105
-rw-r--r--microkernel/mach/gnumach/projects.mdwn19
-rw-r--r--microkernel/mach/gnumach/projects/clean_up_the_code.mdwn52
-rw-r--r--microkernel/mach/gnumach/projects/gdb_stubs.mdwn12
-rw-r--r--microkernel/mach/gnumach/reference_manual.mdwn26
-rw-r--r--microkernel/mach/history.mdwn10
-rw-r--r--microkernel/mach/ipc.mdwn21
-rw-r--r--microkernel/mach/ipc/sequence_numbering.mdwn6
-rw-r--r--microkernel/mach/logo.pngbin13617 -> 0 bytes
-rw-r--r--microkernel/mach/memory_object.mdwn33
-rw-r--r--microkernel/mach/memory_object/discussion.mdwn67
-rw-r--r--microkernel/mach/message.mdwn31
-rw-r--r--microkernel/mach/mig.mdwn41
-rw-r--r--microkernel/mach/mig/building.mdwn71
-rw-r--r--microkernel/mach/mig/dealloc.mdwn11
-rw-r--r--microkernel/mach/mig/discussion.mdwn17
-rw-r--r--microkernel/mach/mig/documentation.mdwn49
-rw-r--r--microkernel/mach/mig/documentation/dealloc.mdwn15
-rw-r--r--microkernel/mach/mig/documentation/servercopy.mdwn23
-rw-r--r--microkernel/mach/mig/gnu_mig.mdwn28
-rw-r--r--microkernel/mach/mig/gnu_mig/building.mdwn103
-rw-r--r--microkernel/mach/mig/gnu_mig/building/discussion.mdwn16
-rw-r--r--microkernel/mach/mig/logo.pngbin23622 -> 0 bytes
-rw-r--r--microkernel/mach/port.mdwn120
-rw-r--r--microkernel/mach/rpc.mdwn25
-rw-r--r--microkernel/mach/rpc/discussion.mdwn117
-rw-r--r--microkernel/mach/task.mdwn23
-rw-r--r--microkernel/mach/thread.mdwn37
-rw-r--r--microkernel/mach/virtual_address_space.mdwn36
-rw-r--r--microkernel/viengoos.mdwn49
-rw-r--r--microkernel/viengoos/building.mdwn100
-rw-r--r--microkernel/viengoos/documentation.mdwn56
-rw-r--r--microkernel/viengoos/documentation/reference-guide.pdfbin0 -> 269473 bytes
-rw-r--r--microkernel/viengoos/grub2-config.diff47
-rw-r--r--microkernel/viengoos/hardware.mdwn6
-rw-r--r--microkernel/viengoos/projects.mdwn17
-rw-r--r--microkernel/viengoos/projects/address_space_management.mdwn40
-rw-r--r--microkernel/viengoos/projects/capability-aware_compiler.mdwn16
-rw-r--r--microkernel/viengoos/projects/new_hash_function.mdwn22
-rw-r--r--microkernel/viengoos/serial_port.mdwn6
-rw-r--r--naming_context.mdwn19
-rw-r--r--news.mdwn17
-rw-r--r--news/2002-01-13.mdwn18
-rw-r--r--news/2002-01-19.mdwn28
-rw-r--r--news/2002-02-18.mdwn17
-rw-r--r--news/2002-03-03.mdwn28
-rw-r--r--news/2002-03-08.mdwn31
-rw-r--r--news/2002-03-23.mdwn16
-rw-r--r--news/2002-05-05.mdwn33
-rw-r--r--news/2002-05-18.mdwn20
-rw-r--r--news/2002-05-24.mdwn21
-rw-r--r--news/2002-05-28.mdwn22
-rw-r--r--news/2002-06-22.mdwn22
-rw-r--r--news/2002-08-16.mdwn32
-rw-r--r--news/2002-10-03.mdwn18
-rw-r--r--news/2002-10-03_2.mdwn18
-rw-r--r--news/2002-10-19.mdwn39
-rw-r--r--news/2002-11-18.mdwn21
-rw-r--r--news/2003-01-18.mdwn20
-rw-r--r--news/2003-02-14.mdwn16
-rw-r--r--news/2003-07-02.mdwn19
-rw-r--r--news/2003-07-16.mdwn19
-rw-r--r--news/2003-08-21.mdwn16
-rw-r--r--news/2005-01-28.mdwn16
-rw-r--r--news/2005-09-20.mdwn20
-rw-r--r--news/2006-04-27.mdwn75
-rw-r--r--news/2007-01-07.mdwn17
-rw-r--r--news/2007-01-14.mdwn52
-rw-r--r--news/2007-03-14.mdwn57
-rw-r--r--news/2007-10-01.mdwn20
-rw-r--r--news/2007-10-12.mdwn15
-rw-r--r--news/2008-02-11.mdwn18
-rw-r--r--news/2008-03-19.mdwn22
-rw-r--r--news/2008-09-11.mdwn15
-rw-r--r--news/2008-11-14.mdwn16
-rw-r--r--news/2008-12-12.mdwn41
-rw-r--r--news/2009-03-28.mdwn15
-rw-r--r--news/2009-04-20.mdwn14
-rw-r--r--news/2009-06-30.mdwn31
-rw-r--r--news/2009-07-31.mdwn44
-rw-r--r--news/2009-09-30.mdwn32
-rw-r--r--news/2009-10-31.mdwn49
-rw-r--r--news/2009-11-30.mdwn51
-rw-r--r--news/2009-12-31.mdwn85
-rw-r--r--news/2010-01-31.mdwn58
-rw-r--r--news/2010-02-28.mdwn72
-rw-r--r--news/2010-03-31.mdwn48
-rw-r--r--news/2010-04-30.mdwn92
-rw-r--r--news/2010-05-31.mdwn66
-rw-r--r--news/2010-06-30.mdwn77
-rw-r--r--news/2010-07-31.mdwn59
-rw-r--r--news/2010-08-31.mdwn90
-rw-r--r--news/2010-09.mdwn128
-rw-r--r--news/2010-10.mdwn65
-rw-r--r--news/2010-11.mdwn29
-rw-r--r--news/2010-12.mdwn45
-rw-r--r--news/2010.mdwn130
-rw-r--r--news/2011-03-26.mdwn15
-rw-r--r--news/2011-04-01.mdwn44
-rw-r--r--news/2011-05-02-foss_factory.mdwn98
-rw-r--r--news/2011-q1.mdwn57
-rw-r--r--news/2011-q2.mdwn63
-rw-r--r--open_issues.mdwn34
-rw-r--r--open_issues/active_vs_passive_symlink_translator.mdwn44
-rw-r--r--open_issues/address_space_memory_mapping_entries.mdwn19
-rw-r--r--open_issues/adduser.mdwn37
-rw-r--r--open_issues/anatomy_of_a_hurd_system.mdwn73
-rw-r--r--open_issues/automatic_backtraces_when_assertions_hit.mdwn18
-rw-r--r--open_issues/automatically_checking_port_deallocation.mdwn22
-rw-r--r--open_issues/bash.mdwn47
-rw-r--r--open_issues/bash_busy-loop.mdwn33
-rw-r--r--open_issues/bash_interrupted_system_call.mdwn19
-rw-r--r--open_issues/bash_vs_screen_vs_sigint.mdwn12
-rw-r--r--open_issues/benefits_of_a_native_hurd_implementation.mdwn132
-rw-r--r--open_issues/binutils.mdwn194
-rw-r--r--open_issues/binutils/log_build-hurd.sed5
-rw-r--r--open_issues/binutils/log_build-linux.sed5
-rw-r--r--open_issues/binutils/log_build.diff280
-rw-r--r--open_issues/binutils/log_install-hurd.sed1
-rw-r--r--open_issues/binutils/log_install-linux.sed1
-rw-r--r--open_issues/binutils/log_install.diff18
-rw-r--r--open_issues/binutils/sum.diff80
-rw-r--r--open_issues/binutils/sum_hurd1409
-rw-r--r--open_issues/binutils/sum_linux1409
-rw-r--r--open_issues/binutils_gold.mdwn187
-rw-r--r--open_issues/blkrrpart_ioctl.mdwn32
-rw-r--r--open_issues/boehm_gc.mdwn283
-rw-r--r--open_issues/bpf.mdwn72
-rw-r--r--open_issues/chroot_difference_from_linux.mdwn17
-rw-r--r--open_issues/clock_gettime.mdwn71
-rw-r--r--open_issues/code_analysis.mdwn98
-rw-r--r--open_issues/contributing.mdwn44
-rw-r--r--open_issues/crash_server.mdwn195
-rw-r--r--open_issues/crashes_vs_system_load_cpu_load_rpc_load.mdwn17
-rw-r--r--open_issues/crt0_o_crt1_o_debug_info_relocation_invalid_symbol_index.mdwn41
-rw-r--r--open_issues/cvs_tasks_file.mdwn18
-rw-r--r--open_issues/cvs_todo_file.mdwn18
-rw-r--r--open_issues/dbus_in_linux_kernel.mdwn64
-rw-r--r--open_issues/dde.mdwn11
-rw-r--r--open_issues/debian_cross_toolchain.mdwn15
-rw-r--r--open_issues/debootstrap.mdwn24
-rw-r--r--open_issues/debugging.mdwn53
-rw-r--r--open_issues/debugging_gnumach_startup_qemu_gdb.mdwn116
-rw-r--r--open_issues/default_pager.mdwn31
-rw-r--r--open_issues/device_drivers_and_io_systems.mdwn94
-rw-r--r--open_issues/dir-lookup_authority.mdwn68
-rw-r--r--open_issues/duplicate_inclusion_guards.mdwn16
-rw-r--r--open_issues/e2fsck_i_file_acl_hi.mdwn38
-rw-r--r--open_issues/elinks.mdwn28
-rw-r--r--open_issues/emacs.mdwn1527
-rw-r--r--open_issues/error_message_disk_full.mdwn14
-rw-r--r--open_issues/etc_fstab.mdwn18
-rw-r--r--open_issues/exec.mdwn23
-rw-r--r--open_issues/ext2fs_deadlock.mdwn55
-rw-r--r--open_issues/ext2fs_deadlock/bt_1-888
-rw-r--r--open_issues/ext2fs_deadlock/bt_10-5355240
-rw-r--r--open_issues/ext2fs_page_cache_swapping_leak.mdwn175
-rw-r--r--open_issues/extern_inline.mdwn74
-rw-r--r--open_issues/fdisk.mdwn19
-rw-r--r--open_issues/file_locking.mdwn74
-rw-r--r--open_issues/file_system_exerciser.mdwn15
-rw-r--r--open_issues/fork_mach_port_mod_refs_ekern_urefs_owerflow.mdwn185
-rw-r--r--open_issues/formal_verification.mdwn30
-rw-r--r--open_issues/fsync.mdwn22
-rw-r--r--open_issues/gcc.mdwn435
-rw-r--r--open_issues/gcc/libmudflap.mdwn74
-rw-r--r--open_issues/gcc/log_build-hurd.sed9
-rw-r--r--open_issues/gcc/log_build-linux.sed9
-rw-r--r--open_issues/gcc/log_build.diff2980
-rw-r--r--open_issues/gcc/log_install-hurd.sed1
-rw-r--r--open_issues/gcc/log_install-linux.sed1
-rw-r--r--open_issues/gcc/log_install.diff263
-rw-r--r--open_issues/gccgo.mdwn45
-rw-r--r--open_issues/gdb-heap.mdwn15
-rw-r--r--open_issues/gdb.mdwn131
-rw-r--r--open_issues/gdb/log_build-hurd.sed7
-rw-r--r--open_issues/gdb/log_build-linux.sed6
-rw-r--r--open_issues/gdb/log_build.diff603
-rw-r--r--open_issues/gdb/log_install-hurd.sed1
-rw-r--r--open_issues/gdb/log_install-linux.sed1
-rw-r--r--open_issues/gdb/log_install.diff48
-rw-r--r--open_issues/gdb/sum_linux18632
-rw-r--r--open_issues/gdb_catch_syscall.mdwn18
-rw-r--r--open_issues/gdb_gcore.mdwn26
-rw-r--r--open_issues/gdb_non-stop_mode.mdwn25
-rw-r--r--open_issues/gdb_noninvasive_mode_new_threads.mdwn15
-rw-r--r--open_issues/gdb_pending_execs.mdwn27
-rw-r--r--open_issues/gdb_qemu_debugging_gnumach.mdwn19
-rw-r--r--open_issues/gdb_signal_thread_bt.mdwn31
-rw-r--r--open_issues/gdb_thread_ids.mdwn31
-rw-r--r--open_issues/git-core-2.mdwn190
-rw-r--r--open_issues/git_duplicated_content.mdwn131
-rw-r--r--open_issues/git_nfs_mmap.mdwn48
-rw-r--r--open_issues/glibc.mdwn568
-rw-r--r--open_issues/glibc/debian.mdwn46
-rw-r--r--open_issues/glibc___libc_alloca_cutoff_should_be_lowered.mdwn19
-rw-r--r--open_issues/glibc_init_first.mdwn78
-rw-r--r--open_issues/glibc_ioctls.mdwn72
-rw-r--r--open_issues/glibc_libpthread_robust_mutexes.mdwn54
-rw-r--r--open_issues/glibc_madvise_vs_static_linking.mdwn26
-rw-r--r--open_issues/glibc_ptrace.mdwn47
-rw-r--r--open_issues/glibc_tls_segment_tcbhead_t_dtv_offset.mdwn28
-rw-r--r--open_issues/glusterfs.mdwn15
-rw-r--r--open_issues/gnat.mdwn44
-rw-r--r--open_issues/gnumach_console_timestamp.mdwn29
-rw-r--r--open_issues/gnumach_constants.mdwn32
-rw-r--r--open_issues/gnumach_general_protection_trap_gdb_vm_read.mdwn142
-rw-r--r--open_issues/gnumach_kernel_threads.mdwn23
-rw-r--r--open_issues/gnumach_memory_management.mdwn1779
-rw-r--r--open_issues/gnumach_memory_management/pmap.out85
-rw-r--r--open_issues/gnumach_tlb_flushing.mdwn21
-rw-r--r--open_issues/gnumach_vm_map_entry_forward_merging.mdwn200
-rw-r--r--open_issues/hurd_101.mdwn38
-rw-r--r--open_issues/hurd_build_without_parted.mdwn16
-rw-r--r--open_issues/hurd_file_name_lookup_retry_FS_RETRY_MAGIC.mdwn21
-rw-r--r--open_issues/hurdextras.mdwn104
-rw-r--r--open_issues/ifunc.mdwn49
-rw-r--r--open_issues/implementing_hurd_on_top_of_another_system.mdwn117
-rw-r--r--open_issues/inotify_file_notice_changes.mdwn47
-rw-r--r--open_issues/issue_tracking.mdwn98
-rw-r--r--open_issues/keymap_mach_console.mdwn40
-rw-r--r--open_issues/kvm.mdwn25
-rw-r--r--open_issues/latrace.mdwn11
-rw-r--r--open_issues/lexical_dot-dot.mdwn20
-rw-r--r--open_issues/libasyncns.mdwn19
-rw-r--r--open_issues/libc_variant_selection.mdwn34
-rw-r--r--open_issues/libdiskfs_dot_dot-dot_relevant_for_libnetfs.mdwn20
-rw-r--r--open_issues/libfshelp_in_hurdlibs.mdwn17
-rw-r--r--open_issues/libgomp_pthread_attr_setstacksize_pthread_stack_min.mdwn17
-rw-r--r--open_issues/libmachuser_libhurduser_rpc_stubs.mdwn56
-rw-r--r--open_issues/libpthread.mdwn67
-rw-r--r--open_issues/libpthread_dlopen.mdwn84
-rw-r--r--open_issues/libpthread_pthread_key_create_reuse.mdwn49
-rw-r--r--open_issues/libpthread_pthread_key_create_reuse/pthread_key_create_reuse.c48
-rw-r--r--open_issues/libpthread_weak_symbols.mdwn50
-rw-r--r--open_issues/librpci.mdwn31
-rw-r--r--open_issues/libstore_parted.mdwn11
-rw-r--r--open_issues/linux_vmsig.mdwn29
-rw-r--r--open_issues/lisp_cross-compile.mdwn11
-rw-r--r--open_issues/llvm.mdwn17
-rw-r--r--open_issues/locking_issues.mdwn34
-rw-r--r--open_issues/lsof.mdwn13
-rw-r--r--open_issues/ltrace.mdwn19
-rw-r--r--open_issues/m4_vs_stack.mdwn21
-rw-r--r--open_issues/mach-defpager_malloc_hook.mdwn14
-rw-r--r--open_issues/mach-defpager_vs_defpager.mdwn33
-rw-r--r--open_issues/mach_migrating_threads.mdwn17
-rw-r--r--open_issues/mach_on_top_of_posix.mdwn16
-rw-r--r--open_issues/mach_tasks_memory_usage.mdwn147
-rw-r--r--open_issues/mach_vm_pageout.mdwn19
-rw-r--r--open_issues/magic_translator_machtype.mdwn24
-rw-r--r--open_issues/mig_error_reply.mdwn68
-rw-r--r--open_issues/mmap_crash_etc.mdwn95
-rw-r--r--open_issues/multiprocessing.mdwn82
-rw-r--r--open_issues/multithreading.mdwn59
-rw-r--r--open_issues/multithreading/erlang-style_parallelism.mdwn201
-rw-r--r--open_issues/neals_hurd-misc_papers.mdwn16
-rw-r--r--open_issues/network_file_system_by_just_forwarding_rpcs.mdwn21
-rw-r--r--open_issues/nice_changes_priority_of_parent_shell.mdwn15
-rw-r--r--open_issues/nice_vs_mach_thread_priorities.mdwn197
-rw-r--r--open_issues/nightly_builds.mdwn29
-rw-r--r--open_issues/nightly_builds_deb_packages.mdwn31
-rw-r--r--open_issues/nptl.mdwn37
-rw-r--r--open_issues/ogi.mdwn25
-rw-r--r--open_issues/open_posix_test_suite.mdwn2715
-rw-r--r--open_issues/osf_mach.mdwn237
-rw-r--r--open_issues/packaging_libpthread.mdwn50
-rw-r--r--open_issues/performance.mdwn40
-rw-r--r--open_issues/performance/degradation.mdwn48
-rw-r--r--open_issues/performance/fork.mdwn37
-rw-r--r--open_issues/performance/io_system/binutils_ld_64ksec.mdwn50
-rw-r--r--open_issues/performance/io_system/binutils_ld_64ksec/test.tar.xzbin0 -> 378092 bytes
-rw-r--r--open_issues/performance/io_system/clustered_page_faults.mdwn162
-rw-r--r--open_issues/performance/io_system/read-ahead.mdwn301
-rw-r--r--open_issues/performance/ipc_virtual_copy.mdwn395
-rw-r--r--open_issues/performance/microbenchmarks.mdwn13
-rw-r--r--open_issues/performance/microkernel_multi-server.mdwn47
-rw-r--r--open_issues/perl.mdwn51
-rw-r--r--open_issues/perlmagick.mdwn107
-rw-r--r--open_issues/pfinet.mdwn27
-rw-r--r--open_issues/pfinet_vs_system_time_changes.mdwn42
-rw-r--r--open_issues/pflocal_reauth.mdwn39
-rw-r--r--open_issues/pflocal_socket_credentials_for_local_sockets.mdwn46
-rw-r--r--open_issues/pflocal_x_slowness.mdwn16
-rw-r--r--open_issues/phython.mdwn13
-rw-r--r--open_issues/placement_of_virtual_memory_regions.mdwn103
-rw-r--r--open_issues/populate_hurd_git_with_submodules_etc.mdwn16
-rw-r--r--open_issues/prelink.mdwn27
-rw-r--r--open_issues/proc_server_proc_exception_raise.mdwn37
-rw-r--r--open_issues/profiling.mdwn28
-rw-r--r--open_issues/pth.mdwn28
-rw-r--r--open_issues/pthread_atfork.mdwn13
-rw-r--r--open_issues/python.mdwn47
-rw-r--r--open_issues/resource_management_problems.mdwn86
-rw-r--r--open_issues/resource_management_problems/configure_max_command_line_length.mdwn17
-rw-r--r--open_issues/resource_management_problems/io_accounting.mdwn49
-rw-r--r--open_issues/resource_management_problems/pagers.mdwn322
-rw-r--r--open_issues/resource_management_problems/zalloc_panics.mdwn (renamed from Hurd/ZallocPanics.mdwn)17
-rw-r--r--open_issues/rework_gnumach_ipc_spaces.mdwn723
-rw-r--r--open_issues/rm_fr.mdwn39
-rw-r--r--open_issues/rpc_to_self_with_rendez-vous_leading_to_duplicate_port_destroy.mdwn163
-rw-r--r--open_issues/runit.mdwn50
-rw-r--r--open_issues/sa_siginfo_sa_sigaction.mdwn94
-rw-r--r--open_issues/sbcl.mdwn31
-rw-r--r--open_issues/screen.mdwn120
-rw-r--r--open_issues/screen_dead_session.mdwn45
-rw-r--r--open_issues/secure_file_descriptor_handling.mdwn24
-rw-r--r--open_issues/security.mdwn34
-rw-r--r--open_issues/select.mdwn34
-rw-r--r--open_issues/select_bogus_fd.mdwn55
-rw-r--r--open_issues/select_vs_signals.mdwn25
-rw-r--r--open_issues/sendmsg_scm_creds.mdwn99
-rw-r--r--open_issues/serial_console.mdwn52
-rw-r--r--open_issues/sigpipe.mdwn345
-rw-r--r--open_issues/socat.mdwn15
-rw-r--r--open_issues/some_todo_list.mdwn (renamed from hurd/todo.mdwn)19
-rw-r--r--open_issues/subhurd_error_messages.mdwn15
-rw-r--r--open_issues/sync_but_still_unclean_filesystem.mdwn37
-rw-r--r--open_issues/syslog.mdwn45
-rw-r--r--open_issues/system_call_mechanism.mdwn17
-rw-r--r--open_issues/system_crash_nmap.mdwn15
-rw-r--r--open_issues/system_crash_pflocal_fifo.mdwn41
-rw-r--r--open_issues/system_initialization.mdwn24
-rw-r--r--open_issues/systemd.mdwn150
-rw-r--r--open_issues/term_blocking.mdwn128
-rw-r--r--open_issues/term_blocking/2011-07-04.mdwn246
-rw-r--r--open_issues/thread-cancel_c_55_hurd_thread_cancel_assertion___spin_lock_locked_ss_critical_section_lock.mdwn41
-rw-r--r--open_issues/thread_numbering_of_ps_and_gdb.mdwn21
-rw-r--r--open_issues/threads_issues.mdwn15
-rw-r--r--open_issues/time.mdwn69
-rw-r--r--open_issues/tinyproxy.mdwn18
-rw-r--r--open_issues/translate_fd_or_port_to_file_name.mdwn86
-rw-r--r--open_issues/translator_environment_variables.mdwn31
-rw-r--r--open_issues/translator_stdout_stderr.mdwn15
-rw-r--r--open_issues/translators_O_NOTRANS_O_NOFOLLOW_namespace-based_selection.mdwn148
-rw-r--r--open_issues/translators_set_up_by_untrusted_users.mdwn347
-rw-r--r--open_issues/tty_activitiy_vs_disk_io.mdwn81
-rw-r--r--open_issues/unit_testing.mdwn94
-rw-r--r--open_issues/user-space_device_drivers.mdwn202
-rw-r--r--open_issues/viengoos_make_clean.mdwn22
-rw-r--r--open_issues/viengoos_tls_gcc.mdwn17
-rw-r--r--open_issues/virtual_square_view-os.mdwn55
-rw-r--r--open_issues/virtualbox.mdwn99
-rw-r--r--open_issues/virtualization.mdwn46
-rw-r--r--open_issues/virtualization/capsicum.mdwn22
-rw-r--r--open_issues/virtualization/file_systems.mdwn24
-rw-r--r--open_issues/virtualization/networking.mdwn30
-rw-r--r--open_issues/wine.mdwn69
-rw-r--r--open_issues/wine/rg6dx09G.patch116
-rw-r--r--open_issues/wrong_reply_message_id.mdwn23
-rw-r--r--open_issues/xattr.mdwn36
-rw-r--r--open_issues/xen_crash_copy-size_le_page_size.mdwn104
-rw-r--r--open_issues/xen_domu_with_ro_hd.mdwn35
-rw-r--r--persistency.mdwn38
-rw-r--r--policy.mdwn6
-rw-r--r--principal.mdwn6
-rw-r--r--public_hurd_boxen.mdwn95
-rw-r--r--public_hurd_boxen/bddebian.mdwn21
-rw-r--r--public_hurd_boxen/installation.mdwn128
-rw-r--r--public_hurd_boxen/installation/flubber.mdwn53
-rw-r--r--public_hurd_boxen/installation/snubber.mdwn66
-rw-r--r--public_hurd_boxen/xen_handling.mdwn49
-rw-r--r--public_hurd_boxen/zenhost.mdwn18
-rwxr-xr-xpurify_html39
-rw-r--r--qemu.mdwn36
-rw-r--r--recent_changes.mdwn10
-rwxr-xr-xrender_locally107
-rw-r--r--rpc.mdwn16
-rw-r--r--rules.mdwn6
-rw-r--r--rules/savannah_group.mdwn19
-rw-r--r--rules/source_repositories.mdwn98
-rw-r--r--sandbox.mdwn2
-rw-r--r--security.mdwn13
-rwxr-xr-xset_mtimes56
-rw-r--r--sfi.mdwn6
-rw-r--r--shortcuts.mdwn129
-rw-r--r--sidebar.mdwn49
-rw-r--r--source_repositories.mdwn259
-rw-r--r--source_repositories/binutils.mdwn15
-rw-r--r--source_repositories/boehm_gc.mdwn22
-rw-r--r--source_repositories/gcc.mdwn15
-rw-r--r--source_repositories/gdb.mdwn15
-rw-r--r--source_repositories/glibc.mdwn93
-rw-r--r--source_repositories/incubator.mdwn12
-rw-r--r--system_call.mdwn19
-rw-r--r--systemtap.mdwn34
-rw-r--r--tag.mdwn75
-rw-r--r--tag/bounty.mdwn23
-rw-r--r--tag/fixed_in_debian.mdwn17
-rw-r--r--tag/open_issue_binutils.mdwn15
-rw-r--r--tag/open_issue_documentation.mdwn17
-rw-r--r--tag/open_issue_gcc.mdwn15
-rw-r--r--tag/open_issue_gdb.mdwn15
-rw-r--r--tag/open_issue_glibc.mdwn17
-rw-r--r--tag/open_issue_gnumach.mdwn17
-rw-r--r--tag/open_issue_hurd.mdwn17
-rw-r--r--tag/open_issue_libpthread.mdwn15
-rw-r--r--tag/open_issue_llvm.mdwn15
-rw-r--r--tag/open_issue_mig.mdwn15
-rw-r--r--tag/open_issue_porting.mdwn17
-rw-r--r--tag/open_issue_viengoos.mdwn15
-rw-r--r--tag/open_issue_xen.mdwn15
-rw-r--r--tag/stable_URL.mdwn17
-rw-r--r--tcb.mdwn6
-rw-r--r--templates/highlight.mdwn3
-rw-r--r--toolchain.mdwn33
-rw-r--r--toolchain/cross-gnu.mdwn218
-rw-r--r--toolchain/elfosabi_gnu.mdwn40
-rw-r--r--topgit.mdwn37
-rw-r--r--trackers.mdwn11
-rw-r--r--trust.mdwn8
-rw-r--r--unix.mdwn80
-rw-r--r--unix/file_descriptor.mdwn18
-rw-r--r--unix/process.mdwn20
-rw-r--r--unix/signal.mdwn34
-rw-r--r--unsorted/BochsFAQ.mdwn2
-rw-r--r--unsorted/BootProcess.mdwn36
-rw-r--r--unsorted/BuildingHurdLiveCD.mdwn (renamed from Hurd/BuildingHurdLiveCD.mdwn)2
-rw-r--r--unsorted/BuildingOskitMach.mdwn (renamed from Mach/BuildingOskitMach.mdwn)7
-rw-r--r--unsorted/BuildingOskitMach/modules-light.x86.pc (renamed from Mach/BuildingOskitMach/modules-light.x86.pc)0
-rw-r--r--unsorted/BuildingOskitMach/modules.x86.pc (renamed from Mach/BuildingOskitMach/modules.x86.pc)0
-rw-r--r--unsorted/CrossHurd.mdwn (renamed from Hurd/CrossHurd.mdwn)0
-rw-r--r--unsorted/DebianX.mdwn (renamed from Hurd/DebianX.mdwn)14
-rw-r--r--unsorted/DebianXorg.mdwn (renamed from Hurd/DebianXorg.mdwn)6
-rw-r--r--unsorted/DistributedServers.mdwn (renamed from Hurd/DistributedServers.mdwn)0
-rw-r--r--unsorted/ExtTwoSize.mdwn (renamed from Hurd/ExtTwoSize.mdwn)0
-rw-r--r--unsorted/FlashHurd.mdwn (renamed from Hurd/FlashHurd.mdwn)0
-rw-r--r--unsorted/FunnyHurd.mdwn (renamed from Hurd/FunnyHurd.mdwn)0
-rw-r--r--unsorted/FunnyHurd/CrystalAwards.jpg (renamed from Hurd/FunnyHurd/CrystalAwards.jpg)bin13055 -> 13055 bytes
-rw-r--r--unsorted/FunnyHurd/HurdCarDeal.jpg (renamed from Hurd/FunnyHurd/HurdCarDeal.jpg)bin16144 -> 16144 bytes
-rw-r--r--unsorted/FunnyHurd/HurdExchange.gif (renamed from Hurd/FunnyHurd/HurdExchange.gif)bin3078 -> 3078 bytes
-rw-r--r--unsorted/FunnyHurd/HurdLodge.jpg (renamed from Hurd/FunnyHurd/HurdLodge.jpg)bin38639 -> 38639 bytes
-rw-r--r--unsorted/FunnyHurd/HurdMagician.jpg (renamed from Hurd/FunnyHurd/HurdMagician.jpg)bin10703 -> 10703 bytes
-rw-r--r--unsorted/FunnyHurd/hurd-windows.gif (renamed from Hurd/FunnyHurd/hurd-windows.gif)bin14799 -> 14799 bytes
-rw-r--r--unsorted/GNUstep.mdwn (renamed from Hurd/GNUstep.mdwn)0
-rw-r--r--unsorted/GrantBowHurdPage.mdwn (renamed from Hurd/GrantBowHurdPage.mdwn)0
-rw-r--r--unsorted/GrantBowHurdPage/diagram.png (renamed from Hurd/GrantBowHurdPage/diagram.png)bin2139 -> 2139 bytes
-rw-r--r--unsorted/GrantBowHurdPage/diagram.xcf (renamed from Hurd/GrantBowHurdPage/diagram.xcf)bin5492 -> 5492 bytes
-rw-r--r--unsorted/HurdDevelopers.mdwn120
-rw-r--r--unsorted/HurdWikiCopyrightDiscuss.mdwn69
-rw-r--r--unsorted/HurdWikiMove.mdwn55
-rw-r--r--unsorted/HurdWnpp.mdwn19
-rw-r--r--unsorted/InstallNotes.mdwn7
-rw-r--r--unsorted/InstallTips.mdwn6
-rw-r--r--unsorted/InteractiveTranslators.mdwn (renamed from Hurd/InteractiveTranslators.mdwn)0
-rw-r--r--unsorted/JoachimNilssonHurdPage.mdwn (renamed from Hurd/JoachimNilssonHurdPage.mdwn)12
-rw-r--r--unsorted/JoachimNilssonHurdPage/patch_kit.jpg (renamed from Hurd/JoachimNilssonHurdPage/patch_kit.jpg)bin9469 -> 9469 bytes
-rw-r--r--unsorted/KernelCousinDebianHurd.mdwn (renamed from Hurd/KernelCousinDebianHurd.mdwn)0
-rw-r--r--unsorted/KnownHurdLimits.mdwn (renamed from Hurd/KnownHurdLimits.mdwn)4
-rw-r--r--unsorted/MakeImage.mdwn (renamed from Hurd/MakeImage.mdwn)0
-rw-r--r--unsorted/NewMachHistory.mdwn27
-rw-r--r--unsorted/OskitMach.mdwn (renamed from Mach/OskitMach.mdwn)4
-rw-r--r--unsorted/OskitMachPatches.mdwn (renamed from Mach/OskitMachPatches.mdwn)0
-rw-r--r--unsorted/OskitMachPatches/patch-gnumach_softclock-wagi.diff.gz (renamed from Mach/OskitMachPatches/patch-gnumach_softclock-wagi.diff.gz)bin576 -> 576 bytes
-rw-r--r--unsorted/OskitMachPatches/patch-gnumach_softint-wagi.diff.gz (renamed from Mach/OskitMachPatches/patch-gnumach_softint-wagi.diff.gz)bin1799 -> 1799 bytes
-rw-r--r--unsorted/OskitMachStatusList.mdwn (renamed from Mach/OskitMachStatusList.mdwn)0
-rw-r--r--unsorted/OskitPatches.mdwn (renamed from Mach/OskitPatches.mdwn)4
-rw-r--r--unsorted/OskitPatches/patch-oskit-0.97-eepro.diff.gz (renamed from Mach/OskitPatches/patch-oskit-0.97-eepro.diff.gz)bin301 -> 301 bytes
-rw-r--r--unsorted/OskitPatches/patch-oskit-0.97-i_khavki.diff.gz (renamed from Mach/OskitPatches/patch-oskit-0.97-i_khavki.diff.gz)bin405 -> 405 bytes
-rw-r--r--unsorted/OskitPatches/patch-oskit-0.97-jon_arney.diff.gz (renamed from Mach/OskitPatches/patch-oskit-0.97-jon_arney.diff.gz)bin282 -> 282 bytes
-rw-r--r--unsorted/OskitPatches/patch-oskit-0.97-kkraemer.diff.gz (renamed from Mach/OskitPatches/patch-oskit-0.97-kkraemer.diff.gz)bin367 -> 367 bytes
-rw-r--r--unsorted/OskitPatches/patch-oskit-0.97-sbrk_hack.diff.gz (renamed from Mach/OskitPatches/patch-oskit-0.97-sbrk_hack.diff.gz)bin283 -> 283 bytes
-rw-r--r--unsorted/PortingIssues.mdwn278
-rw-r--r--unsorted/PosixSemaphores.mdwn (renamed from Mach/PosixSemaphores.mdwn)0
-rw-r--r--unsorted/PosixThreads.mdwn (renamed from Hurd/PosixThreads.mdwn)0
-rw-r--r--unsorted/QEMU.mdwn15
-rw-r--r--unsorted/RemoteDebugOskitMach.mdwn (renamed from Mach/RemoteDebugOskitMach.mdwn)4
-rw-r--r--unsorted/RequirementsForLiveCD.mdwn (renamed from Hurd/RequirementsForLiveCD.mdwn)0
-rw-r--r--unsorted/SavannahProjects.mdwn1
-rw-r--r--unsorted/SeenHurd.mdwn (renamed from Hurd/SeenHurd.mdwn)7
-rw-r--r--unsorted/SeenHurd/lmf10_1999.jpg (renamed from Hurd/SeenHurd/lmf10_1999.jpg)bin63327 -> 63327 bytes
-rw-r--r--unsorted/SerialConsole.mdwn (renamed from Hurd/SerialConsole.mdwn)0
-rw-r--r--unsorted/Shopping.mdwn (renamed from Hurd/Shopping.mdwn)0
-rw-r--r--unsorted/SystemAPILimits.mdwn30
-rw-r--r--unsorted/WebHome/hurd_sm_mf.png (renamed from Hurd/WebHome/hurd_sm_mf.png)bin1434 -> 1434 bytes
-rw-r--r--unsorted/XattrHurd.mdwn (renamed from Hurd/XattrHurd.mdwn)0
-rw-r--r--unsorted/Xfree86.mdwn (renamed from Hurd/Xfree86.mdwn)12
-rw-r--r--unsorted/byte-letter.txt25
-rw-r--r--unsorted/changelogs.html107
-rw-r--r--unsorted/hurd-fs-org219
-rw-r--r--unsorted/hurd-migr141
-rw-r--r--user.mdwn21
-rw-r--r--user.old/AaaaaAaaaaAaa.mdwn22
-rw-r--r--user.old/AaronHawley.mdwn22
-rw-r--r--user.old/AdityaGupta.mdwn22
-rw-r--r--user.old/AdrianFifteen.mdwn22
-rw-r--r--user.old/AidenWestlund.mdwn21
-rw-r--r--user.old/AlanMcIntyre.mdwn22
-rw-r--r--user.old/AlaskaSubedi.mdwn22
-rw-r--r--user.old/AlastairPoole.mdwn22
-rw-r--r--user.old/AlejandroSanchez.mdwn22
-rw-r--r--user.old/AlexBroot.mdwn22
-rw-r--r--user.old/AlexLambert.mdwn22
-rw-r--r--user.old/AlexanderPetry.mdwn22
-rw-r--r--user.old/AlexandreBuisse.mdwn22
-rw-r--r--user.old/AlexandreDulaunoy.mdwn22
-rw-r--r--user.old/AlfredHeimsoth.mdwn22
-rw-r--r--user.old/AmarionOttey.mdwn21
-rw-r--r--user.old/AnandChhatpar.mdwn22
-rw-r--r--user.old/AndersBreindahl.mdwn22
-rw-r--r--user.old/AndreUlrich.mdwn22
-rw-r--r--user.old/AndreasRottmann.mdwn22
-rw-r--r--user.old/AndrewCohen.mdwn22
-rw-r--r--user.old/AndrewMitchell.mdwn22
-rw-r--r--user.old/AndrewResch.mdwn22
-rw-r--r--user.old/AndrewStanford.mdwn30
-rw-r--r--user.old/AnivarAravind.mdwn22
-rw-r--r--user.old/AntonOussik.mdwn22
-rw-r--r--user.old/AnuragPatel.mdwn22
-rw-r--r--user.old/ArchieCarrico.mdwn22
-rw-r--r--user.old/AriefMulya.mdwn22
-rw-r--r--user.old/ArturoRydberg.mdwn21
-rw-r--r--user.old/AshishNarayan.mdwn22
-rw-r--r--user.old/BDouglasHilton.mdwn22
-rw-r--r--user.old/BKSreeRanganath.mdwn22
-rw-r--r--user.old/BenAsselstine.mdwn22
-rw-r--r--user.old/BertrikSikken.mdwn22
-rw-r--r--user.old/BijiPadmanaban.mdwn22
-rw-r--r--user.old/BlazePoteet.mdwn21
-rw-r--r--user.old/BorisBukowski.mdwn22
-rw-r--r--user.old/BradDixon.mdwn22
-rw-r--r--user.old/CalvinMitchell.mdwn24
-rw-r--r--user.old/CamResu.mdwn22
-rw-r--r--user.old/CarenTang.mdwn22
-rw-r--r--user.old/CarlBingel.mdwn22
-rw-r--r--user.old/CarlosM.mdwn22
-rw-r--r--user.old/CarlosPoker.mdwn22
-rw-r--r--user.old/CasadevallM.mdwn22
-rw-r--r--user.old/CharlieJordan.mdwn22
-rw-r--r--user.old/CherryGeorgeMathew.mdwn22
-rw-r--r--user.old/ChrisHarvey.mdwn22
-rw-r--r--user.old/ChristopheDevine.mdwn22
-rw-r--r--user.old/ChristopherBodenstein.mdwn22
-rw-r--r--user.old/ConanRehert.mdwn22
-rw-r--r--user.old/DabianHurd.mdwn22
-rw-r--r--user.old/DanAdrianValentin.mdwn22
-rw-r--r--user.old/DanielBaumann.mdwn22
-rw-r--r--user.old/DaniloSegan.mdwn22
-rw-r--r--user.old/DarenMackey.mdwn21
-rw-r--r--user.old/DarioTrotman.mdwn21
-rw-r--r--user.old/DarkArctic.mdwn19
-rw-r--r--user.old/DavidButler.mdwn22
-rw-r--r--user.old/DavidEverly.mdwn22
-rw-r--r--user.old/DavidFahlander.mdwn22
-rw-r--r--user.old/DavidRoches.mdwn22
-rw-r--r--user.old/DavidSmith.mdwn22
-rw-r--r--user.old/DavidWalter.mdwn22
-rw-r--r--user.old/DazElf.mdwn22
-rw-r--r--user.old/DeSc.mdwn22
-rw-r--r--user.old/DeepakGoel.mdwn24
-rw-r--r--user.old/DerekDavies.mdwn27
-rw-r--r--user.old/DeviceRandom.mdwn22
-rw-r--r--user.old/DmitriAlenitchev.mdwn22
-rw-r--r--user.old/DmitryZh.mdwn17
-rw-r--r--user.old/DougEckhart.mdwn22
-rw-r--r--user.old/DucOd.mdwn22
-rw-r--r--user.old/DuncanInnes.mdwn22
-rw-r--r--user.old/EdBorasky.mdwn22
-rw-r--r--user.old/EduardoMartn.mdwn22
-rw-r--r--user.old/EldonKoyle.mdwn22
-rw-r--r--user.old/EnriqueJenks.mdwn21
-rw-r--r--user.old/ErnstRohlicek.mdwn22
-rw-r--r--user.old/EvvL.mdwn22
-rw-r--r--user.old/FabriceBauzac.mdwn22
-rw-r--r--user.old/FaridHajji.mdwn22
-rw-r--r--user.old/FatBoy.mdwn22
-rw-r--r--user.old/FengLi.mdwn22
-rw-r--r--user.old/FilipBrcic.mdwn22
-rw-r--r--user.old/FreeNSK.mdwn22
-rw-r--r--user.old/GaborGreif.mdwn23
-rw-r--r--user.old/GergelySzasz.mdwn22
-rw-r--r--user.old/GerhardMuntingh.mdwn22
-rw-r--r--user.old/GillesBidoli.mdwn22
-rw-r--r--user.old/GoodSmil.mdwn22
-rw-r--r--user.old/GrantBow.mdwn78
-rw-r--r--user.old/GrantBowComments.mdwn32
-rw-r--r--user.old/GraysonSlaubaugh.mdwn21
-rw-r--r--user.old/GregBuchholz.mdwn22
-rw-r--r--user.old/GuillemJover.mdwn22
-rw-r--r--user.old/GurkanSengun.mdwn22
-rw-r--r--user.old/HaavardFarberg.mdwn22
-rw-r--r--user.old/HansruediHaenni.mdwn26
-rw-r--r--user.old/HelgeStenstroem.mdwn22
-rw-r--r--user.old/HishamKotry.mdwn22
-rw-r--r--user.old/IanSlinger.mdwn22
-rw-r--r--user.old/IsaacPraveen.mdwn22
-rw-r--r--user.old/IssacCirino.mdwn21
-rw-r--r--user.old/IvanShmakov.mdwn22
-rw-r--r--user.old/IvanZenkov.mdwn22
-rw-r--r--user.old/JadenPergola.mdwn21
-rw-r--r--user.old/JamesAMorrison.mdwn6
-rw-r--r--user.old/JasonLathrop.mdwn22
-rw-r--r--user.old/JasonMusgrove.mdwn22
-rw-r--r--user.old/JayConway.mdwn22
-rw-r--r--user.old/JeanChristophePenalva.mdwn22
-rw-r--r--user.old/JeroenDekkers.mdwn22
-rw-r--r--user.old/JoachimNilsson.mdwn65
-rw-r--r--user.old/JoanathanNarvaez.mdwn22
-rw-r--r--user.old/JoePistritto.mdwn22
-rw-r--r--user.old/JoeSteeve.mdwn22
-rw-r--r--user.old/JohanRydberg.mdwn22
-rw-r--r--user.old/JohnAllsup.mdwn22
-rw-r--r--user.old/JohnGH.mdwn22
-rw-r--r--user.old/JohnTalintyre.mdwn22
-rw-r--r--user.old/JonPortnoy.mdwn28
-rw-r--r--user.old/JonathanBFiliatrault.mdwn22
-rw-r--r--user.old/JonathanShapiro.mdwn22
-rw-r--r--user.old/JoseMariaRuiz.mdwn22
-rw-r--r--user.old/JoukeWitteveen.mdwn22
-rw-r--r--user.old/JuanAlvarez.mdwn22
-rw-r--r--user.old/JuanAntonioSanchez.mdwn22
-rw-r--r--user.old/JuhaN.mdwn22
-rw-r--r--user.old/JuhoMantysaari.mdwn22
-rw-r--r--user.old/JulienPUYDT.mdwn22
-rw-r--r--user.old/JustinKoser.mdwn22
-rw-r--r--user.old/KaiDziedzic.mdwn21
-rw-r--r--user.old/KeatonMaclachlan.mdwn21
-rw-r--r--user.old/KellerF.mdwn22
-rw-r--r--user.old/KevinKinnell.mdwn21
-rw-r--r--user.old/KurtBKaiser.mdwn22
-rw-r--r--user.old/KurtKaiser.mdwn22
-rw-r--r--user.old/LaloMartins.mdwn28
-rw-r--r--user.old/LaudneyRen.mdwn22
-rw-r--r--user.old/LeeItkin.mdwn22
-rw-r--r--user.old/LeonardoPereira.mdwn22
-rw-r--r--user.old/LeonelRugama.mdwn22
-rw-r--r--user.old/LisandroMineo.mdwn21
-rw-r--r--user.old/LoganadenVelvindron.mdwn22
-rw-r--r--user.old/LucaSaiu.mdwn22
-rw-r--r--user.old/LucasNussbaum.mdwn22
-rw-r--r--user.old/LuisBustamante.mdwn22
-rw-r--r--user.old/LuisMiguel.mdwn22
-rw-r--r--user.old/LunaTic.mdwn22
-rw-r--r--user.old/ManishSharma.mdwn22
-rw-r--r--user.old/ManuelMenal.mdwn22
-rw-r--r--user.old/ManuelValderrama.mdwn24
-rw-r--r--user.old/MarcHuffnagle.mdwn22
-rw-r--r--user.old/MarcOliverIhm.mdwn22
-rw-r--r--user.old/MarcPoulhies.mdwn22
-rw-r--r--user.old/MarceloCToyama.mdwn22
-rw-r--r--user.old/MarcoGerards.mdwn22
-rw-r--r--user.old/MarickIntl.mdwn22
-rw-r--r--user.old/MarionWillow.mdwn22
-rw-r--r--user.old/MarkMeyer.mdwn22
-rw-r--r--user.old/MarkusKaarn.mdwn22
-rw-r--r--user.old/MartinAnkerl.mdwn22
-rw-r--r--user.old/MartinWeaver.mdwn20
-rw-r--r--user.old/MastrLynX.mdwn22
-rw-r--r--user.old/MatSei.mdwn22
-rw-r--r--user.old/MatheusMorais.mdwn22
-rw-r--r--user.old/MathieuGauthierPilote.mdwn22
-rw-r--r--user.old/MattBur.mdwn22
-rw-r--r--user.old/MattGrant.mdwn29
-rw-r--r--user.old/MatteoSacchi.mdwn5
-rw-r--r--user.old/MatteoSettenvini.mdwn12
-rw-r--r--user.old/MatthewRikard.mdwn22
-rw-r--r--user.old/MatthiasKoch.mdwn22
-rw-r--r--user.old/MauriceMcCarthy.mdwn22
-rw-r--r--user.old/MauricioMastrangelo.mdwn21
-rw-r--r--user.old/MaximDesyatoff.mdwn22
-rw-r--r--user.old/MichaelAblassmeier.mdwn22
-rw-r--r--user.old/MichaelAdams.mdwn22
-rw-r--r--user.old/MichaelFlickinger.mdwn22
-rw-r--r--user.old/MichaelHan.mdwn22
-rw-r--r--user.old/MichaelOberg.mdwn22
-rw-r--r--user.old/MichaelT.mdwn22
-rw-r--r--user.old/MichalSuchanek.mdwn22
-rw-r--r--user.old/MikeMannix.mdwn17
-rw-r--r--user.old/MiltonThomas.mdwn22
-rw-r--r--user.old/MohamedNabilMahmoud.mdwn22
-rw-r--r--user.old/MonteKiehm.mdwn21
-rw-r--r--user.old/MosheGentry.mdwn20
-rw-r--r--user.old/NagromNamreh.mdwn22
-rw-r--r--user.old/NathanielPangilinan.mdwn22
-rw-r--r--user.old/NedWait.mdwn22
-rw-r--r--user.old/NeilDoekkalfar.mdwn22
-rw-r--r--user.old/NeillMiller.mdwn22
-rw-r--r--user.old/NicholasLee.mdwn22
-rw-r--r--user.old/NickCroft.mdwn22
-rw-r--r--user.old/NickRusnov.mdwn22
-rw-r--r--user.old/NicolasBarbier.mdwn22
-rw-r--r--user.old/NiklasS.mdwn22
-rw-r--r--user.old/NikolayDiakov.mdwn22
-rw-r--r--user.old/NisoliIsaia.mdwn22
-rw-r--r--user.old/OgnyanKulev.mdwn21
-rw-r--r--user.old/OtavioJr.mdwn22
-rw-r--r--user.old/PatrickRoss.mdwn20
-rw-r--r--user.old/PatrickStrasser.mdwn22
-rw-r--r--user.old/PaulBowman.mdwn22
-rw-r--r--user.old/PaulNema.mdwn22
-rw-r--r--user.old/PaulWIckham.mdwn22
-rw-r--r--user.old/PauloSchreiner.mdwn22
-rw-r--r--user.old/PedroMacanas.mdwn7
-rw-r--r--user.old/PeterMasiar.mdwn24
-rw-r--r--user.old/PeterMelville.mdwn22
-rw-r--r--user.old/PeterThoeny.mdwn23
-rw-r--r--user.old/PhUrl.mdwn22
-rw-r--r--user.old/PhilipCharles.mdwn22
-rw-r--r--user.old/PiNi.mdwn22
-rw-r--r--user.old/PierlucaMasala.mdwn22
-rw-r--r--user.old/PorterLunceford.mdwn21
-rw-r--r--user.old/PraveenKumar.mdwn22
-rw-r--r--user.old/QjQj.mdwn22
-rw-r--r--user.old/RafaelK.mdwn22
-rw-r--r--user.old/RajaBomb.mdwn22
-rw-r--r--user.old/RaresTitan.mdwn22
-rw-r--r--user.old/RedTux.mdwn22
-rw-r--r--user.old/ReinaldoNolascoSanches.mdwn22
-rw-r--r--user.old/ReneStadler.mdwn22
-rw-r--r--user.old/RichBodo.mdwn22
-rw-r--r--user.old/RikWade.mdwn21
-rw-r--r--user.old/RobSeger.mdwn22
-rw-r--r--user.old/RobbDoyle.mdwn22
-rw-r--r--user.old/RobertMillan.mdwn28
-rw-r--r--user.old/RobertPehr.mdwn22
-rw-r--r--user.old/RoelN.mdwn22
-rw-r--r--user.old/RogerChrisman.mdwn22
-rw-r--r--user.old/RonnyHutchens.mdwn21
-rw-r--r--user.old/RoyFalk.mdwn22
-rw-r--r--user.old/RussellJames.mdwn22
-rw-r--r--user.old/RussellLiefer.mdwn21
-rw-r--r--user.old/RyanGolbeck.mdwn22
-rw-r--r--user.old/SaFanaJ.mdwn22
-rw-r--r--user.old/SamLauzon.mdwn22
-rw-r--r--user.old/SamMason.mdwn26
-rw-r--r--user.old/SamiJLaine.mdwn22
-rw-r--r--user.old/ScottyTierno.mdwn21
-rw-r--r--user.old/SeanDEpagnier.mdwn22
-rw-r--r--user.old/SebastianGabriel.mdwn22
-rw-r--r--user.old/SebastianSilva.mdwn22
-rw-r--r--user.old/SefilesHere.mdwn22
-rw-r--r--user.old/SergeySpiridonov.mdwn22
-rw-r--r--user.old/SergioLopez.mdwn22
-rw-r--r--user.old/ShanChatterjee.mdwn22
-rw-r--r--user.old/SimeonSimeonov.mdwn22
-rw-r--r--user.old/SimonLaw.mdwn5
-rw-r--r--user.old/StanPinte.mdwn22
-rw-r--r--user.old/SubinGnagadharan.mdwn22
-rw-r--r--user.old/SujithH.mdwn22
-rw-r--r--user.old/SunilSomasundara.mdwn22
-rw-r--r--user.old/SusanLocke.mdwn10
-rw-r--r--user.old/TakaoYamashita.mdwn22
-rw-r--r--user.old/TariqDukes.mdwn21
-rw-r--r--user.old/TerrellNorthway.mdwn21
-rw-r--r--user.old/ThadeuCascardo.mdwn22
-rw-r--r--user.old/TheArthur.mdwn22
-rw-r--r--user.old/TheDuck.mdwn23
-rw-r--r--user.old/TheoraGuldhra.mdwn22
-rw-r--r--user.old/ThierryLacoste.mdwn22
-rw-r--r--user.old/ThomasHeim.mdwn22
-rw-r--r--user.old/ThomasSamson.mdwn22
-rw-r--r--user.old/ThomasSchlesinger.mdwn22
-rw-r--r--user.old/TimJohann.mdwn22
-rw-r--r--user.old/TimNowaczyk.mdwn22
-rw-r--r--user.old/TimothyMullin.mdwn21
-rw-r--r--user.old/TomHart.mdwn22
-rw-r--r--user.old/TomaszWitko.mdwn22
-rw-r--r--user.old/TorbenGB.mdwn22
-rw-r--r--user.old/TravisBarker.mdwn30
-rw-r--r--user.old/TristonSondag.mdwn21
-rw-r--r--user.old/VivekCherian.mdwn22
-rw-r--r--user.old/WayneG.mdwn20
-rw-r--r--user.old/WestonHamlin.mdwn20
-rw-r--r--user.old/WidyachacraRajapaksha.mdwn22
-rw-r--r--user.old/WikiMan.mdwn22
-rw-r--r--user.old/WolfgangJ.mdwn22
-rw-r--r--user.old/WomBat.mdwn22
-rw-r--r--user.old/WouterVanHeyst.mdwn22
-rw-r--r--user.old/YanLi.mdwn22
-rw-r--r--user.old/ZacheryAvilla.mdwn21
-rw-r--r--user.old/ZnetCatd.mdwn22
-rw-r--r--user.old/mattex.mdwn22
-rw-r--r--user/El_Dream_Machine.mdwn44
-rw-r--r--user/El_Dream_Machine/discussion.mdwn10
-rw-r--r--user/Erkan-Yilmaz.mdwn1
-rw-r--r--user/Etenil.mdwn40
-rw-r--r--user/arnuld.mdwn2
-rw-r--r--user/baswijnen.mdwn3
-rw-r--r--user/bddebian.mdwn4
-rw-r--r--user/diocles.mdwn3
-rw-r--r--user/flaviocruz.mdwn (renamed from community/flavioc.mdwn)19
-rw-r--r--user/gianlucaguida.mdwn3
-rw-r--r--user/jkoenig.mdwn36
-rw-r--r--user/jkoenig/d-i.mdwn358
-rw-r--r--user/jkoenig/gsoc2011_classes.dia2227
-rw-r--r--user/jkoenig/gsoc2011_classes.pngbin0 -> 59337 bytes
-rw-r--r--user/jkoenig/gsoc2011_proposal.mdwn12
-rw-r--r--user/jkoenig/java.mdwn511
-rw-r--r--user/jkoenig/java/discussion.mdwn559
-rw-r--r--user/jkoenig/java/java-access-bridge.mdwn92
-rw-r--r--user/jkoenig/java/proposal.mdwn629
-rw-r--r--user/jkoenig/objcap.mdwn85
-rw-r--r--user/kam.mdwn152
-rw-r--r--user/madhusudancs.mdwn (renamed from community/procfs.mdwn)8
-rw-r--r--user/michaelbanck.mdwn3
-rw-r--r--user/nowhere.man.mdwn4
-rw-r--r--user/pietroferrari.mdwn3
-rw-r--r--user/pochu.mdwn136
-rw-r--r--user/scolobb.mdwn364
-rw-r--r--user/soerenschulze.mdwn3
-rw-r--r--user/tombachmann.mdwn3
-rw-r--r--user/tschwinge.mdwn12
-rw-r--r--user/vincentvikram.mdwn6
-rw-r--r--user/zhengda.mdwn (renamed from community/da.mdwn)58
-rw-r--r--user/zhengda/howto.mdwn90
-rw-r--r--virtualization.mdwn27
-rw-r--r--wiki_colophon.mdwn32
1396 files changed, 88283 insertions, 12915 deletions
diff --git a/.gitignore b/.gitignore
index a7516b7f..91746f00 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
*~
-.ikiwiki
+
+/.ikiwiki*/
diff --git a/.library/IkiWiki/Plugin/copyright.pm b/.library/IkiWiki/Plugin/copyright.pm
index 2806e9ef..16acaccd 100644
--- a/.library/IkiWiki/Plugin/copyright.pm
+++ b/.library/IkiWiki/Plugin/copyright.pm
@@ -1,7 +1,7 @@
# A plugin for ikiwiki to implement adding a footer with copyright information
# based on a default value taken out of a file.
-# Copyright © 2007 Thomas Schwinge <tschwinge@gnu.org>
+# Copyright © 2007, 2008 Thomas Schwinge <tschwinge@gnu.org>
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
@@ -17,15 +17,14 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-# A footer with copyright information will be added to every rendered page if
-# (a) such a footer isn't present already (see the `meta' plugin's
-# ``copyright'' facility) and (b) a file `copyright.html' is found (using the
-# same rules as for the sidebar plugin).
+# Unless overridden with the `meta' plugin, a footer with copyright information
+# will be added to every page using a source file `copyright' (e.g.,
+# `copyright.mdwn') (using the same ``locating rules'' as for the sidebar
+# plugin).
#
# The state which page's copyright text was gathered from which source is not
-# tracked, so you'll need a full wiki-rebuild if (b)'s files are changed.
-#
-# You can use wiki links in `copyright.html'.
+# tracked, so you'll need a full wiki-rebuild if the `copyright' file is
+# changed.
package IkiWiki::Plugin::copyright;
@@ -33,37 +32,29 @@ use warnings;
use strict;
use IkiWiki 2.00;
+my %copyright;
+
sub import
{
- hook (type => "pagetemplate", id => "copyright", call => \&pagetemplate,
- # Run last, as to have the `meta' plugin do its work first.
- last => 1);
+ hook (type => "scan", id => "copyright", call => \&scan);
}
-sub pagetemplate (@)
+sub scan (@)
{
my %params = @_;
my $page = $params{page};
- my $destpage = $params{destpage};
- my $template = $params{template};
+ return if defined $pagestate{$page}{meta}{copyright};
+
+ my $content;
+ my $copyright_page = bestlink ($page, "copyright") || return;
+ my $copyright_file = $pagesources{$copyright_page} || return;
- if ($template->query (name => "copyright") &&
- ! defined $template->param ('copyright'))
- {
- my $content;
- my $copyright_page = bestlink ($page, "copyright") || return;
- my $copyright_file = $pagesources{$copyright_page} || return;
- #my $pagetype = pagetype ($copyright_file);
- # Check if ``$pagetype eq 'html'''?
- $content = readfile (srcfile ($copyright_file));
+ # Only an optimization to avoid reading the same file again and again.
+ $copyright{$copyright_file} = readfile (srcfile ($copyright_file))
+ unless defined $copyright{$copyright_file};
- if (defined $content && length $content)
- {
- $template->param (copyright =>
- IkiWiki::linkify ($page, $destpage, $content));
- }
- }
+ $pagestate{$page}{meta}{copyright} = $copyright{$copyright_file};
}
1
diff --git a/.library/IkiWiki/Plugin/field.pm b/.library/IkiWiki/Plugin/field.pm
new file mode 100644
index 00000000..d77e7282
--- /dev/null
+++ b/.library/IkiWiki/Plugin/field.pm
@@ -0,0 +1,722 @@
+#!/usr/bin/perl
+# Ikiwiki field plugin.
+# See doc/plugin/contrib/field.mdwn for documentation.
+package IkiWiki::Plugin::field;
+use warnings;
+use strict;
+=head1 NAME
+
+IkiWiki::Plugin::field - front-end for per-page record fields.
+
+=head1 VERSION
+
+This describes version B<1.20101101> of IkiWiki::Plugin::field
+
+=cut
+
+our $VERSION = '1.20101115';
+
+=head1 PREREQUISITES
+
+ IkiWiki
+
+=head1 AUTHOR
+
+ Kathryn Andersen (RUBYKAT)
+ http://github.com/rubykat
+
+=head1 COPYRIGHT
+
+Copyright (c) 2009-2010 Kathryn Andersen
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use IkiWiki 3.00;
+
+my %Fields = (
+ _first => {
+ id => '_first',
+ seq => 'BB',
+ },
+ _last => {
+ id => '_last',
+ seq => 'YY',
+ },
+ _middle => {
+ id => '_middle',
+ seq => 'MM',
+ },
+);
+my @FieldsLookupOrder = ();
+
+my %Cache = ();
+
+sub field_get_value ($$);
+
+sub import {
+ hook(type => "getsetup", id => "field", call => \&getsetup);
+ hook(type => "checkconfig", id => "field", call => \&checkconfig);
+ hook(type => "scan", id => "field", call => \&scan, last=>1);
+ hook(type => "pagetemplate", id => "field", call => \&pagetemplate);
+}
+
+# ===============================================
+# Hooks
+# ---------------------------
+sub getsetup () {
+ return
+ plugin => {
+ safe => 1,
+ rebuild => undef,
+ },
+ field_register => {
+ type => "hash",
+ example => "field_register => {meta => 'last'}",
+ description => "simple registration of fields by plugin",
+ safe => 0,
+ rebuild => undef,
+ },
+ field_allow_config => {
+ type => "boolean",
+ example => "field_allow_config => 1",
+ description => "allow config settings to be queried",
+ safe => 0,
+ rebuild => undef,
+ },
+ field_tags => {
+ type => "hash",
+ example => "field_tags => {BookAuthor => '/books/authors'}",
+ description => "fields flagged as tag-fields",
+ safe => 0,
+ rebuild => undef,
+ },
+}
+
+sub checkconfig () {
+ # use the simple by-plugin pagestatus method for
+ # those plugins registered with the field_register config option.
+ if (defined $config{field_register})
+ {
+ if (ref $config{field_register} eq 'ARRAY')
+ {
+ foreach my $id (@{$config{field_register}})
+ {
+ field_register(id=>$id);
+ }
+ }
+ elsif (ref $config{field_register} eq 'HASH')
+ {
+ foreach my $id (keys %{$config{field_register}})
+ {
+ field_register(id=>$id, order=>$config{field_register}->{$id});
+ }
+ }
+ else
+ {
+ field_register(id=>$config{field_register});
+ }
+ }
+ if (!defined $config{field_allow_config})
+ {
+ $config{field_allow_config} = 0;
+ }
+} # checkconfig
+
+sub scan (@) {
+ my %params=@_;
+ my $page=$params{page};
+ my $content=$params{content};
+
+ # scan for tag fields
+ if ($config{field_tags})
+ {
+ foreach my $field (keys %{$config{field_tags}})
+ {
+ my @values = field_get_value($field, $page);
+ if (@values)
+ {
+ foreach my $tag (@values)
+ {
+ if ($tag)
+ {
+ my $link = $config{field_tags}{$field} . '/'
+ . titlepage($tag);
+ add_link($page, $link, lc($field));
+ }
+ }
+ }
+ }
+ }
+} # scan
+
+sub pagetemplate (@) {
+ my %params=@_;
+ my $page=$params{page};
+ my $template=$params{template};
+
+ field_set_template_values($template, $page);
+} # pagetemplate
+
+# ===============================================
+# Field interface
+# ---------------------------
+
+sub field_register (%) {
+ my %param=@_;
+ if (!exists $param{id})
+ {
+ error 'field_register requires id parameter';
+ return 0;
+ }
+ if (exists $param{call} and !ref $param{call})
+ {
+ error 'field_register call parameter must be function';
+ return 0;
+ }
+
+ my $id = $param{id};
+ $Fields{$id} = \%param;
+
+ # add this to the ordering hash
+ # first, last, order; by default, middle
+ my $when = ($param{first}
+ ? '_first'
+ : ($param{last}
+ ? '_last'
+ : ($param{order}
+ ? ($param{order} eq 'first'
+ ? '_first'
+ : ($param{order} eq 'last'
+ ? '_last'
+ : ($param{order} eq 'middle'
+ ? '_middle'
+ : $param{order}
+ )
+ )
+ )
+ : '_middle'
+ )
+ ));
+ add_lookup_order($id, $when);
+ return 1;
+} # field_register
+
+sub field_get_value ($$) {
+ my $field_name = shift;
+ my $page = shift;
+
+ # This will return the first value it finds
+ # where the value returned is not undefined.
+ # This will return an array of values if wantarray is true.
+
+ # The reason why it checks every registered plugin rather than have
+ # plugins declare which fields they know about, is that it is quite
+ # possible that a plugin doesn't know, ahead of time, what fields
+ # will be available; for example, a YAML format plugin would return
+ # any field that happens to be defined in a YAML page file, which
+ # could be anything!
+
+ # check the cache first
+ my $lc_field_name = lc($field_name);
+ if (wantarray)
+ {
+ if (exists $Cache{$page}{$lc_field_name}{array}
+ and defined $Cache{$page}{$lc_field_name}{array})
+ {
+ return @{$Cache{$page}{$lc_field_name}{array}};
+ }
+ }
+ else
+ {
+ if (exists $Cache{$page}{$lc_field_name}{scalar}
+ and defined $Cache{$page}{$lc_field_name}{scalar})
+ {
+ return $Cache{$page}{$lc_field_name}{scalar};
+ }
+ }
+
+ if (!@FieldsLookupOrder)
+ {
+ build_fields_lookup_order();
+ }
+
+ # Get either the scalar or the array value depending
+ # on what is requested - don't get both because it wastes time.
+ if (wantarray)
+ {
+ my @array_value = undef;
+ foreach my $id (@FieldsLookupOrder)
+ {
+ # get the data from the pagestate hash if it's there
+ if (exists $pagestate{$page}{$id}{$field_name}
+ and defined $pagestate{$page}{$id}{$field_name})
+ {
+ @array_value = (ref $pagestate{$page}{$id}{$field_name}
+ ? @{$pagestate{$page}{$id}{$field_name}}
+ : ($pagestate{$page}{$id}{$field_name}));
+ }
+ elsif (exists $pagestate{$page}{$id}{$lc_field_name}
+ and defined $pagestate{$page}{$id}{$lc_field_name})
+ {
+ @array_value = (ref $pagestate{$page}{$id}{$lc_field_name}
+ ? @{$pagestate{$page}{$id}{$lc_field_name}}
+ : ($pagestate{$page}{$id}{$lc_field_name}));
+ }
+ elsif (exists $Fields{$id}{call})
+ {
+ @array_value = $Fields{$id}{call}->($field_name, $page);
+ }
+ if (@array_value and $array_value[0])
+ {
+ last;
+ }
+ }
+ if (!@array_value)
+ {
+ @array_value = field_calculated_values($field_name, $page);
+ }
+ # cache the value
+ $Cache{$page}{$lc_field_name}{array} = \@array_value;
+ return @array_value;
+ }
+ else # scalar
+ {
+ my $value = undef;
+ foreach my $id (@FieldsLookupOrder)
+ {
+ # get the data from the pagestate hash if it's there
+ # but only if it's already a scalar
+ if (exists $pagestate{$page}{$id}{$field_name}
+ and !ref $pagestate{$page}{$id}{$field_name})
+ {
+ $value = $pagestate{$page}{$id}{$field_name};
+ }
+ elsif (exists $pagestate{$page}{$id}{$lc_field_name}
+ and !ref $pagestate{$page}{$id}{$lc_field_name})
+ {
+ $value = $pagestate{$page}{$id}{$lc_field_name};
+ }
+ elsif (exists $Fields{$id}{call})
+ {
+ $value = $Fields{$id}{call}->($field_name, $page);
+ }
+ if (defined $value)
+ {
+ last;
+ }
+ }
+ if (!defined $value)
+ {
+ $value = field_calculated_values($field_name, $page);
+ }
+ # cache the value
+ $Cache{$page}{$lc_field_name}{scalar} = $value;
+ return $value;
+ }
+
+ return undef;
+} # field_get_value
+
+# set the values for the given HTML::Template template
+sub field_set_template_values ($$;@) {
+ my $template = shift;
+ my $page = shift;
+ my %params = @_;
+
+ my $get_value_fn = (exists $params{value_fn}
+ ? $params{value_fn}
+ : \&field_get_value);
+
+ # Find the parameter names in this template
+ # and see if you can find their values.
+
+ # The reason we check the template for field names is because we
+ # don't know what fields the registered plugins provide; and this is
+ # reasonable because for some plugins (e.g. a YAML data plugin) they
+ # have no way of knowing, ahead of time, what fields they might be
+ # able to provide.
+
+ my @parameter_names = $template->param();
+ foreach my $field (@parameter_names)
+ {
+ # Don't redefine if the field already has a value set.
+ next if ($template->param($field));
+
+ my $type = $template->query(name => $field);
+ if ($type eq 'LOOP' and $field =~ /_LOOP$/oi)
+ {
+ # Loop fields want arrays.
+ # Figure out what field names to look for:
+ # * names are from the enclosed loop fields
+ my @loop_fields = $template->query(loop => $field);
+
+ my @loop_vals = ();
+ my %loop_field_arrays = ();
+ foreach my $fn (@loop_fields)
+ {
+ if ($fn !~ /^__/o) # not a special loop variable
+ {
+ my @ival_array = $get_value_fn->($fn, $page);
+ if (@ival_array)
+ {
+ $loop_field_arrays{$fn} = \@ival_array;
+ }
+ }
+ }
+ foreach my $fn (sort keys %loop_field_arrays)
+ {
+ my $i = 0;
+ foreach my $v (@{$loop_field_arrays{$fn}})
+ {
+ if (!defined $loop_vals[$i])
+ {
+ $loop_vals[$i] = {};
+ }
+ $loop_vals[$i]{$fn} = $v;
+ $i++;
+ }
+ }
+ $template->param($field => \@loop_vals);
+ }
+ else # not a loop field
+ {
+ my $value = $get_value_fn->($field, $page);
+ if (defined $value)
+ {
+ $template->param($field => $value);
+ }
+ }
+ }
+} # field_set_template_values
+
+# ===============================================
+# Private Functions
+# ---------------------------
+
+# Calculate the lookup order
+# <module, >module, AZ
+# This is crabbed from the PmWiki Markup function
+sub add_lookup_order {
+ my $id = shift;
+ my $when = shift;
+
+ # may have given an explicit ordering
+ if ($when =~ /^[A-Z][A-Z]$/o)
+ {
+ $Fields{$id}{seq} = $when;
+ }
+ else
+ {
+ my $cmp = '=';
+ my $seq_field = $when;
+ if ($when =~ /^([<>])(.+)$/o)
+ {
+ $cmp = $1;
+ $seq_field = $2;
+ }
+ $Fields{$seq_field}{dep}{$id} = $cmp;
+ if (exists $Fields{$seq_field}{seq}
+ and defined $Fields{$seq_field}{seq})
+ {
+ $Fields{$id}{seq} = $Fields{$seq_field}{seq} . $cmp;
+ }
+ }
+ if ($Fields{$id}{seq})
+ {
+ foreach my $i (keys %{$Fields{$id}{dep}})
+ {
+ my $m = $Fields{$id}{dep}{$i};
+ add_lookup_order($i, "$m$id");
+ }
+ delete $Fields{$id}{dep};
+ }
+}
+
+sub build_fields_lookup_order {
+
+ # remove the _first, _last and _middle dummy fields
+ # because we don't need them anymore
+ delete $Fields{_first};
+ delete $Fields{_last};
+ delete $Fields{_middle};
+ my %lookup_spec = ();
+ # Make a hash of the lookup sequences
+ foreach my $id (sort keys %Fields)
+ {
+ my $seq = ($Fields{$id}{seq}
+ ? $Fields{$id}{seq}
+ : 'MM');
+ if (!exists $lookup_spec{$seq})
+ {
+ $lookup_spec{$seq} = {};
+ }
+ $lookup_spec{$seq}{$id} = 1;
+ }
+
+ # get the field-lookup order by (a) sorting by lookup_spec
+ # and (b) sorting by field-name for the fields that registered
+ # the same field-lookup order
+ foreach my $ord (sort keys %lookup_spec)
+ {
+ push @FieldsLookupOrder, sort keys %{$lookup_spec{$ord}};
+ }
+} # build_fields_lookup_order
+
+# standard values deduced from other values
+sub field_calculated_values {
+ my $field_name = shift;
+ my $page = shift;
+
+ my $value = undef;
+
+ # Exception for titles
+ # If the title hasn't been found, construct it
+ if ($field_name eq 'title')
+ {
+ $value = pagetitle(IkiWiki::basename($page));
+ }
+ # and set "page" if desired
+ elsif ($field_name eq 'page')
+ {
+ $value = $page;
+ }
+ # the page above this page; aka the current directory
+ elsif ($field_name eq 'parent_page')
+ {
+ if ($page =~ m{^(.*)/[-\.\w]+$}o)
+ {
+ $value = $1;
+ }
+ }
+ elsif ($field_name eq 'basename')
+ {
+ $value = IkiWiki::basename($page);
+ }
+ elsif ($config{field_allow_config}
+ and $field_name =~ /^config-(.*)$/oi)
+ {
+ my $cfield = $1;
+ if (exists $config{$cfield})
+ {
+ $value = $config{$cfield};
+ }
+ }
+ elsif ($field_name =~ /^(.*)-tagpage$/o)
+ {
+ my @array_value = undef;
+ my $real_fn = $1;
+ if (exists $config{field_tags}{$real_fn}
+ and defined $config{field_tags}{$real_fn})
+ {
+ my @values = field_get_value($real_fn, $page);
+ if (@values)
+ {
+ foreach my $tag (@values)
+ {
+ if ($tag)
+ {
+ my $link = $config{field_tags}{$real_fn} . '/' . $tag;
+ push @array_value, $link;
+ }
+ }
+ if (wantarray)
+ {
+ return @array_value;
+ }
+ else
+ {
+ $value = join(",", @array_value) if $array_value[0];
+ }
+ }
+ }
+ }
+ return (wantarray ? ($value) : $value);
+} # field_calculated_values
+
+# match field funcs
+# page-to-check, wanted
+sub match_a_field ($$) {
+ my $page=shift;
+ my $wanted=shift;
+
+ # The field name is first; the rest is the match
+ my $field_name;
+ my $glob;
+ if ($wanted =~ /^(\w+)\s+(.*)$/o)
+ {
+ $field_name = $1;
+ $glob = $2;
+ }
+ else
+ {
+ return IkiWiki::FailReason->new("cannot match field");
+ }
+
+ # turn glob into a safe regexp
+ my $re=IkiWiki::glob2re($glob);
+
+ my $val = IkiWiki::Plugin::field::field_get_value($field_name, $page);
+
+ if (defined $val) {
+ if ($val=~/^$re$/i) {
+ return IkiWiki::SuccessReason->new("$re matches $field_name of $page", $page => $IkiWiki::DEPEND_CONTENT, "" => 1);
+ }
+ else {
+ return IkiWiki::FailReason->new("$re does not match $field_name of $page", "" => 1);
+ }
+ }
+ else {
+ return IkiWiki::FailReason->new("$page does not have a $field_name", "" => 1);
+ }
+} # match_a_field
+
+# check against individual items of a field
+# (treat the field as an array)
+# page-to-check, wanted
+sub match_a_field_item ($$) {
+ my $page=shift;
+ my $wanted=shift;
+
+ # The field name is first; the rest is the match
+ my $field_name;
+ my $glob;
+ if ($wanted =~ /^(\w+)\s+(.*)$/o)
+ {
+ $field_name = $1;
+ $glob = $2;
+ }
+ else
+ {
+ return IkiWiki::FailReason->new("cannot match field");
+ }
+
+ # turn glob into a safe regexp
+ my $re=IkiWiki::glob2re($glob);
+
+ my @val_array = IkiWiki::Plugin::field::field_get_value($field_name, $page);
+
+ if (@val_array)
+ {
+ foreach my $val (@val_array)
+ {
+ if (defined $val) {
+ if ($val=~/^$re$/i) {
+ return IkiWiki::SuccessReason->new("$re matches $field_name of $page", $page => $IkiWiki::DEPEND_CONTENT, "" => 1);
+ }
+ }
+ }
+ # not found
+ return IkiWiki::FailReason->new("$re does not match $field_name of $page", "" => 1);
+ }
+ else {
+ return IkiWiki::FailReason->new("$page does not have a $field_name", "" => 1);
+ }
+} # match_a_field_item
+
+# ===============================================
+# PageSpec functions
+# ---------------------------
+
+package IkiWiki::PageSpec;
+
+sub match_field ($$;@) {
+ my $page=shift;
+ my $wanted=shift;
+ return IkiWiki::Plugin::field::match_a_field($page, $wanted);
+} # match_field
+
+sub match_destfield ($$;@) {
+ my $page=shift;
+ my $wanted=shift;
+ my %params=@_;
+
+ return IkiWiki::FailReason->new("cannot match destpage") unless exists $params{destpage};
+
+ # Match the field on the destination page, not the source page
+ return IkiWiki::Plugin::field::match_a_field($params{destpage}, $wanted);
+} # match_destfield
+
+sub match_field_item ($$;@) {
+ my $page=shift;
+ my $wanted=shift;
+ return IkiWiki::Plugin::field::match_a_field_item($page, $wanted);
+} # match_field
+
+sub match_destfield_item ($$;@) {
+ my $page=shift;
+ my $wanted=shift;
+ my %params=@_;
+
+ return IkiWiki::FailReason->new("cannot match destpage") unless exists $params{destpage};
+
+ # Match the field on the destination page, not the source page
+ return IkiWiki::Plugin::field::match_a_field_item($params{destpage}, $wanted);
+} # match_destfield
+
+sub match_field_tagged ($$;@) {
+ my $page=shift;
+ my $wanted=shift;
+ my %params=@_;
+
+ # The field name is first; the rest is the match
+ my $field_name;
+ my $glob;
+ if ($wanted =~ /^(\w+)\s+(.*)$/o)
+ {
+ $field_name = $1;
+ $glob = $2;
+ }
+ else
+ {
+ return IkiWiki::FailReason->new("cannot match field");
+ }
+ return match_link($page, $glob, linktype => lc($field_name), @_);
+}
+
+sub match_destfield_tagged ($$;@) {
+ my $page=shift;
+ my $wanted=shift;
+ my %params=@_;
+
+ return IkiWiki::FailReason->new("cannot match destpage") unless exists $params{destpage};
+
+ # Match the field on the destination page, not the source page
+ return IkiWiki::Plugin::field::match_field_tagged($params{destpage}, $wanted);
+}
+
+# ===============================================
+# SortSpec functions
+# ---------------------------
+package IkiWiki::SortSpec;
+
+sub cmp_field {
+ my $field = shift;
+ error(gettext("sort=field requires a parameter")) unless defined $field;
+
+ my $left = IkiWiki::Plugin::field::field_get_value($field, $a);
+ my $right = IkiWiki::Plugin::field::field_get_value($field, $b);
+
+ $left = "" unless defined $left;
+ $right = "" unless defined $right;
+ return $left cmp $right;
+}
+
+sub cmp_field_natural {
+ my $field = shift;
+ error(gettext("sort=field requires a parameter")) unless defined $field;
+
+ eval q{use Sort::Naturally};
+ error $@ if $@;
+
+ my $left = IkiWiki::Plugin::field::field_get_value($field, $a);
+ my $right = IkiWiki::Plugin::field::field_get_value($field, $b);
+
+ $left = "" unless defined $left;
+ $right = "" unless defined $right;
+ return Sort::Naturally::ncmp($left, $right);
+}
+
+1;
diff --git a/.library/IkiWiki/Plugin/getfield.pm b/.library/IkiWiki/Plugin/getfield.pm
new file mode 100644
index 00000000..971e7ecb
--- /dev/null
+++ b/.library/IkiWiki/Plugin/getfield.pm
@@ -0,0 +1,126 @@
+#!/usr/bin/perl
+# Ikiwiki getfield plugin.
+# Substitute field values in the content of the page.
+# See plugin/contrib/getfield for documentation.
+package IkiWiki::Plugin::getfield;
+use strict;
+=head1 NAME
+
+IkiWiki::Plugin::getfield - query the values of fields
+
+=head1 VERSION
+
+This describes version B<1.20101101> of IkiWiki::Plugin::getfield
+
+=cut
+
+our $VERSION = '1.20101101';
+
+=head1 PREREQUISITES
+
+ IkiWiki
+ IkiWiki::Plugin::field
+
+=head1 AUTHOR
+
+ Kathryn Andersen (RUBYKAT)
+ http://github.com/rubykat
+
+=head1 COPYRIGHT
+
+Copyright (c) 2009 Kathryn Andersen
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use IkiWiki 3.00;
+
+sub import {
+ hook(type => "getsetup", id => "getfield", call => \&getsetup);
+ hook(type => "filter", id => "getfield", call => \&do_filter, last=>1);
+
+ IkiWiki::loadplugin("field");
+}
+
+#---------------------------------------------------------------
+# Hooks
+# --------------------------------
+
+sub getsetup () {
+ return
+ plugin => {
+ safe => 1,
+ rebuild => undef,
+ },
+}
+
+sub do_filter (@) {
+ my %params=@_;
+ my $page = $params{page};
+ my $destpage = ($params{destpage} ? $params{destpage} : $params{page});
+
+ my $page_file=$pagesources{$page};
+ my $page_type=pagetype($page_file);
+ if (defined $page_type)
+ {
+ while ($params{content} =~ /{{\$([-\w\/]+#)?[-\w]+}}/)
+ {
+ # substitute {{$var}} variables (source-page)
+ $params{content} =~ s/{{\$([-\w]+)}}/get_field_value($1,$page)/eg;
+
+ # substitute {{$page#var}} variables (source-page)
+ $params{content} =~ s/{{\$([-\w\/]+)#([-\w]+)}}/get_other_page_field_value($2,$page,$1)/eg;
+ }
+ }
+
+ $page_file=$pagesources{$destpage};
+ $page_type=pagetype($page_file);
+ if (defined $page_type)
+ {
+ while ($params{content} =~ /{{\+\$([-\w\/]+#)?[-\w]+\+}}/)
+ {
+ # substitute {{+$var+}} variables (dest-page)
+ $params{content} =~ s/{{\+\$([-\w]+)\+}}/get_field_value($1,$destpage)/eg;
+ # substitute {{+$page#var+}} variables (source-page)
+ $params{content} =~ s/{{\+\$([-\w\/]+)#([-\w]+)\+}}/get_other_page_field_value($2,$destpage,$1)/eg;
+ }
+ }
+
+ return $params{content};
+} # do_filter
+
+#---------------------------------------------------------------
+# Private functions
+# --------------------------------
+sub get_other_page_field_value ($$$) {
+ my $field = shift;
+ my $page = shift;
+ my $other_page = shift;
+
+ my $use_page = bestlink($page, $other_page);
+ # add a dependency for the page from which we get the value
+ add_depends($page, $use_page);
+
+ my $val = get_field_value($field, $use_page);
+ if ($val eq $field)
+ {
+ return "${other_page}#$field";
+ }
+ return $val;
+
+} # get_other_page_field_value
+
+sub get_field_value ($$) {
+ my $field = shift;
+ my $page = shift;
+
+ my $value = IkiWiki::Plugin::field::field_get_value($field,$page);
+ return $value if defined $value;
+
+ # if there is no value, return the field name.
+ return $field;
+} # get_field_value
+
+1;
diff --git a/.library/IkiWiki/Plugin/license.pm b/.library/IkiWiki/Plugin/license.pm
index da337f29..651c039a 100644
--- a/.library/IkiWiki/Plugin/license.pm
+++ b/.library/IkiWiki/Plugin/license.pm
@@ -1,7 +1,7 @@
# A plugin for ikiwiki to implement adding a footer with licensing information
# based on a default value taken out of a file.
-# Copyright © 2007 Thomas Schwinge <tschwinge@gnu.org>
+# Copyright © 2007, 2008 Thomas Schwinge <tschwinge@gnu.org>
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
@@ -17,15 +17,13 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-# A footer with licensing information will be added to every rendered page if
-# (a) such a footer isn't present already (see the `meta' plugin's ``license''
-# facility) and (b) a file `license.html' is found (using the same rules as for
-# the sidebar plugin).
+# Unless overridden with the `meta' plugin, a footer with licensing information
+# will be added to every page using a source file `license' (e.g.,
+# `license.mdwn') (using the same ``locating rules'' as for the sidebar
+# plugin).
#
# The state which page's license text was gathered from which source is not
-# tracked, so you'll need a full wiki-rebuild if (b)'s files are changed.
-#
-# You can use wiki links in `license.html'.
+# tracked, so you'll need a full wiki-rebuild if the `license' file is changed.
package IkiWiki::Plugin::license;
@@ -33,37 +31,29 @@ use warnings;
use strict;
use IkiWiki 2.00;
+my %license;
+
sub import
{
- hook (type => "pagetemplate", id => "license", call => \&pagetemplate,
- # Run last, as to have the `meta' plugin do its work first.
- last => 1);
+ hook (type => "scan", id => "license", call => \&scan);
}
-sub pagetemplate (@)
+sub scan (@)
{
my %params = @_;
my $page = $params{page};
- my $destpage = $params{destpage};
- my $template = $params{template};
+ return if defined $pagestate{$page}{meta}{license};
+
+ my $content;
+ my $license_page = bestlink ($page, "license") || return;
+ my $license_file = $pagesources{$license_page} || return;
- if ($template->query (name => "license") &&
- ! defined $template->param ('license'))
- {
- my $content;
- my $license_page = bestlink ($page, "license") || return;
- my $license_file = $pagesources{$license_page} || return;
- #my $pagetype = pagetype ($license_file);
- # Check if ``$pagetype eq 'html'''?
- $content = readfile (srcfile ($license_file));
+ # Only an optimization to avoid reading the same file again and again.
+ $license{$license_file} = readfile (srcfile ($license_file))
+ unless defined $license{$license_file};
- if (defined $content && length $content)
- {
- $template->param (license =>
- IkiWiki::linkify ($page, $destpage, $content));
- }
- }
+ $pagestate{$page}{meta}{license} = $license{$license_file};
}
1
diff --git a/.library/IkiWiki/Plugin/reset_mtimes.pm b/.library/IkiWiki/Plugin/reset_mtimes.pm
new file mode 100644
index 00000000..a168652b
--- /dev/null
+++ b/.library/IkiWiki/Plugin/reset_mtimes.pm
@@ -0,0 +1,84 @@
+# Copyright © 2010 Thomas Schwinge <thomas@schwinge.name>
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2, or (at your option) any later
+# version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+package IkiWiki::Plugin::reset_mtimes;
+
+use warnings;
+use strict;
+use IkiWiki 3.00;
+
+# This plugin resets pages' / files' mtimes according to the RCS information
+# when using --refresh mode.
+#
+# Note that the files' mtimes are *always* set, even if the file has
+# un-committed changes.
+#
+# <http://ikiwiki.info/bugs/pagemtime_in_refresh_mode/>
+
+sub import
+{
+ hook (type => "needsbuild",
+ id => "reset_mtimes",
+ call => \&needsbuild);
+}
+
+sub needsbuild (@)
+{
+ # Only proceed if --gettime is in effect, as we're clearly not intersted in
+ # this functionality otherwise.
+ return unless $config{gettime};
+
+ my $files = shift;
+ foreach my $file (@$files)
+ {
+ # [TODO. Perhaps not necessary. Can this hook ever be called for
+ # removed pages -- that need to be ``rebuilt'' in the sense that
+ # they're to be removed?] Don't bother for pages that don't exist
+ # anymore.
+ next unless -e "$config{srcdir}/$file";
+
+ my $page = pagename ($file);
+ debug ("needsbuild: <$file> <$page>");
+
+ # Only ever update -- otherwise ikiwiki shall do its own thing.
+ if (defined $IkiWiki::pagemtime{$page})
+ {
+ debug ("pagemtime: " . $IkiWiki::pagemtime{$page});
+
+ my $mtime = 0;
+ eval
+ {
+ $mtime = IkiWiki::rcs_getmtime ($file);
+ };
+ if ($@)
+ {
+ print STDERR $@;
+ }
+ elsif ($mtime > 0)
+ {
+ $IkiWiki::pagemtime{$page} = $mtime;
+
+ # We have to set the actual file's mtime too, as otherwise
+ # ikiwiki will update it again and again.
+ utime($mtime, $mtime, "$config{srcdir}/$file");
+ }
+
+ debug ("pagemtime: " . $IkiWiki::pagemtime{$page});
+ }
+ }
+}
+
+1
diff --git a/.library/IkiWiki/Plugin/ymlfront.pm b/.library/IkiWiki/Plugin/ymlfront.pm
new file mode 100644
index 00000000..9c033833
--- /dev/null
+++ b/.library/IkiWiki/Plugin/ymlfront.pm
@@ -0,0 +1,434 @@
+#!/usr/bin/perl
+# YAML format for structured data
+# See plugins/contrib/ymlfront for documentation.
+package IkiWiki::Plugin::ymlfront;
+use warnings;
+use strict;
+=head1 NAME
+
+IkiWiki::Plugin::ymlfront - add YAML-format data to a page
+
+=head1 VERSION
+
+This describes version B<1.20100808> of IkiWiki::Plugin::ymlfront
+
+=cut
+
+our $VERSION = '1.20101116';
+
+=head1 PREREQUISITES
+
+ IkiWiki
+ IkiWiki::Plugin::field
+ YAML::Any
+
+=head1 AUTHOR
+
+ Kathryn Andersen (RUBYKAT)
+ http://github.com/rubykat
+
+=head1 COPYRIGHT
+
+Copyright (c) 2009 Kathryn Andersen
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+use IkiWiki 3.00;
+
+sub import {
+ hook(type => "getsetup", id => "ymlfront", call => \&getsetup);
+ hook(type => "checkconfig", id => "ymlfront", call => \&checkconfig);
+ hook(type => "filter", id => "ymlfront", call => \&filter, first=>1);
+ hook(type => "preprocess", id => "ymlfront", call => \&preprocess, scan=>1);
+ hook(type => "scan", id => "ymlfront", call => \&scan);
+ hook(type => "checkcontent", id => "ymlfront", call => \&checkcontent);
+
+ IkiWiki::loadplugin('field');
+ IkiWiki::Plugin::field::field_register(id=>'ymlfront',
+ call=>\&yml_get_value,
+ first=>1);
+}
+
+# ------------------------------------------------------------
+# Package Vars
+# --------------------------------
+my $ymlfront_regex = qr{
+ (\\?) # 1: escape?
+ \[\[(!) # directive open; 2: prefix
+ (ymlfront) # 3: command
+ ( # 4: the parameters..
+ \s+ # Must have space if parameters present
+ (?:
+ (?:[-\w]+=)? # named parameter key?
+ (?:
+ """.*?""" # triple-quoted value
+ |
+ "[^"]*?" # single-quoted value
+ |
+ [^"\s\]]+ # unquoted value
+ )
+ \s* # whitespace or end
+ # of directive
+ )
+ *)? # 0 or more parameters
+ \]\] # directive closed
+ }sx;
+
+# ------------------------------------------------------------
+# Hooks
+# --------------------------------
+sub getsetup () {
+ return
+ plugin => {
+ safe => 1,
+ rebuild => 1,
+ },
+ ymlfront_delim => {
+ type => "array",
+ example => "ymlfront_sep => [qw(--YAML-START-- --YAML-END--)]",
+ description => "delimiters of YAML data",
+ safe => 0,
+ rebuild => undef,
+ },
+}
+
+sub checkconfig () {
+ eval q{use YAML::Any};
+ eval q{use YAML} if $@;
+ if ($@)
+ {
+ return error ("ymlfront: failed to use YAML::Any or YAML");
+ }
+
+ $YAML::UseBlock = 1;
+ $YAML::Syck::ImplicitUnicode = 1;
+
+ if (!defined $config{ymlfront_delim})
+ {
+ $config{ymlfront_delim} = [qw(--- ---)];
+ }
+} # checkconfig
+
+# scan gets called before filter
+sub scan (@) {
+ my %params=@_;
+ my $page = $params{page};
+
+ my $page_file=$pagesources{$page} || return;
+ my $page_type=pagetype($page_file);
+ if (!defined $page_type)
+ {
+ return;
+ }
+ # clear the old data
+ if (exists $pagestate{$page}{ymlfront})
+ {
+ delete $pagestate{$page}{ymlfront};
+ }
+ my $parsed_yml = parse_yml(%params);
+ if (defined $parsed_yml
+ and defined $parsed_yml->{yml})
+ {
+ # save the data to pagestate
+ foreach my $fn (keys %{$parsed_yml->{yml}})
+ {
+ my $fval = $parsed_yml->{yml}->{$fn};
+ $pagestate{$page}{ymlfront}{$fn} = $fval;
+ }
+ }
+ # update meta hash
+ if (exists $pagestate{$page}{ymlfront}{title}
+ and $pagestate{$page}{ymlfront}{title})
+ {
+ $pagestate{$page}{meta}{title} = $pagestate{$page}{ymlfront}{title};
+ }
+ if (exists $pagestate{$page}{ymlfront}{description}
+ and $pagestate{$page}{ymlfront}{description})
+ {
+ $pagestate{$page}{meta}{description} = $pagestate{$page}{ymlfront}{description};
+ }
+ if (exists $pagestate{$page}{ymlfront}{author}
+ and $pagestate{$page}{ymlfront}{author})
+ {
+ $pagestate{$page}{meta}{author} = $pagestate{$page}{ymlfront}{author};
+ }
+} # scan
+
+# use this for data in a [[!ymlfront ...]] directive
+sub preprocess (@) {
+ my %params=@_;
+ my $page = $params{page};
+
+ if (! exists $params{data}
+ or ! defined $params{data}
+ or !$params{data})
+ {
+ error gettext("missing data parameter")
+ }
+ # All the work of this is done in scan mode;
+ # when in preprocessing mode, just return an empty string.
+ my $scan=! defined wantarray;
+
+ if (!$scan)
+ {
+ return '';
+ }
+
+ # clear the old data
+ if (exists $pagestate{$page}{ymlfront})
+ {
+ delete $pagestate{$page}{ymlfront};
+ }
+ my $parsed_yml = parse_yml(%params);
+ if (defined $parsed_yml
+ and defined $parsed_yml->{yml})
+ {
+ # save the data to pagestate
+ foreach my $fn (keys %{$parsed_yml->{yml}})
+ {
+ my $fval = $parsed_yml->{yml}->{$fn};
+ $pagestate{$page}{ymlfront}{$fn} = $fval;
+ }
+ }
+ # update meta hash
+ if (exists $pagestate{$page}{ymlfront}{title}
+ and $pagestate{$page}{ymlfront}{title})
+ {
+ $pagestate{$page}{meta}{title} = $pagestate{$page}{ymlfront}{title};
+ }
+ if (exists $pagestate{$page}{ymlfront}{description}
+ and $pagestate{$page}{ymlfront}{description})
+ {
+ $pagestate{$page}{meta}{description} = $pagestate{$page}{ymlfront}{description};
+ }
+ if (exists $pagestate{$page}{ymlfront}{author}
+ and $pagestate{$page}{ymlfront}{author})
+ {
+ $pagestate{$page}{meta}{author} = $pagestate{$page}{ymlfront}{author};
+ }
+ return '';
+} # preprocess
+
+sub filter (@) {
+ my %params=@_;
+ my $page = $params{page};
+
+ my $page_file=$pagesources{$page} || return $params{content};
+ my $page_type=pagetype($page_file);
+ if (!defined $page_type)
+ {
+ return $params{content};
+ }
+ my $parsed_yml = parse_yml(%params);
+ if (defined $parsed_yml
+ and defined $parsed_yml->{yml}
+ and defined $parsed_yml->{content})
+ {
+ $params{content} = $parsed_yml->{content};
+ # also check for a content value
+ if (exists $pagestate{$page}{ymlfront}{content}
+ and defined $pagestate{$page}{ymlfront}{content}
+ and $pagestate{$page}{ymlfront}{content})
+ {
+ $params{content} .= $pagestate{$page}{ymlfront}{content};
+ }
+ }
+
+ return $params{content};
+} # filter
+
+# check the correctness of the YAML code before saving a page
+sub checkcontent {
+ my %params=@_;
+ my $page = $params{page};
+
+ my $page_file=$pagesources{$page};
+ if ($page_file)
+ {
+ my $page_type=pagetype($page_file);
+ if (!defined $page_type)
+ {
+ return undef;
+ }
+ }
+ my $parsed_yml = parse_yml(%params);
+ if (!defined $parsed_yml)
+ {
+ debug("ymlfront: Save of $page failed: $@");
+ return gettext("YAML data incorrect: $@");
+ }
+ return undef;
+} # checkcontent
+
+# ------------------------------------------------------------
+# Field functions
+# --------------------------------
+sub yml_get_value ($$) {
+ my $field_name = shift;
+ my $page = shift;
+
+ my $value = undef;
+ if (exists $pagestate{$page}{ymlfront}{$field_name})
+ {
+ $value = $pagestate{$page}{ymlfront}{$field_name};
+ }
+ elsif (exists $pagestate{$page}{ymlfront}{lc($field_name)})
+ {
+ $value = $pagestate{$page}{ymlfront}{lc($field_name)};
+ }
+ if (defined $value)
+ {
+ if (ref $value)
+ {
+ my @value_array = @{$value};
+ return (wantarray
+ ? @value_array
+ : join(",", @value_array));
+ }
+ else
+ {
+ return (wantarray ? ($value) : $value);
+ }
+ }
+ return undef;
+} # yml_get_value
+
+# ------------------------------------------------------------
+# Helper functions
+# --------------------------------
+
+# parse the YAML data from the given content
+# Expects page, content
+# Returns { yml=>%yml_data, content=>$content } or undef
+sub parse_yml {
+ my %params=@_;
+ my $page = $params{page};
+ my $content = $params{content};
+
+ my $page_file=$pagesources{$page};
+ if ($page_file)
+ {
+ my $page_type=pagetype($page_file);
+ if (!defined $page_type)
+ {
+ return undef;
+ }
+ }
+ my $start_of_content = '';
+ my $yml_str = '';
+ my $rest_of_content = '';
+ if ($params{data})
+ {
+ $yml_str = $params{data};
+ }
+ elsif ($content)
+ {
+ my $ystart = $config{ymlfront_delim}[0];
+ my $yend = $config{ymlfront_delim}[1];
+ if ($ystart eq '---'
+ and $yend eq '---'
+ and $content =~ /^---[\n\r](.*?[\n\r])---[\n\r](.*)$/s)
+ {
+ $yml_str = $1;
+ $rest_of_content = $2;
+ }
+ elsif ($content =~ /^(.*?)${ystart}[\n\r](.*?[\n\r])${yend}([\n\r].*)$/s)
+ {
+ $yml_str = $2;
+ $rest_of_content = $1 . $3;
+ }
+ elsif ($content =~ $ymlfront_regex)
+ {
+ my $escape=$1;
+ my $prefix=$2;
+ my $command=$3;
+ my $params=$4;
+ if ($escape)
+ {
+ $rest_of_content = $content;
+ }
+ else
+ {
+ my %phash = ();
+ while ($params =~ m{
+ (?:([-\w]+)=)? # 1: named parameter key?
+ (?:
+ """(.*?)""" # 2: triple-quoted value
+ |
+ "([^"]*?)" # 3: single-quoted value
+ |
+ (\S+) # 4: unquoted value
+ )
+ (?:\s+|$) # delimiter to next param
+ }sgx) {
+ my $key=$1;
+ my $val;
+ if (defined $2) {
+ $val=$2;
+ $val=~s/\r\n/\n/mg;
+ $val=~s/^\n+//g;
+ $val=~s/\n+$//g;
+ }
+ elsif (defined $3) {
+ $val=$3;
+ }
+ elsif (defined $4) {
+ $val=$4;
+ }
+
+ if (defined $key) {
+ $phash{$key} = $val;
+ }
+ else {
+ $phash{''} = $val;
+ }
+ }
+ if (defined $phash{data})
+ {
+ $yml_str = $phash{data};
+ $content =~ /^(.*?)\[\[!ymlfront.*?\]\](.*?)$/s;
+ $start_of_content = $1;
+ $rest_of_content = $2;
+ # TODO: This breaks if the YAML string itself contains ]].
+ # Workaround: all [[!ymlfront [...]]] directives shall be
+ # at the end of the files.
+ $rest_of_content = '';
+ }
+ }
+ }
+ }
+ if ($yml_str)
+ {
+ # if {{$page}} is there, do an immediate substitution
+ $yml_str =~ s/\{\{\$page\}\}/$page/sg;
+
+ my $ydata;
+ eval q{$ydata = Load($yml_str);};
+ if ($@)
+ {
+ debug("ymlfront: Load of $page failed: $@");
+ return undef;
+ }
+ if (!$ydata)
+ {
+ debug("ymlfront: no YAML for $page");
+ return undef;
+ }
+ my %lc_data = ();
+ if ($ydata)
+ {
+ # make lower-cased versions of the data
+ foreach my $fn (keys %{$ydata})
+ {
+ my $fval = $ydata->{$fn};
+ $lc_data{lc($fn)} = $fval;
+ }
+ }
+ return { yml=>\%lc_data,
+ content=>$start_of_content . $rest_of_content};
+ }
+ return { yml=>undef, content=>$content };
+} # parse_yml
+1;
diff --git a/.templates/autotag.tmpl b/.templates/autotag.tmpl
new file mode 100644
index 00000000..1a963267
--- /dev/null
+++ b/.templates/autotag.tmpl
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta title="<TMPL_VAR TAG>"]]
+
+[[!map
+pages="tagged(<TMPL_VAR TAG>)"
+show=title]]
diff --git a/.templates/editpage.tmpl b/.templates/editpage.tmpl
index 906f39ce..1ecbd0a9 100644
--- a/.templates/editpage.tmpl
+++ b/.templates/editpage.tmpl
@@ -1,44 +1,6 @@
-<TMPL_IF NAME="PAGE_CONFLICT">
-<p>
-<b>Your changes conflict with other changes made to the page.</b>
-</p>
-<p>
-Conflict markers have been inserted into the page content. Reconcile the
-conflict and commit again to save your changes.
-</p>
-</TMPL_IF>
-<TMPL_IF NAME="FAILED_SAVE">
-<p>
-<b>Failed to save your changes.</b>
-</p>
-<p>
-Your changes were not able to be saved to disk. The system gave the error:
-<blockquote>
-<TMPL_VAR ERROR_MESSAGE>
-</blockquote>
-Your changes are preserved below, and you can try again to save them.
-</p>
-</TMPL_IF>
-<TMPL_IF NAME="PAGE_GONE">
-<p>
-<b>The page you were editing has disappeared.</b>
-</p>
-<p>
-Perhaps someone else has deleted it or moved it. If you want to recreate
-this page with your text, click "Save Page" again.
-</p>
-</TMPL_IF>
-<TMPL_IF NAME="CREATION_CONFLICT">
-<p>
-<b>While you were creating this page, someone else independently created a page
-with the same name.</b>
-</p>
-<p>
-The edit box below contains the page's current content, followed by the
-content you entered previously, to allow you to merge the two
-together before saving.
-</p>
-</TMPL_IF>
+<TMPL_VAR JAVASCRIPT>
+<TMPL_VAR MESSAGE>
+<br />
<TMPL_VAR FORM-START>
<TMPL_VAR FIELD-DO>
<TMPL_VAR FIELD-SID>
@@ -46,17 +8,18 @@ together before saving.
<TMPL_VAR FIELD-RCSINFO>
<TMPL_VAR FIELD-NEWFILE>
<TMPL_IF NAME="PAGE_SELECT">
-Page location: <TMPL_VAR FIELD-PAGE>
-Page type: <TMPL_VAR FIELD-TYPE>
+<label for="page" class="inline">Page location:</label><TMPL_VAR FIELD-PAGE>
+<label for="type" class="inline">Page type:</label><TMPL_VAR FIELD-TYPE>
<TMPL_ELSE>
-<br />
<TMPL_VAR FIELD-PAGE>
<TMPL_VAR FIELD-TYPE>
</TMPL_IF>
+<div class="editcontentdiv">
<TMPL_VAR FIELD-EDITCONTENT><br />
+</div>
<TMPL_IF NAME="CAN_COMMIT">
-Optional comment about this change:<br />
-<TMPL_VAR FIELD-COMMENTS><br />
+<label for="editmessage" class="block">Optional comment about this change:</label>
+<TMPL_VAR FIELD-EDITMESSAGE><br />
</TMPL_IF>
<div class="copyright_assignment_notice">
@@ -71,14 +34,29 @@ rights to copy, modify, and redistribute your contributions.</p>
<p>We're requiring these copyright assignments, so that we'll easily
be able to include your contributions in official GNU documentation,
such as the GNU Hurd manual, etc. Send email to <a
-href="mailto:hurd-maintainers@gnu.org">&lt;hurd-maintainers@gnu.org&gt;</a>
+href="mailto:hurd-maintainers@gnu.org">hurd-maintainers@gnu.org</a>
if there are questions.</p>
</div>
<TMPL_VAR FORM-SUBMIT>
<TMPL_VAR HELPONFORMATTINGLINK>
+<TMPL_IF NAME="FIELD-ATTACHMENT">
+<a class="toggle" href="#attachments">Attachments</a>
+<div class="<TMPL_VAR ATTACHMENTS-CLASS>" id="attachments">
+<table>
+<tr><td colspan="5"><TMPL_VAR FIELD-ATTACHMENT><TMPL_VAR FIELD-UPLOAD></td></tr>
+<TMPL_LOOP NAME="ATTACHMENT_LIST">
+<tr><td><TMPL_VAR FIELD-SELECT><TMPL_VAR LINK></td><td><TMPL_VAR SIZE></td><td><TMPL_VAR MTIME></td></tr>
+</TMPL_LOOP>
+<TMPL_IF NAME="ATTACHMENT_LIST">
+<tr><td colspan="2"><TMPL_VAR FIELD-LINK><TMPL_VAR FIELD-RENAME><TMPL_VAR FIELD-REMOVE></td></tr>
+</TMPL_IF>
+</table>
+</div>
+</TMPL_IF>
<TMPL_VAR FORM-END>
+<TMPL_VAR WMD_PREVIEW>
<TMPL_IF NAME="PAGE_PREVIEW">
<hr />
@@ -89,3 +67,12 @@ if there are questions.</p>
<TMPL_VAR PAGE_PREVIEW>
</div>
</TMPL_IF>
+<TMPL_IF NAME="PAGE_DIFF">
+<hr />
+<div class="header">
+<span>Diff:</span>
+</div>
+<div id="diff">
+<TMPL_VAR PAGE_DIFF>
+</div>
+</TMPL_IF>
diff --git a/.templates/newsitem.tmpl b/.templates/newsitem.tmpl
new file mode 100644
index 00000000..3b4fded1
--- /dev/null
+++ b/.templates/newsitem.tmpl
@@ -0,0 +1,80 @@
+<TMPL_IF HTML5><article class="newsitem"><TMPL_ELSE><div class="newsitem"></TMPL_IF>
+
+<TMPL_IF HTML5><section class="newsitemheader"><TMPL_ELSE><div class="newsitemheader"></TMPL_IF>
+<TMPL_IF AUTHOR>
+<span class="author">
+<TMPL_IF AUTHORURL>
+<a href="<TMPL_VAR AUTHORURL>"><TMPL_VAR AUTHOR></a>
+<TMPL_ELSE>
+<TMPL_VAR AUTHOR>
+</TMPL_IF>
+</span>
+</TMPL_IF>
+<TMPL_IF HTML5><header class="header"><TMPL_ELSE><span class="header"></TMPL_IF>
+<TMPL_IF PERMALINK>
+<a href="<TMPL_VAR PERMALINK>"><TMPL_VAR TITLE></a>
+<TMPL_ELSE>
+<a href="<TMPL_VAR PAGEURL>"><TMPL_VAR TITLE></a>
+</TMPL_IF>
+<TMPL_IF HTML5></header><TMPL_ELSE></span></TMPL_IF>
+
+<TMPL_IF HAVE_ACTIONS>
+<TMPL_IF HTML5><nav class="actions"><TMPL_ELSE><div class="actions"></TMPL_IF>
+<ul>
+<TMPL_IF EDITURL>
+<li><a href="<TMPL_VAR EDITURL>" rel="nofollow">Edit</a></li>
+</TMPL_IF>
+<TMPL_IF COMMENTSLINK>
+<li><TMPL_VAR COMMENTSLINK></li>
+<TMPL_ELSE>
+<TMPL_IF DISCUSSIONLINK>
+<li><TMPL_VAR DISCUSSIONLINK></li>
+</TMPL_IF>
+</TMPL_IF>
+</ul>
+<TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
+</TMPL_IF>
+
+<TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
+
+<TMPL_IF HTML5><section class="newsitemcontent"><TMPL_ELSE><div class="newsitemcontent"></TMPL_IF>
+<TMPL_VAR CONTENT>
+<TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
+
+<TMPL_IF HTML5><footer class="newsitemfooter"><TMPL_ELSE><div class="newsitemfooter"></TMPL_IF>
+
+<!-- The saved space is more important that the information this provides.
+<span class="pagedate">
+Posted <TMPL_VAR CTIME>
+</span>
+-->
+
+<TMPL_IF TAGS>
+<TMPL_IF HTML5><nav class="tags"><TMPL_ELSE><span class="tags"></TMPL_IF>
+Tags:
+<TMPL_LOOP TAGS>
+<TMPL_VAR LINK>
+</TMPL_LOOP>
+<TMPL_IF HTML5></nav><TMPL_ELSE></span></TMPL_IF>
+</TMPL_IF>
+
+<!-- For these tiny snippets we can abstain from displaying this again. It
+should match the inlining page's information nevertheless.
+
+<TMPL_IF COPYRIGHT>
+<div class="pagecopyright">
+<TMPL_VAR COPYRIGHT>
+</div>
+</TMPL_IF>
+
+<TMPL_IF LICENSE>
+<div class="pagelicense">
+License: <TMPL_VAR LICENSE>
+</div>
+</TMPL_IF>
+
+-->
+
+<TMPL_IF HTML5></footer><TMPL_ELSE></div></TMPL_IF>
+
+<TMPL_IF HTML5></article><TMPL_ELSE></div></TMPL_IF>
diff --git a/.templates/page.tmpl b/.templates/page.tmpl
new file mode 100644
index 00000000..5192138a
--- /dev/null
+++ b/.templates/page.tmpl
@@ -0,0 +1,202 @@
+<TMPL_IF HTML5><!DOCTYPE html>
+<html>
+<TMPL_ELSE><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+</TMPL_IF>
+<head>
+<TMPL_IF DYNAMIC>
+<TMPL_IF FORCEBASEURL><base href="<TMPL_VAR FORCEBASEURL>" /><TMPL_ELSE>
+<TMPL_IF BASEURL><base href="<TMPL_VAR BASEURL>" /></TMPL_IF>
+</TMPL_IF>
+</TMPL_IF>
+<TMPL_IF HTML5><meta charset="utf-8" /><TMPL_ELSE><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></TMPL_IF>
+<title><TMPL_VAR TITLE></title>
+<TMPL_IF FAVICON>
+<link rel="icon" href="<TMPL_VAR BASEURL><TMPL_VAR FAVICON>" type="image/x-icon" />
+</TMPL_IF>
+<link rel="stylesheet" href="<TMPL_VAR BASEURL>style.css" type="text/css" />
+<TMPL_IF LOCAL_CSS>
+<link rel="stylesheet" href="<TMPL_VAR BASEURL><TMPL_VAR LOCAL_CSS>" type="text/css" />
+<TMPL_ELSE>
+<link rel="stylesheet" href="<TMPL_VAR BASEURL>local.css" type="text/css" />
+</TMPL_IF>
+<TMPL_IF EDITURL>
+<link rel="alternate" type="application/x-wiki" title="Edit this page" href="<TMPL_VAR EDITURL>" />
+</TMPL_IF>
+<TMPL_IF FEEDLINKS><TMPL_VAR FEEDLINKS></TMPL_IF>
+<TMPL_IF RELVCS><TMPL_VAR RELVCS></TMPL_IF>
+<TMPL_IF META><TMPL_VAR META></TMPL_IF>
+</head>
+<body>
+
+<TMPL_IF HTML5><article class="page"><TMPL_ELSE><div class="page"></TMPL_IF>
+
+<TMPL_IF HTML5><section class="pageheader"><TMPL_ELSE><div class="pageheader"></TMPL_IF>
+<TMPL_IF HTML5><header class="header"><TMPL_ELSE><div class="header"></TMPL_IF>
+<span>
+<span class="parentlinks">
+<TMPL_LOOP PARENTLINKS>
+<a href="<TMPL_VAR URL>"><TMPL_VAR PAGE></a>/
+</TMPL_LOOP>
+</span>
+<span class="title">
+<TMPL_VAR TITLE>
+<TMPL_IF ISTRANSLATION>
+&nbsp;(<TMPL_VAR PERCENTTRANSLATED>%)
+</TMPL_IF>
+</span>
+</span>
+<TMPL_IF SEARCHFORM>
+<TMPL_VAR SEARCHFORM>
+</TMPL_IF>
+<TMPL_IF HTML5></header><TMPL_ELSE></div></TMPL_IF>
+
+<TMPL_IF HAVE_ACTIONS>
+<TMPL_IF HTML5><nav class="actions"><TMPL_ELSE><div class="actions"></TMPL_IF>
+<span class="global">
+<ul>
+<TMPL_IF RECENTCHANGESURL>
+<li><a href="<TMPL_VAR RECENTCHANGESURL>">Recent Changes</a></li>
+</TMPL_IF>
+<TMPL_IF PREFSURL>
+<li><a href="<TMPL_VAR PREFSURL>">Preferences</a></li>
+</TMPL_IF>
+</ul>
+</span>
+<span class="per_page">
+<ul>
+<TMPL_IF EDITURL>
+<li><a href="<TMPL_VAR EDITURL>" rel="nofollow">Edit</a></li>
+</TMPL_IF>
+<TMPL_IF HISTORYURL>
+<li><a href="<TMPL_VAR HISTORYURL>">History</a></li>
+</TMPL_IF>
+<TMPL_IF GETSOURCEURL>
+<li><a href="<TMPL_VAR GETSOURCEURL>">Source</a></li>
+</TMPL_IF>
+<TMPL_IF ACTIONS>
+<TMPL_LOOP ACTIONS>
+<li><TMPL_VAR ACTION></li>
+</TMPL_LOOP>
+</TMPL_IF>
+<TMPL_IF COMMENTSLINK>
+<li><TMPL_VAR COMMENTSLINK></li>
+<TMPL_ELSE>
+<TMPL_IF DISCUSSIONLINK>
+<li><TMPL_VAR DISCUSSIONLINK></li>
+</TMPL_IF>
+</TMPL_IF>
+</ul>
+</span>
+<TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
+</TMPL_IF>
+
+<TMPL_IF OTHERLANGUAGES>
+<TMPL_IF HTML5><nav id="otherlanguages"><TMPL_ELSE><div id="otherlanguages"></TMPL_IF>
+<ul>
+<TMPL_LOOP OTHERLANGUAGES>
+<li>
+<a href="<TMPL_VAR URL>"><TMPL_VAR LANGUAGE></a>
+<TMPL_IF MASTER>
+(master)
+<TMPL_ELSE>
+&nbsp;(<TMPL_VAR PERCENT>%)
+</TMPL_IF>
+</li>
+</TMPL_LOOP>
+</ul>
+<TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
+</TMPL_IF>
+
+<TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
+
+<TMPL_IF SIDEBAR>
+<TMPL_IF HTML5><aside class="sidebar"><TMPL_ELSE><div class="sidebar"></TMPL_IF>
+<TMPL_VAR SIDEBAR>
+<TMPL_IF HTML5></aside><TMPL_ELSE></div></TMPL_IF>
+</TMPL_IF>
+
+<div id="pagebody">
+
+<TMPL_IF HTML5><section id="content"><TMPL_ELSE><div id="content"></TMPL_IF>
+<TMPL_VAR CONTENT>
+<TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
+
+<TMPL_UNLESS DYNAMIC>
+<TMPL_IF COMMENTS>
+<TMPL_IF HTML5><section id="comments"><TMPL_ELSE><div id="comments"></TMPL_IF>
+<TMPL_VAR COMMENTS>
+<TMPL_IF ADDCOMMENTURL>
+<div class="addcomment">
+<a href="<TMPL_VAR ADDCOMMENTURL>">Add a comment</a>
+</div>
+<TMPL_ELSE>
+<div class="addcomment">Comments on this page are closed.</div>
+</TMPL_IF>
+<TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
+</TMPL_IF>
+</TMPL_UNLESS>
+
+</div>
+
+<TMPL_IF HTML5><footer id="footer" class="pagefooter"><TMPL_ELSE><div id="footer" class="pagefooter"></TMPL_IF>
+<TMPL_UNLESS DYNAMIC>
+<TMPL_IF HTML5><nav id="pageinfo"><TMPL_ELSE><div id="pageinfo"></TMPL_IF>
+
+<TMPL_IF TAGS>
+<TMPL_IF HTML5><nav class="tags"><TMPL_ELSE><div class="tags"></TMPL_IF>
+Tags:
+<TMPL_LOOP TAGS>
+<TMPL_VAR LINK>
+</TMPL_LOOP>
+<TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
+</TMPL_IF>
+
+<TMPL_IF BACKLINKS>
+<TMPL_IF HTML5><nav id="backlinks"><TMPL_ELSE><div id="backlinks"></TMPL_IF>
+Links:
+<TMPL_LOOP BACKLINKS>
+<a href="<TMPL_VAR URL>"><TMPL_VAR PAGE></a>
+</TMPL_LOOP>
+<TMPL_IF MORE_BACKLINKS>
+<span class="popup">...
+<span class="balloon">
+<TMPL_LOOP MORE_BACKLINKS>
+<a href="<TMPL_VAR URL>"><TMPL_VAR PAGE></a>
+</TMPL_LOOP>
+</span>
+</span>
+</TMPL_IF>
+<TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
+</TMPL_IF>
+
+<TMPL_IF COPYRIGHT>
+<div class="pagecopyright">
+<a name="pagecopyright"></a>
+<TMPL_VAR COPYRIGHT>
+</div>
+</TMPL_IF>
+
+<TMPL_IF LICENSE>
+<div class="pagelicense">
+<a name="pagelicense"></a>
+License: <TMPL_VAR LICENSE>
+</div>
+</TMPL_IF>
+
+<div class="pagedate">
+Last edited <TMPL_VAR MTIME>
+<!-- Created <TMPL_VAR CTIME> -->
+</div>
+
+<TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
+<TMPL_IF EXTRAFOOTER><TMPL_VAR EXTRAFOOTER></TMPL_IF>
+</TMPL_UNLESS>
+<!-- from <TMPL_VAR WIKINAME> -->
+<TMPL_IF HTML5></footer><TMPL_ELSE></div></TMPL_IF>
+
+<TMPL_IF HTML5></article><TMPL_ELSE></div></TMPL_IF>
+
+</body>
+</html>
diff --git a/Hurd/ABITransitionStatus.mdwn b/Hurd/ABITransitionStatus.mdwn
deleted file mode 100644
index 123e8f8c..00000000
--- a/Hurd/ABITransitionStatus.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Several transitions have occured recently.
-
-* [ABI Switch](http://lists.debian.org/debian-hurd/2002/debian-hurd-200204/msg00096.html) from April 17, 2002
-
-* [Phase I accomplished](http://lists.debian.org/debian-hurd/2002/debian-hurd-200204/msg00157.html) from April 26, 2002
-
-* [status of the ABI transition](http://lists.debian.org/debian-hurd/2002/debian-hurd-200205/msg00242.html) from May 15, 2002
-
--- [[Main/GrantBow]] - 15 May 2002
diff --git a/Hurd/AptConfOffline.mdwn b/Hurd/AptConfOffline.mdwn
deleted file mode 100644
index c4cc85be..00000000
--- a/Hurd/AptConfOffline.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
- APT
- {
- /* This file belongs in Debian GNU/Hurd's /etc/apt/apt.conf.offline
- and will be used when running Debian GNU/Linux. This is only
- required when the GNU/Hurd does not have network access. */
-
- Architecture "hurd-i386";
-
- Get::Download-Only "true";
- };
-
- Dir
- {
- /* Use the disc for state information and redirect the status file from
- the /var/lib/dpkg default
- assumes Debian GNU/Hurd mounted on /misc/hurd and /var mounted underneath this if necessary */
-
- // State::lists should be here, the lists subdirectory.
- State "/misc/hurd/var/lib/apt/";
- State::status "/misc/hurd/var/lib/dpkg/status";
-
- // Binary caches will be stored locally
- Cache::archives "/misc/hurd/var/cache/apt/archives/";
- Cache "/tmp/";
-
- // Location of the source list.
- Etc "/misc/hurd/etc/apt/";
- };
diff --git a/Hurd/CrossPlatformAliases.mdwn b/Hurd/CrossPlatformAliases.mdwn
deleted file mode 100644
index 06a0e897..00000000
--- a/Hurd/CrossPlatformAliases.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
- # Aliases assume Debian GNU/Hurd mounted on /misc/hurd
- # possibly via autofs /etc/auto.misc configuration and 'cd / && ln -s var/autofs/misc misc'
- alias locatehurd="locate -d /misc/hurd/var/lib/locate/locatedb"
- alias apt-cachehurd="APT_CONFIG=/misc/hurd/etc/apt/apt.conf.offline apt-cache"
- alias apt-gethurd="APT_CONFIG=/misc/hurd/etc/apt/apt.conf.offline apt-get"
- # dselect requires APT_CONFIG due to dselect apt method
- alias dselecthurd="APT_CONFIG=/misc/hurd/etc/apt/apt.conf.offline dselect --admindir /misc/hurd/var/lib/dpkg/"
- alias dpkghurd="dpkg --root=/misc/hurd"=
diff --git a/Hurd/ExtTwofsTranslator.mdwn b/Hurd/ExtTwofsTranslator.mdwn
deleted file mode 100644
index d8f708fc..00000000
--- a/Hurd/ExtTwofsTranslator.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-* [[ExtTwoSize]] - information about the limitation of partition size
-* [[XattrHurd]] - Supports Hurd ext2 format extensions on Linux, images at <http://people.debian.org/~mbanck/xattr-hurd>
-
--- [[Main/GrantBow]] - 03 Mar 2004
diff --git a/Hurd/FtpfsTranslator.mdwn b/Hurd/FtpfsTranslator.mdwn
deleted file mode 100644
index 528a10f2..00000000
--- a/Hurd/FtpfsTranslator.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-ftpfs lets you access ftp servers via the filesystem. For detailed usage information use `/hurd/ftpfs --help` and `/hurd/ftpfs --usage`.
-
-### <a name="hostmux"> hostmux </a>
-
-ftpfs ist best used with [[HostmuxTranslator]]
-
--- [[Main/PatrickStrasser]] - 13 Jul 2004
diff --git a/Hurd/GNOME.mdwn b/Hurd/GNOME.mdwn
deleted file mode 100644
index 1dbef091..00000000
--- a/Hurd/GNOME.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-![gnome-hurd.png](http://people.debian.org/~mbanck/media/gnome-hurd.png)
-
-GNOME can now be ported with the new [[Pthreads]], but is still being worked on.The packages are at
-
-deb <http://people.debian.org/~mbanck/hurd-gnome/> ./
-
-The caveats:
-
-Some applications are not yet built, not even all the ones from gnome-core. 'apt-get install gnome-applets gnome-control-center gnome-icon-theme gnome-panel gnome-session metacity nautilus scrollkeeper' (along with the above APT source) should get you started.
-
-See also: [[Xfree86]].
diff --git a/Hurd/HurdDevelopers.mdwn b/Hurd/HurdDevelopers.mdwn
deleted file mode 100644
index 201fbc6b..00000000
--- a/Hurd/HurdDevelopers.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-Here's an unofficial list of Hurd developers and what they are working on. This is very unofficial.
-
-* [Marcus Brinkmann](http://www.marcus-brinkmann.de) - GNU Hurd Project maintainer, Debian GNU/Hurd Port Manager, fakeroot, oskit console
-* [Thomas Bushnell, BSG](http://www.mit.edu/~tb/) - Primary architect, design issues and debugging help
-* [Roland McGrath](http://www.frob.com), [resum�](http://www.apocalypse.org/pub/u/roland/resume.html) - GLibC, GCC-3.1, fakeroot (with fakeauth and settrans --chroot)
-* Jeff Bailey - turtle autobuilder, gcc-3.1
-* [Igor Khavkine](http://alcor.concordia.ca/~i_khavki/)
-* [Gordon Matzigkeit](http://www.fig.org/gord/)
-
-* Alexandra "[Bunny](http://www.hurd-bunny.tk)" - graphic designer, Hurd promotion
-* Alfred M. Szmidt (ams) -
-* Daniel (Chillywilly) Baumann - GNU Enterprise Application Server, GNU Common C++
-* [[Main/GrantBow]] - TWiki, promotion
-* Jae - fatfs, possibly smbfs
-* [[Main/JoachimNilsson]], [[Hurd/JoachimNilssonHurdPage]] - TWiki, OSKit upgrades (currently ATA-100 patches).
-* [[Main/JamesAMorrison]] - porting, kernel interface cleanups, [hurd-extras](http://savannah.gnu.org/projects/hurdextras/)
-* Neal Walfield - pthreads, documentation, debugging, #hurd admin, log &amp; bot maintainer
-* [[Main/NickRusnov]] - mtab &amp; [[Distrib/PortingIssues]]
-* Niels M�ller - kernel debugging
-* [[Main/OgnyanKulev]] - [[ExtTwoSize]] patch
-* Paul Emsley - [Kernel Cousin Debian Hurd](http://kt.zork.net/debian-hurd/latest.html)
-* Philip Charles - [ISO CD-images](http://www.copyleft.co.nz/hurd.html)
-* Ryan Golbeck - porting.
-* [[Main/SamLauzon]] (Indes) - Installer, Sound(!), Bunny mocking
-* [[Main/SimonLaw]] - [Kernel Cousin Debian Hurd](http://kt.zork.net/debian-hurd/latest.html) and [[Hurd/KernelCousinDebianHurd]]
-* [[Main/WolfgangJ]] - documentation, promotion
-* [[Main/DerekDavies]] - OSKit work
-* [Daniel Wagner](http://www.vis.ethz.ch/~wagi/) (wagi) - [pcmcia support for OSKit](http://savannah.nongnu.org/projects/oskit/)
-
-If we got any names wrong, please accept our apologies.
diff --git a/Hurd/HurdNames.mdwn b/Hurd/HurdNames.mdwn
deleted file mode 100644
index c4e647e5..00000000
--- a/Hurd/HurdNames.mdwn
+++ /dev/null
@@ -1,61 +0,0 @@
-[[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]]."]]"""]]
-
-[[toc ]]
-
-# The Acronym
-
-Hurd stands for "Hird of Unix Replacing Daemons."
-
-Hird stands for "Hurd of Interfaces Representing Depth."
-
-
-# Origin
-
-[Quoting ](http://mail.gnu.org/archive/html/help-hurd/2002-10/msg00099.html) Thomas Bushnell, BSG:
-
-The name "Hurd" was invented by me, as an alternate spelling for the English word "herd".
-"Hird" is just another alternate spelling for the same word. By the normal rules of
-English orthography, they all have the same pronunciations.
-
-
-# Spelling, Usage and Pronunication
-
-The Hurd has its share of linguistic debate. The subject of proper usage comes up quite often.
-
-We call our kernel replacement \`\`the Hurd.'' Although Thomas Bushnell, BSG states that the
-word \`\`Hurd'' is an acronym; we do not treat it as such, but rather as a concrete noun.
-It is widely regarded as incorrect to use the term \`\`HURD'' or \`\`H.U.R.D.'' So, to
-refer to the collection of servers running on top of the microkernel, we would say,
-\`\`I have upgraded to the latest version of the Hurd.'' Since the Hurd is part of
-the GNU Project, we also refer to it as \`\`GNU Hurd'' which is treated as a proper noun.
-
-The Hurd, in conjunction with Mach, forms the core of the GNU operating system.
-So, one can say \`\`I have installed GNU on my friend's new computer.'' The
-Debian Project clarifies this by using the name \`\`Debian GNU/Hurd'', because
-it also distributes the GNU/Linux variant of GNU.
-
-To pronounce the word \`\`Hurd,'' you should say the English word \`\`herd.'' This is pronounced as \`\`hɚd'' using the International Phonetic Alphabet.
-
-# In Other Contexts
-
-One contributor from Norway described two other uses of Hird.
-
-* "the kings men", a name given to
-
-the men accompanying the Norwegian kings at about year 1000 and on.
-This was later coined by V. Quisling when he formed a party with
-nationalistic traits to denote a set of helpers promoting his agenda
-of national &amp; Nordic ideas.
-
-* A symbol of collaboration with the (German) enemy used in World War II.
-
-Perhaps unrelated: the "herd menatality" of folks is what the Hurd project
-and the the GNU project in general is fighting against...
diff --git a/Hurd/HurdOnL4.mdwn b/Hurd/HurdOnL4.mdwn
deleted file mode 100644
index 79e7a714..00000000
--- a/Hurd/HurdOnL4.mdwn
+++ /dev/null
@@ -1,173 +0,0 @@
-# <a name="GNU_Hurd_on_L4_wiki"> GNU/Hurd on L4 wiki </a>
-
-## <a name="Introduction"> Introduction </a>
-
-This page is a place for information pertaining to the efforts towards realizing the migration and porting of the [[Hurd]] such that it uses the [L4 Microkernel](http://l4ka.org/). The GNU/Hurd Operating System, sometimes just referred to as the _GNU Operating System_ is a rich and robust collection of programs and utilities which enable you to use your computer to do usefull and or entertaining things. The intent is that most any applicable software package available on the [GNU Website](http://www.gnu.org) (and many others also) will be able to be compiled and run under the resultant operating system.
-
-At this point (06/20/2004) this is not yet possible. Indeed, the preliminary foundations are still being developed. Nevertheless, this is a volunteer created operating system so those with the knowledge, interest, and spare time are encouraged to study and if possible contribute to the project.
-
-In [CVS module <samp>hurd-l4</samp>](http://savannah.gnu.org/cgi-bin/viewcvs/hurd/hurd-l4/), there is a [comprehensive list of items that need to be done](http://savannah.gnu.org/cgi-bin/viewcvs/hurd/hurd-l4/TODO).
-
-## <a name="Components_of_the_System"> Components of the System </a>
-
-### <a name="The_L4_Microkernel"> The L4 Microkernel </a>
-
-The kernel of an operating system is a fundamental program which provides essential resources from the hardware of the computer to other programs. A kernel typically runs all the time and remains resident in main memory. The amount of functionality and resources which it provides vary tremendously. The [L4 Microkernel](http://l4ka.org/) is an attempt to create a very small high performace core which provides basic memory management, task and context switching, and little else.
-
-### <a name="The_Hurd"> The Hurd </a>
-
-The [Hurd](http://www.gnu.org/software/hurd/hurd.html) is a conglomeration of servers and programs which add additional functionality to a microkernel such that it is capable of utilizing additional hardware resources of the computer. It also provides a compatibility layer such that compiling higher level programs is essentially transparent; i.e. when you write a C program and compile it, you need only include standard headers and libraries and for all intents and purposes your generic program will build and run and you need never resort to unportable coding or access to hardware specific methods.
-
-For a typical user, The Hurd is intended to silently work in the background providing the services and infrastructure which are lacking in the microkernel but are required for higher level programs and libraries to operate.
-
-### <a name="GNU_Programs"> GNU Programs </a>
-
-For the user, this is what is desired: to run [GNU Software](http://www.gnu.org/). These programs provide a full featured, robust, and extremely effective operating system. A L4/Hurd system should be capable of compiling and executing most any software package available from GNU with little or no modification.
-
-Some readers may be familiar with GNU/Linux systems. When GNU/L4 is complete it should highly resemble the functionality of such systems as L4 and Hurd effectively replace the Linux kernel. The bulk of the software should be expected to run much as it does presently under the Linux kernel (or gnumach based GNU/Hurd systems).
-
-## <a name="Preparations"> Preparations </a>
-
-### <a name="Build_System"> Build System </a>
-
-There are no precompiled binaries for Hurd on L4 that I am aware of, so you will need to be able to compile the source code packages in order to experiment with it. While L4Ka will likely build on a variety of compilers and systems, the Hurd may prove troublesome unless it is built using recent GNU compilers and tools.
-
-I recently used [Debian Unstable](http://www.debian.org) (Sarge) with GNU gcc version 3.3, autoconf version 2.50, and automake version 1.8 to build the system with good results, although other similarly equipped systems with a good development environment, such as [Gentoo](http://www.gentoo.org) or [Slackware](http://www.slackware.com) are reported to work fine also.
-
-Generally, I would recommend building the packages using any very up-to-date GNU development system. I'm not going to say that you can't compile them using more exotic platforms, but I wouldn't be overly hopefull about it. I have no idea if Pistachio can be compiled under current gnuMach/Hurd systems it might be interesting to try it.
-
-### <a name="Making_a_Home_for_L4_Hurd"> Making a Home for L4/Hurd </a>
-
-Obviously you want to have a home for this little embryonic operating system. Currently, mine is using about 5M for the binaries and headers. If you want the source to reside with the binaries, then allow perhaps another 50M or so, but this is purely optional.
-
-At the moment, Hurd on L4 can't even see your hard drive, so all you need is a directory on some partition which is visible to the GRUB bootloader. A `/l4hurd` directory on your existing GNU/Linux system is probably fine for now.
-
-Howevever, if you have some spare disk space or an unused partition, you could optionally create a small partition for the system. This is totally unnecessary at the moment because L4/Hurd lacks hard disk drivers right now, but it is an option. Assuming that you have made some partition **X** with linux _fdisk_, set it to type 83 - Linux and use the following command to initialize it with the classic Hurd extensions:
-
-
-
-As noted, this is purely optional, in fact right now you can use any filesystem that GRUB can understand. You can even use TFTP to netboot the system. My current setup takes about 5M for the full install so obviously you don't need much space for this.
-
-### <a name="Boot_Loader"> Boot Loader </a>
-
-Just like regular GNU/Hurd, you need to use [GNU GRUB](http://www.gnu.org/software/grub/), the _GRand Unified Bootloader_ in order to boot the system. Hopefully you already have it installed, in which case adding the commands for L4/Hurd to your `menu.lst` is quite trivial.
-
-If you don't have GRUB installed, then you should probably take some time to get it set up. A good place to look for help is on the regular [Debian GNU/Hurd Installation Page](http://www.debian.org/ports/hurd/hurd-install) at the **3\. The Boot Loader** section.
-
-This is probably a bit superfluous, but you can even display a snazzy little graphic of some type on your GRUB boot menu. Here's a snip from the header of my `menu.lst` which demonstrates how to do this.
-
- # menu for grub
- splashimage (hd0,0)/boot/grub/debian.xpm
- foreground bfbfe7
- background 3f3f7f
-
-In the above example, my `debian.xpm` is just a 640x480 graphic in xpm format (which you can easily create with GIMP). It does add a bit of pizazz to your boot screen :-)
-
-In fact, I will attach a sample copy of my `menu.lst` here. It has lots of examples for booting a variety of operating systems in it. Remember that my hard drive partitions are unique to my system.
-
-* [[ATTACHURLmenulst]]: Sample GRUB boot menu
-
-## <a name="Building_Hurd_on_L4"> Building Hurd on L4 </a>
-
-### <a name="L4Ka_Pistachio"> L4Ka Pistachio </a>
-
-#### <a name="Getting_the_Sources"> Getting the Sources </a>
-
-I used the latest version of L4Ka, Pistachio version 0.4. It can be obtained from the following website:
-
-[L4Ka Pistachio Home](http://l4ka.org/projects/pistachio/)
-
-#### <a name="Compiling"> Compiling </a>
-
-Pistachio is designed to be compiled in a build directory which is independant from the source directory, so you need to create your build directory after unpacking the tarball. Furthermore, you need to pass a couple of special parameters to the configure program to set it up for use with Hurd. Here is what I did on my ia32 system:
-
-Note: I have my installation set up in `/l4hurd` and I am starting from within the Pistachio source top-level directory.
-
- $ mkdir build
- $ cd build
- Building and installing user-level libraries and servers/applications
- $ ../user/configure --with-s0-linkbase=0x40000 --prefix=/l4hurd
- $ make
- $ make install
- Building and installing the kernel
- $ make -C ../kernel BUILDDIR=`pwd`/kernel
- $ cd kernel
- $ make menuconfig
- $ make
- $ mkdir /l4hurd/boot
- $ cp ia32-kernel /l4hurd/boot
-
-Hopefully everything worked and there were no problems. As usual, if the build fails then scrutinize the output from `configure` and install any missing libraries or development packages.
-
-### <a name="CVS_l4hurd"> CVS l4hurd </a>
-
-#### <a name="Getting_the_sources"> Getting the sources </a>
-
- You need to pull the L4 Hurd sources from the CVS tree on Savannah. The CVS access page is [The GNU/Hurd - CVS (module hurd-l4)](http://savannah.gnu.org/cvs/?group=hurd). In a nutshell, the following commands should retrieve the sources for you:
-
- $ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co hurd-l4
-
-#### <a name="Compiling"> Compiling </a>
-
-Take a look at the README, compiling should be quite simple on any state of the art GNU development system. As per the README, and for my example, you would:
-
- $ autoreconf -f -i -s
- $ ./configure --enable-maintainer-mode --prefix=/l4hurd
- $ make
- $ make install
- $ strip physmem/physmem
-
- $ mkdir /l4hurd/boot
- $ cp laden/laden /l4hurd/boot
- $ cp wortel/wortel /l4hurd/boot
- $ cp physmem/physmem /l4hurd/boot
-
-Currently (2004/08/09), physmem needs to be stripped to to avoid a memory conflict with wortel; this requirement may be fixed in the future.
-
-In my case it was slightly more complicated as Debian uses a wrapper system to enable the use of multiple versions of the GNU Autotools. In this case, the trick is to utilize some environment variables on the command line as follows:
-
- $ ACLOCAL=aclocal-1.8 AUTOMAKE=automake-1.8 autoreconf -f -i -s
-
-As above, hopefully this will compile cleanly; otherwise, scroll up, read any error messages, and correct them by installing required packages of the proper version. Any bad compilation problems are most likely due to you either missing or using a wrong version of something.
-
-## <a name="Installing"> Installing </a>
-
-The binaries are now installed into `/l4hurd`. All that remains is to add an entry into GRUB's `menu.lst` in order to test it out. Here's an example from my system where I have `/l4hurd` on `/dev/hda9` in my Linux system:
-
- title GNU Hurd on L4Ka Pistachio 0.4
- root (hd0,8)
- kernel /boot/laden -D
- module /boot/ia32-kernel
- module /libexec/l4/sigma0
- module /boot/wortel -D
- module /boot/physmem -D
- module /boot/physmem
- module /boot/physmem
- module /boot/physmem
- module /boot/physmem
-
-It might strike you a little odd that there are five physmem modules. This is done because wortel currently (2004/08/09) expects exactly five modules and the other modules (like the task server, auth server, etc.) have not been implemented yet. Therefore the physmem module is used as a dummy module.
-
-## <a name="Booting"> Booting </a>
-
-For me at least, I got some nifty messages and then it dropped into a simple debugging mode. As far as I know, thats all there is right now.
-
-Read, build, learn, code...
-
---todo: add more here.
-
-## <a name="Experimenting"> Experimenting </a>
-
-Well, thats why you did all of this, certainly not to do anything else. Use that debugger and get experimenting.
-
---todo: things to do wth the debugger
-
-## <a name="Conclusion"> Conclusion </a>
-
-If you followed these steps, you most likely have built and booted the latest version of Hurd on L4. I would encourage you to subscribe to the mailing list at the following URL and help in the efforts to get this nifty system up to speed:
-
-[l4-hurd mailing list](http://lists.gnu.org/mailman/listinfo/l4-hurd)
-
-And finally, this is a wiki, meaning that **you** have the ability to edit and modify this page. If you want to fix something, add more information, new sub-pages, whatever, feel free to do so. This is a great way to get a doc base up fast and keep it current, so use it like its supposed to be and have fun with Hurd on L4!
-
--- [[Main/BDouglasHilton]] - 20 Jun 2004
diff --git a/Hurd/HurdOnL4/menu.lst b/Hurd/HurdOnL4/menu.lst
deleted file mode 100644
index 3129ea74..00000000
--- a/Hurd/HurdOnL4/menu.lst
+++ /dev/null
@@ -1,55 +0,0 @@
-# menu for grub
-splashimage (hd0,0)/boot/grub/debian.xpm
-foreground bfbfe7
-background 3f3f7f
-
-timeout 30
-default 0
-
-title Debian Sid with Linux kernel 2.6.5
-root (hd0,1)
-kernel /vmlinuz root=/dev/hda2 vga=0x318
-
-title Debian Sid with old kernel
-root (hd0,1)
-kernel /vmlinuz.old root=/dev/hda2 vga=9
-
-title Microsoft Windows 2000
-rootnoverify (hd0,3)
-chainloader (hd0,3)+1
-
-title FreeDOS BETA 8.0
-root (hd0,0)
-chainloader +1
-
-title GNU Hurd on L4Ka Pistachio 0.4
-root (hd0,8)
-kernel /boot/laden -D
-module /boot/ia32-kernel
-module /libexec/l4/sigma0
-module /boot/wortel -D
-module /boot/physmem
-
-title Debian GNU/Hurd (gnumach)
-root (hd0,7)
-kernel /boot/kernel.gz root=device:hd0s8
-module /hurd/ext2fs.static --readonly \
- --multiboot-command-line=${kernel-command-line} \
- --host-priv-port=${host-port} \
- --device-master-port=${device-port} \
- --exec-server-task=${exec-task} \
- -T typed ${root} $(task-create) $(task-resume)
-module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
-
-# title Debian GNU/Hurd (oskit-mach)
-# root (hd3,0)
-# kernel /boot/kernel-ide -- root=hd0s1
-# module /hurd/ext2fs.static --multiboot-command-line=${kernel-command-line} --host-priv-port=${host-port} --device-master-port=${device-port} --exec-server-task=${exec-task} -T device ${root-device} $(task-create) $(task-resume)
-# module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
-
-# title Debian GNU/Hurd (oskit-mach w/ remote debugging)
-# root (hd3,0)
-# kernel /boot/kernel-ide -d GDB_COM=1 BAUD=9600 -- root=hd0s1
-# module /hurd/ext2fs.static --multiboot-command-line=${kernel-command-line} --host-priv-port=${host-port} --device-master-port=${device-port} --exec-server-task=${exec-task} -T device ${root-device} $(task-create) $(task-resume)
-# module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
-
diff --git a/Hurd/InstallNotes.mdwn b/Hurd/InstallNotes.mdwn
deleted file mode 100644
index 2fc7958a..00000000
--- a/Hurd/InstallNotes.mdwn
+++ /dev/null
@@ -1,295 +0,0 @@
-Items of interest during install not mentioned elsewhere include the following. Arranged in the same order as Neal Walfield's [install guide](http://web.walfield.org/papers/hurd-installation-guide/english/hurd-install-guide.html).
-
-**_Currently, [Debian's installation instructions](http://www.debian.org/ports/hurd/hurd-install) are the most up-to-date._**<br /> Note the mirrors mentioned on debian.org have no hurd iso's. The iso's can be found on several mirrors:<br /> \* [Main mirror](http://ftp.debian-ports.org/debian-cd/)<br /> \* [French mirror I](ftp://ftp.eila.jussieu.fr/pub/Debian-CD/)<br /> \* [French mirror II](ftp://ftp.duckcorp.org/hurdfr/hurd/)<br /> \* [Canada mirror](http://www.superunprivileged.org/debian-cd/)<br />
-
-## <a name="Table_of_Contents"> Table of Contents </a>
-
-%TOC%
-
-## <a name="1_Overview_Where_we_are_going"> 1. Overview - Where we are going </a>
-
-There are currently four methods to install GNU
-
-1. Tarball - Neal Walfield's [guide](http://web.walfield.org/papers/hurd-installation-guide/english/hurd-install-guide.html) is excellent and available in several formats. It is the guide that the Hurd community always references first. The GNU official [installation page](http://www.gnu.org/software/hurd/install.html) is the canonical reference. See [[Distrib/TarballNotesHome]] for more info.
-2. [[Distrib/BochsEmulator]] is an x86 emulator similar to the propietary [[Distrib/VmWare]] (which is not supported). See the [[Distrib/BochsEmulator]] page for more info. The Bochs project hosts a preinstalled GNU image that is periodicaly updated. You can get the latest one [here](http://sourceforge.net/project/showfiles.php?group_id=12580).
-3. [CD-ROM iso images](http://www.debian.org/ports/hurd/hurd-cd) CD-ROM installs are becoming more and more popular. The CDs are based on the most current tarball at release time. See [[Distrib/CDNotesHome]] for more info.
-4. The [crosshurd](http://packages.debian.org/crosshurd/) Debian package, which can be used instead of a tarball to install the base system. This is the recommended way to proceed.
-
-* References to a `cross-install` script can nowadays be completely ignored by anyone not a maintainer. It is only used when creating a new tarball.
-
-## <a name="2_Real_Estate_or_Finding_A_Home"> 2. Real Estate or Finding A Home </a>
-
-For those who do not happen to have an available partition or an extra hard drive, this can be the longest step. In this case, we will need to repartition the hard drive. One solution is to use GNU's partition editor, Parted. It features not only basic partition editing, but also partition resizing and moving functions. It can be found at <http://www.gnu.org/software/parted>. The manual is quite complete and includes several tutorials. Also there's a frontend called [nparted](http://packages.debian.org/unstable/utils/nparted.html) to simplify usage.
-
-The Hurd can only support partition sizes of up to approximately one gigabyte; anything much larger than this will not work. This limitation is a design decision that was made several years ago in which the file system server maps the entire partition into virtual memory. As the amount of virtual memory available on an ia32 is only four gigabytes of which only two gigabytes are available to the application and, of that, a significant portion is reserved for the code, the stack and the heap, the final, maximum contiguous virtual memory area that is left is generally about one gigabyte. This limitation is scheduled to be remove. Several other items, however, currently have a slightly higher priority.
-
-Having said that, a single one gigabyte partition is more than enough for a working system. Many, however, prefer at least two partitions: one for a root partition and another for a home partition. This latter scheme is highly advised for developers interested in debugging Hurd servers.
-
-The Hurd supports several extensions to the ext2fs file system format. Foremost among these are passive translators and a fourth set of permission bits for unknown users. In order to take advantage of these features, however, the owner of the partition must be set to Hurd. `mke2fs`, unless specifically overridden on the command line, will set the owner to whatever system core it is running on. As the Hurd will diligently respect this setting, we must be careful to set this appropriately or the Hurd may fail in subtle ways. Be aware that even if a file system is owned by a particular system core, others may still use it; they just may not be able to use certain extensions.
-
-To create a file system, we use `mke2fs` and pass it `-o hurd` to designate the Hurd as the owner of the new file system. For instance:
-
- mke2fs -o hurd /dev/DEVICE
-
-**_Note:_** You may wish to add a `-b 4096` option to `mke2fs` (the default is chosen depending on the size of the partition, and the support for block size 1024 is buggy). The command to check the block size is `tune2fs -l /dev/hda9` under GNU/Linux.
-
-## <a name="3_The_Boot_Loader_Getting_GRUB"> </a> 3. The Boot Loader - Getting GRUB
-
-GRUB is the bootloader of the GNU system, and it's currently the only one that supports the multiboot standard, necessary to boot the Hurd.
-
-A word about GRUB. Unlike traditional boot loaders on the x86, such as LILO, GRUB is very powerful. It has a command line interface, bootp, dummy terminal support and a plethora of other features. In addition, it can boot most any operating system. If you have ever booted an alpha or sparc, you will understand what GRUB can do. Therefore, do not be scared: GRUB is better. You will like it. You will not go back.
-
-To find GRUB, visit <ftp://alpha.gnu.org/gnu/grub>. Here, there is a source tarball and a floppy image. If you choose to download the tarball, it is a normal configure, make and make install. Included is a wonderfully complete manual on how GRUB works. Read it. If, on the other hand, you choose to download the floppy image, it is sufficient to dump it to a floppy disk to get a working GRUB:
-
- dd if=grub-boot-VERSION.image of=/dev/fd0
-
-You can always install GRUB onto your hard drive at a later date.
-
-For instructions on using GRUB, see either the info documentation or the quick reference notes on this wiki:
-
-* [[Distrib/GrubNotes]] - quick reference
-
-## <a name="4_Cross_Install_Cross_Installing"> </a> 4. Cross Install - Cross Installing GNU
-
-The recommended way to cross install the Hurd is by using the [crosshurd](http://packages.debian.org/crosshurd) Debian package. Unfortunately, it's broken right now (2003-10-10), so you'll have to use the old tarball method.
-
-Download the base system `gnu.tar.gz` from <ftp://alpha.gnu.org/gnu/hurd/contrib/robertmh/> or <http://people.debian.org/~rmh/gnu/> .
-
-The tarball is setup to extract everything into the current directory. After mounting the partition and changing to the mount point, we just need to extract the archive. In the following example, we assume that the root partition is mounted on `/gnu`.
-
- cd /gnu
- tar --same-owner -xvzpf ~/gnu.tar.gz
-
-**_NOTE:_** This should NOT be confused with the `cross-install` script method. It is only used by maintainers when creating a new tarball.
-
-## <a name="5_Booting_GNU"> </a> 5. Booting GNU
-
-Now things are setup to boot GNU for the first time. Verify that the GRUB boot disk is in the drive and reboot. If all goes well, a GRUB menu will be displayed. Hit c for the GRUB command line.
-
-First, the root file system needs to be set. GRUB uses a partition nomenclature that is a bit different from either GNU or GNU/Linux: both IDE and SCSI drives are named `(hdN)`. `N` is the drive number (zero based) as reported by the BIOS. That is, GRUB makes no distinction between IDE and SCSI disks. The partitions, like the disks, are also indexed numerically from zero: `(hdN,M)`. If this sounds bad, relax: GRUB is also helpful.
-
-To determine on which file system a particular file resides, one method is to use the find command. When issued this command, GRUB searches on each file system for the specified file and prints where is was found. Here we search for the kernel, `/boot/gnumach.gz`.
-
- grub> find /boot/gnumach.gz
- (hd0,0)
-
-As we can see, GRUB is indicating that `/boot/gnumach.gz` is on `(hd0,0)`. Thus, we set the root respectively:
-
- grub> root (hd0,0)
- Filesystem type is ext2fs, partition type 0x83
-
-Next, GNU Mach needs to be loaded. In addition to loading the binary, at least one option, the root partition, must be specified. This will be used by the Hurd itself. As such, it must be in terms that the Hurd can understand.
-
-GNU Mach labels disks starting at zero. IDE drives are prefixed with hd, while SCSI disks are prefixed with sd. Like GNU/Linux, drives are number by their position on the controller. For instance, the primary master is `hd0` and the secondary slave is `hd3`. Partitions use the BSD slice naming convention, and append `sM` to the drive name to indicate a given partition. Note that `M` is a one, not zero, based index. The slice number is simple to calculate: just increment what you used for GRUB by one.
-
-Since the Hurd has not yet been configured, it must be run in single user mode. Adding a `-s` to the kernel command line is all that is required.
-
-Thus, continuing with the above example and assuming that the first drive in the master on the secondary controller, we would have:
-
- grub> kernel /boot/gnumach.gz root=device:hd2s1 -s
- [Multiboot-elf, ...]
-
-NOTE: If after running this command you see GRUB Error 28, according to the [GRUB Troubleshooting](http://www.gnu.org/software/grub/manual/grub.html#Troubleshooting) documentation, you may need to tell grub that you have more memory by using the uppermem command. For example, if you have 256MB of RAM and running **displaymem** within GRUB shows that you have less memory than that, you can type **uppermem 262144** to tell GRUB about the additional memory.
-
-Next, the root file system server and the exec server must be loaded. This is done using GRUB's boot module capability. The parameters are the semantics by which the kernel passes some important values to the servers.
-
- grub> module /hurd/ext2fs.static \
- --multiboot-command-line=${kernel-command-line} \
- --host-priv-port=${host-port} \
- --device-master-port=${device-port} \
- --exec-server-task=${exec-task} -T typed ${root} \
- $(task-create) $(task-resume)
-
- [Multiboot-module 0x1c4000, 0x2cfe6a bytes]
- grub> module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
- [Multiboot-module 0x494000, 0x27afe bytes]
-
-**_Important:_** each module string should be asingle separate line _or_ line wrapped with a backslash at the end of each line. Remember to make sure there are **_no trailing spaces!_** Adding this to GRUB's `menu.lst` file as soon as possible is advised.
-
-Finally, GNU can be booted:
-
- grub> boot
-
-Sit back and watch the messages. This is actually more important than one might think as there is a bug in GNU Mach whereby hitting a key during the boot process causes the kernel to panic.
-
-If GNU fails to boot, it could be due to shared IRQs: GNU Mach does not play well with these. You can verify your situation by looking at, for instance, the `/proc/interrupts` file under GNU/Linux. Also, as GNU Mach does not support loadable kernel modules, many of the drivers are compiled into the default kernel. If you have old peripherals, this can be a significant problem: a device may respond badly to a probe intended for a different device. Building a new kernel with only the required devices drivers will usually solve this problem. GNU Mach is easily cross compiled. If you are running Debian, try the `gcc-i386-gnu` package.
-
-If this does not help, explore the resources listed at the end of this document. Finally, ask on the appropriate mailing list.
-
-There are some cavaets to the boot process:
-
-* **IMPORTANT!** Remember when first booting into your freshly un-tarred distribution, you must pass the `-s` option to `/boot/gnumach.gz`. Failure to do so means that you won't get single-user mode.
-* **IMPORTANT2!** Add the `--readonly` flag to the file system server in your GRUB `menu.lst` file. This is a work-around to get `fsck` working properly. Don't forget, everything must be on ONE line, or ended with a backslash!
-* **IMPORTANT3!** If you have created the filesystem with a later version of e2fsprogs than the one installed in the tarball, it **might** happen that fsck fails and you can't boot multiuser. The workaround is to copy `/bin/true` into `/sbin/e2fsck` and `/sbin/fsck.ext2`, then boot multiuser and install the latest e2fsprogs.
-
- title GNU (kernel GNUmach 1.3)
- root (hdX,Y)
- kernel /boot/gnumach.gz root=device:hdXs(Y+1)
- module /hurd/ext2fs.static --readonly \
- --multiboot-command-line=${kernel-command-line} \
- --host-priv-port=${host-port} \
- --device-master-port=${device-port} \
- --exec-server-task=${exec-task} \
- -T typed ${root} $(task-create) $(task-resume)
- module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
-
-Where `hdX,Y` is the appropriate hard disk and partition number, in GRUB format. `hdXs(Y+1)` is the GNUmach format - because Mach partitions start at 1, unlike GRUB partitions that start on 0 (zero).
-
-It is important that each module string is only a single separate line, or by escaping the EOL (end of line) with a back slash. Remember though to make sure there are **_no trailing spaces!_**
-
-**_GRUB floppy and iso images:_** These are available from <http://www.copyleft.co.nz/links.html>. These have been built with the correct strings and only the root and boot partitions names need to be editied.
-
-## <a name="6_Native_Install_Finishing_the_I"> 6. Native Install - Finishing the Installation </a>
-
-Once a prompt comes up, and any time that the the Hurd is in single user mode, it is necessary to set the terminal type:
-
- export TERM=mach
-
-(Repeat this each time you boot in single user mode)
-
-Be warned that CONTROL-C and family will not work in single user mode.
-
-We can now run the native-install script. This will configure the packages and set up several important translators:
-
- ./native-install
-
-Right before the script terminates, it will indicate that it needs to be run a second time. Follow its instructions and reboot using the reboot command. Again, go into single user mode.
-
-Now it is advisable to enable swap. The mach kernel dislikes running without swap and is unlikely to last through the installation, especially on systems with little physical RAM. Although you can enable swap later on after running `./native-install` for the second time, turning swap on early increases your probability of getting there.
-
-This will start the default pager, create a device corresponding to the swap partition, and turn swap on on that partition:
-
- /hurd/mach-defpager
- cd /dev
- ./MAKEDEV hdXsY
- swapon /dev/hdXsY
- cd /
-
-**IMPORTANT!** When enabling swap please be very sure that the partition really is swap. If you point `swapon` to a data partition it will use that for swap, overwriting any data you may have there.
-
-Now run `./native-install` for the second time and go through a series of prompts.
-
-Next, edit `/etc/fstab` to add the home partition and swap space. By default, `nano` is the only editor installed by the the base distribution (not `ae` nor `vi`). It is very important that swap space be used: the Hurd will be an order of magnitude more stable. Note that the Hurd can transparently share a swap partition with Linux, the kernel, but will happily page to any device including a raw partition such as your home partition.
-
-Here is an example `/etc/fstab` file:
-
- # <file system> <mount point> <type> <options> <dump> <pass>
- /dev/hd2s1 / ext2 rw 0 1
- /dev/hd2s2 /home ext2 rw 0 2
- /dev/hd2s3 none swap sw 0 0
-
-Remember to create any devices using the `MAKEDEV` command.
-
-When you first boot, your `/home` directory will _not_ be auto-mounted. You must set a passive translator on that node to access that partition. The correct syntax for this is: <br />`settrans -p /home /hurd/ext2fs /dev/hd2s2`
-
-To mount an nfs partition, use the nfs translator. When run as non-root, the translator will connect, for obvious reasons, to the nfs server on a port above 1024. For this to succeed under GNU/Linux, the insecure option must be added to the export line. Here is an example `/etc/exports` file:
-
- /home 192.168.1.2(rw,insecure)
-
-To mount this from a GNU box:
-
- settrans -cgap /home /hurd/nfs 192.168.1.1:/home
-
-## <a name="7_Configuration_Making_the_Syste"> 7. Configuration - Making the System Usable </a>
-
-**NOTE**: _If you are using the Debian distribution of Hurd, you also **want** to read_ **_Debian [[running/debian/after_install]]_**
-
-* After you install, you'll want to do several _important_ things:
- * Run `passwd` to give the root user a password. By default, root does not have one.
- * Run `adduser` to give yourself a user account. _Do not_ use root indiscriminately.
- * Run `MAKEDEV` to create devices in `/dev` for your hard disk and other required devices.
- * Since the Hurd does not use `ld.so.conf`, you will want to specify where the X Window System keeps its libraries. Do this by adding the following line to your `/etc/profile`: <br />`export LD_LIBRARY_PATH='/lib:/usr/X11R6/lib'`
- * run `/etc/cron.daily/find` to allow `locate` to function.
-
-* [[Network]]
- * Hopefully Mach will recognize your hardware. If it doesn't you have to recompile in most cases.
- * copy over your `/etc/resolv.conf` from GNU/Linux to allow your DNS to resolve correctly.
-
-* Prepare system for new packages.If you are running Debian GNU/Hurd:
- * a recommended `/etc/apt/sources.list`: <br /><code>deb <http://ftp.debian-ports.org/debian> unreleased main<br /> deb <ftp://ftp.debian.org/debian> unstable main <br /> deb-src <ftp://ftp.debian.org/debian> unstable main</code>
- * a newer `/etc/apt/sources.list`:<br /><code>deb <http://mirrors.kernel.org/debian> unstable main contrib<br /> deb-src <http://mirrors.kernel.org/debian> unstable main contrib<br /> deb <http://ftp.debian-ports.org/debian> unreleased main<br /> deb-src <http://ftp.debian-ports.org/debian> unreleased main</code>
- * There are some extremely useful cross-platform 'apt' tricks that can be used to get packages when using Debian GNU/Linux (possibly others) for installation on GNU. This is especially useful if your GNUMach doesn't recognize your network card. The steps are covered in the file `/usr/share/doc/apt-doc/offline` which has been used by several Hurd developers successfully.
- * create an `/etc/apt/apt.conf.offline` like [[AptConfOffline]].
- * consider setting up a few [[CrossPlatformAliases]] for use under Debian GNU/Linux while the Debian GNU/Hurd partitions are mounted.
- * select the `apt` method from within dselect.
-
-* [[Xfree86]]
-
-* New packages - Hopefully you are able to get your network working but since the default GNUMach is only configured for a few ethernet cards you may need to recompile your GNUMach to get it working with your network hardward.
- * Install these extremely useful packages
- * `dialog` -- Debconf uses this for interactivity. You should install this first to allow you to configure other packages as they are installed.
- * It's a very good idea to bring your packages up to date by running: `apt-get update && apt-get dist-upgrade`
- * Some recommended packages
- * `screen` -- A terminal multiplexer is important because the Hurd does not yet have virtual consoles. Runs with GNU/Linux too.
- * `anacron` -- good to run cron jobs for a machine that is not on all the time.
- * `emacs21` -- a powerful editor.
- * `cvs` -- Concurrent Version System, you'll probably need this soon.
- * `bzip2, zip, unzip` -- compression tools.
- * `build-essential` -- preparing to build software.
- * `gnu-standards` -- GNU coding and package standards.
-
-* Some packages use an erroneous dependency on `libc6-dev`. This is incorrect because libc6 is specific to GNU/Linux. The corresponding package for GNU is `libc0.3-dev`. If you find a package that is uninstallable due to a `libc6[-dev]` dependency, please send a bug report with a patch that fixes it. It is important that you don't hack your package system to workaround such problems, because that way you won't be able to spot them when they arrive. See the [[Distrib/PortingIssues]] for details about the problem and [[Distrib/BtsFiling]] for details on sending bug reports.
-* Edit your `/etc/inetd.conf` and comment out all the services you don't need. Services that probably don't need to be running are `ftp`, `telnet`, `shell`, `login`, and `exec`.
-* There appears to be a bug in `libnss-db` that causes networking to fail. To work around this edit `/etc/nsswitch.conf` and remove the `db` entries. (See <http://www.geocrawler.com/archives/3/333/2001/1/50/4907699/> )
-
-## <a name="8_Final_Words_The_FAQ"> </a> 8. Final Words - The FAQ
-
-* [[FAQ]] - More than frequently asked questions
-
-* [Hurd FAQ](http://web.walfield.org/papers/hurd-faq/)
-
-* [[KnownHurdLimits]] - Limitations of the GNU operating system
-
-## <a name="9_Works_Cited_Referenced_Materia"> 9. Works Cited - Referenced Materials </a>
-
-On Sept 20, 2002 [[Main/DeepakGoel]] (a self-proclaimed newbie) posted a link to his personal [step-by-step installation](http://24.197.159.102/~deego/pub/hurd/install-guide/install.txt). The parent directory has additional material.
-
-Tarball Notes: [[Distrib/TarballNotes20020816]] [[Distrib/TarballNotes20020523]]
-
-CD-ROM Notes: [[Distrib/CDNotesJ2]]
-
-Others who wish to post summaries of their installation experiences are encouraged to do so. The installer methods, package dependencies and file locations frequently do change without warning.
-
-----
-
-## <a name="Licensing"> Licensing </a>
-
- This work is based on the hard work by [countless Hurd users](http://web.walfield.org/papers/hurd-installation-guide/THANKS), documented and maintained by Neal H. Walfield. See the original for both reference and its licensing at <http://web.walfield.org/papers/hurd-installation-guide/>
-
-The license for Neals work is under the [GNU GPL](http://web.walfield.org/papers/hurd-installation-guide/COPYING). However, in the Hurd Wiki license all content under the GNU FDL. (Unless the topic is mostly code or otherwise stated in the text.)
-
-There are currently issues to be resolved around this matter, as far as I understand at least. Until an agreement can be reached this text, and the unclear status of this topic, will remain. The suggestion is to do something like this:
-
-<dl>
- <dt>[[InstallGuide]]</dt>
- <dd> Neals Install Guide in its original form </dd>
- <dt>[[InstallNotes]]</dt>
- <dd> Or [[InstallGuideErrata]] with all user input and additions </dd>
-</dl>
-
-There are several obvious issues with this as I can see
-
-1. The [[InstallGuide]] must be kept editable by a select few people to avoid the current situation from repeating itself.
-2. This loops back and kicks us in the butt because then we get:
- 1. Synchronization problems with the original work
- 2. Bottle necks: The people with edit access are too busy to synchronize with Neals guide
- 3. Diverging guides
-3. Annoyed users, we break the tradition of freely editable wiki content and we also have two guides saying different things.
-
--- [[Main/JoachimNilsson]] - 29 Dec 2002
-
-## <a name="Blame_annotations"> Blame annotations </a>
-
- -- [[Main/SimonLaw]] - 29 May 2002 <br /> -- [[Main/GrantBow]] - 13 Oct 2002 <br /> -- [[Main/JoachimNilsson]] - 14 Nov 2002 <br /> -- [[Main/RobertMillan]] - 21 Nov 2002 <br />
-
-First effort at straightening out the formatting mess ... added references to Neals' original, which this topic has become heavily based on.
-
--- [[Main/JoachimNilsson]] - 19 Dec 2002 <br />
-
-Updated to the latest short-comings in the Hurd.
-
--- [[Main/OgnyanKulev]] - 11 Oct 2003
-
--- [[Main/TWikiGuest]] - 07 Dec 2003 (<r2q2@rocketmailNOSPAM.com>)
-
-Updated iso information
diff --git a/Hurd/LuisBustamanteHurdPage.mdwn b/Hurd/LuisBustamanteHurdPage.mdwn
deleted file mode 100644
index abbf1531..00000000
--- a/Hurd/LuisBustamanteHurdPage.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Nothing much to see right now, I'll add some stuff I'm working in the near future! :)
-
-Cheers,
-
--- [[Main/LuisBustamante]] - 16 May 2002
-
-After making some trivial/incorrect patches (thanks Neal :) for building um-pppd with gcc 3.0.4 in Debian (see [\#147085](http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=147085&repeatmerged=yes)) this weekend I'll finally give it a try, I got an external modem... anyway serial drivers seem to be broken in GNUmach iirc, I won't get much more than 300b/s :).
-
-Keep Hurding!
-
--- [[Main/LuisBustamante]] - 17 May 2002
diff --git a/Hurd/PppDaemon.mdwn b/Hurd/PppDaemon.mdwn
deleted file mode 100644
index f667d449..00000000
--- a/Hurd/PppDaemon.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-There is no PPP solution present for the Hurd.
-
-* Filed Debian [um-ppp bug](http://bugs.debian.org/cgi-bin/bugreport.cgi?archive=no\&bug=147085)
-* Clemmitt [asked about um-pppd](http://mail.gnu.org/pipermail/help-hurd/2002-October/006664.html) in this thread of 9 posts beginning Oct 10, 2002.
-
--- [[Main/GrantBow]] - 20 Oct 2002
diff --git a/Hurd/TheGnuHurd.mdwn b/Hurd/TheGnuHurd.mdwn
deleted file mode 100644
index dbd5c721..00000000
--- a/Hurd/TheGnuHurd.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-[[meta copyright="Copyright © 2001, 2002, 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]]."]]"""]]
-
-The Hurd is GNU's replacement for the various UNIX and Linux kernels.
-
-The Hurd is firstly a collection of protocols formalizing how different
-components may interact. The protocols are designed to reduce the mutual
-[[trust]] requirements of the actors thereby permitting a more [[extensible|extensibility]]
-system. These include interface definitions to manipulate files and
-directories and to resolve path names. This allows any process to
-implement a file system. The only requirement is that it have access
-to its backing store and that the principal that started it own the
-file system node to which it connects.
-
-The Hurd is also a set of servers that implement these protocols.
-They include fie systems, network protocols and authentication.
-The servers run on top of the [[microkernel/Mach]] [[microkernel]] and use
-Mach's [[microkernel/mach/IPC]] mechanism to transfer information.
-
-The Hurd development effort is a somewhat separate project from the
-Debian GNU/Hurd port. The Hurd is a component of the GNU operating
-system.
diff --git a/Hurd/Translation.mdwn b/Hurd/Translation.mdwn
deleted file mode 100644
index a5f78aa5..00000000
--- a/Hurd/Translation.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-\* [[HurdCn]]: <http://www.gnu.org/software/hurd/hurd.cn.html>
-
-\* [[HurdNl]]: <http://www.gnu.org/software/hurd/hurd.nl.html>
-
-\* [[HurdPl]] : <http://www.gnu.org/software/hurd/hurd.pl.html>
-
-\* [[HurdEo]]: <http://www.gnu.org/software/hurd/hurd.eo.html>
-
-\* [[HurdHe]] : <http://www.gnu.org/software/hurd/hurd.he.html>
-
-\* [[HurdEs]]: <http://www.gnu.org/software/hurd/hurd.es.html>
-
-\* [[HurdFr]]: <http://www.hurdfr.org> <http://wiki.hurdfr.org>
-
-\* [[HurdIt]]: <http://www.hurd.it>
-
-\* [[HurdRu]]: <http://hurd.kholmsk.ru>
-
diff --git a/Hurd/TranslatorExamples.mdwn b/Hurd/TranslatorExamples.mdwn
deleted file mode 100644
index 227e9275..00000000
--- a/Hurd/TranslatorExamples.mdwn
+++ /dev/null
@@ -1,65 +0,0 @@
-## <a name="Introduction"> Introduction </a>
-
-Translators are probably the most known feature of the Hurd, the first thing you should show when doing a demo.
-
-## <a name="run"> run </a>
-
-Couldn't manage to compile it, but allows you to do nice things with eg. fortune.
-
-## <a name="ftpfs"> ftpfs </a>
-
-hurd:~# settrans -c ftp /hurd/ftpfs 128.101.80.131:/
-
-hurd:~# cd ftp
-
-hurd:~/ftp# ls
-
-debian debian-archive lost+found
-
-hurd:~/ftp# cd debian
-
-hurd:~/ftp/debian# ls
-
-README README.mirrors.txt doc ls-lR.patch.gz
-
-README.CD-manufacture README.non-US indices pool
-
-README.html README.pgp ls-lR project
-
-README.mirrors.html dists ls-lR.gz tools
-
-hurd:~/ftp/debian# cp README ~
-
-hurd:~/ftp/debian#
-
-You have to specify the server address with its IP, or your computer will buy a farm or something.
-
-## <a name="ftpfs_and_hostmux"> ftpfs and hostmux </a>
-
-currently (28/02/2004) not working, but should be.
-
-hurd:~# settrans -c ftp /hurd/hostmux /hurd/ftpfs /
-
-hurd:~# cd ftp
-
-hurd:~/ftp# cd ftp.debian.org
-
--bash: cd: ftp.debian.org: Computer bought the farm
-
-hurd:~/ftp# host ftp.debian.org
-
-ftp.debian.org A 128.101.80.131
-
-ftp.debian.org A 208.185.25.38
-
-hurd:~/ftp# cd 128.101.80.131
-
--bash: cd: 128.101.80.131: Computer bought the farm
-
-## <a name="Articles_about_translators"> Articles about translators </a>
-
-* [The GNU Hurd - Translators by Gael le Mignot](http://kilobug.free.fr/hurd/pres-en/html/node8.html)
-
-* [Translators by Marcus Brinkmann](http://www.gnu.org/software/hurd/whatis/translator.html)
-
--- [[Main/LucasNussbaum]] - 28 Feb 2004
diff --git a/Hurd/TranslatorPages.mdwn b/Hurd/TranslatorPages.mdwn
deleted file mode 100644
index 8e954521..00000000
--- a/Hurd/TranslatorPages.mdwn
+++ /dev/null
@@ -1,51 +0,0 @@
-<dl>
- <dt>[[NeighborHurd]]</dt>
- <dd> A concept possible with microkernels. </dd>
- <dt>[[InteractiveTranslators]]</dt>
- <dd> Translators that interact with user </dd>
- <dt>[[TranslatorExamples]]</dt>
- <dd> Examples of what you can do with translators </dd>
- <dt>[[TranslatorWishList]]</dt>
- <dd> Interesting file translator ideas </dd>
-</dl>
-
-Here are the translators that currently exist:
-
-* [[AuthTranslator]]
-* [[CrashTranslator]]
-* [[ExecTranslator]]
-* [[ExtTwofsTranslator]] - (actually named ext2fs) Ext2 filesystems, also ext2fs.static
-* [[FifoTranslator]] - also [[NewfifoTranslator]] (actually named new-fifo)
-* [[FirmlinkTranslator]]
-* [[FtpfsTranslator]] - ftp as a filesystem
-* [[FwdTranslator]]
-* [[HelloTranslator]] - also [[HellomtTranslator]] (actually named hello-mt)
-* [[HostmuxTranslator]]
-* [[IfsockTranslator]]
-* [[InitTranslator]]
-* [[IsofsTranslator]]
-* [[KbdTranslator]]
-* [[MachdefpagerTranslator]] - (actually named mach-defpager)
-* [[hurd/translator/magic]]
-* [[MouseTranslator]]
-* [[NfsTranslator]]
-* [[NullTranslator]]
-* [[PasswordTranslator]]
-* [[PfinetTranslator]] - also [[PflocalTranslator]]
-* [[ProcTranslator]]
-* [[SmbfsTranslator]]
-* [[StoreioTranslator]]
-* [[StreamioTranslator]]
-* [[SymlinkTranslator]]
-* [[TermTranslator]]
-* [[TmpfsTranslator]]
-* [[UfsTranslator]] - also ufs.static
-* [[UsermuxTranslator]]
-
-Here are the contributed translators:
-
-* [[CryptTranslator]] - <http://www.trek.eu.org/devel/hurd/crypt-trans-0.0.3.tgz>
-
-This is an old list and might need some updating, please check if you have a Hurd system that this list is accurate.
-
--- [[Main/GrantBow]] - 03 Mar 2004
diff --git a/Hurd/WhoRunsGNU.mdwn b/Hurd/WhoRunsGNU.mdwn
deleted file mode 100644
index 57ec2505..00000000
--- a/Hurd/WhoRunsGNU.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
-## <a name="Who_runs_GNU_"> </a> Who runs GNU?
-
-On an official [GNU Project](http://www.gnu.org/gnu/thegnuproject.html) page I found a quote, attributed to Rabbi Hillel:
-
-> If I am not for myself, who will be for me?
->
-> <br />
->
-> If I am only for myself, what am I?
->
-> <br />
->
-> If not now, when?
-
-There are many now using test installations of Debian GNU/Hurd for testing and development. This page is set aside to list those sites using full GNU systems (GNU/Hurd) for non-testing and non-development purposes.
-
-## <a name="I_run_GNU_"> </a> I run GNU!
-
-<dl>
- <dt> Budi Rahardjo</dt>
- <dd><a href="http://hurd.indocisc.com" target="_top">http://hurd.indocisc.com</a>, contact at <a href="mailto:budi@research.indociscNOSPAM.com">budi@research.indociscNOSPAM.com</a></dd>
- <dt>[[Main/JamesAMorrison]]</dt>
- <dd><a href="http://hurd.dyndns.org" target="_top">http://hurd.dyndns.org</a>, </dd>
-</dl>
-
-### <a name="ChangeLog"> ChangeLog </a>
-
-Created. -- [[Main/GrantBow]] - 19 Oct 2002
-
-Minor modifications. -- [[Main/JoachimNilsson]] - 22 Dec 2002
-
-Minor modifications - 17 Jan 2003 -- [[Main/MattGrant]]
diff --git a/Mach/PortToL4.mdwn b/Mach/PortToL4.mdwn
deleted file mode 100644
index fb7f0004..00000000
--- a/Mach/PortToL4.mdwn
+++ /dev/null
@@ -1,42 +0,0 @@
-**_The Hurd-L4 port has an [official page](http://www.gnu.org/software/hurd/hurd-l4.html) with more up-to-date information_** -- [[Main/OgnyanKulev]] - 05 Feb 2005
-
-A group of one being led by Neal H. Walfield is working on porting the Hurd to the pistachio version of the L4 microkernel. This second generation microkernel provides a significantly different API than the one offered by the Mach microkernel, a first generation microkernel. One of the primary goals of the project, outside of porting the Hurd to L4, is to reevaluate the current Hurd abstractions and consider how they can be modified to be more general.
-
-I have no web page describing my efforts. There is a mailing list[1].
-
-[1] <http://mail.gnu.org/mailman/listinfo/l4-hurd>
-
--- Neal Walfield, 18 Sep 2002
-
-Neal noted [1] that there are licensing issues being worked out so no code is yet released. His work was performed in the summer of 2002 at Karlsruhe.
-
-[1] <http://mail.gnu.org/pipermail/l4-hurd/2002-September/000673.html>
-
--- [[Main/GrantBow]] - 21 Sep 2002
-
-There are several important pages that are of interest for the L4 &amp; hurd communities.
-
-* Main L4 home page - <http://www.l4ka.org/>
-* Hurd on L4 - <http://www.freesoftware.fsf.org/l4hurd/>
-* Hurd on L4 - <http://savannah.gnu.org/projects/l4hurd/>
-* <http://www.informatik.uni-freiburg.de/~ganter/comp/l4-hurd.html>
-
--- [[Main/GrantBow]] - 22 May 2002
-
-<http://os.inf.tu-dresden.de/fiasco/>
-
--- [[Main/GrantBow]] - 24 Oct 2002
-
-There was [discussion in October 2002](http://mail.gnu.org/pipermail/l4-hurd/2002-October/000727.html) about the differences between Hurd on Mach and Hurd on L4 with some interesting URLs. In the thread Okuji [responds](http://mail.gnu.org/pipermail/l4-hurd/2002-October/000728.html) confirming his document is two years old and outdated by the directions that Neal is taking in furthering this effort. The URLs in that email might be helpful to those learning more about Hurd and L4 ideas that were considered yet abandoned.
-
--- [[Main/GrantBow]] - 04 Jan 2003
-
-A "Porting GNU Hurd to L4" website:
-
-* <http://www.gnu.org/software/hurd/l4-hurd.html>
-
--- [[Main/SebastianGabriel]] - 29 Sep 2003
-
-The only valid L4-Hurd link on <http://hurd.gnu.org> is <http://www.freesoftware.fsf.org/l4hurd/>
-
--- [[Main/JoachimNilsson]] - 29 Sep 2003
diff --git a/abac.mdwn b/abac.mdwn
index a260a986..41de2062 100644
--- a/abac.mdwn
+++ b/abac.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
ABAC stands for authorization-based access control.
In this model, access is not granted based on the
diff --git a/advantages.mdwn b/advantages.mdwn
new file mode 100644
index 00000000..19706a89
--- /dev/null
+++ b/advantages.mdwn
@@ -0,0 +1,77 @@
+[[!meta copyright="Copyright © 2001, 2002, 2008, 2010, 2011 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 stable_URL]]
+
+The GNU Hurd has a number of enticing features:
+
+It's free software, so anybody can use, modify, and redistribute it under the
+terms of the [[GNU General Public License (GPL)|GPL]].
+
+It's compatible as it provides a familiar programming and user environment.
+For all intents and purposes, the Hurd provides the same facilities as a modern
+[[Unix]]-like kernel. The Hurd uses the [[GNU C Library|glibc]], whose
+development closely tracks [[standards such as ANSI/ISO, BSD, POSIX, Single
+Unix, SVID, and X/Open|faq/posix_compatibility]].
+
+Unlike other popular kernel software, the Hurd has an object-oriented structure
+that allows it to evolve without compromising its design. This structure will
+help the Hurd undergo major redesign and modifications without having to be
+entirely rewritten.
+
+The Hurd is built in a very modular fashion. Other Unix-like kernels (Linux,
+for example) are also modular in that they allow loading (and unloading) some
+components as kernel modules, but the Hurd goes one step further in that most
+of the components that constitute the whole kernel are running as separate
+user-space processes and are thus using different address spaces that are
+isolated from each other. This is a multi-server design based on a
+[[microkernel]]. It is not possible that a faulty memory dereference inside
+the [[TCP/IP stack|hurd/translator/pfinet]] can bring down the whole kernel,
+and thus the whole system, which is a real problem in a monolothic Unix kernel
+architecture.
+
+One advantage of the Hurd's separation of kernel-like functionality into
+separate components ([[servers|hurd/translator]]) is that these can be
+constructed using different programming languages -- a feature that is not
+easily possible in a monolithic kernel. Essentially, only an interface from
+the programming environment to the [[RPC]] mechanism is required. (We have a
+[[project proposal|community/gsoc/project_ideas/language_bindings]] for this,
+if you're interested.)
+
+<!-- This is a bit questionable...
+
+It's scalable. The Hurd implementation is aggressively multithreaded so that
+it runs efficiently on both single processors and symmetric multiprocessors.
+The Hurd interfaces are designed to allow transparent network clusters
+(*collectives*), although this feature has not yet been implemented.
+
+See also [[unsorted/hurd-migr]] ([[!taglink open_issue_documentation]]).
+
+-->
+
+The Hurd is an attractive platform for learning how to become a kernel hacker
+or for implementing new ideas in kernel technology. Every part of the system
+is designed to be easily modified and extended.
+
+It is possible to develop and test new Hurd kernel components without rebooting
+the machine. Running your own kernel components doesn't interfere with other
+users, and so no special system privileges are required. The mechanism for
+kernel extensions is secure by design: it is impossible to impose your changes
+upon other users unless they authorize them or you are the system
+administrator.
+
+The Hurd is real software that works right now. It is not a research project
+or a proposal. You don't have to wait at all before you can [[start
+using|hurd/running]] and [[developing|contributing]] it.
+
+<!-- add stuff from hurd-talk.html -->
+
+*Technical advantages from a users viewpoint can be seen in the weblog entry [[Some technical advantages of the Hurd|community/weblogs/ArneBab/technical-advantages-of-the-hurd]].*
diff --git a/asbestos.mdwn b/asbestos.mdwn
index 65ab391e..3990eec1 100644
--- a/asbestos.mdwn
+++ b/asbestos.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Asbestos is an operating system developed at MIT, Stanford
and UCLA to explore information flow control policies. The motivation
diff --git a/asking_questions.mdwn b/asking_questions.mdwn
new file mode 100644
index 00000000..2d43cbbe
--- /dev/null
+++ b/asking_questions.mdwn
@@ -0,0 +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]]."]]"""]]
+
+Before asking a question, first make an effort to find the answer to your
+question. A lot of questions have been asked and answered before, so please
+spend some time trying to solve the problem on your own (e.g., [search the
+web](http://google.com/), search these web pages, etc.), and show us that you
+did so when you ask your question.
+
+When asking, (1) be details, and (2) demonstrate that you have made an effort,
+e.g., "I am having trouble frobbing the foo. I searched the web and only found
+information regarding how to frob a bar, but that seems unrelated." Provide as
+many relevant details as possible reproducing them as exactly as possible.
+
+Also consider these
+[guidelines](http://catb.org/~esr/faqs/smart-questions.html).
diff --git a/binutils.mdwn b/binutils.mdwn
index 3e9e5889..d3e2b735 100644
--- a/binutils.mdwn
+++ b/binutils.mdwn
@@ -1,11 +1,23 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-The [GNU Binutils](http://www.gnu.org/software/binutils/).
+[[!meta title="GNU Binutils"]]
+
+
+# <http://www.gnu.org/software/binutils/>
+
+
+# [[Maintenance|open_issues/binutils]]
+
+
+# Open Issues
+
+[[!inline pages=tag/open_issue_binutils raw=yes feeds=no]]
diff --git a/boehm_gc.mdwn b/boehm_gc.mdwn
new file mode 100644
index 00000000..5745aaaf
--- /dev/null
+++ b/boehm_gc.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="Boehm GC"]]
+
+
+# <http://www.hpl.hp.com/personal/Hans_Boehm/gc/>
+
+
+# [[Maintenance|open_issues/boehm_gc]]
diff --git a/capability.mdwn b/capability.mdwn
index 8bb14f13..ddadf137 100644
--- a/capability.mdwn
+++ b/capability.mdwn
@@ -1,12 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2010, 2011 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
A capability is a protected reference. It is a reference in that
it designates an object; it is protected in that in cannot be
@@ -27,7 +28,110 @@ sent a string to identify the file to B, the identifier lacks a
than A intended. Be ensuring that [[designation]] and [[authorization]] are
always bound together, these problems are avoided.
-Unix file descriptors can be viewed as capabilities. Unix file
-descriptors do not survive reboot, that is, they are not
-[[persistent|persistency]]. To work around this, [[ACL]]s are used to
-recover authority.
+Capability-based system architectures strive to meet the *principle of least
+privilege* ({{$wikipedia_polp}}).
+
+[[!tag open_issue_documentation]] <!--
+Revoking capabilities: destroy Mach port, invalidates *all* send rights. See
+shapiro_capintro_1999. To be more fine-grained, need separate instances, for
+example, valet key vs. door key. Proxy objects (that can be destroyed
+individually); attenuation design pattern, membranes
+(wikipedia_object-capability_model)?
+-->
+
+A capability mechanism is typically implemented in software my the operating
+system kernel (typically a [[microkernel]]. The computing cost (as compared to
+a hardware implementation) is neglectable.
+
+
+[[!tag open_issue_documentation]] <!--
+References. shapiro_capintro_1999 has a bit.
+-->
+
+
+[[!tag open_issue_documentation]] <!--
+# Advantages
+
+ * increased security; POLP
+
+ * easy exchanging of functionality
+
+ * support modular design and encapsulation
+
+ * easy collaboration (in theory; need real example)
+
+-->
+
+
+# UNIX
+
+[[UNIX file descriptors|unix/file_descriptor]] can be viewed as capabilities.
+They do not survive reboot, that is, they are not [[persistent|persistency]].
+To work around this, [[ACL]]s are used to recover authority.
+
+
+# GNU/Hurd
+
+In the GNU/Hurd system, a capability is represented by a [[Mach
+port|microkernel/mach/port]]. As in UNIX (see above), they are not
+[[persistent|persistency]].
+
+
+# Further Reading
+
+ * [[Mach port|microkernel/mach/port]]
+
+[[!toggleable id=shapiro_capintro_1999 text="""[[!template id=note
+text="*[[shapiro\_capintro\_1999|capability]]*:
+{{$capability#shapiro_capintro_1999}}.
+{{$capability#shapiro_capintro_1999_text}}."]]"""]]
+
+ * [[!toggle id=shapiro_capintro_1999 text="[shapiro\_capintro\_1999]"]]
+
+ * {{$wikipedia_capability-based_security}}
+
+ * {{$wikipedia_object-capability_model}}
+
+ * {{$wikipedia_polp}}
+
+
+[[!tag open_issue_documentation]] <!--
+<http://www.eros-os.org/essays/wherefrom.html>,
+<http://www.eros-os.org/essays/ACLSvCaps.html>,
+<http://www.cap-lore.com/CapTheory/index.html>,
+<http://www.cap-lore.com/CapTheory/tddCap.html>
+<http://www.skyhunter.com/marcs/capabilityIntro/>
+-->
+
+
+[[!ymlfront data="""
+
+shapiro_capintro_1999:
+
+ "[What *is* a Capability,
+ Anyway?](http://www.eros-os.org/essays/capintro.html), Jonathan Shapiro,
+ 1999"
+
+shapiro_capintro_1999_text:
+
+ "This is an easily readable introduction with good examples. In the author's
+ own words, the text *provides a layman's introduction to capabilities,
+ describing what they are, what they do, and why they result in better
+ security than today's computer systems*"
+
+wikipedia_capability-based_security:
+
+ "[[!wikipedia Capability-based_security desc=\"Wikipedia, capability-based
+ security\"]]"
+
+wikipedia_object-capability_model:
+
+ "[[!wikipedia Object-capability_model desc=\"Wikipedia, object-capability
+ model\"]]"
+
+wikipedia_polp:
+
+ "[[!wikipedia Principle_of_least_privilege desc=\"Wikipedia, principle of
+ least privilege\"]]"
+
+"""]]
diff --git a/challenges.mdwn b/challenges.mdwn
new file mode 100644
index 00000000..a3a8a7e6
--- /dev/null
+++ b/challenges.mdwn
@@ -0,0 +1,24 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+The GNU Hurd has a lot of [[advantages]], but there are challenges, too.
+
+Some of these are explained in the [[hurd/critique]].
+
+Even though they're quite popular in the simpler embedded space, there is no
+successful true multi-server [[microkernel]] system for general-purpose desktop
+use yet. This is still an ongoing research effort. (TODO: add references.)
+
+Likewise, resource scheduling in distributed operating system kernels is a
+research topic. For example, read more about it on the relevant [[Open Issues
+page|open_issues/multiprocessing]]. Also, the [[microkernel/Viengoos]]
+research kernel project strives to explore these.
+
+TODO: more to come. [[!tag open_issue_documentation]]
diff --git a/colophon.mdwn b/colophon.mdwn
new file mode 100644
index 00000000..a9a2952e
--- /dev/null
+++ b/colophon.mdwn
@@ -0,0 +1,64 @@
+[[!meta copyright="Copyright © 2003, 2004, 2007, 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]]."]]"""]]
+
+Just like a book, this topic is designed to help describe the tools used to
+create this website and what methods were used to give it its look and feel.
+
+
+What we see today is the junction of two different branches: the original
+static HTML pages and the wiki pages.
+
+# Static HTML Pages
+
+In November 2008, the Hurd's old static web pages were merged into the wiki
+pages' repository. After a lot of cleansing work, on 2008-11-22 the joined set
+of pages was made available for serving the official GNU Hurd web appearance at
+<http://www.gnu.org/software/hurd/>.
+
+# Wiki Pages
+
+## Rev. I
+
+We used a particular implementation (or clone) of Wiki software called
+[TWiki](http://twiki.org). The wiki was reachable at
+`http://hurd.gnufans.org/`.
+
+A generic [WikiWikiWeb](http://www.c2.com/cgi/wiki?WelcomeVisitors), or simply
+Wiki, is _"a collaborative forum where people can share ideas and record any
+consensus reached on difficult issues, along with rebuttal. It changes as
+people come and go, as experience develops, and as opinions change." The TWiki
+software is an enhanced descendent of the original WikiWikiWeb_.
+
+We used the [GNU Skin](http://twiki.org/cgi-bin/view/Plugins/GnuSkin).
+
+The site began in May 2002 as one TWiki web: *Hurd*. This WebHome page was
+used as the front page of the whole site. We grew this site and added more
+TWiki webs by December 2002. Due to the success of the site we had to act
+with respect to more completely addressing copyright issues. More people
+started adding content.
+
+The gnufans site's administrators would eventually step back from maintenance
+of their wiki installation, so from roughly 2005 on, day-to-day tasks like
+processing new user's registrations or spam removal would not be done in a
+timely fashion anymore. In July 2006, the [slow burial of the Hurd
+Wiki](http://lists.gnu.org/archive/html/bug-hurd/2006-07/msg00014.html) was
+announced.
+
+## Rev. II
+
+Considering this [from April 2006 on
+already](http://lists.gnu.org/archive/html/web-hurd/2006-04/msg00000.html), on
+2007-08-12 the conversion of the TWiki content to a format usable by
+[ikiwiki](http://ikiwiki.info) was finally finished. Read
+[[about_the_twiki_to_ikiwiki_conversion]].
+
+This wiki instance is now running distributed over two GNU/Hurd machines, and
+is also providing the content of the official GNU Hurd pages.
diff --git a/about_the_twiki_to_ikiwiki_conversion.mdwn b/colophon/about_the_twiki_to_ikiwiki_conversion.mdwn
index 8c556261..0a1a5a00 100644
--- a/about_the_twiki_to_ikiwiki_conversion.mdwn
+++ b/colophon/about_the_twiki_to_ikiwiki_conversion.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
# Some Quick Notes About the *TWiki to ikiwiki* Conversion
@@ -38,7 +38,7 @@ also made available by the authors at
<http://svcs.cs.pdx.edu/~jamey/wikiconverter/>.
The Debian package *libhtml-wikiconverter-perl* is too old at least until
-[[debbug 419918]] is closed.
+[[!debbug 419918]] is closed.
For converting from rcs files (as used by TWiki) to a git repository you'll
need to get `git clone git://people.freedesktop.org/~keithp/parsecvs` and build
diff --git a/community.mdwn b/community.mdwn
index 68d2c3d1..be1edb8f 100644
--- a/community.mdwn
+++ b/community.mdwn
@@ -1,13 +1,13 @@
-[[meta copyright="Copyright © 2002, 2003, 2005, 2007, 2008
-Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2002, 2003, 2005, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
There is an expanding community of people developing and running test Debian
GNU/Hurd machines.
@@ -18,11 +18,11 @@ Further ways of getting in contact or getting information:
[[Shared-Wiki-Weblog|Weblogs]] -- A shared weblog by Hurd developers and enthusiasts.
-[[Meetings]] -- Meetings with Hurd developer attendance.
+[[User Pages|/user]]
-[[GSoC]] -- Participation in Google Summer of Code (2008)
+[[Meetings]] -- Meetings with Hurd developer attendance.
-[[Hurd/WhoRunsGNU]]
+[[GSoC]] -- Participation in the Google Summer of Code
[[Hurd/HurdDevelopers]] -- Who's who?
@@ -30,12 +30,16 @@ Further ways of getting in contact or getting information:
[[LiveJournal]]
+[identi.ca](http://identi.ca/group/hurd)
+
[[Orkut]]
[[FaceBook]]
[Advogato.org -- Hurd Project page](http://advogato.org/proj/HURD/)
+[[Media_Appearances]]
+
---
# Hurd User Groups
@@ -46,8 +50,10 @@ Further ways of getting in contact or getting information:
* [[HurdBr]] - Hurd Br is a brasilian, portuguese speaking, HUG
* [HurdEs](http://hurd.es.gnu.org/)
* [Hurdfr.org](http://www.hurdfr.org/)
-* [HurdIn]
* [HurdIt](http://hurd-it.sf.net/)
-* [HurdPl](http://hurd.pl/forum/)
* [HurdUk](http://uwhug.org.uk/)
-* [HurdUs](http://hurd.gnufans.org/)
+
+# Other Community Pages
+
+ * [GNU Hurd Sverige](http://hurd.mtb-tech.se/) -- A Swedish website
+ about the GNU Hurd
diff --git a/community/communication.mdwn b/community/communication.mdwn
index d2eccceb..33941000 100644
--- a/community/communication.mdwn
+++ b/community/communication.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
The GNU Hurd community comprises of a crowd of people living in different areas
of the whole world. For that, having regular working-[[meetings]] -- usually
@@ -14,7 +14,7 @@ one of the more productive ways of coordination works -- is not easily
possible.
The two key resources most often used for communication are the Debian and GNU
-[[mailing_lists]], as well as [[IRC]].
+[[mailing lists]], as well as [[IRC]].
These are measures of communication that work (compared to, e.g., a one-to-one
telephone call) one-to-many. It is important to not send email only to a
@@ -31,10 +31,10 @@ discussing with single developers. And always use *reply to all* instead of
*reply* when answering to email.
If you're interested in keeping up with current events and taking part in
-discussions, you'll want to join the [[mailing_lists/bug-hurd]] mailing list or
+discussions, you'll want to join the [[mailing lists/bug-hurd]] mailing list or
have a look at its [archives](http://lists.gnu.org/archive/html/bug-hurd/).
Even if you're a beginner (we've also been, and some of us even still
remember), don't hesitate to make the first move and make active use of these
resources. But -- of course -- please try to adhere to the conventions as
-described on the [[mailing_lists]] and [[IRC]] pages.
+described on the [[mailing lists]] and [[IRC]] pages.
diff --git a/community/facebook.mdwn b/community/facebook.mdwn
index b5340224..27893cf9 100644
--- a/community/facebook.mdwn
+++ b/community/facebook.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
There is [a Facebook group for the Hurd](http://www.facebook.com/group.php?gid=5141429597). If you're on Facebook, join it and say hello.
diff --git a/community/gsoc.mdwn b/community/gsoc.mdwn
index 948a6e9c..e22bda3d 100644
--- a/community/gsoc.mdwn
+++ b/community/gsoc.mdwn
@@ -1,52 +1,94 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2009, 2010, 2011 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-The GNU Hurd project has been accepted as a mentoring organization for
-the [Google Summer of Code
-2008](http://code.google.com/soc/2008/hurd/about.html)!
+[[!meta title="Google Summer of Code"]]
-Student selection is over, and we have four slots -- quite some more than the
-one we had the previous years under the GNU umbrella... Let's hope for some
-good results :-)
+We're in! The GNU Hurd project is again participating in the [Google Summer of
+Code](http://www.google-melange.com/gsoc/homepage/google/gsoc2011) under the
+[GNU umbrella](http://www.gnu.org/software/soc-projects/).
-The selected projects are:
+This year's *student application period* is over. Thanks for sending in your
+applications! We're now reviewing and discussing these, so please pay
+attention to any questions posted on your proposal's page. The Google site's
+notification system should be sending out emails, too.
-* Lisp binding for Hurd translator libraries
-* Network virtualization for subhurds etc.
-* Usable procfs implementation
-* dtrace support
+As we only have finite resources (meaning that we won't be able to accept all
+GNU Hurd applications even if we wanted to), we will eventually need to make a
+choice about whom to select. For this, it is a very good idea to be in contact
+with us, be it by answering the evaluators' questions on your proposal's page,
+or by talking to us on the [[mailing_lists]] or on [[IRC]]. At this time, it
+is important for us to get a good impression about the seriousness you're
+showing with your application.
-Special cheers go to Sergiu Ivanov, whom we unfortunately couldn't select
-because he was impeded during the application phase, but who nevertheless is
-working on his project (namespace-based translator selection) as a volunteer
-with a dedication matching that of the selected students!
+It is a good idea to get familiar with the GNU Hurd, by reading some of our
+[[documentation]], and by using a GNU/Hurd system. It is also a good idea to
+send in some basic patches (this has already been mentioned in our
+[[student_application_form]]), or discuss with us the principal steps you're
+planning on doing in your intended work area. Of course, we don't expect you
+to already start working seriously on your project, but any input you're giving
+us will make it easier for us to justify selectiong your specific proposal. At
+this time, it is not quantity that matters, and it also is not *the perfect
+patch* we're waiting for, but it is rather that we see how you're generally
+able to work with the code.
-The summer session has started by the end of May, and all the students are
-making good progress. We are in good hopes of seeing five successful projects
-at the end of this summer :-)
+If you have any questions, don't be shy: please ask! Nobody expects you to
+know everything. Even for the long-term Hurd contributors it is common to
+openly post messages to [[mailing_lists/bug-hurd]] saying: *Hey, I don't know
+how to do `X`, can someone please help me?* And, as we're not working next to
+each other in a conventional office or university setup, we'll need to
+establish and get used to different communication channels.
-## '08 SoC students and interested non-students
+[Timeline](http://www.google-melange.com/gsoc/events/google/gsoc2011). As
+boring as it is, but the next step is waiting: we will have to wait for Google
+to announce the number of slots that the whole GNU project gets, and we'll be
+discussing with our GNU peers about how to split these up among all the GNU
+subprojects.
-Minutes from the IRC meetings: [[25April08Minutes]], [[02May08Minutes]], [[16May08Minutes]]
-## Wiki pages kept by '08 SoC students and interested non-students
+# Applying for a Task
- * [[scolobb]] - Namespace-based translator selection
- * [[da]] - Network virtualization
- * [[flavioc]] - Lisp bindings
- * [andrei](http://csclub.uwaterloo.ca/~abarbu/hurd/) - dtrace/systemtap port
- * [[procfs]] - GNU/Linux compatible procfs pseudo filesystem
+Applications for 2011 are closed.
-## History
+We have a list of [[project_ideas]], and students are likewise encouraged to
+submit their own project proposals.
-2006 and 2007 we participated in GSoC under the umbrella of the GNU project,
+We always ask students that want to apply for a task (in the course of the
+Google Summer of Code) to mind our distinct [[student_application_form]].
+
+Then, don't forget to visit
+<http://www.google-melange.com/gsoc/org/google/gsoc2011/gnu>, and push the big
+button for submitting your proposal.
+
+Please read up about [[contributing]] in general;
+and feel free to ask any questions you might have at one of our [[regular_IRC_meetings|IRC#regular_meetings]].
+Generally it's a good idea to [[contact_us|communication]] when starting to work on some project.
+
+
+## Outside of the GSoC Scope
+
+Working on one of these projects is generally a good opportunity to get started
+with Hurd development, even outside of the GSoC context. Please don't hesitate
+to contact us regarding mentoring even if it's not GSoC time at the moment, or
+if you aren't a student anyway.
+
+
+# History
+
+In 2006 and [[2007]], we participated in GSoC under the umbrella of the GNU
+project,
getting one slot each year.
-<!-- TODO. Extend. -->
+In the following year, we successfully participated on our own, not only as a
+suborganization of the GNU
+project. Read about our five students' success on the [[2008]] page.
+
+The next two year, we participated under the GNU umbrella with one slot in
+[[2009]], and three in [[2010]].
diff --git a/community/gsoc/2007.mdwn b/community/gsoc/2007.mdwn
new file mode 100644
index 00000000..fa22f785
--- /dev/null
+++ b/community/gsoc/2007.mdwn
@@ -0,0 +1,16 @@
+[[!meta copyright="Copyright © 2008, 2009, 2010 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]]."]]"""]]
+
+Participated under the umbrella of the GNU project, getting one slot:
+
+ * Carl Fredrik Hammar has been working on [[hurd/libchannel]]; [Google's
+ project
+ page](http://code.google.com/soc/2007/gnu/appinfo.html?csaid=44FB3FD69C665A08).
diff --git a/community/gsoc/2008.mdwn b/community/gsoc/2008.mdwn
new file mode 100644
index 00000000..d994f2b0
--- /dev/null
+++ b/community/gsoc/2008.mdwn
@@ -0,0 +1,89 @@
+[[!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]]."]]"""]]
+
+The GNU Hurd project has successfully participated in the
+[Google Summer of Code 2008](http://code.google.com/soc/2008/hurd/about.html)!
+
+All in all we had five students working on a diverse selection of five projects
+from our [[ideas_list|gsoc/project_ideas]], and the students as well as the mentors
+did a great job!
+
+# Projects
+
+* [[Sergiu_Ivanov|scolobb]] worked on **namespace-based translator selection**.
+ Although he wasn't an official (sponsored) GSoC student, he worked on his
+ project quite as steady as the other students (except for a two week
+ vacation). The project however was hampered by various misunderstandings,
+ wrong assumptions, and several major redesigns during the course of the work
+ -- which is probably more our fault than the student's. In the end, though, he
+ completed [[hurd/translator/nsmux]] (the main namespace proxy handling the
+ magic filename
+ lookups, running dynamic translators on demand); he still works on
+ finishing the translator stack filtering necessary to implement some of the
+ desired functionality (accessing files while skipping existing translators).
+
+* [[Zheng_Da|zhengda]] worked on **network virtualization** and some related topics. In
+ spite of many open design question in the beginning, he did a lot of good
+ work -- finishing not only the ethernet multiplexer and filter translators,
+ which form the core of his project, but also a glibc patch to allow
+ overriding the standard socket servers with environment variables; the
+ devnode translator and a pfinet patch to allow accessing network devices
+ through device files; support for setting the network device in promiscuous
+ mode in gnumach; a pfinet patch to use BPF for the packet filtering instead
+ of the old Mach packet filters, and also to set a proper filter rule that
+ really only passes the required packages to pfinet; a patch for the subhurd
+ boot program to allow giving arbitrary virtual devices to the subhurd; and a
+ proxy for the proc server, which allows running unmodified programs with a
+ pseudo device master port instead of the real one -- providing some of the
+ subhurd functionality without having to start a complete new system instance.
+ He is still working on fixing some remaining issues, and on allowing subhurds
+ to be run by normal users.
+
+* [[Flavio_Cruz|flaviocruz]] was working on **Lisp bindings for the Hurd interfaces**,
+ and did a great job: Not only did he implement bindings for all low-level
+ interfaces as well as higher-level libraries for easy creation of translators
+ and other hurdish programs, but also a whole bunch of sample
+ translators based on these bindings, some of them quite useful on their own
+ account. He also fixed a few bugs in the Hurd he found along the way.
+ Presently he is doing some further improvements, like additional abstractions
+ and more sample translators.
+
+* [Andrei Barbu](http://0xab.com) was working on
+ **porting a kernel instrumentation framework** like dtrace or SystemTap. He
+ implemented the necessary kernel infrastructure (and some nice general
+ improvements along the way), making it possible to create tracing programs by
+ hand; however, only at the end of the summer he realized that SystemTap is
+ really extremely Linux-specific (while dtrace was ruled out already at the
+ setout because of licensing problems), so there is no nice frontend yet.
+ Unfortunately he was not able to continue work beyond the official deadline
+ because of his PhD.
+
+* [[Madhusudan.C.S|madhusudancs]] was working on a **new procfs implementation**, to
+ allow running existing programs based on Linux procfs out of the box. He
+ managed to implement all the necessary information bits, so the most
+ important procfs programs now work; and also fixed the procps program suite
+ to actually build on the Hurd. There are still some major bugs left, though.
+ Aside from fixing the remaining bugs, he now works on adding some more
+ information bits that are nontrivial to implement, and on fixing libgtop to
+ work for us as well.
+
+
+# IRC meetings
+
+Since the selection of the students on we have had regular, weekly GSoC IRC
+meetings, see the [[IRC#regular_meetings]] page for details.
+
+Minutes from some of the meetings: [[2008/minutes-2008-04-25]],
+[[2008/minutes-2008-05-02]], [[2008/minutes-2008-05-16]]
+
+We decided to keep up the meetings after the end of official GSoC, so things
+can be properly wrapped up for upstream submission; but also because the
+students want to continue discussing progress with their ongoing work,
+problems, future directions etc.
diff --git a/community/25april08minutes.mdwn b/community/gsoc/2008/minutes-2008-04-25.mdwn
index 3f2c0313..4c2039d4 100644
--- a/community/25april08minutes.mdwn
+++ b/community/gsoc/2008/minutes-2008-04-25.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
- People agreed that some small projects should be done to during the bonding
period: ideas that floated around were fixing some of the build failures or
diff --git a/community/02may08minutes.mdwn b/community/gsoc/2008/minutes-2008-05-02.mdwn
index 9c99a8e7..1dc99abe 100644
--- a/community/02may08minutes.mdwn
+++ b/community/gsoc/2008/minutes-2008-05-02.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
- madrazr wanted a wiki to keep track of progress. antrik suggested:
http://www.bddebian.com/~wiki/community/gsoc/ and that everyone use
diff --git a/community/16may08minutes.mdwn b/community/gsoc/2008/minutes-2008-05-16.mdwn
index 8adb838c..7e7da845 100644
--- a/community/16may08minutes.mdwn
+++ b/community/gsoc/2008/minutes-2008-05-16.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
* **madrazr** said that web commits for the wiki stall forever (more than half an hour); the reason is unknown. **antrik** said that it is not much of a problem if the problems with git access are solved.
diff --git a/community/gsoc/2009.mdwn b/community/gsoc/2009.mdwn
new file mode 100644
index 00000000..6efeb839
--- /dev/null
+++ b/community/gsoc/2009.mdwn
@@ -0,0 +1,23 @@
+[[!meta copyright="Copyright © 2008, 2009, 2010 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]]."]]"""]]
+
+[[!meta title="Google Summer of Code 2009"]]
+
+The GNU Hurd project unfortunately was not in the list of accepted
+mentoring organizations.
+
+We did get one slot from the GNU project's.
+
+The applications have been evaluated and the following student has
+been accepted:
+
+ * [[Sergiu Ivanov|scolobb]] -- working on a *[[VFS-style union
+ mount|hurd/translator/unionmount]]* functionality; [Google's project
+ page](http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2009/karlberry/t124022551214).
diff --git a/community/gsoc/2010.mdwn b/community/gsoc/2010.mdwn
new file mode 100644
index 00000000..4388636b
--- /dev/null
+++ b/community/gsoc/2010.mdwn
@@ -0,0 +1,35 @@
+[[!meta copyright="Copyright © 2008, 2009, 2010, 2011 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]]."]]"""]]
+
+[[!meta title="Google Summer of Code 2010"]]
+
+In 2010 we have again been participating in the Google Summer of Code
+under the GNU umbrella, with three slots:
+
+ * *[[Jeremie Koenig|jkoenig]]*, mentored by *[[Samuel
+ Thibault|samuelthibault]]*, has been working on adapting the Debian Installer to
+ [produce working Debian GNU/Hurd installation
+ images](http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/debian/t127230758239)
+ so we can easily offer up to date disc-sets.
+ ([Details](http://wiki.debian.org/SummerOfCode2010/HurdDebianInstaller/JeremieKoenig).)
+
+ * *[[Emilio Pozuelo Monfort|pochu]]*, mentored by *Carl Fredrik Hammar* (who
+ was a GSoC student in [[2007]]), has been working on a task that may be perceived as
+ less exciting from the outside, but yet is extremely valuable: [fixing
+ compatibility problems exposed by projects'
+ testsuites](http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/gnuproject/t127230759396).
+ ([[Details|community/gsoc/project_ideas/testsuites]].)
+
+ * *[[Karim Allah Ahmed|kam]]*, mentored by *Sergio López*, has been working on
+ [tuning the VM Subsystem in
+ GNU/Hurd](http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/gnuproject/t127230759587)
+ to bring the virtual memory management in Hurd/Mach up to date.
+ ([[Details|community/gsoc/project_ideas/vm_tuning]].)
diff --git a/community/gsoc/organization_application.mdwn b/community/gsoc/organization_application.mdwn
index ca844fff..8e672af1 100644
--- a/community/gsoc/organization_application.mdwn
+++ b/community/gsoc/organization_application.mdwn
@@ -1,145 +1,141 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2009, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-* What is your Organization's Name?
+* Organization Name:
GNU Hurd
-* What is your Organization's Homepage?
+* Description:
+
+The mission of the Hurd project is to create a general-purpose kernel suitable
+for the [GNU operating system](http://gnu.org), which is viable for everyday
+use, and gives users and programs as much control over their computing
+environment as possible.
+
+In traditional operating systems, most system functionality is provided by the
+kernel, and thus cannot be easily modified. The Hurd on the other hand --
+following the GNU spirit of giving users more control over the software they
+use -- implements a unique design, which makes it feasible to change almost
+everything, down to the core features of the system.
+
+While on other systems, such changes would require a lot of effort and special
+privileges to rebuild the system core, with the Hurd this is not necessary: the
+extensible architecture enables users (or applications) to simply modify their
+local system environment at any time, while leaving the rest of the system in
+place.
+
+The most obvious example is the completely decentralized VFS mechanism: it can
+be extended in almost any imaginable way, simply by setting up suitable server
+processes (translators). Not only does this empower users, but also it helps
+application development: desktop environments such as GNOME for example, when
+making use of these possibilities, wouldn't need to create their own VFS
+mechanism -- they simply could extend the system VFS to suit their needs.
+
+One major element of the design which enables this extensibility, is the use of
+a true multiserver microkernel architecture. The Hurd is quite unique in being
+the only general-purpose multiserver microkernel system in development today,
+that is nearly ready for everyday use, and offering almost perfect UNIX
+compatibility. (About 65% of all packages in the Debian repository are
+available for the Hurd.) The "general-purpose" and "everyday use" bits are
+decisive here: all other existing true microkernel systems are either research
+projects not nearly complete enough for actual use; or limited to embedded
+systems and other special purposes; or both.
+
+Marcus Brinkmann and Neal Walfield, while working on improvements to the Hurd
+design, pushed at the forefront of microkernel operating system research. They
+worked with the most distinguished researchers in this field from the
+[L4](http://l4hq.org/) and
+[EROS](http://www.eros-os.org/eros.html)/[Coyotos](http://www.coyotos.org/)
+microkernel operating system groups, and published a couple of [research
+papers](http://walfield.org/) as well in this process.
+
+* Home Page:
http://hurd.gnu.org
-* Describe your organization.
-
-The Hurd project is a loose community of people sharing a common interest in
-developing the Hurd kernel, which is the official kernel of the [GNU operating
-system](http://gnu.org).
-
-When the Hurd was originally started in 1990, it was the last missing major
-component for a complete GNU system. Today Linux and other free kernels are
-available to fill this gap, and the combination of GNU and Linux (often
-[incorrectly](http://www.gnu.org/gnu/why-gnu-linux.html) called just "Linux")
-is in wide use. However, the Hurd is still interesting due to its unique
-design, better fitting the GNU philosophy than traditional monolithic kernels
-like Linux.
-
-The GNU GPL guarantees that all users of software published under this license
-get the legal permission to adapt the software they are using according to
-their wishes, and also get the source code and other tools necessary to put
-this permission to use. However, in traditional operating systems, the kernel
-and related low-level system software are protected from normal users, and
-cannot be easily modified; only the system administrator has power over these.
-
-The Hurd offers special mechanisms that allow any user to change almost all of
-the system functionality he uses, without affecting the rest of the system, and
-thus easily (at runtime) and without any special permissions.
-
-This ability to run subenvironments more or less independant from the rest of
-the system, can be classified as a very sophisticated [lightweight
-virtualization](http://tri-ceps.blogspot.com/2007/10/advanced-lightweight-virtualization.html)
-approach.
-
-To offer these possibilities, the Hurd uses a true multiserver microkernel
-architecture. That makes it quite unique: The Hurd is the only general-purpose
-multiserver microkernel system in development today that is nearly ready for
-everyday use, and offering almost perfect UNIX compatibility. (More than half
-of the packages in the Debian repository are available for the Hurd.) All other
-existing true microkernel systems are either research projects not nearly
-complete enough for actual use, or limited to embedded systems and other
-special purposes, or both.
-
-Marcus Brinkmann and Neal Walfield from the Hurd project are working at the
-bleeding edge of microkernel operating system research. They have been in
-contact with the most distinguished researchers in that field from the
-[L4](http://l4hq.org/) and
-[EROS](http://www.eros-os.org/eros.html)/[Coyotos](http://www.coyotos.org/)
-microkernel operating system groups, and have written a couple of [research
-papers](http://walfield.org/).
+* Main Organization License:
-* Why is your organization applying to participate in GSoC 2008? What do you
-hope to gain by participating?
+GNU General Public License (GPL)
-For one, it is a way to make progress with tasks that require an amount of
-focused work, that is hard to do for volunteers working in their spare time
-only.
+* Why is your organization applying to participate in GSoC 2010? What do you hope to gain by participating?
-Also it is a good possibility to get valuable input from new people, as well as
-spreading technical and other knowledge about the Hurd among actual and
-potential contributors. More generally, participation should help raising
-awareness among people who might know about the existence of the Hurd, but
-otherwise having very little idea what the project is all about, and how its
-progress is.
+The primary goal of our participation is of course to find and introduce new long-term contributors
+to the Hurd. We are trying to optimise for this in our student selection
+process, our mentoring approach, and our choice of project ideas.
+
+The mentor-student setup, together with the period of focused work during the
+summer session, also offer a unique opportunity for kick-starting innovative
+new projects apart from mainline development, which are hard to fit in among
+the normal day-to-day development work. This is particularily important for the
+Hurd, as innovative uses are crucial to show the benefits of the unique
+architecture. Several such projects came into being through the GSoC program
+over the past years.
-Last but not least, we hope the participation will have a positive effect on
-our community -- new impulses, increased communication etc.
+Last but not least, GSoC participation always yields a lot of valuable input from new people, and helps
+spreading technical and other knowledge about the Hurd among actual and
+potential contributors. It has a very positive effect on
+our community -- new impulses, increased communication, etc.
-* Did your organization participate in previous GSoC years? If so, please
-summarize your involvement and the successes and failures of your student
-projects.
+* Did your organization participate in past GSoCs? If so, please summarize your involvement and the successes and challenges of your participation.
-We did not participate as an organisation on our own so far. In 2006 and 2007,
+In 2006 and 2007,
we participated under the umbrella of the GNU project, getting one slot each
year.
-The 2006 participation was mostly a failure. After some intitial work
-(available in CVS), the student disappeared -- moving to another country and
-other personal issues from what we heard.
+In 2008 we participated as an organisation on our own for the first time. This
+turned out extremely beneficial: with the better visibility, we got a lot
+more applications (more than 20), mostly of good or excellent quality.
+
+In 2009, we were rejected as an organisation, so we participated under the GNU
+umbrella again.
-The 2007 participation was a considerable success. The student was very bright
-and dedicated. We got some code, as well as a lot of ideas, which we continued
-discussing after the end of GSoC, and he intends to put into code as well in
-the future.
+While the 2006 student disappeared midway, in all the later years all of our
+students were successful -- even including one who worked on his project in
+spite of not getting an official slot. Half of them are regular Hurd contributors now.
-We decided to participate as an own organisation this year, as we believe that
-will give us much better possibilities to find and select good students.
+Selecting the most promising students, as well as suitable mentors, turned out
+to be the most tricky part of GSoC participation -- but we learned our lesson
+after the first failure: we didn't have any students that didn't meet our
+expectations since then, and we also believe our mentoring is exceptionally
+good now -- one project that was in serious trouble, turned out well after all,
+due to effective mentor intervention.
-* If your organization has not previously participated in GSoC, have you
-applied in the past? If so, for what year(s)?
+* If your organization participated in past GSoCs, please let us know the ratio of students passing to students allocated, e.g. 2006: 3/6 for 3 out of 6 students passed in 2006.
-We didn't apply as as organisation so far.
+2008: 4/4
-* What license does your project use?
+(+1 inofficial in 2008)
+(under GNU umbrella: 2006: 0/1; 2007: 1/1; 2009: 1/1)
-Most of the code in the Hurd servers and the Hurd-specific glibc parts is
-licensed GPLv2 or later; it might move to GPLv3 soon. Some components (mostly
-the TCP/IP stack and parts of the ext2fs driver) are based on Linux code and
-thus GPLv2 only.
+* If your organization has not previously participated in GSoC, have you applied in the past? If so, for what year(s)?
-The microkernel (gnumach) is covered by the three-clause BSD license. (And some
-minor variations of same...)
+--
-* URL for your ideas page
+* What is the URL for your ideas page?
-[[project_ideas]]
+http://www.gnu.org/software/hurd/community/gsoc/project_ideas.html
-* What is the main development mailing list for your organization?
+* What is the main development mailing list for your organization? This question will be shown to students who would like to get more information about applying to your organization for GSoC 2010. If your organization uses more than one list, please make sure to include a description of the list so students know which to use.
-bug-hurd@gnu.org, see http://lists.gnu.org/mailman/listinfo/bug-hurd
+bug-hurd@gnu.org ( http://lists.gnu.org/mailman/listinfo/bug-hurd )
-* Where is the main IRC channel for your organization?
+* What is the main IRC channel for your organization?
\#hurd on freenode.net
-* Does your organization have an application template you would like to see
-students use? If so, please provide it now.
+* Does your organization have an application template you would like to see students use? If so, please provide it now. Please note that it is a very good idea to ask students to provide you with their contact information as part of your template. Their contact details will not be shared with you automatically via the GSoC 2010 site.
[[student_application_form]]
-* Who will be your backup organization administrator? Please enter their Google
-Account address. We will email them to confirm, your organization will not
-become active until they respond.
-
-bddebian at gmail
-
-* What criteria did you use to select these individuals as mentors? Please be
-as specific as possible.
+* What criteria did you use to select the individuals who will act as mentors for your organization? Please be as specific as possible:
The most important criterium is that the person is involved in the project for
some time, knowing the ways; so he can actually instruct the student; and if
@@ -149,18 +145,11 @@ ask.
It's also important that the mentors are reliable and helpful, so the students
won't be left on their own with any problems they face.
-* Who will your mentors be? Please enter their Google Account address separated
-by commas. If your organization is accepted we will email each mentor to invite
-them to take part.
-
-antrik at gmx.net, benasselstine at gmail, samuel.thibault at ens-lyon.org,
-glguida at gmail, neal, marcus, ...
-
* What is your plan for dealing with disappearing students?
-The plan is mostly to avoid that happening in the first place. For that, we
-will be particularily careful with the selection of the students: Making sure
-that they have no other obligations during that time; that they are motivated
+The plan is mostly to avoid that happening in the first place. To this end, we
+are particularily careful with selection of students: Making sure
+that they have no other major obligations during that time; that they are motivated
enough; that they actually have the necessary skills to complete the task; that
they fit in our community.
@@ -168,43 +157,55 @@ Also, we will make sure that we are constantly in contact with the students --
asking about progress, discussing technical issues, etc. -- so we can act in
time if things go wrong.
-If a student disappears in spite of that, there is little we can do. Of course
+If a student disappears in spite of all this, there is little we can do. Of course
we will try to contact him and find out what the problem is; whether the
-project can perhaps be scaled down, or at least wrapped up to bring it in a
-state where it is useful even if not finished.
-
-We will also try to limit damage by insisting that students regularily check in
-their work, so that we get partial results at least if someone disappears.
+project can perhaps be scaled down, or otherwise salvaged, so that the effort
+already invested in the student and the project is not wasted. We also try to
+make sure that all important design discussions are archieved, and that all
+code produced is suitable for upstream inclusion from the beginning -- to allow
+others to pick up the project if necessary, without having to start from zero.
* What is your plan for dealing with disappearing mentors?
As our mentors all have been with the project for some time, the risk of them
disappearing is not too big. If one of them disappears nevertheless, it's not a
-problem for us: We have enough mentors, and someone else will take over.
+problem for us: we have enough mentors, and someone else will take over.
We will encourage the students to keep discussions public as much as possible,
keeping private conversations with the mentors to a minimum, so the transition
should go smoothly.
-* What steps will you take to encourage students to interact with your
-project's community before, during and after the program?
+* What steps will you take to encourage students to interact with your project's community before, during and after the program?
-As part of the application process, we will ask students to answer very
-specific questions about our organisation and the project they chose, which
-they won't be able to answer without contacting us and discussing details
-already during the application phase. This way we make sure we only get
-studends able and willing to communicate with us.
+We try to make it very clear that we expect the students to get into regular
+contact with us early during the student selection process already, and won't
+consider their applications otherwise. This way we know that the students are
+able and willing to communicate with us in the first place.
-During the program, we will be asking the students actively about the work they
-do, problems they face, decisions they take etc.
+After selection, the regular contact is kept up: we require the
+students to participate in IRC meetings up to twice a week, where we ask the students
+actively about the work they do, problems they face, decisions they take, etc.
+Furthermore, we ask them to be available on IRC while working on their
+projects, so we can communicate easily.
-After the program we will continue discussing the projects, and ask the
-students to take part in these discussions.
+We also require the students to join our main development mailing list, so any
+design questions, etc. can be discussed there. We encourage them to take
+part in other conversations, not directly related to their projects, as well.
-* What will you do to ensure that your accepted students stick with the project
-after GSoC concludes?
+After the program we continue the regular meetings, discussing the further
+development of their original projects; as well as new projects, after the
+original ones are done.
-We will try to invite all participating students to a conference afterwards,
-where we will discuss the projects, as well as other Hurd-related topics. We
-hope this will motivate them to follow up on the work they have done during the
+* What will you do to ensure that your accepted students stick with the project after GSoC concludes?
+
+In addition to keeping up the regular IRC meetings,
+we try to invite all participating students to meet us at conferences afterwards,
+where we discuss the projects, as well as other Hurd-related topics. This should
+keep them motivated to follow up on the work they have done during the
program, and generally help keeping them involved.
+
+* Is there anything else you would like to tell the Google Summer of Code program administration team? :
+
+* Backup Admin (Link ID):
+
+tschwinge
diff --git a/community/gsoc/project_ideas.mdwn b/community/gsoc/project_ideas.mdwn
index c24b93be..398f1426 100644
--- a/community/gsoc/project_ideas.mdwn
+++ b/community/gsoc/project_ideas.mdwn
@@ -1,1001 +1,120 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2009, 2010, 2011 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
-
-This list offers a wide range of tasks: From rather straightforward to pretty
-involved ones; from low-level kernel hacking (drivers, VM) to high-level
-translators; from fixing bugs, implementing new functionality based on existing
-interfaces, to creating totally new mechanisms.
-
-If you have questions regarding the projects, or if there is more than one that
-you are interested in and you are unsure which to choose, don't hesitate to
-[[contact_us|communication]].
-
-Most project descriptions mention a possible exercise related to the respective
-task. Doing this exercise is part of the application process -- the purpose is
-to get more familiar with the stuff you will need to complete the project and
-with the Hurd community. Contact us if you encounter any difficulties -- we
-will assist you with as well as we can :-)
-
-Please report on the progress you make with the exercise. This allows us to get
-a better picture of how well you can cope with the task; as well as how well
-you manage the necessary communication with us :-)
-
-The exercise is part of the application process, but it's perfectly OK if you
-do it only after handing in the first version of your application. (The
-experience you get with the exercise should help you to further improve your
-application afterwards...) In general, don't hesitate too long -- the sooner
-you submit your first proposal, the sooner we can give feedback!
-
-Take a look at our [[application_template|student_application_form]] to get an
-idea what your application should contain.
-
-
-## Bindings to Other Programming Languages
-
-The main idea of the Hurd design is giving users the ability to easily
-modify/extend the system's functionality ([[extensible_system|extensibility]]).
-This is done by creating [[filesystem_translators|hurd/translator]] and other
-kinds of Hurd servers.
-
-However, in practice this is not as easy as it should, because creating
-translators and other servers is quite involved -- the interfaces for doing
-that are not exactly simple, and available only for C programs. Being able to
-easily create simple translators in RAD languages is highly desirable, to
-really be able to reap the advantages of the Hurd architecture.
-
-Originally Lisp was meant to be the second system language besides C in the GNU
-system; but that doesn't mean we are bound to Lisp. Bindings for any popular
-high-level language, that helps quickly creating simple programs, are highly
-welcome.
-
-Several approaches are possible when creating such bindings. One way is simply
-to provide wrappers to all the available C libraries ([[hurd/libtrivfs]], [[hurd/libnetfs]]
-etc.). While this is easy (it requires relatively little consideration), it may
-not be the optimal solution. It is preferable to hook in at a lower level, thus
-being able te create interfaces that are specially adapted to make good use of
-the features available in the respective language.
-
-These more specialised bindings could hook in at some of the lower level
-library interfaces ([[hurd/libports]], [[hurd/glibc]], etc.); use the
-[[microkernel/mach/MIG]]-provided [[microkernel/mach/RPC]] stubs directly; or
-even create native stubs directly from the interface definitions.
-
-The task is to create easy to use Hurd bindings for a language of the student's
-choice, and some example servers to prove that it works well in practice. This
-project will require gaining a very good understanding of the various Hurd
-interfaces. Skills in designing nice programming interfaces are a must.
-
-There has already been some [earlier work on Python
-bindings](http://www.sigill.org/files/pytrivfs-20060724-ro-test1.tar.bz2), that
-perhaps can be re-used. Also some work on [Perl
-bindings](http://www.nongnu.org/hurdextras/#pith) is availabled.
-
-### Lisp
-
-Most Lisp implementations provide a Foreign Function Interface (FFI) that
-enables the Lisp code to call functions written in another language.
-Specifically, most implementations provide an FFI to the C ABI (hence giving
-access to C, Fortran and possibly C++).
-
-Common Lisp has even a portability layer for such FFI,
-[CFFI](http://common-lisp.net/project/cffi/), so that you can write bindings
-purely in Lisp and use the same binding code on any implementation supported by
-CFFI.
-
-Many Scheme implementation also provide an FFI. [Scheme48](http://www.s48.org/)
-is even the implementation used to run scsh, a Scheme shell designed to provide
-instant access to POSIX functions.
-[Guile](http://www.gnu.org/software/guile/guile.html) is the GNU project's
-Scheme implementation, meant to be embeddable and provide access to C. At least
-[Gambit](http://dynamo.iro.umontreal.ca/~gambit/),
-[Chicken](http://www.call-with-current-continuation.org/),
-[Bigloo](http://www-sop.inria.fr/mimosa/fp/Bigloo/) and
-[PLT](http://www.plt-scheme.org/) are known to provide an FFI too.
-
-With respect to the packaging and dependencies, the good news is that Debian
-comes handy: 5 Common Lisp implementations are packaged, one of which has
-already been ported to Hurd (ECL), and CFFI is also packaged. As far as Scheme
-is concerned, 14 [R5RS](http://www.schemers.org/Documents/Standards/R5RS/)
-implementations are provided and 1 [R6RS](http://www.r6rs.org/).
-
-Possible mentors: Pierre THIERRY (nowhere_man) for Common Lisp or Scheme, and perhaps Python
-
-Exercise: Write some simple program(s) using Hurd-specific interfaces in the
-language you intend to work on. For a start, you could try printing the system
-uptime. A more advanced task is writing a simple variant of the hello
-translator (you can use the existing C imlementation as reference),
-implementing only open() and read() calls. Don't only write an implementations
-using the existing C libraries (libps, libtrivfs), but also try to work with
-the MiG-generated stubs directly. If you are ambitious, you could even try to
-write your own stubs...
-
-Status: A student is working on Lisp bindings for GSoC 2008.
-
-
-## Virtualization Using Hurd Mechanisms
-
-The main idea behind the Hurd design is to allow users to replace almost any
-system functionality ([[extensible_system|extensibility]]). Any user can easily
-create a subenvironment using some custom [[servers|hurd/translator]] instead
-of the default system servers. This can be seen as an
-[[advanced_lightweight_virtualization|hurd/virtualization]] mechanism, which
-allows implementing all kinds of standard and nonstandard virtualization
-scenarios.
-
-However, though the basic mechanisms are there, currently it's not easy to make
-use of these possibilities, because we lack tools to automatically launch the
-desired constellations.
-
-The goal is to create a set of powerful tools for managing at least one
-desirable virtualization scenario. One possible starting point could be the
-[[hurd/subhurd]]/[[hurd/neighborhurd]] mechanism, which allows a second almost totally
-independant instance of the Hurd in parallel to the main one. The current
-implementation has serious limitations though. A subhurd can only be started by
-root. There are no communication channels between the subhurd and the main one.
-There is no mechanism for safe sharing of hardware devices. Fixing this issues
-could turn subhurds into a very powerful solution for lightweight
-virtualization using so-called logical partitions. (Similar to Linux-vserver,
-OpenVZ etc.)
-
-While subhurd allow creating a complete second system instance, with an own set
-of Hurd servers and UNIX daemons and all, there are also situations where it is
-desirable to have a smaller subenvironment, living withing the main system and
-using most of its facilities -- similar to a chroot environment. A simple way
-to create such a subenvironment with a single command would be very helpful.
-
-It might be possible to implement (perhaps as a prototype) a wrapper using
-existing tools (chroot and [[hurd/translator/unionfs]]); or it might require more specific tools,
-like some kind of unionfs-like filesytem proxy that mirrors other parts of the
-filesystem, but allows overriding individual locations, in conjuction with
-either chroot or some similar mechanism to create a subenvironment with a
-different root filesystem.
-
-It's also desirable to have a mechanism allowing a user to set up such a custom
-environment in a way that it will automatically get launched on login --
-practically allowing the user to run a customized operating system in his own
-account.
-
-Yet another interesting scenario would be a subenvironment -- using some kind
-of special filesystem proxy again -- in which the user serves as root, being
-able to create local sub-users and/or sub-groups.
-
-This would allow the user to run "dangerous" applications (webbrowser, chat
-client etc.) in a confined fashion, allowing it access to only a subset of the
-user's files and other resources. (This could be done either using a lot of
-groups for individual resources, and lots of users for individual applications;
-adding a user to a group would give the corresponding application access to the
-corresponding resource -- an advanced [[ACL]] mechanism. Or leave out the groups,
-assigning the resources to users instead, and use the Hurd's ability for a
-process to have multiple user IDs, to equip individual applications with sets
-of user IDs giving them access to the necessary resources -- basically a
-[[capability]] mechanism.)
-
-The student will have to pick (at least) one of the described scenarios -- or
-come up with some other one in a similar spirit -- and implement all the tools
-(scripts, translators) necessary to make it available to users in an
-easy-to-use fashion. While the Hurd by default already offers the necessary
-mechanisms for that, these are not perfect and could be further refined for
-even better virtualization capabilities. Should need or desire for specific
-improvements in that regard come up in the course of this project, implementing
-these improvements can be considered part of the task.
-
-Completing this project will require gaining a very good understanding of the
-Hurd architecture and spirit. Previous experience with other virtualization
-solutions would be very helpful.
-
-Possible mentors: Olaf Buddenhagen (antrik)
-
-Exercise: Make some modification to the "boot" programm used to start subhurds.
-(More specific suggestions welcome... :-) )
-
-Status: A student is working on network virtualization (and some related bits)
-for GSoC 2008.
-
-
-## Namspace-based Translator Selection
-
-The main idea behind the Hurd is to make (almost) all system functionality
-user-modifiable ([[extensible_system|extensibility]]). This includes a
-user-modifiable filesystem: the whole filesystem is implemented decentrally, by
-a set of filesystem servers forming the directory tree together, a
-[[hurd/virtual_file_system]]. These filesystem servers are called
-[[translators|hurd/translator]], and are the most visible feature of the Hurd.
-
-The reason they are called translators is because when you set a translator on
-a filesystem node, the underlying node(s) are hidden by the translator, but the
-translator itself can access them, and present their contents in a different
-format -- translate them. A simple example is a
-[[gunzip_translator|hurd/translator/storeio]], which can be set on a gzipped
-file, and presents a virtual file with the uncompressed contents. Or the other
-way around. Or a translator that presents an
-[[XML_file_as_a_directory_tree|hurd/translator/xmlfs]]. Or an mbox as a set of
-individual files for each mail ([[hurd/translator/mboxfs]]); or ever further
-breaking it down into headers, body, attachements...
-
-This gets even more powerful when translators are used as building blocks for
-larger applications: A mail reader for example doesn't need backends for
-understanding various mailbox formats anymore. All formats can be parsed by
-special translators, and the mail reader gets the data as a uniform, directly
-usable filesystem structure. Translators can also be stacked: If you have a
-compressed mailbox for example, first apply a gunzip translator, and then an
-mbox translator on top of that.
-
-There are a few problems with the way translators are set, though. For one,
-once a translator is set on a node, you always see the translated content. If
-you need the untranslated contents again, to do a backup for example, you first
-need to remove the translator again. Also, having to set a translator
-explicitely before accessing the contents is pretty cumbersome, making this
-feature almost useless.
-
-A possible solution is implementing a mechanism for selecting translators
-through special filename attributes. For example you could use
-`index.html.gz,,+` and `index.html.gz,,-` to choose between translated and
-untranslated versions of a file. Or you could use `index.html.gz,,u` to get
-the contents of the file with a gunzip translator applied automatically. You
-could also use attributes on whole directory trees: `.,,0/` would give you a
-directory tree corresponding to the current directory, but with any translators
-disabled, for doing a backup. And `site,,u/*.html.gz` would present a whole
-directory tree of compressed HTML files as uncompressed files.
-
-One benefit of the Hurd's flexibility is that it should be possible to
-implement such a mechanism without touching the existing Hurd components:
-Rather, just implement a special proxy, that mirrors the normal filesystem, but
-is able to interpret the special extensions and present transformed files in
-place of the original ones.
-
-In the long run it's probably desirable to have the mechanism implemented in
-the standard name lookup mechanism, so it will be available globally, and avoid
-the overhead of a proxy; but for the beginnig the proxy solution is much more
-flexible.
-
-The goal of this project is implementing a prototype proxy; perhaps also a
-first version of the global variant as proof of concept, if time permits. It
-requires good understanding of the name lookup mechanism, and translator
-programming; but the implementation should not be too hard. Perhaps the hardest
-part is finding a convenient, flexible, elegant, hurdish method for mapping the
-special extensions to actual translators...
-
-Possible mentors: Olaf Buddenhagen (antrik)
-
-Exercise: Try to make some modification to the existing unionfs and/or firmlink
-translators. (More specific suggestions welcome... :-) )
-
-
-## Fix File Locking
-
-Over the years, UNIX has aquired a host of different file locking mechanisms.
-Some of them work on the Hurd, while others are buggy or only partially
-implemented. This breaks many applications.
-
-The goal is to make all file locking mechanisms work properly. This requires
-finding all existing shortcomings (through systematic testing and/or checking
-for known issues in the bug tracker and mailing list archives), and fixing
-them.
-
-This task will require digging into parts of the code to understand how file
-locking works on the Hurd. Only general programming skills are required.
-
-Possible mentors: Samuel Thibault (youpi)
-
-Exercise: Find one of the existing issues, either by looking at the task/bug
-trackers on savannah, or by trying things out yourself; and take a go at it.
-Probably you wont' be able to fix the problem in a limited amount of time, but
-you should be able to do a detailed analysis of the issue at least.
-
-
-## `procfs`
-
-Although there is no standard (POSIX or other) for the layout of the `/proc`
-pseudo-filesystem, it turned out a very useful facility in GNU/Linux and other
-systems, and many tools concerned with process management use it. (`ps`, `top`,
-`htop`, `gtop`, `killall`, `pkill`, ...)
-
-Instead of porting all these tools to use [[hurd/libps]] (Hurd's official method for
-accessing process information), they could be made to run out of the box, by
-implementing a Linux-compatible `/proc` filesystem for the Hurd.
-
-The goal is to implement all `/proc` functionality needed for the various process
-management tools to work. (On Linux, the `/proc` filesystem is used also for
-debugging purposes; but this is highly system-specific anyways, so there is
-probably no point in trying to duplicate this functionality as well...)
-
-The [[existing_partially_working_procfs_implementation|hurd/translator/procfs]]
-can serve as a starting point, but needs to be largely rewritten. (It should
-use [[hurd/libnetfs]] rather than [[hurd/libtrivfs]]; the data format needs to
-change to be more Linux-compatible; and it needs adaptation to newer system
-interfaces.)
-
-This project requires learning [[hurd/translator]] programming, and
-understanding some of the internals of process management in the Hurd. It
-should not be too hard coding-wise; and the task is very nicely defined by the
-exising Linux `/proc` interface -- no design considerations necessary.
-
-**Note**: We already have several applications for this task.
-
-Possible mentors: Olaf Buddenhagen (antrik)
-
-Exercise: Add or fix one piece in the existing procfs translator.
-
-Status: A student is working on procfs for GSoC 2008.
-
-
-## New Driver Glue Code
-
-Although a driver framework in userspace would be desirable, presently the Hurd
-uses kernel drivers in the microkernel,
-[[GNU_Mach|microkernel/mach/gnumach]]. (And changing this would be far beyond a
-GSoC project...)
-
-The problem is that the drivers in GNU Mach are presently old Linux drivers
-(mostly from 2.0.x) accessed through a glue code layer. This is not an ideal
-solution, but works quite OK, except that the drivers are very old. The goal of
-this project is to redo the glue code, so we can use drivers from current Linux
-versions, or from one of the free BSD variants.
-
-Using [ddekit](http://demo.tudos.org/dsweeper_tutorial.html) instead of our
-own glue code can be explored as a possible alternative approach.
-
-This is a doable, but pretty involved project. Experience with driver
-programming under Linux (or BSD) is a must. (No Hurd-specific knowledge is
-required, though.)
-
-This is [[GNU_Savannah_task 5488]].
-
-Possible mentors: Samuel Thibault (youpi)
-
-Exercise: Try porting one driver from Linux 2.6 to run in the old framework.
-The port needn't be elegant or complete; but it would be nice if you could get
-it to work at least partially...
-
-
-## Server Overriding Mechanism
-
-The main idea of the Hurd is that every user can influence almost all system
-functionality ([[extensible_system|extensibility]]), by running private Hurd
-servers that replace or proxy the global default implementations.
-
-However, running such a cumstomized subenvironment presently is not easy,
-because there is no standard mechanism to easily replace an individual standard
-server, keeping everything else. (Presently there is only the [[hurd/subhurd]]
-method, which creates a completely new system instance with a completely
-independent set of servers.)
-
-The goal of this project is to provide a simple method for overriding
-individual standard servers, using environment variables, or a special
-subshell, or something like that.
-
-Various approaches for such a mechanism has been discussed before.
-Probably the easiest (1) would be to modify the Hurd-specific parts of [[hurd/glibc]],
-which are contacting various standard servers to implement certain system
-calls, so that instead of always looking for the servers in default locations,
-they first check for overrides in environment variables, and use these instead
-if present.
-
-A somewhat more generic solution (2) could use some mechanism for arbitrary
-client-side namespace overrides. The client-side part of the filename lookup
-mechanism would have to check an override table on each lookup, and apply the
-desired replacement whenever a match is found.
-
-Another approach would be server-side overrides. Again there are various
-variants. The actual servers themself could provide a mechanism to redirect to
-other servers on request. (3) Or we could use some more generic server-side
-namespace overrides: Either all filesystem servers could provide a mechanism to
-modify the namespace they export to certain clients (4), or proxies could be
-used that mirror the default namespace but override certain locations. (5)
-
-Variants (4) and (5) are the most powerful. They are intimately related to
-chroots: (4) is like the current chroot implementation works in the Hurd, and
-(5) has been proposed as an alternative. The generic overriding mechanism could
-be implemented on top of chroot, or chroot could be implemented on top of the
-generic overriding mechanism. But this is out of scope for this project...
-
-In practice, probably a mix of the different approaches would prove most useful
-for various servers and use cases. It is strongly recommended that the student
-starts with (1) as the simplest approach, perhaps augmenting it with (3) for
-certain servers that don't work with (1) because of indirect invocation.
-
-This tasks requires some understanding of the Hurd internals, especially a good
-understanding of the file name lookup mechanism. It's probably not too heavy on
-the coding side.
-
-This is [[GNU_Savannah_task 6612]]. Also there are quite a bit of emails
-discussing this topic, from a last year's GSoC application -- see
-<http://lists.gnu.org/archive/html/bug-hurd/2007-03/msg00050.html>,
-<http://lists.gnu.org/archive/html/bug-hurd/2007-03/msg00114.html>,
-<http://lists.gnu.org/archive/html/bug-hurd/2007-06/msg00082.html>,
-<http://lists.gnu.org/archive/html/bug-hurd/2008-03/msg00039.html>.
-
-Possible mentors: Olaf Buddenhagen (antrik)
-
-Exercise: Come up with a glibc patch that allows overriding one specific
-standard server using method (1).
-
-Status: The student working on network virtualization for GSoC 2008 will
-probably take a look into this too.
-
-
-## `dtrace` Support
-
-One of the main problems of the current Hurd implementation is very poor
-performance. While we have a bunch of ideas what could cause the performance
-problems, these are mostly just guesses. Better understanding what really
-causes bad performance is necessary to improve the situation.
-
-For that, we need tools for performance measurements. While all kinds of more
-or less specific profiling tools could be convieved, the most promising and
-generic approach seems to be a framework for logging certain events in the
-running system (both in the microkernel and in the Hurd servers). This would
-allow checking how much time is spent in certain modules, how often certain
-situations occur, how things interact, etc. It could also prove helpful in
-debugging some issues that are otherwise hard to find because of complex
-interactions.
-
-The most popular framework for that is Sun's dtrace; but there might be others.
-The student has to evaluate the existing options, deciding which makes most
-sense for the Hurd; and implement that one. (Apple's implementation of dtrace
-in their Mach-based kernel might be helpful here...)
-
-This project requires ability to evaluate possible solutions, and experience
-with integrating existing components as well as low-level programming.
-
-Possible mentors: ?
-
-Exercise: In lack of a good exercise directly related to this taks, just pick
-one of the kernel-related or generally low-level tasks from the bug/task
-trackers on savannah, and make a go at it. You might not be able to finish the
-task in a limited amount of time, but you should at least be able to make a
-detailed analysis of the issue.
-
-Status: A student is working on dtrace (or perhaps SystemTap) for GSoC 2008.
-
-
-## Hurdish TCP/IP Stack
-
-The Hurd presently uses a [[TCP/IP_stack|hurd/translator/pfinet]] based on code from an old Linux version.
-This works, but lacks some rather important features (like PPP/PPPoE), and the
-design is not hurdish at all.
-
-A true hurdish network stack will use a set of stack of [[hurd/translator]] processes,
-each implementing a different protocol layer. This way not only the
-implementation gets more modular, but also the network stack can be used way
-more flexibly. Rather than just having the standard socket interface, plus some
-lower-level hooks for special needs, there are explicit (perhaps
-filesystem-based) interfaces at all the individual levels; special application
-can just directly access the desired layer. All kinds of packet filtering,
-routing, tunneling etc. can be easily achieved by stacking compononts in the
-desired constellation.
-
-While the general architecture is pretty much given by the various network
-layers, it's up to the student to design and implement the various interfaces
-at each layer. This task requires understanding the Hurd philosophy and
-translator programming, as well as good knowledge of TCP/IP.
-
-This is [[GNU_Savannah_task 5469]].
-
-Possible mentors: ?
-
-Exercise: Make some modification to the existing pfinet implementation. (More
-specific suggestions welcome... :-) )
-
-
-## Improved NFS Implementation
-
-The Hurd has both NFS server and client implementations, which work, but not
-very well: File locking doesn't work properly (at least in conjuction with a
-GNU/Linux server), and performance is extremely poor. Part of the problems
-could be owed to the fact that only NFSv2 is supported so far.
-
-This project encompasses implementing NFSv3 support, fixing bugs and
-performance problems -- the goal is to have good NFS support. The work done in
-a previous unfinished GSoC project can serve as a starting point.
-
-Both client and server parts need work, though the client is probably much more
-important for now, and shall be the major focus of this project.
-
-This task, [[GNU_Savannah_task 5497]], has no special prerequisites besides general programming skills, and
-an interest in file systems and network protocols.
-
-Possible mentors: ?
-
-Exercise: Make a go at one of the known issues in the NFS client. You might not
-be able to finish this in the limited amount of time, but you should at least
-be able to make a detailed analysis of the issue.
-
-
-## Fix `libdiskfs` Locking Issues
-
-Nowadays the most often encountered cause of Hurd crashes seems to be lockups
-in the [[hurd/translator/ext2fs]] server. One of these could be traced
-recently, and turned out to be a lock inside [[hurd/libdiskfs]] that was taken
-and not released in some cases. There is reason to believe that there are more
-faulty paths causing these lockups.
-
-The task is systematically checking the [[hurd/libdiskfs]] code for this kind of locking
-issues. To achieve this, some kind of test harness has to be implemented: For
-exmple instrumenting the code to check locking correctness constantly at
-runtime. Or implementing a unit testing framework that explicitely checks
-locking in various code paths. (The latter could serve as a template for
-implementing unit checks in other parts of the Hurd codebase...)
-
-This task requires experience with debugging locking issues in multithreaded
-applications.
-
-Possible mentors: ?
-
-Exercise: Hack libdiskfs to keep count of the number of locks currently held.
-
-
-## Convert Hurd Libraries and Servers to pthreads
-
-The Hurd was originally created at a time when the [pthreads
-standard](http://www.opengroup.org/onlinepubs/009695399/basedefs/pthread.h.html)
-didn't exist yet. Thus all Hurd servers and libraries are using the old
-[[cthreads|hurd/libcthreads]] package that came with [[microkernel/Mach]],
-which is not compatible with [[pthreads|hurd/libpthread]].
-
-Not only does that mean that people hacking on Hurd internals have to deal with
-a non-standard thread package, which nobody is familiar with. Although a
-pthreads implementation for the Hurd was created in the meantime, it's not
-possible to use both cthreads and pthreads in the same program. Consequently,
-pthreads can't presently be used in any Hurd servers -- including translators.
-
-Some work already has been done once on converting the Hurd servers and
-libraries to use pthreads, but that work hasn't been finished. It is available
-as [[GNU_Savannah_task 5487]] and can of course be used to base the new work
-upon.
-
-The goal of this project is to have all the Hurd code use pthreads. Should any
-limitations in the existing pthreads implementation turn up that hinder this
-transition, they will have to be fixed as well.
-
-One possible option is creating a wrapper that implements the cthreads
-interfaces on top of pthreads, to ease the transition -- but it might very well
-turn out that it's easier to just change all the existing code to use pthreads
-directly. This is up to the student. Such a wrapper has been proposed as
-[[GNU_Savannah_task 7895]] and its implementation would be a useful
-starting-point.
-
-This project requires relatively little Hurd-specific knowledge. Experience
-with multithreaded programming in general and pthreads in particular is
-required, though.
-
-Possible mentors: Samuel Thibault (youpi)
-
-Exercise: Take some small piece of code using ctreads and convert it to
-pthreads.
-
-
-## Sound Support
-
-The Hurd presently has no sound support. Fixing this, [[GNU_Savannah_task
-5485]], requires two steps: the first is to port some other kernel's drivers to
-[[GNU_Mach|microkernel/mach/gnumach]] so we can get access to actual sound
-hardware. The second is to implement a userspace server ([[hurd/translator]]),
-that implements an interface on top of the kernel device that can be used by
-applications -- probably OSS or maybe ALSA.
-
-Completing this task requires porting at least one driver (e.g. from Linux) for
-a popular piece of sound hardware, and the basic userspace server. For the
-driver part, previous experience with programming kernel drivers is strongly
-advisable. The userspace part requires some knowledge about programming Hurd
-translators, but shouldn't be too hard.
-
-Once the basic support is working, it's up to the student to use the remaining
-time for porting more drivers, or implementing a more sophisticated userspace
-infrastructure. The latter requires good understanding of the Hurd philosophy,
-to come up with an appropriate design.
-
-Another option would be to evaluate whether a driver that is completely running
-in user-space is feasible. <!-- TODO. Elaborate. -->
-
-Possible mentors: ?
-
-Exercise: Take a newer driver for a device in one of the subsystems we already
-implement (disk or network) from a newer Linux version, or some other operating
-system, and try to port it so that it runs in the existing driver framework.
-The port needn't be elegant or complete; but it would be nice if you could get
-it to work at least partially...
-
-
-## Disk I/O Performance Tuning
-
-The most obvious reason for the Hurd feeling slow compared to mainstream
-systems like GNU/Linux, is very slow harddisk access.
-
-The reason for this slowness is lack and/or bad implementation of common
-optimisation techniques, like scheduling reads and writes to minimalize head
-movement; effective block caching; effective reads/writes to partial blocks;
-reading/writing multiple blocks at once; and read-ahead. The
-[[ext2_filesystem_server|hurd/translator/ext2fs]] might also need some
-optimisations at a higher logical level.
-
-The goal of this project is to analyze the current situation, and implement/fix
-various optimisations, to achieve significantly better disk performance. It
-requires understanding the data flow through the various layers involved in
-disk acces on the Hurd ([[filesystem|hurd/virtual_file_system]],
-[[pager|hurd/libpager]], driver), and general experience with
-optimising complex systems. That said, the killing feature we are definitely
-missing is the read-ahead, and even a very simple implementation would bring
-very big performance speedups.
-
-Possible mentors: ?
-
-Exercise: Make some modification in at least one of the components involved in
-disk I/O. (More specific suggestions welcome... :-) )
-
-
-## VM Tuning
-
-Hurd/[[microkernel/Mach]] presently make very bad use of the available physical memory in the
-system. Some of the problems are inherent to the system design (the kernel
-can't distinguish between important application data and discardable disk
-buffers for example), and can't be fixed without fundamental changes. Other
-problems however are an ordinary lack of optimisation, like extremely crude
-heuristics when to start paging. (See <http://lists.gnu.org/archive/html/bug-hurd/2007-08/msg00034.html> for example.)
-Many parameters are based on assumptions from
-a time when typical machines had like 16 MiB of RAM, or simply have been set to
-arbitrary values and never tuned for actual use.
-
-The goal of this project is to bring the virtual memory management in Hurd/Mach
-closer to that of modern mainstream kernels (Linux, FreeBSD), by comparing the
-implementation to other systems, implementing any worthwhile improvements, and
-general optimisation/tuning. It requires very good understanding of the Mach
-VM, and virtual memory in general.
-
-This project is related to [[GNU_Savannah_task 5489]].
-
-Possible mentors: ?
-
-Exercise: Make some modification to the existing VM code. You could try to find
-a piece of code that can be improved with simple code optimization, for
-example.
-
-
-## `mtab`
-
-In traditional monolithic system, the kernel keeps track of all mounts; the
-information is available through `/proc/mounts` (on Linux at least), and in a
-very similar form in `/etc/mtab`.
-
-The Hurd on the other hand has a totally
-[[decentralized_file_system|hurd/virtual_file_system]]. There is no single
-entity involved in all mounts. Rather, only the parent file system to which a
-mountpoint ([[hurd/translator]]) is attached is involved. As a result, there
-is no central place keeping track of mounts.
-
-As a consequence, there is currently no easy way to obtain a listing of all
-mounted file systems. This also means that commands like `df` can only work on
-explicitely specified mountpoints, instead of displaying the usual listing.
-
-One possible solution to this would be for the translator startup mechanism to
-update the `mtab` on any `mount`/`unmount`, like in traditional systems.
-However, there are same problems with this approach. Most notably: what to do
-with passive translators, i.e., translators that are not presently running, but
-set up to be started automatically whenever the node is accessed? Probably
-these should be counted an among the mounted filesystems; but how to handle the
-`mtab` updates for a translator that is not started yet? Generally, being
-centralized and event-based, this is a pretty unelegant, non-hurdish solution.
-
-A more promising approach is to have `mtab` exported by a special translator,
-which gathers the necessary information on demand. This could work by
-traversing the tree of translators, asking each one for mount points attached
-to it. (Theoretically, it could also be done by just traversing *all* nodes,
-checking each one for attached translators. That would be very inefficient,
-though. Thus a special interface is probably required, that allows asking a
-translator to list mount points only.)
-
-There are also some other issues to keep in mind. Traversing arbitrary
-translators set by other users can be quite dangerous -- and it's probably not
-very interesting anyways what private filesystems some other user has mounted.
-But what about the global `/etc/mtab`? Should it list only root-owned
-filesystems? Or should it create different listings depending on what user
-contacts it?...
-
-That leads to a more generic question: which translators should be actually
-listed? There are different kinds of translators: ranging from traditional
-filesystems ([[disks|hurd/libdiskfs]] and other actual
-[[stores|hurd/translator/storeio]]), but also purely virtual filesystems like
-[[hurd/translator/ftpfs]] or [[hurd/translator/unionfs]], and even things that
-have very little to do with a traditional filesystem, like a
-[[gzip_translator|hurd/translator/storeio]],
-[[mbox_translator|hurd/translator/mboxfs]],
-[[xml_translator|hurd/translator/xmlfs]], or various device file translators...
-Listing all of these in `/etc/mtab` would be pretty pointless, so some kind of
-classification mechanism is necessary. By default it probably should list only
-translators that claim to be real filesystems, though alternative views with
-other filtering rules might be desirable.
-
-After taking decisions on the outstanding design questions, the student will
-implement both the actual [[mtab_translator|hurd/translator/mtabfs]], and the
-necessery interface(s) for gathering the data. It requires getting a good
-understanding of the translator mechanism and Hurd interfaces in general.
-
-Possible mentors: Olaf Buddenhagen (antrik)
-
-Exercise: Create a simple translator using libnetfs, that only allows creating
-directories and attaching other translators.
-
-
-## GNU Mach Code Cleanup
-
-Although there are some attempts to move to a more modern microkernel
-alltogether, the current Hurd implementation is based on
-[[GNU_Mach|microkernel/mach/gnumach]], which is only a slightly modified
-variant of the original CMU [[microkernel/Mach]].
-
-Unfortunately, Mach was created about two decades ago, and is in turn based on
-even older BSD code. Parts of the BSD kernel -- file systems, UNIX mechanisms
-like processes and signals, etc. -- were ripped out (to be implemented in
-[[userspace_servers|hurd/translator]] instead); while other mechanisms were
-added to allow implementing stuff in userspace.
-([[Pager_interface|microkernel/mach/external_pager_mechanism]],
-[[microkernel/mach/IPC]], etc.)
-
-Also, Mach being a research project, many things were tried, adding lots of
-optional features not really needed.
-
-The result of all this is that the current code base is in a pretty bad shape.
-It's rather hard to make modifications -- to make better use of modern hardware
-for example, or even to fix bugs. The goal of this project is to improve the
-situation.
-
-The task starts out easy, with fixing compiler warnings. Later it moves on to
-more tricky things: removing dead or unneeded code paths; restructuring code
-for readability and maintainability.
-
-This task requires good knowledge of C, and experience with working on a large
-existing code base. Previous kernel hacking experience is an advantage, but
-not really necessary.
-
-Possible mentors: Samuel Thibault (youpi)
-
-Exercise: Create a few simple patches that fix some of the compiler warnings,
-rework a piece of ugly code etc.
-
-
-## `xmlfs`
-
-Hurd [[translators|hurd/translator]] allow presenting underlying data in a
-different format. This is a very powerful ability: it allows using standard
-tools on all kinds of data, and combining existing components in new ways, once
-you have the necessary translators.
-
-A typical example for such a translator would be xmlfs: a translator that
-presents the contents of an underlying XML file in the form of a directory
-tree, so it can be studied and edited with standard filesystem tools, or using
-a graphical file manager, or to easily extract data from an XML file in a
-script etc.
-
-The exported directory tree should represent the DOM structure of the document,
-or implement XPath, or both, or some combination thereof (perhaps XPath could
-be implemented as a second translator working on top of the DOM one) --
-whatever works well, while sticking to XML standards as much as possible.
-
-Ideally, the translation should be reversible, so that another, complementary
-translator applied on the expanded directory tree would yield the original XML
-file again; and also the other way round, applying the complementary translator
-on top of some directory tree and xmlfs on top of that would yield the original
-directory again. However, with the different semantics of directory trees and
-XML files, it might not be possible to create such a universal mapping. Thus
-it is a desirable goal, but not a strict requirement.
-
-The goal of this project is to create a fully usable XML translator, that
-allows both reading and writing any XML file. Implementing the complementary
-translator also would be nice if time permits, but is not mandatory part of the
-task.
-
-The [[existing_partial_(read-only)_xmlfs_implementation|hurd/translator/xmlfs]]
-can serve as a starting point.
-
-This task requires pretty good designing skills. Good knowledge of XML is also
-necessary. Learning translator programming will obviously be necessary to
-complete the task.
-
-Possible mentors: Olaf Buddenhagen (antrik)
-
-Exercise: Make some modification to the existing xmlfs translator, and write a
-shell script that uses xmlfs to extract some interesting information from an
-.odt document. (More specific suggestions welcome... :-) )
-
-
-## Allow Using `unionfs` Early at Boot
-
-In UNIX systems, traditionally most software is installed in a common directory
-hierachy, where files from various packages live beside each other, grouped by
-function: user-invokable executables in `/bin`, system-wide configuration files
-in `/etc`, architecture specific static files in `/lib`, variable data in
-`/var`, and so on. To allow clean installation, deinstallation, and upgrade of
-software packages, GNU/Linux distributions usually come with a package manager,
-which keeps track of all files upon installation/removal in some kind of
-central database.
-
-An alternative approach is the one implemented by GNU Stow: each package is
-actually installed in a private directory tree. The actual standard directory
-structure is then created by collecting the individual files from all the
-packages, and presenting them in the common `/bin`, `/lib`, etc. locations.
-
-While the normal Stow package (for traditional UNIX systems) uses symlinks to
-the actual files, updated on installation/deinstallation events, the Hurd
-[[hurd/translator]] mechanism allows a much more elegant solution:
-[[hurd/translator/stowfs]] (which is actually a special mode of
-[[hurd/translator/unionfs]]) creates virtual directories on the fly, composed
-of all the files from the individual package directories.
-
-The problem with this approach is that unionfs presently can be launched only
-once the system is booted up, meaning the virtual directories are not available
-at boot time. But the boot process itself already needs access to files from
-various packages. So to make this design actually usable, it is necessary to
-come up with a way to launch unionfs very early at boot time, along with the
-root filesystem.
-
-Completing this task will require gaining a very good understanding of the Hurd
-boot process and other parts of the design. It requires some design skills
-also to come up with a working mechanism.
-
-Possible mentors: ?
-
-Exercise: Try to write a dummy server that is started instead of ext2fs on
-system boot, and starts the actual ext2fs in turn.
-
-
-## Fix `tmpfs`
-
-In some situations it is desirable to have a file system that is not backed by
-actual disk storage, but only by anonymous memory, i.e. lives in the RAM (and
-possibly swap space).
-
-A simplistic way to implement such a memory filesystem is literally creating a
-ramdisk, i.e. simply allocating a big chunck of RAM (called a memory store in
-Hurd terminology), and create a normal filesystem like ext2 on that. However,
-this is not very efficient, and not very convenient either (the filesystem
-needs to be recreated each time the ramdisk is invoked). A nicer solution is
-having a real [[hurd/translator/tmpfs]], which creates all filesystem
-structures directly in RAM, allocating memory on demand.
-
-The Hurd has had such a tmpfs for a long time. However, the existing
-implementation doesn't work anymore -- it got broken by changes in other parts
-of the Hurd design.
-
-There are several issues. The most serious known problem seems to be that for
-technical reasons it receives [[microkernel/mach/RPC]]s from two different
-sources on one [[microkernel/mach/port]], and gets mixed up with them. Fixing
-this is non-trivial, and requires a good understanding of the involved
-mechanisms.
-
-The goal of this project to get a fully working, full featured tmpfs
-implementation. It requires digging into some parts of the Hurd, incuding the
-[[pager_interface|hurd/libpager]] and [[hurd/translator]] programming. This
-task probably doesn't require any design work, only good debugging skills.
-
-Possible mentors: ?
-
-Exercise: Take a go at one of the existing issues in tmpfs. You may not be able
-to finish this in the limited amount of time, but you should at least be able
-to do a detailed analysis of the problem.
-
-
-## Lexical `..` Resolution
-
-For historical reasons, UNIX filesystems have a real (hard) `..` link from each
-directory pointing to its parent. However, this is problematic, because the
-meaning of "parent" really depends on context. If you have a symlink for
-example, you can reach a certain node in the filesystem by a different path. If
-you go to `..` from there, UNIX will traditionally take you to the hard-coded
-parent node -- but this is usually not what you want. Usually you want to go
-back to the logical parent from which you came. That is called "lexical"
-resolution.
-
-Some application already use lexical resolution internally for that reason. It
-is generally agreed that many problems could be avoided if the standard
-filesystem lookup calls used lexical resolution as well. The compatibility
-problems probably would be negligable.
-
-The goal of this project is to modify the filename lookup mechanism in the Hurd
-to use lexical resolution, and to check that the system is still fully
-functional afterwards. This task requires understanding the filename resolution
-mechanism. It's probably a relatively easy task.
-
-See also [[GNU_Savannah_bug 17133]].
-
-Possible mentors: ?
-
-Exercise: Make some modification to the name lookup mechanism. (More specific
-suggestions welcome... :-) )
-
-
-## Secure `chroot` implementation
-
-As the Hurd attempts to be (almost) fully UNIX-compatible, it also implements a
-`chroot()` system call. However, the current implementation is not really
-good, as it allows easily escaping the `chroot`, for example by use of
-[[passive_translators|hurd/translator]].
-
-Many solutions have been suggested for this problem -- ranging from simple
-workaround changing the behaviour of passive translators in a `chroot`;
-changing the context in which passive translators are exectuted; changing the
-interpretation of filenames in a chroot; to reworking the whole passive
-translator mechanism. Some involving a completely different approch to
-`chroot` implementation, using a proxy instead of a special system call in the
-filesystem servers.
-
-The task is to pick and implement one approach for fixing chroot.
-
-This task is pretty heavy: it requires a very good understanding of file name
-lookup and the translator mechanism, as well as of security concerns in general
--- the student must prove that he really understands security implications of
-the UNIX namespace approach, and how they are affected by the introduction of
-new mechanisms. (Translators.) More important than the acualy code is the
-documentation of what he did: he must be able to defend why he chose a certain
-approach, and explain why he believes this approach really secure.
-
-Possible mentors: ?
-
-Exercise: Make some modification to the chroot mechanism. (More specific
-suggestions welcome :-) )
-
-
-## Hurdish Package Manager for the GNU System
-
-Most GNU/Linux systems use pretty sophisticated package managers, to ease the
-management of installed software. These keep track of all installed files, and
-various kinds of other necessary information, in special databases. On package
-installation, deinstallation, and upgrade, scripts are used that make all kinds
-of modifications to other parts of the system, making sure the packages get
-properly integrated.
-
-This approach creates various problems. For one, *all* management has to be
-done with the distribution package management tools, or otherwise they would
-loose track of the system state. This is reinforced by the fact that the state
-information is stored in special databases, that only the special package
-management tools can work with.
-
-Also, as changes to various parts of the system are made on certain events
-(installation/deinstallation/update), managing the various possible state
-transitions becomes very complex and bug-prone.
-
-For the official (Hurd-based) GNU system, a different approach is intended:
-making use of Hurd [[translators|hurd/translator]] -- more specifically their
-ability to present existing data in a different form -- the whole system state
-will be created on the fly, directly from the information provided by the
-individual packages. The visible system state is always a reflection of the
-sum of packages installed at a certain moment; it doesn't matter how this state
-came about. There are no global databases of any kind. (Some things might
-require caching for better performance, but this must happen transparently.)
-
-The core of this approach is formed by [[hurd/translator/stowfs]], which
-creates a traditional unix directory structure from all the files in the
-individual package directories. But this only handles the lowest level of
-package management. Additional mechanisms are necessary to handle stuff like
-dependencies on other packages.
-
-The goal of this task is to create these mechanisms.
-
-Possible mentors: Ben Asselstine (bing)
-
-Exercise: Write a translator that observes a directory tree using
-dir_notify_changes(), and presents a file with a log of changes.
-
-
-## Port the Debian Installer to the Hurd
-
-The primary means of distributing the Hurd is through Debian GNU/Hurd.
-However, the installation CDs presently use an ancient, non-native installer.
-The situation could be much improved by making sure that the newer *Debian
-Installer* works on the Hurd.
-
-Some preliminary work has been done, see
-<http://wiki.debian.org/DebianInstaller/Hurd>.
-
-The goal is to have the Debian Installer fully working on the Hurd. It
-requires relatively little Hurd-specific knowledge.
-
-Possible mentors: Samuel Thibault (youpi)
-
-Exercise: Try to get one piece of the installer running on Hurd.
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+We offer a wide range of possible projects to choose from. If you have an idea
+not listed here, we'd love to hear about it!
+
+In either case, we encourage you to contact us (on [[IRC]] and/or our developer
+[[mailing lists]]), so we can discuss your idea, or help you pick a suitable
+task -- we will gladly explain the tasks in more detail, if the descriptions
+are not clear enough.
+
+In fact, we suggest you discuss your choice with us even if you have no trouble
+finding a task that suits you: as explained in the introduction section of the
+[[student_application_form]], we ask all students to get into regular
+communication with us for the application to be considered complete. Talking
+about your project choice is a good start :-)
+
+(We strongly suggest that you generally take a look at the
+[[student_application_form]] right now -- the sooner you know what we expect,
+the better you can cater to it :-) )
+
+Many of the project descriptions suggest some "exercise". The reason is that
+for the application to be complete, we require you to make a change to the Hurd
+code, and send us the resulting patch. (This is also explained in the
+[[student_application_form]].) If possible, the change should make some
+improvement to the code you will be working on during the summer, or to some
+related code.
+
+The "exercise" bit in the project description is trying to give you some ideas
+what kind of change this could be. In most cases it is quite obvious, though:
+Try to find something to improve in the relevant code, by looking at known
+issues in the [Savannah bug tracker](http://savannah.gnu.org/bugs/?group=hurd);
+by running the code and testing stuff; and by looking through the code. If you
+don't find anything, try with some related code -- if you task involves
+translator programming, make some improvement to an existing translator; if it
+involves glibc hacking, make an improvement to glibc; if it involves driver
+hacking, make an improvement to the driver framework; and so on... Makes sense,
+doesn't it? :-)
+
+Sometimes it's hard to come up with a useful improvement to the code in
+question, that isn't too complicated for the purposes of the application. In
+this case, we need to find a good alternative. You could for example make an
+improvement to some Hurd code that is not directly related to your project:
+this way you won't get familiar with working on the code you will actually need
+for the task, but at least you can show that you are able to work with the Hurd
+code in general.
+
+Another possible alternative would be making some change to the code in
+question, that isn't really a useful improvement, while still making sense in
+some way -- this could suffice to prove that you are able to work with the
+code.
+
+Don't despair if you can't come up with anything suitable by yourself. Contact
+us, and we will think of something together :-)
+
+In either case, we strongly suggest that you talk to us about the change you
+want to make up front, to be sure that it is something that will get our
+approval -- especially if the idea is not directly taken from the project
+description.
+
+Also, don't let this whole patch stuff discourage you from applying! As
+explained in the [[student_application_form]], it's not a problem if you do not
+yet have all the necessary knowledge to do this alone -- we don't expect that.
+After all, the purpose of GSoC is to introduce you to free software development
+:-) We only want to see that you are able to obtain the necessary knowledge
+before the end of the application process, with our help -- contact us, and we
+will assist you as well as we can.
+
+See also the list of **[Hurd-related X.org project
+ideas](http://wiki.x.org/wiki/Hurd_Porting)**.
+
+<!-- These X.org tasks are also listed on
+<http://xorg.freedesktop.org/wiki/SummerOfCodeIdeas>, which is the page used by
+X.org for referring to their GSoC projects. Probabaly we should get rid of one
+of these pages (to avoid duplication). -->
+
+<!-- Olaf, wouldn't it make sense to put the following tasks next to each
+other: language_bindings, gnat, gccgo, perl_python. -->
+
+[[!inline pages="community/gsoc/project_ideas/language_bindings" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/virtualization" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/file_locking" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/server_overriding" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/tcp_ip_stack" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/nfs" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/pthreads" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/sound" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/disk_io_performance" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/vm_tuning" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/mtab" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/gnumach_cleanup" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/xmlfs" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/unionfs_boot" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/tmpfs" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/lexical_dot-dot" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/secure_chroot" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/package_manager" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/download_backends" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/libgtop" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/maxpath" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/gnat" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/gccgo" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/hardware_libs" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/cdparanoia" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/perl_python" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/testsuites" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/testing_framework" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/libcap" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/xattr" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/valgrind" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/driver_glue_code" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/dtrace" show=0 feeds=no actions=yes]]
diff --git a/community/gsoc/project_ideas/cdparanoia.mdwn b/community/gsoc/project_ideas/cdparanoia.mdwn
new file mode 100644
index 00000000..a92329fe
--- /dev/null
+++ b/community/gsoc/project_ideas/cdparanoia.mdwn
@@ -0,0 +1,30 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="Implement CD Audio Grabbing"]]
+
+The Hurd presently has only support for CD-ROMs, but not for audio extraction
+("grabbing"). As a result, cdparanoia (and other extraction
+libraries/utilities) are not available; and many other packages depending on
+these can't be built in Debian GNU/Hurd either.
+
+Adding support for audio extraction shouldn't be too hard. It requires
+implementing a number of additional ioctl()s, generating the appropriate ATAPI
+commands.
+
+The goal of this task is fully working cdparanoia in Debian GNU/Hurd. It will
+require digging a bit into Hurd internals and ATAPI commands, but should be
+quite doable without any previous knowledge about either.
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Look at the implementation of the existing ioctl()s, and try to find
+something that could be easily added/improved. If you don't see anything
+obvious, talk to us about a different exercise task.
diff --git a/community/gsoc/project_ideas/debian_installer.mdwn b/community/gsoc/project_ideas/debian_installer.mdwn
new file mode 100644
index 00000000..43682e8b
--- /dev/null
+++ b/community/gsoc/project_ideas/debian_installer.mdwn
@@ -0,0 +1,41 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Port the Debian Installer to the Hurd"]]
+
+The primary means of distributing the Hurd is through Debian GNU/Hurd.
+However, the installation CDs presently use an ancient, non-native installer.
+The situation could be much improved by making sure that the newer *Debian
+Installer* works on the Hurd.
+
+Some preliminary work has been done, see
+<http://wiki.debian.org/DebianInstaller/Hurd>.
+
+The goal is to have the Debian Installer fully working on the Hurd. It
+requires relatively little Hurd-specific knowledge.
+
+A lot of the "non-Linux support" part of the project has already been done thanks to a previous GSoC, so at least no ground reason should bar the project. A lot of the required udebs are already in Debian or are pending upload, so that building an image and booting it does already work. A preliminary list of what remains is
+
+ * Add initrd support to GNU Mach, unless youpi does it before :) This should not be very complicated by re-using the iopl driver code.
+ * hurdify genext2fs to handle 4096 block size by default (see bug #562999) and support translator entries.
+ * Port busybox. This needs to be synchronized with kfreebsd people, who have probably already done some work, but that seemingly still hasn't been merged. In the meanwhile, youpi has a version with most of it disabled so a d-i image can actually be built.
+ * Port keyboard-setup to configure the xkb driver of the Hurd console
+
+As a starting point to get a grasp at how the debian installer is built, students might wish to look at the current Debian installer source and build process on Linux:
+
+ * svn co svn://svn.debian.org/d-i/trunk/installer/
+ * cd installer/build
+ * make build_monolithic
+
+The same can be done on hurd-i386 but a few non-uploaded packages are needed, see http://people.debian.org/~sthibault/hurd-i386/README-d-i
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Fix a couple of Hurd issues in busybox.
diff --git a/community/gsoc/project_ideas/disk_io_performance.mdwn b/community/gsoc/project_ideas/disk_io_performance.mdwn
new file mode 100644
index 00000000..ae634709
--- /dev/null
+++ b/community/gsoc/project_ideas/disk_io_performance.mdwn
@@ -0,0 +1,50 @@
+[[!meta copyright="Copyright © 2008, 2009, 2010, 2011 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]]."]]"""]]
+
+[[!meta title="Disk I/O Performance Tuning"]]
+
+[[!tag open_issue_hurd]]
+
+The most obvious reason for the Hurd feeling slow compared to mainstream
+systems like GNU/Linux, is a low I/O system performance, in particular very
+slow hard disk access.
+
+The reason for this slowness is lack and/or bad implementation of common
+optimization techniques, like scheduling reads and writes to minimize head
+movement; effective block caching; effective reads/writes to partial blocks;
+[[reading/writing multiple blocks at once|open_issues/performance/io_system/clustered_page_faults]]; and
+[[open_issues/performance/io_system/read-ahead]]. The
+[[ext2_filesystem_server|hurd/translator/ext2fs]] might also need some
+optimizations at a higher logical level.
+
+The goal of this project is to analyze the current situation, and implement/fix
+various optimizations, to achieve significantly better disk performance. It
+requires understanding the data flow through the various layers involved in
+disk access on the Hurd ([[filesystem|hurd/virtual_file_system]],
+[[pager|hurd/libpager]], driver), and general experience with
+optimizing complex systems. That said, the killing feature we are definitely
+missing is the [[open_issues/performance/io_system/read-ahead]], and even a very simple implementation would bring
+very big performance speedups.
+
+Here are some real testcases:
+
+ * [[open_issues/performance/io_system/binutils_ld_64ksec]];
+
+ * running the Git testsuite which is mostly I/O bound;
+
+ * use [[TopGit]] on a non-toy repository.
+
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Look through all the code involved in disk I/O, and try something
+easy to improve. It's quite likely though that you will find nothing obvious --
+in this case, please contact us about a different exercise task.
diff --git a/community/gsoc/project_ideas/download_backends.mdwn b/community/gsoc/project_ideas/download_backends.mdwn
new file mode 100644
index 00000000..f794e814
--- /dev/null
+++ b/community/gsoc/project_ideas/download_backends.mdwn
@@ -0,0 +1,47 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="Use Internet Protocol Translators (ftpfs etc.) as Backends for Other Programs"]]
+
+The Hurd design facilitates splitting up large applications into independent,
+generic components, which can be easily combined in different contexts, by
+moving common functionality into separate Hurd servers (translators),
+accessible trough filesystem interfaces and/or specialized RPC interfaces.
+
+Download protocols like FTP, HTTP, BitTorrent etc. are very good candidates for
+this kind of modularization: a program could simply use the download
+functionality by accessing FTP, HTTP etc. translators.
+
+There is already an ftpfs translator in the Hurd tree, as well as an [httpfs
+translator on hurdextras](http://www.nongnu.org/hurdextras/#httpfs); however,
+these are only suitable for very simple use cases: they just provide the actual
+file contents downloaded from the URL, but no additional status information
+that are necessary for interactive use. (Progress indication, error codes, HTTP
+redirects etc.)
+
+A new interface providing all this additional information (either as an
+extension to the existing translators, or as distinct translators) is required
+to make such translators usable as backends for programs like apt-get for
+example.
+
+The goal of this project is to design a suitable interface, implement it for at
+least one download protocol, and adapt apt-get (or some other program) to use
+this as a backend.
+
+This task requires some design skills and some knowledge of internet protocols,
+to create a suitable interface. Translator programming knowledge will have to
+be obtained while implementing it.
+
+It is not an easy task, but it shouldn't pose any really hard problems either.
+
+Possible mentors: Olaf Buddenhagen (antrik)
+
+Exercise: Make some improvement to one of the existing download translators --
+httpfs in particular is known to be buggy.
diff --git a/community/gsoc/project_ideas/driver_glue_code.mdwn b/community/gsoc/project_ideas/driver_glue_code.mdwn
new file mode 100644
index 00000000..8581c7cb
--- /dev/null
+++ b/community/gsoc/project_ideas/driver_glue_code.mdwn
@@ -0,0 +1,73 @@
+[[!meta copyright="Copyright © 2008, 2009, 2010, 2011 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]]."]]"""]]
+
+[[!meta title="New Driver Framework"]]
+
+[[!tag stable_URL]]
+
+The Hurd presently uses hardware drivers
+implemented in the microkernel, [[GNU_Mach|microkernel/mach/gnumach]].
+These drivers are old Linux drivers (mostly from 2.0.x)
+accessed through a glue code layer.
+This is not an ideal solution, but works quite OK,
+except that the drivers are extremely old by now.
+Thus we need a new framework,
+so we can use drivers from current Linux versions instead,
+or perhaps from one of the free BSD variants.
+
+This is [[!GNU_Savannah_task 5488]].
+[[open issues/user-space device drivers]].
+[[open issues/device drivers and io systems]].
+
+The most promising approach for getting newer drivers seems to be [[DDE]]:
+it already does the hard work of providing an environment
+where the foreign drivers can run,
+and offers the additional benefit of being externally maintained.
+DDE also offers the necessary facilities
+for running all drivers in separate userspace processes,
+which is more desirable than drivers running in the microkernel.
+
+[[Zheng Da|zhengda]] has already done considerable work on this.
+The basic framework for using DDE in the Hurd is present,
+and network card drivers are already working very well.
+However, this work isn't fully integrated in the Hurd yet.
+The additional kernel interfaces that were created for this
+are still prototypes, and will need to be reworked.
+Also, there is no build system for automatically compiling
+all Linux network card drivers in one go.
+
+Other types of drivers are missing so far.
+Support for IDE drivers has been partially implemented,
+but isn't fully working yet.
+To fully replace the old in-kernel drivers,
+further infrastructure will be necessary
+to make userspace disk drivers usable for the root filesystem.
+
+Some other subsystems are missing or incomplete in DDE itself,
+and will require additional work that is not specific to the Hurd implementation.
+
+The goal of this task is to fix at least one of the mentioned major shortcomings:
+rework the kernel interfaces;
+provide a streamlined build system for the drivers;
+finish IDE support;
+or implement support for some other subsystem.
+<!-- should probably provide separate task descriptions for each... -->
+
+This is a doable, but pretty involved project.
+Previous experience with driver programming probably is a must.
+To be able to work on the framework,
+the student will also have to get a good understanding of certain aspects of Hurd,
+such as memory management for example.
+
+Possible mentors: Zheng Da, Samuel Thibault (youpi)
+
+Exercise: Get one of the not yet integrated Linux network card drivers to work.
+(Note: This should be straightforward,
+once you have the framework properly built and set up...)
diff --git a/community/gsoc/project_ideas/dtrace.mdwn b/community/gsoc/project_ideas/dtrace.mdwn
new file mode 100644
index 00000000..6261c03e
--- /dev/null
+++ b/community/gsoc/project_ideas/dtrace.mdwn
@@ -0,0 +1,62 @@
+[[!meta copyright="Copyright © 2008, 2009, 2011 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]]."]]"""]]
+
+[[!meta title="Kernel Instrumentation"]]
+
+[[!tag open_issue_gnumach]]
+
+One of the main problems of the current Hurd implementation is very poor
+[[open_issues/performance]]. While we have a bunch of ideas what could cause the performance
+problems, these are mostly just guesses. Better understanding what really
+causes bad performance is necessary to improve the situation.
+
+For that, we need tools for performance measurements. While all kinds of more
+or less specific [[open_issues/profiling]] tools could be conceived, the most promising and
+generic approach seems to be a framework for logging certain events in the
+running system (both in the microkernel and in the Hurd servers). This would
+allow checking how much time is spent in certain modules, how often certain
+situations occur, how things interact, etc. It could also prove helpful in
+debugging some issues that are otherwise hard to find because of complex
+interactions.
+
+The most popular kernel instrumentation framework is Sun's dtrace,
+originally written for Solaris,
+but also adopted by some other systems.
+However, the GPL-incompatible license means it can't be used in Linux,
+and thus Linux developers created their own frameworks instead:
+first [[SystemTap]], and now [[LTTng]].
+
+In 2008, Andrei Barbu did initial work on kernel probes for the Hurd.
+However, not all of his patches got merged,
+because some turned out not to be fully functional.
+Also, he didn't get around to work on userspace probes,
+nor on a nice frontend for writing test scripts employing the probes.
+
+The goal of this project is to make the instrumentation framework
+more usable and complete,
+and to better integrate it in the Hurd.
+For that, the student will have to work
+on some real profiling and/or debugging tasks,
+and fix any shortcomings he encounters in the framework.
+
+This is a pretty involved task.
+Previous experience with low-level programming is a must;
+and it also requires a good grasp on interactions in complex systems.
+
+To work on this project,
+the student will have to get familiar with GNU Mach.
+(The microkernel employed by the Hurd.)
+Some understanding of other aspects of the Hurd will also be required,
+depending on the exact nature of the profiling/debugging performed.
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Use the existing probes to perform some simple measurement.
diff --git a/community/gsoc/project_ideas/file_locking.mdwn b/community/gsoc/project_ideas/file_locking.mdwn
new file mode 100644
index 00000000..0159b091
--- /dev/null
+++ b/community/gsoc/project_ideas/file_locking.mdwn
@@ -0,0 +1,38 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Fix and Complete File Locking Support"]]
+
+Over the years, [[UNIX]] has acquired a host of different file locking mechanisms.
+Some of them work on the Hurd, while others are buggy or only partially
+implemented. This breaks many applications.
+
+The goal is to make all file locking mechanisms work properly. This requires
+finding all existing shortcomings (through systematic testing and/or checking
+for known issues in the bug tracker and mailing list archives), and fixing
+them. The biggest missing feature is record locking, i.e. the lockf variant,
+which needs a complete implementation.
+
+This task will require digging into parts of the code to understand how file
+locking works on the Hurd. Only general programming skills are required.
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Find one of the existing issues, either by looking at the task/bug
+trackers on savannah, or by trying things out yourself; and take a go at it.
+Note though that most of these issues are probably not trivial -- it's quite
+likely that you won't be able to actually fix any of them in the time available
+during the application process. However, you might be able to spot something
+else that could be improved while looking into this.
+
+If after trying for a while you haven't found anything easy enough to improve
+in the locking-related code, talk to us about some alternative exercise task.
+Perhaps you actually find something you could do while looking through the bug
+tracker or trying stuff yourself in search of locking issues :-)
diff --git a/community/gsoc/project_ideas/gccgo.mdwn b/community/gsoc/project_ideas/gccgo.mdwn
new file mode 100644
index 00000000..26f5a91b
--- /dev/null
+++ b/community/gsoc/project_ideas/gccgo.mdwn
@@ -0,0 +1,29 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta title="Porting Google Go (GCC: gccgo)"]]
+
+<!-- See also open_issues/gccgo. -->
+
+The goal of this project is to make the [Google Go programming
+language](http://golang.org/) available on GNU/Hurd in its [[GCC]] *gccgo*
+implementation.
+
+Presumably less work will be needed on the language's frontend itself, but
+rather on the supporting libraries.
+
+Apart from a solid knowledge of the [[POSIX]] API, working knowledge of the
+Google Go programming language is a must. Some Hurd knowledge will have to be
+acquired while working on the project.
+
+Possible mentors: Ian Lance Taylor: gccgo bits, [[Thomas Schwinge
+(tschwinge)|tschwinge]]: Hurd bits.
+
+Exercise: Fix one of the problems preventing *gccgo* from working on the Hurd.
diff --git a/community/gsoc/project_ideas/gnat.mdwn b/community/gsoc/project_ideas/gnat.mdwn
new file mode 100644
index 00000000..f78c1f64
--- /dev/null
+++ b/community/gsoc/project_ideas/gnat.mdwn
@@ -0,0 +1,27 @@
+[[!meta copyright="Copyright © 2009, 2011 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]]."]]"""]]
+
+[[!meta title="Porting GNAT (GCC)"]]
+
+<!-- See also open_issues/gnat. -->
+
+The GNU Ada Translator (GNAT) isn't available for the Hurd so far. There are
+also a number of other Debian packages depending on GNAT, and thus not
+buildable on the Hurd.
+
+The goal of this project is getting GNAT fully working in Debian GNU/Hurd. It
+requires implementing some explicitly system-specific stuff in GNAT, and maybe
+fixing a few other problems. Good knowledge of Ada is a must; some Hurd
+knowledge will have to be acquired while working on the project.
+
+Possible mentors: Samuel Thibault (youpi), [[Thomas Schwinge
+(tschwinge)|tschwinge]].
+
+Exercise: Fix one of the problems preventing GNAT from working on the Hurd.
diff --git a/community/gsoc/project_ideas/gnumach_cleanup.mdwn b/community/gsoc/project_ideas/gnumach_cleanup.mdwn
new file mode 100644
index 00000000..4aef0d1b
--- /dev/null
+++ b/community/gsoc/project_ideas/gnumach_cleanup.mdwn
@@ -0,0 +1,46 @@
+[[!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]]."]]"""]]
+
+[[!meta title="GNU Mach Code Cleanup"]]
+
+Although there are some attempts to move to a more modern microkernel
+altogether, the current Hurd implementation is based on
+[[GNU_Mach|microkernel/mach/gnumach]], which is only a slightly modified
+variant of the original CMU [[microkernel/Mach]].
+
+Unfortunately, Mach was created about two decades ago, and is in turn based on
+even older BSD code. Parts of the BSD kernel -- file systems, [[UNIX]] [[mechanism]]s
+like processes and signals, etc. -- were ripped out (to be implemented in
+[[userspace_servers|hurd/translator]] instead); while other mechanisms were
+added to allow implementing stuff in user space.
+([[Pager_interface|microkernel/mach/external_pager_mechanism]],
+[[microkernel/mach/IPC]], etc.)
+
+Also, Mach being a research project, many things were tried, adding lots of
+optional features not really needed.
+
+The result of all this is that the current code base is in a pretty bad shape.
+It's rather hard to make modifications -- to make better use of modern hardware
+for example, or even to fix bugs. The goal of this project is to improve the
+situation.
+
+There are various things you can do here: Fixing compiler warnings; removing
+dead or unneeded code paths; restructuring code for readability and
+maintainability etc. -- a glance at the source code should quickly give you
+some ideas.
+
+This task requires good knowledge of C, and experience with working on a large
+existing code base. Previous kernel hacking experience is an advantage, but
+not really necessary.
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: You should have no trouble finding something to improve when looking
+at the gnumach code, or even just at compiler warnings.
diff --git a/community/gsoc/project_ideas/hardware_libs.mdwn b/community/gsoc/project_ideas/hardware_libs.mdwn
new file mode 100644
index 00000000..c30505cb
--- /dev/null
+++ b/community/gsoc/project_ideas/hardware_libs.mdwn
@@ -0,0 +1,42 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="Stub Implementations of Hardware Specific Libraries"]]
+
+Many programs use special libraries to access certain hardware devices,
+like libusb, libbluetooth, libraw1394, libiw-dev (though there already is a
+wireless-tools-gnumach package), etc.
+
+The Hurd presently doesn't support these devices. Nevertheless, all of these
+programs could still be built -- and most of them would indeed be useful --
+without actual support of these hardware devices, kdebase for instance. However,
+as the libraries are presently not available for Hurd, the programs can't be
+easily built in Debian GNU/Hurd due to missing dependencies.
+
+This could be avoided by providing dummy libraries, which the programs could
+link against, but which wouldn't actually do any hardware access: instead, they
+would simply return appropriate error codes, reporting that no devices were
+found.
+
+There are two possible approaches for providing such stub libraries: Either
+implement replacement libraries providing the same API as the real ones; or
+implement dummy backends for the Hurd in the proper libraries. Which approach
+to prefer probably depends on the structure of the various libraries.
+
+The goal of this project is to create working dummy libraries/backends for the
+mentioned devices, and get them into Debian GNU/Hurd. It shouldn't require any
+special previous knowledge, though some experience with build systems would be
+helpful. Finishing this task will probably require learning a bit about the
+hardware devices in question, and about Debian packaging.
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Get one of the libraries to compile on Debian GNU/Hurd. It doesn't
+need to report reasonable error codes yet -- just make it build at all for now.
diff --git a/community/gsoc/project_ideas/language_bindings.mdwn b/community/gsoc/project_ideas/language_bindings.mdwn
new file mode 100644
index 00000000..6b36c50d
--- /dev/null
+++ b/community/gsoc/project_ideas/language_bindings.mdwn
@@ -0,0 +1,72 @@
+[[!meta copyright="Copyright © 2008, 2009, 2010, 2011 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]]."]]"""]]
+
+[[!meta title="Bindings to Other Programming Languages"]]
+
+<!-- See also open_issues/gccgo, open_issues/gnat, open_issues/perl, and
+open_issues/python. -->
+
+The main idea of the Hurd design is giving users the ability to easily
+modify/extend the system's functionality ([[extensible_system|extensibility]]).
+This is done by creating [[filesystem_translators|hurd/translator]] and other
+kinds of Hurd servers.
+
+However, in practice this is not as easy as it should, because creating
+translators and other servers is quite involved -- the interfaces for doing
+that are not exactly simple, and available only for C programs. Being able to
+easily create simple translators in RAD languages is highly desirable, to
+really be able to reap the [[advantages]] of the Hurd architecture.
+
+Originally Lisp was meant to be the second system language besides C in the GNU
+system; but that doesn't mean we are bound to Lisp. Bindings for any popular
+high-level language, that helps quickly creating simple programs, are highly
+welcome.
+
+Several approaches are possible when creating such bindings. One way is simply
+to provide wrappers to all the available C libraries ([[hurd/libtrivfs]], [[hurd/libnetfs]]
+etc.). While this is easy (it requires relatively little consideration), it may
+not be the optimal solution. It is preferable to hook in at a lower level, thus
+being able to create interfaces that are specially adapted to make good use of
+the features available in the respective language.
+
+These more specialized bindings could hook in at some of the lower level
+library interfaces ([[hurd/libports]], [[hurd/glibc]], etc.); use the
+[[microkernel/mach/MIG]]-provided [[microkernel/mach/RPC]] stubs directly; or
+even create native stubs directly from the interface definitions. The
+[[lisp_bindings_created_by_Flavio_Cruz|flaviocruz]] in last year's GSoC mostly
+use the latter approach, and can serve as a good example.
+
+There is another possible reason for preferring lower-level bindings:
+Presently, the Hurd server libraries use the cthreads threading library, which
+predates the pthread standard prevalent today. There is a
+[[pthread library for the Hurd|libpthread]]
+as well, but it's not possible to use both cthreads and pthreads in
+the same executable. Thus, until
+[[porting_the_Hurd_libraries_to_pthreads|community/gsoc/project_ideas/pthreads]]
+is finished, implementing bindings for any language that uses pthreads (in the
+runtime environment or the actual programs) is only possible when not using the
+standard Hurd server libraries at all -- i.e. when binding at MIG stub level or
+interface definition level.
+
+The task is to create easy to use Hurd bindings for a language of the student's
+choice, and some example servers to prove that it works well in practice. This
+project will require gaining a very good understanding of the various Hurd
+interfaces. Skills in designing nice programming interfaces are a must.
+
+Anatoly A. Kazantsev has started working on [Python
+bindings](http://savannah.nongnu.org/projects/pyhurd/) last year -- if Python
+is your language of choice, you probably should take his work and complete it.
+
+There was also some previous work on [Perl
+bindings](http://www.nongnu.org/hurdextras/#pith), which might serve as a
+reference if you want to work on Perl.
+
+Possible mentors: Anatoly A. Kazantsev (anatoly) for Python
diff --git a/community/gsoc/project_ideas/lexical_dot-dot.mdwn b/community/gsoc/project_ideas/lexical_dot-dot.mdwn
new file mode 100644
index 00000000..e0dabc01
--- /dev/null
+++ b/community/gsoc/project_ideas/lexical_dot-dot.mdwn
@@ -0,0 +1,40 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Lexical .. Resolution"]]
+
+For historical reasons, [[UNIX]] filesystems have a real (hard) `..` link from each
+directory pointing to its parent. However, this is problematic, because the
+meaning of "parent" really depends on context. If you have a symlink for
+example, you can reach a certain node in the filesystem by a different path. If
+you go to `..` from there, UNIX will traditionally take you to the hard-coded
+parent node -- but this is usually not what you want. Usually you want to go
+back to the logical parent from which you came. That is called "lexical"
+resolution.
+
+Some application already use lexical resolution internally for that reason. It
+is generally agreed that many problems could be avoided if the standard
+filesystem lookup calls used lexical resolution as well. The compatibility
+problems probably would be negligible.
+
+The goal of this project is to modify the filename lookup mechanism in the Hurd
+to use lexical resolution, and to check that the system is still fully
+functional afterwards. This task requires understanding the filename resolution
+mechanism.
+
+See also [[!GNU_Savannah_bug 17133]].
+
+Possible mentors: Carl Fredrik Hammar (cfhammar)
+
+Exercise: This project requires changes to the name lookup mechanism in the
+Hurd-related glibc parts, as well as the Hurd servers. Thus, the exercise task
+should involve hacking glibc or Hurd servers, or even both. Fixing the bug in
+the client-side nfs translator (/hurd/nfs) that makes "rmdir foo/" fail while
+"rmdir foo" works, seems a good candidate.
diff --git a/community/gsoc/project_ideas/libcap.mdwn b/community/gsoc/project_ideas/libcap.mdwn
new file mode 100644
index 00000000..18c49c48
--- /dev/null
+++ b/community/gsoc/project_ideas/libcap.mdwn
@@ -0,0 +1,41 @@
+[[!meta copyright="Copyright © 2009, 2010 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]]."]]"""]]
+
+[[!meta title="Implementing libcap"]]
+
+libcap is a library providing the API to access POSIX capabilities. These allow
+giving various kinds of specific privileges to individual users, without giving
+them full root permissions.
+
+Although the Hurd design should facilitate implementing such features in a quite
+natural fashion, there is no support for POSIX capabilities yet. As a
+consequence, libcap is not available on the Hurd, and thus various packages
+using it can not be easily built in Debian GNU/Hurd.
+
+The first goal of this project is implementing a dummy libcap, which doesn't
+actually do anything useful yet, but returns appropriate status messages, so
+program using the library can be built and run on Debian GNU/Hurd.
+
+Having this, actual support for at least some of the capabilities should be
+implemented, as time permits. This will require some digging into Hurd
+internals.
+
+Some knowledge of POSIX capabilities will need to be obtained, and for the
+latter part also some knowledge about the Hurd architecture. This project is
+probably doable without previous experience with either, though.
+
+David Hedberg applied for this project in 2010,
+and though he didn't go through with it,
+he fleshed out many [[details]].
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Make libcap compile on Debian GNU/Hurd. It doesn't need to actually
+do anything yet -- just make it build at all for now.
diff --git a/community/gsoc/project_ideas/libcap/details.mdwn b/community/gsoc/project_ideas/libcap/details.mdwn
new file mode 100644
index 00000000..85695978
--- /dev/null
+++ b/community/gsoc/project_ideas/libcap/details.mdwn
@@ -0,0 +1,766 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="Details on implementing libcap"]]
+
+
+This is the proposal submitted by David Hedberg for GSoC 2010 (who opted
+to go with another mentoring organization), adapted from an initial
+proposal and several amendments into a single document, but the idea
+is to further adapt it to a more neutral design document over time.
+
+
+# The proposal
+
+### Quick description of POSIX capabilities
+
+The original suggestion can be found [[here|libcap]].
+POSIX capabilities never actually entered the POSIX standard but was
+left as a draft. Linux has nevertheless implemented this draft, and
+there are reasons for doing the same in the Hurd - a more fine grained
+control of rights leading to increased security being one of them.
+
+POSIX capabilities are give on a per-process basis, and basically allows
+splitting up those rights usually granted to root into smaller and more
+specific rights. Examples of capabilities are CAP_CHOWN and CAP_KILL,
+overriding certain restrictions on chown and allowing the process to
+kill processes with different UID's, respectively.
+
+Each process is given three sets with capabilities: the Permitted set
+(P), the Effective set (E) and the Inheritable set (I). The effective
+set contains the capabilities that are currently active. The permitted
+set contains the capabilities that the process has the right to use.
+The inheritable set contains the capabilities that can be inherited
+by children to the process. A process can drop capabilities from its
+permitted set, but not set them. The effective set and the inheritable
+set can be changed freely as long as they stay subsets of the permitted
+set.
+
+Capabilities can also be set on executables. When executed, the resulting
+process is given the capabilities both as defined by the parent process
+and by the capabilities set on the file (formula below), resulting in
+what might be explained as a fine-grained setuid. Implementing this
+requires support for *xattr* or similar.
+
+Some applications that are currently using capabilities are samba, ntp,
+vsftp, pure-ftpd, proftpd, squid, asterisk and dovecot.
+
+
+### A quick description of capabilities in Linux
+
+Each process has a three bit fields representing each of the three
+sets (P, E and I). Each bit field is currently built up of two (32
+bit) integers to be able to hold the 33 currently defined capabilities
+(see linux/capability.h). Each process further has a bounding set which
+bounds the permitted set. Two [[system call]]s handles the setting and getting
+of capabilities; *capset* and *capget*. Some related functionality
+can also be controlled by calling *prctl*: the right to read/drop the
+bounding capabilities (PR_CAPBSET_READ/PR_CAPBSET_DROP) and whether
+or not the process should keep its capabilities when a change is made
+to the threads UID's (PR_SET_KEEPCAPS/PR_GET_KEEPCAPS). User space
+applications are expected(recommended?) to use libcap to take advantage
+of the functionality provided. Some applications also use libcap-ng
+which is "intended to make programming with POSIX capabilities much
+easier than the traditional libcap library". Most applications seem
+to be using the original libcap, however.
+
+
+## Implementing libcap
+
+The exercise for this assignment was to get the libcap used in
+Linux to compile under the Hurd. This was accomplished using the
+latest git version of libcap from (..), corresponding to libcap
+2.19. The changes were simple and amounted to simply removing the
+dependency on some Linux-specific headers and creating stubs for
+capset, capget and prctl described above. This suggests that porting
+this library to the Hurd once the proper functionality is in place
+could be relatively simple. The patch is available
+[here](https://alioth.debian.org/tracker/index.php?func=detail&aid=312442&amp;group_id=30628&atid=410472 "Alioth").
+One could also consider implementing the three missing functions in the
+Hurd (or Hurd glibc) which would allow the usage of the Linux libcap
+without modifications. As the Linux libcap maintainer might or might
+not be interested in making libcap multi platform, this approach might
+be preferable.
+
+
+## Implementing POSIX capabilities in the Hurd
+
+As I am still reading up on how things fit together in the Hurd this is
+very likely to contain some misunderstandings and be at least partly off
+the mark. I intend to have grasped this by the time I start working on
+it however, if I were to be given the chance. Below are two possible
+approaches as I have understood them after some reading and discussions
+on #hurd@freenode.
+
+
+### The basics, Approach 1: Special UID's
+
+Let each capability be represented by a specific UID. One could imagine
+reserving a range of the possible uid_t's for this purpose. The euids
+vector in the authhandle struct could perhaps hold the effective set while
+the auids vector could hold the permitted set as these seem to roughly
+correspond to eachother in intent. This leaves the Inheritable set.
+One solution could be to store the inheritable set in the agids vector,
+but that does not seem to be a very natural nor nice solution. One could
+extend the authhandle struct with an additional vector, but one would then
+need to also extend the auth interface with RPC's to be able to modify
+and access it. Another possibility is to store all the capabilities
+in the same idvec and use separate defines for the the different sets
+(CAP_P_CHMOD, CAP_E_CHMOD, CAP_I_CHMOD). This does not seem like a
+good solution.
+
+Storing each capability in its own uid_t might also arguably be somewhat
+wasteful, although this is probably of secondary concern (if at all).
+One could also imagine that legacy applications might be confused,
+although I am not sure I can see any obvious problems. What happens
+when a process have only capability id's?
+
+
+### The basics, Approach 2: Extend the auth interface
+
+This approach would expand the auth interface and extend
+the auth server with another set of RPC's for capabilities
+(*auth_getcaps*, *auth_makecaps*, *auth_user_authenticate* and
+*auth_server_authenticate*), mirroring those currently declared for id's.
+This would obviously require changes to more parts of the Hurd for
+processes to be able to take advantage of capabilities, but as the logic
+behind handling capabilities and that behind handling user id's might
+not be completely comparable, this might make for a cleaner solution.
+It would also remove the problem of having to sensibly map all the
+three capability sets onto semantically differing sets of user/group
+ids, something that might be even more important if we were to also
+implement something like the bounding sets used in Linux or perhaps
+other related functionality. We are also not limited to having to store
+the capabilities as id vectors, although doing so would perhaps still
+make sense.
+
+
+### The individual capabilities
+
+Implementing the individual capabilities will probably have to be thought
+of on a case-by-case basis. Taking chown (in *libdiskfs*) as an example,
+the exact approach would differ slightly depending on how the approach
+taken to implement capabilities. If the first approach were to be taken,
+the UID's (and thus the capabilities) of the caller would already be
+available to the function through the *iouser* struct contained in the
+*protid* struct given as the first argument. Implementing capabilities
+would then simply be a matter of checking for the special UID's. If the
+second approach were to be taken, one would need to perhaps expand the
+iouser struct to contain information about the capabilities.
+
+Just like Linux has defined many Linux-specific capabilities - some of
+which could certainly be useful also applied to the Hurd - one could
+also imagine extending the POSIX capability system also for Hurd specific
+purposes.
+
+
+## Some applications using capabilities
+
+#### Samba 3
+
+Uses CAP_MKNOD and CAP_LEASE in smbd to only keep the necessary abilities.
+Documentation mentions CAP_LINUX_IMMUTABLE as a way to protect files
+from being deleted. Can also use a couple of IRIX specific capabilities
+(CAP_NETWORK_MGT and CAP_DEVICE_MGT) as alternatives to the Linux-specific
+ones if running on IRIX.
+
+
+#### ntpd
+
+Checks if capabilities are supported, more precisely if CAP_SYS_TIME,
+CAP_SETUID, CAP_SETGID, CAP_SYS_CHROOT and CAP_NET_BIND_SERVICE are
+supported. If they are supported, it uses prctl with PR_SET_KEEPCAPS
+to keep privileges across setuid() and then drops root. After done with
+CAP_SETUID, CAP_SETGID, CAP_SYS_CHROOT it drops every capability except
+CAP_SYS_TIME and, if needed, CAP_NET_BIND_SERVICE.
+
+
+#### vsftpd
+
+Uses CAP_CHOWN, CAP_NET_BIND_SERVICE when using the "one process"
+security model (typically disabled by default).
+
+
+#### proftpd-basic
+
+Provides support for capabilities from mod_cap. Uses CAP_USE_CHOWN,
+CAP_USE_DAC_OVERRIDE, CAP_USE_DAC_READ_SEARCH and CAP_USE_AUDIT_WRITE.
+Distribution contains README.capabilities with some explanations.
+Also ships with their own libcap for some reason, based on libcap 1.10.
+
+
+#### dovecot
+
+Keeps CAP_CHOWN, CAP_SYS_CHROOT, CAP_SETUID, CAP_SETGID,
+CAP_NET_BIND_SERVICE, CAP_DAC_OVERRIDE for proper operations, drops
+the rest.
+
+
+#### bind9
+
+Reasons for each capability are clearly noted in comments in update.c
+in linux_initialprivs() and linux_minprivs(). initialprivs drops all
+capabilities and proceeds to set CAP_NET_BIND_SERVICE, CAP_SYS_CHROOT,
+CAP_SETUID, CAP_SETGID, CAP_DAC_READ_SEARCH and CAP_CHOWN. minprivs only
+sets CAP_NET_BIND_SERVICE and CAP_SYS_RESOURCE.
+
+
+#### pulseaudio
+
+Mentions CAP_NICE (CAP_SYS_NICE), but does not appear to be using it
+(anymore?). Seems to use libcap to drop caps, however.
+
+
+#### pinentry
+
+Checks if CAP_IPC_LOCK is available and "uses it" to gain only the
+ability to lock memory when needed.
+
+
+#### zsh
+
+Comes with a module "caps" which contains "[b]uiltins for manipulating
+POSIX.1e (POSIX.6) capability (privilege) sets." Most useful here is the
+"cap" builtin, which makes it possible to change the shell's process
+capability sets. This might be useful for testing.
+
+
+#### inetutils (ping,traceroute)
+
+Does not use capabilities explicitly, but is nevertheless a useful
+example of how file capabilities could be used. ping and traceroute
+are currently installed suid root since they need to be able to open
+raw sockets. With file capabilities, this could be accomplished by
+instead setting the capability CAP_NET_RAW on the two executables,
+thus giving the utilities almost only the specific rights they need.
+
+
+## The capabilities
+
+The above might give some hint as to what capabilities should be
+prioritized. One assumption I have made is that the goal of this project
+is to implement, as far as possible, the same functionality as what is
+present in Linux. No effort has (so far) been made to look into possible
+applications specific to the Hurd.
+
+A few of the above mentioned applications also explicitly uses
+PR_SET_KEEPCAPS (through prctl()) to specify that capabilities should
+be passed on to children. This means that the implementation in the
+Hurd should take this into account.
+
+I have below done a preliminary classification of the capabilities
+as defined in Linux capability.h into four "classes": Network, File
+management, "glibc -> mach" and Other. There are also some capabilities
+that either depend on functionality not implemented or are too Linux
+specific. I have not described each capability in detail as looking
+at the comments in capability.h and reading in capabilities(7) are
+better sources.
+
+
+### The Networking Class
+
+These would mostly affect pfinet. The general picture seem to be that
+pfinet currently uses a boolean (int) isroot in struct sock_user to keep
+track of the credentials of the caller. This would need to be expanded
+somehow to keep track of the separate capabilities.
+
+CAP_NET_BIND_SERVICE: Allow binding to TCP/UDP sockets below 1024
+CAP_NET_RAW: Allow use of RAW and PACKET sockets.
+CAP_NET_BROADCAST: "Allow broadcasting, listen to multicast"
+CAP_NET_ADMIN: This seem to be a bit of a "catch-all" for network-related
+administration.
+
+
+### The Files Management Class
+
+The description of CAP_CHOWN in the original proposal should apply to
+(most of?) these. That is, modify the iouser struct. At least libdiskfs
+should be modified, but the same or similar modifications might need to
+be made to several servers (libnetfs..? The actual servers implementing
+the filesystem?)
+
+CAP_CHOWN: "Make arbitrary changes to file UIDs and GIDs"
+CAP_FOWNER: allow chmod, utime, .. for files not owned.
+CAP_FSETID: Don't clear setuid/setgid when a file is modified.
+CAP_DAC_OVERRIDE and
+CAP_DAC_READ_SEARCH: Bypasses file/directory read/write/execute permission
+checks. ( hurdexec.c, file-access.c, .. ? )
+CAP_MKNOD: allows usage of "the privileged aspects of mknod()". Does this
+one make sense in the Hurd?
+
+
+### The (glibc -> gnumach) Class
+
+These seem to be implemented in glibc by direct calls to gnumach.
+If they should be implemented, maybe a proxy in the Hurd is needed?
+
+CAP_SYS_TIME: manipulate the system clock, set real-time clock.
+CAP_IPC_LOCK: mlock, mlockall, mmap, shmctl
+CAP_KILL: No permission checks for killing processes
+CAP_SYS_NICE: setpriority/getpriority for arbitrary processes.
+
+
+### The Rest Class
+
+CAP_SYS_CHROOT: Allows usage of chroot().
+It's either really simple (not needed in the case of the Hurd) or really
+difficult. Needs some figuring out. One of the calls that should be
+high-priority.
+CAP_SYS_ADMIN: General administration rights. Seemingly sprinkled out
+into just about everything. Quick grep through the Linux sources gives
+440 hits in .c-files.
+CAP_SYS_BOOT: Allow use of reboot().
+glibc calls init:startup_reboot..
+CAP_SETGID: Allows usage of setgid,setgroups and "forged gids on socket
+credentials passing"
+CAP_SETUID: Allows usage of set*uid and "forged pids on socket credentials
+passing"
+CAP_SYS_TTY_CONFIG: vhangup, some other places. vhangup() is a stub in
+the Hurd, but maybe the console server is otherwise affected?
+CAP_SYS_RESOURCE: Override various limits. (quota, reserved space etc.
+on ext2, interrupt frequencies, consoles,...). According to "The Critique"
+mach performs no resource accounting so some of these might be moot to
+implement, while others still apply.
+CAP_SYS_RAWIO Allow raw input/output. Sprinkled in many places,
+device drivers among others. Many of these will probably be difficult
+to implement.
+CAP_SETPCAP: This one has (or had?) two different usages in Linux:
+If file capabilities are not supported it gives the right to grant
+or remove capabilities from the permitted set of arbitrary processes.
+If file capabilities are supported, it allows for removing capabilities
+from the bounding set of the current process. As the Hurd implementation
+won't have file capabilities initially it might make sense to implement
+this if possible. If bounding sets are implemented this should probably
+be the way provided to modify them.
+
+
+### Unimplementable
+
+*(At this point in time, as far as I can determine)*
+
+CAP_LINUX_IMMUTABLE: depends on chattr etc. working.
+CAP_SETFCAP: depends on xattr's
+CAP_SYS_PACCT: acct() missing in the Hurd.
+CAP_SYS_MODULE, CAP_SYS_PTRACE, CAP_MAC_OVERRIDE, CAP_MAC_ADMIN,
+CAP_AUDIT_WRITE, CAP_AUDIT_CONTROL, CAP_LEASE
+
+
+## Priority when implementing
+
+The two most used capabilities as unscientifically judged from
+the selection of applications above are CAP_NET_BIND_SERVICE and
+CAP_CHOWN, suggesting that implementing the "network class" and the
+"file management" class of capabilities as classified above might be a
+good start. These also, to me, seem to be easier classes to implement.
+CAP_NET_ADMIN might need some extra work.
+
+Second most common were CAP_SYS_CHROOT, CAP_SETGID and CAP_SETUID. I am
+not completely clear on how these should be handled.
+
+Assuming those are out of the way, CAP_IPC_LOCK, CAP_SYS_TIME, CAP_KILL
+and CAP_SYS_NICE might be a good choice to tackle if possible. This
+might, if I have understood things correctly, involve writing a proxy
+Hurd server for these calls in mach.
+
+CAP_SYS_ADMIN, CAP_SYS_RESOURCE and CAP_SYS_RAWIO. These contains a bit
+of "everything" (ADMIN being the worse one), meaning that experience
+and infrastructure gained from implementing the previous capabilities
+might come in handy. CAP_SYS_RAWIO might be difficult; it can be found
+inside many drivers in the Linux source.
+
+
+## Additional general details
+
+[This article](http://www.ibm.com/developerworks/library/l-posixcap.html)
+contains a good general description of how capabilities in Linux
+works. As there will be no file capabilities in the Hurd initially,
+an approach emulating the behavior Linux exhibits when SECURE_NOROOT
+and SECURE_NO_SETUID_FIXUP are *not* set seems to be a good start.
+This is called the "root-user-is-privileged" model in the article,
+and somewhat simplified it means that processes started by root, or
+setuid-root, is given all capabilities no matter what capabilities the
+parent might or might not hold at the time of execution. Quoting verbatim
+from the article:
+
+> * When SECURE_NOROOT is not set, then when a process executes a file,
+> the new capability sets may be calculated as though the file had some
+> file capability sets set fully populated. In particular:
+>
+> * The file inheritable and permitted sets will be full on if the
+> process's real or effective uid is 0 (root) or the file is setuid
+> root.
+>
+> * The file effective set will be full on if the process's effective
+> uid is root or the file is setuid root.
+>
+>
+> * When SECURE_NO_SETUID_FIXUP is not set, then when a process switches
+> its real or effective uids to or from 0, capability sets are further
+> shifted around:
+>
+> * If a process switches its effective uid from 0 to non-0, then its
+> effective capability set is cleared.
+>
+> * If a process switches its real, effective, or saved uids from at
+> least one being 0 to all being non-zero, then both the permitted
+> and effective capabilities are cleared.
+>
+> * If a process sets its effective uid from non-zero to 0, then the
+> effective capabilities are set equal to the permitted capabilities.
+
+The capabilities of the resulting process are determined by the following
+formulas, again taken from the article, with p for Process and f for file:
+
+> pI' = pI
+> pP' = fP | (fI & pI)
+> pE' = pP' & fE
+
+The security under the above described model, being what at least some
+of the applications I listed in my last comment employs, is basically
+the following (also detailed somewhat in the same article):
+
+* Execute process as root (or setuid) to gain all capabilities.
+
+* Use the prctl [[system call]] to enable keepcaps for the process
+ (same(?) effect as enabling SECURE_NO_SETUID_FIXUP for the process).
+ keepcaps should be off by default.
+
+* setuid to a non-root user, and by doing so losing the possibility to
+ regain capabilities by simply starting a new process.
+
+* Drop all the capabilities except those few actually needed.
+
+
+## Infrastructure details - Special UIDs approach
+
+The auth server must somehow keep track of three sets of capabilities.
+I suggest keeping these three sets in three additional idvec's in the
+authhandle struct, and will for the purpose of this description name
+these pcaps (permitted), ecaps (effective) and icaps (inheritable).
+This will simplify keeping track of the internal logic somewhat.
+In addition to this, there is a need to keep track of the "keepcaps" flag
+as described above. I suggest representing this with an int keepcaps
+in the same struct.
+
+1. Expand authhandle struct with three additional idvecs and one integer.
+Fix static functions handling the struct, such as destroy_authhandle.
+
+2. Implement the necessary logic in auth_makeauth to handle capabilities.
+
+Problems:
+Assume that all capabilities are mapped onto uids, given names on the form
+uid_<capability>, for example uid_cap_net_raw. Assume that the presence
+of an uid in euids suggest that the capability is in the effective set
+of the process, that the presence of this uid in auids suggests that it
+is in the permitted set of the process, and that the presence of this
+uid in aguids suggest that it is in the inheritable set of the process.
+That they are internally stored in separate idvec's can be ignored as
+an implementation detail.
+
+* The UID's have as it is different meanings depending on where in the
+ array they are positioned, and certain clients seem to rely on this.
+ The first UID in euids is the effective uid, and the first and second
+ UIDs in auids are the real and saved UIDS respectively. At least
+ some users of makeauth would need to made aware of capabilities,
+ for example setuid in glibc.
+
+* Setting/getting the keepcaps-flag is also a bit of a problem. To avoid
+ changing the auth interface yet another special UID could be used
+ for this purpose, although that seems to be really stretching it.
+ The cleaner solution would probably be to expand the interface with
+ something along the lines of auth_setkeepcaps/auth_getkeepcaps.
+ This interface would only be used by prctl.
+
+Another problem with this approach is that it seems a bit difficult
+to oversee the affects that using other RPC's like fsys_getroot and
+io_restrict_auth might have on capabilities.
+
+
+## Infrastructure details - "extend-interfaces" approach
+
+This approach has started to seem like the better way to me, as the
+usage of capabilities becomes more explicit through the entire "chain",
+perhaps making it somewhat more easy to understand all the interactions.
+
+I suggest something like the following new interface methods:
+
+***
+
+
+### The auth interface
+
+ routine auth_getauth_caps (
+ handle: auth_t;
+ out euids: idarray_t;
+ out auids: idarray_t;
+ out egids: idarray_t;
+ out agids: idarray_t;
+ out ecaps: idarray_t;
+ out pcaps: idarray_t;
+ out icaps: idarray_t);
+
+ routine auth_makeauth_caps (
+ handle: auth_t;
+ other_handles: portarray_t;
+ euids: idarray_t;
+ auids: idarray_t;
+ egids: idarray_t;
+ agids: idarray_t;
+ ecaps: idarray_t;
+ pcaps: idarray_t;
+ icaps: idarray_t;
+ flags: int; /* keepcaps.. ? */
+ out newhandle: mach_port_make_send_t);
+
+ routine auth_server_authenticate_caps (
+ handle: auth_t;
+ sreplyport reply: mach_port_poly_t;
+ rendezvous: mach_port_send_t;
+ newport: mach_port_poly_t;
+ out euids: idarray_t;
+ out auids: idarray_t;
+ out egids: idarray_t;
+ out agids: idarray_t;
+ out ecaps: idarray_t;
+ out pcaps: idarray_t;
+ out icaps: idarray_t);
+
+
+### The io interface
+
+ routine io_restrict_auth_caps (
+ io_object: io_t;
+ RPT
+ out new_object: mach_port_send_t;
+ uids: idarray_t SCP;
+ gids: idarray_t SCP;
+ ecaps: idarray_t SCP);
+
+
+### The fsys interface
+
+ routine fsys_getroot_caps (
+ fsys: fsys_t;
+ RPT
+ #ifdef FSYS_GETROOT_UREPLY
+ ureplyport ureply: mig_reply_port_t;
+ #endif
+ dotdot_node: mach_port_send_t;
+ gen_uids: idarray_t;
+ gen_gids: idarray_t;
+ out ecaps: idarray_t;
+ out pcaps: idarray_t;
+ out icaps: idarray_t;
+ flags: int;
+ out do_retry: retry_type;
+ out retry_name: string_t;
+ out file: mach_port_send_t);
+
+***
+
+These are meant to be able to replace the old methods with
+capability-aware methods, instead of merely complementing them.
+The replacing work could then be made a more gradual process. Steps:
+
+* Extend authhandle with the same data members as in the UID-case.
+
+* Implement new _caps-functions according to described interface
+ extensions above, refactor code a bit to share common uid-handling
+ logic. Both makeauth's should drop all capabilities if switching from
+ uid 0 without having keepcaps. For example, keepcaps should be unset
+ by default.
+
+* Fix glibc. Extend hurd_id_data in hurd/id.h to store capabilities,
+ switch to capability aware functions where necessary.
+
+* io-reauthenticate. Fix implementations to use
+ auth_server_authenticate_caps instead. For this we also need somewhere
+ to save the caps, so it ties in with for example the extension of
+ iouser as mentioned in the details.
+
+* fsys_getroot. Implement fsys_getroot_caps in libdiskfs, trans,
+ libtreefs, libtrivs, libnetfs. Fix users of function in libdiskfs,
+ libfshelp, settrans, libtreefs, clookup.
+
+* io_restrict_auth. Implement io_restrict_auth_caps in libdiskfs,
+ libtreefs, libtrivfs, libnetfs, boot. Fix users in utils(symlink,
+ firmlink), libtrivs, term, clookup
+
+Among the problems might be that there are a lot of arguments that
+needs to be passed around, and that it seems somewhat ugly to end up
+with function names referencing caps in particular.
+
+Below some more about the specific capabilities. This should in large
+be common to the two approaches above.
+
+
+## Actually handing out the capabilities to process
+
+This seems like a good job for the file_exec route in the fs interface.
+Quoting from the comments above the definition in fs.defs: "*Necessary
+initialization, including authentication changes associated with set[ug]id
+execution must be handled by the filesystem*". The capability-granting
+functionality should to be added in at least the implementations in
+libdiskfs and libnetfs as far as I can determine, and should be "easy
+enough" once the infrastructure for implementing the file-related
+capabilities (CAP_CHOWN etc.) are in place. This also seem to make
+sense considering the future possibility for file capabilities.
+
+
+## Some implementation details of individual capabilities.
+
+### Net-related capabilities.
+
+This turned out to be a bit less work than I had thought, as the
+imported Linux code already seem to contain all the necessary checks.
+What remains to do to implement all of these capabilities is mostly a
+matter of putting some infrastructure in place.
+
+* In struct sock_user (pfinet.h), change isroot for idvec
+ caps. Alternatively, add idvec caps.
+
+* Change the function make_sock_user in socket.c to take an idvec caps
+ as a parameter and properly set the given caps to the corresponding
+ idvec in sock_user.
+
+* Fix users of make_sock_user: S_io_reauthenticate, S_io_restrict_auth,
+ S_socket_create, S_socket_accept. This should be doable with the
+ current infrastructure. For example, S_socket_create currently
+ sets isroot in the new sock_user from the corresponding member in
+ the trivfs_protid struct. This does not present a problem however,
+ as the latter struct also provides access to an iouser (iohelp.h)
+ from which the needed uids of the user should be available.
+
+* Fix up parts of source from Linux, modify task_struct add idvec,
+ modify prepare_current to take the caps idvec instead of isroot.
+ Re-implement the existing function capable(int cap) to actually check
+ for the capability passed as an argument instead of just return isroot.
+
+* Change a few isroot's at 3 other places in the code to check for
+ capabilities. Since these places all have access to isroot and thus by
+ implication the sock_user, they also have access to the new capability
+ information; no restructuring necessary.
+
+
+### File-related capabilities
+
+While there are a lot of servers in the Hurd, I am not sure all of these
+capabilities actually make sense to implement in all of them.
+
+
+#### CAP_CHOWN
+
+Implementing this in libdiskfs should take care of it where it makes
+sense. Servers using libdiskfs uses iouser from libiohelp to hold
+user credentials. As noted above, this struct is already capable of
+holding our capabilities as uid's or is otherwise extended to contain
+the necessary idvecs if using the second general approach. Adding a
+check along the lines of *idvec_contains(uid_cap_chown)* in function
+diskfs_S_file_chown (file-chown.c) should be all that's needed.
+
+In libnetfs, netfs_attempt_chown is declared as a function that the
+server using the library must implement. Any checks for chown rights
+are however most likely performed on the server side, suggesting that
+there is nothing we can do here to implement CAP_CHOWN. Even if we do
+need to add something, an iouser containing the necessary information
+to implement the checks in a manner analogous to that in libdiskfs seems
+to be passed to each important function.
+
+
+#### CAP_DAC_*
+
+These might actually make sense to implement in more servers, and the
+logic seems somewhat involved. Need to add the necessary checks to
+at least file_check_access, file_exec in libdiskfs. file_exec also in
+libnetfs, probably. Possibly changes also in other places.
+
+The main difficulties overall seem to lie in getting the infrastructure
+properly in place rather than implementing most of the individual
+capabilities, and I have updated the schedule a bit in an attempt to
+reflect this.
+
+
+## Schedule updating
+
+The more I look into this the less time it seems likely to take to
+do the work. Below is my best estimation at the moment, and I have
+basically adjusted everything to what I think is more likely estimations.
+If this is correct I would be more or less around midterm. I haven't
+gone completely to the individual level as that doesn't seem to make
+sense, but what is clustered together are either related capabilities
+or a collection of capabilities classified roughly with regards to how
+much I know about the area and how many different rights they control.
+It's not my intention to "slack off" or anything, so if this estimation
+were to be correct I could perhaps take a look at the xattrs-patch,
+or spend the rest of my time fixing PATH_MAX-issues. Then again, maybe
+there is some great difficulty hidden somewhere.
+
+
+#### Some justifications:
+
+Dummy libcap, more or less done.
+*1 day* (making sure it "fails gracefully" shouldn't really take longer than this)
+
+Application for testing, the beginnings of a fairly extensive "test suit" on Linux.
+*2 days*
+
+Basic infrastructure.
+*5 days*, depends on the chosen approach, but it is probably wise to
+reserve at least a bunch of days for this.
+
+Implementations of prctl/capset/capget in libshouldbeinlibc,
+or a port of libcap to the Hurd in any other way.
+*5 days*
+
+CAP_NET_BIND_SERVICE, CAP_NET_RAW, CAP_NET_BROADCAST, CAP_NET_ADMIN
+*4 days*, as noted above this should be easy, but it might uncover bugs
+in the newly implemented infrastructure for example.
+
+CAP_CHOWN,CAP_FOWNER,CAP_FSETID
+*2 days*, I think these only needs to be done in libdiskfs
+
+CAP_DAC_OVERRIDE,CAP_DAC_READ_SEARCH
+*4 days*, these might need changes to various servers
+
+CAP_SYS_TIME,CAP_IPC_LOCK,CAP_KILL
+CAP_SYS_NICE,CAP_SYS_CHROOT,CAP_SYS_BOOT
+*2 weeks*, these are varied and I'm not that sure exactly how each should
+be tackled so some research is needed.
+
+CAP_SETGID,CAP_SETUID,CAP_SYS_TTY_CONFIG
+*4 days*
+
+CAP_SYS_ADMIN,CAP_SYS_RESOURCE,CAP_SYS_RAWIO
+*2 weeks*, these too are pretty varied and some might need some individual
+researching
+
+CAP_SETPCAP
+*1 day*
+
+
+## Schedule
+
+24/5 Start coding
+25/5 Dummy libcap ready for use.
+27/5 The beginnings of a "test suite", written on Linux.
+ 1/6 Basic infrastructure in place
+ 6/6 Dummy libcap extended with real functionality to make use of
+ implemented capability and infrastructure, or the Hurd adapted for
+ compatibility with Linux libcap.
+10/6 The "network class" of capabilities implemented.
+12/6 CAP_CHOWN, CAP_FOWNER, CAP_FSETID
+16/6 CAP_DAC_OVERRIDE, CAP_DAC_READ_SEARCH
+30/6 CAP_SYS_TIME, CAP_IPC_LOCK, CAP_KILL, CAP_SYS_NICE,
+ CAP_SYS_CHROOT, CAP_SYS_BOOT
+ 4/7 CAP_SETGID,CAP_SETUID,CAP_SYS_TTY_CONFIG
+12/7 "Mentors and students can begin submitting mid-term evaluations"
+16/7 GSoC Mid-term evaluations deadline.
+18/7 CAP_SYS_ADMIN, CAP_SYS_RESOURCE, CAP_SYS_RAWIO
+19/7 CAP_SETPCAP
diff --git a/community/gsoc/project_ideas/libdiskfs_locking.mdwn b/community/gsoc/project_ideas/libdiskfs_locking.mdwn
new file mode 100644
index 00000000..faac8bd9
--- /dev/null
+++ b/community/gsoc/project_ideas/libdiskfs_locking.mdwn
@@ -0,0 +1,45 @@
+[[!meta copyright="Copyright © 2008, 2009, 2010, 2011 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]]."]]"""]]
+
+[[!meta title="Fix libdiskfs Locking Issues"]]
+
+[[!tag open_issue_hurd]]
+
+Nowadays the most often encountered cause of Hurd crashes seems to be lockups
+in the [[hurd/translator/ext2fs]] server. One of these could be traced
+recently, and turned out to be a lock inside [[hurd/libdiskfs]] that was taken
+and not released in some cases. There is reason to believe that there are more
+faulty paths causing these lockups.
+
+The task is systematically checking the [[hurd/libdiskfs]] code for this kind of locking
+issues. To achieve this, some kind of test harness has to be implemented: For
+example instrumenting the code to check locking correctness constantly at
+runtime. Or implementing a [[open_issues/unit_testing]] framework that explicitly checks
+locking in various code paths. (The latter could serve as a template for
+implementing unit tests in other parts of the Hurd codebase...)
+
+(A [[systematic code review|open_issues/security]] would probably suffice to find the
+existing locking
+issues; but it wouldn't document the work in terms of actual code produced, and
+thus it's not suitable for a GSoC project...)
+
+This task requires experience with debugging locking issues in
+[[multithreaded|open_issues/multithreading]] applications.
+
+Tools have been written for automated [[open_issues/code_analysis]]; these can help to
+locate and fix such errors.
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: If you could actually track down and fix one of the existing locking
+errors before the end of the application process, that would be excellent. This
+might be rather tough though, so probably you need to talk to us about an
+alternative exercise task...
diff --git a/community/gsoc/project_ideas/libgtop.mdwn b/community/gsoc/project_ideas/libgtop.mdwn
new file mode 100644
index 00000000..8eb6953e
--- /dev/null
+++ b/community/gsoc/project_ideas/libgtop.mdwn
@@ -0,0 +1,34 @@
+[[!meta copyright="Copyright © 2009, 2010 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]]."]]"""]]
+
+[[!meta title="Porting libgtop"]]
+
+libgtop is a library used by many applications (especially GNOME applications)
+to abstract the system-specific methods for obtaining information about the
+current state of the system -- processes running, system load etc.
+
+A Linux-compatible [[hurd/translator/procfs]] is available
+and should cover a large part of the functionality of
+libgtop. However, not all necessary information is exported via /proc (even on
+Linux); there are some bits still missing in the Hurd procfs implementation;
+and there are a couple of bugs that need to be fixed to make it fully usable.
+
+The goal of this project is a fully functional libgtop in Debian GNU/Hurd. Some
+application(s) using it also need to be ported, e.g. gnome-system-monitor.
+
+Some bits of this work are easy, others need some digging into Hurd internals.
+This task doesn't require any specific previous knowledge (besides of general
+C/UNIX programming skills of course); but during the course of the project,
+some knowledge about Hurd internals will have to be obtained, along with a bit
+of Debian stuff.
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Fix one of the shortcomings in the existing procfs implementation.
diff --git a/community/gsoc/project_ideas/maxpath.mdwn b/community/gsoc/project_ideas/maxpath.mdwn
new file mode 100644
index 00000000..5be8917f
--- /dev/null
+++ b/community/gsoc/project_ideas/maxpath.mdwn
@@ -0,0 +1,46 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="Fixing Programs Using PATH_MAX et al Unconditionally"]]
+
+POSIX describes some constants (or rather macros) like PATH_MAX/MAXPATHLEN and
+similar, which may be defined by the system to indicate certain limits. Many
+people overlook the *may* though: Systems only should define them if they
+actually have such fixed limits. The Hurd, following the GNU Coding Standards,
+tries to avoid this kind of arbitrary limits, and consequently doesn't define
+the macros.
+
+Many programs however just assume their presence, and use them unconditionally.
+This is simply sloppy coding: not only does it violate POSIX and fails on
+systems not defining the macros, but in fact most common use cases of these
+macros are simply wrong! (See
+<http://insanecoding.blogspot.com/2007/11/pathmax-simply-isnt.html> for some
+hints as to why this is so.)
+
+There are a few hundred packages in Debian GNU/Hurd failing to build because of
+this -- simply grep for the offending macros in the
+[list_of_build_failures](http://unstable.buildd.net/buildd/hurd-i386_Failed.html).
+
+Fixing these issues usually boils down to replacing `char foo[PATH_MAX]`
+by `char *foo`, and using dynamic memory allocation, i.e. e.g. a loop
+that tries geometrically growing sizes. Sometimes this is tricky, but
+more often not very hard. Sometimes it is even trivial because the GNU
+system has proper replacements. See the corresponding section of the
+[[porting_guidelines_page|hurd/porting/guidelines]] for more details. With a bit of
+practice, it should be easily possible to fix several programs per day.
+
+The goal of this project is to fix the PATH_MAX and related problems in a
+significant number of packages, and make the fixes ready for inclusion in
+Debian and (where possible) upstream. No Hurd-specific knowledge is needed, nor
+any other special knowledge aside from general C programming skills.
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Fix the PATH_MAX issues in some Debian package.
diff --git a/community/gsoc/project_ideas/mtab.mdwn b/community/gsoc/project_ideas/mtab.mdwn
new file mode 100644
index 00000000..a60a8038
--- /dev/null
+++ b/community/gsoc/project_ideas/mtab.mdwn
@@ -0,0 +1,74 @@
+[[!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]]."]]"""]]
+
+[[!meta title="mtab"]]
+
+In traditional monolithic system, the kernel keeps track of all mounts; the
+information is available through `/proc/mounts` (on Linux at least), and in a
+very similar form in `/etc/mtab`.
+
+The Hurd on the other hand has a totally
+[[decentralized_file_system|hurd/virtual_file_system]]. There is no single
+entity involved in all mounts. Rather, only the parent file system to which a
+mountpoint ([[hurd/translator]]) is attached is involved. As a result, there
+is no central place keeping track of mounts.
+
+As a consequence, there is currently no easy way to obtain a listing of all
+mounted file systems. This also means that commands like `df` can only work on
+explicitly specified mountpoints, instead of displaying the usual listing.
+
+One possible solution to this would be for the translator startup mechanism to
+update the `mtab` on any `mount`/`unmount`, like in traditional systems.
+However, there are some problems with this approach. Most notably: what to do
+with passive translators, i.e., translators that are not presently running, but
+set up to be started automatically whenever the node is accessed? Probably
+these should be counted among the mounted filesystems; but how to handle the
+`mtab` updates for a translator that is not started yet? Generally, being
+centralized and event-based, this is a pretty inelegant, non-hurdish solution.
+
+A more promising approach is to have `mtab` exported by a special translator,
+which gathers the necessary information on demand. This could work by
+traversing the tree of translators, asking each one for mount points attached
+to it. (Theoretically, it could also be done by just traversing *all* nodes,
+checking each one for attached translators. That would be very inefficient,
+though. Thus a special interface is probably required, that allows asking a
+translator to list mount points only.)
+
+There are also some other issues to keep in mind. Traversing arbitrary
+translators set by other users can be quite dangerous -- and it's probably not
+very interesting anyways what private filesystems some other user has mounted.
+But what about the global `/etc/mtab`? Should it list only root-owned
+filesystems? Or should it create different listings depending on what user
+contacts it?...
+
+That leads to a more generic question: which translators should be actually
+listed? There are different kinds of translators: ranging from traditional
+filesystems ([[disks|hurd/libdiskfs]] and other actual
+[[stores|hurd/translator/storeio]]), but also purely virtual filesystems like
+[[hurd/translator/ftpfs]] or [[hurd/translator/unionfs]], and even things that
+have very little to do with a traditional filesystem, like a
+[[gzip_translator|hurd/translator/storeio]],
+[[mbox_translator|hurd/translator/mboxfs]],
+[[xml_translator|hurd/translator/xmlfs]], or various device file translators...
+Listing all of these in `/etc/mtab` would be pretty pointless, so some kind of
+classification mechanism is necessary. By default it probably should list only
+translators that claim to be real filesystems, though alternative views with
+other filtering rules might be desirable.
+
+After taking decisions on the outstanding design questions, the student will
+implement both the actual [[mtab_translator|hurd/translator/mtabfs]], and the
+necessary interface(s) for gathering the data. It requires getting a good
+understanding of the translator mechanism and Hurd interfaces in general.
+
+Possible mentors: Olaf Buddenhagen (antrik), Carl Fredrik Hammar (cfhammar)
+
+Exercise: Make some improvement to any of the existing Hurd translators.
+Especially those in [hurdextras](http://www.nongnu.org/hurdextras/) are often
+quite rudimentary, and it shouldn't be hard to find something to improve.
diff --git a/community/gsoc/project_ideas/namespace-based_translator_selection.mdwn b/community/gsoc/project_ideas/namespace-based_translator_selection.mdwn
new file mode 100644
index 00000000..67e3fc28
--- /dev/null
+++ b/community/gsoc/project_ideas/namespace-based_translator_selection.mdwn
@@ -0,0 +1,82 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Namespace-based Translator Selection"]]
+
+The main idea behind the Hurd is to make (almost) all system functionality
+user-modifiable ([[extensible_system|extensibility]]). This includes a
+user-modifiable filesystem: the whole filesystem is implemented decentrally, by
+a set of filesystem servers forming the directory tree together, a
+[[hurd/virtual_file_system]]. These filesystem servers are called
+[[translators|hurd/translator]], and are the most visible feature of the Hurd.
+
+The reason they are called translators is because when you set a translator on
+a filesystem node, the underlying node(s) are hidden by the translator, but the
+translator itself can access them, and present their contents in a different
+format -- translate them. A simple example is a
+[[gunzip_translator|hurd/translator/storeio]], which can be set on a gzipped
+file, and presents a virtual file with the uncompressed contents. Or the other
+way around. Or a translator that presents an
+[[XML_file_as_a_directory_tree|hurd/translator/xmlfs]]. Or an mbox as a set of
+individual files for each mail ([[hurd/translator/mboxfs]]); or ever further
+breaking it down into headers, body, attachments...
+
+This gets even more powerful when translators are used as building blocks for
+larger applications: A mail reader for example doesn't need backends for
+understanding various mailbox formats anymore. All formats can be parsed by
+special translators, and the mail reader gets the data as a uniform, directly
+usable filesystem structure. Translators can also be stacked: If you have a
+compressed mailbox for example, first apply a gunzip translator, and then an
+mbox translator on top of that.
+
+There are a few problems with the way translators are set, though. For one,
+once a translator is set on a node, you always see the translated content. If
+you need the untranslated contents again, to do a backup for example, you first
+need to remove the translator again. Also, having to set a translator
+explicitly before accessing the contents is pretty cumbersome, making this
+feature almost useless.
+
+A possible solution is implementing a mechanism for selecting translators
+through special filename attributes. For example you could use
+`index.html.gz,,+` and `index.html.gz,,-` to choose between translated and
+untranslated versions of a file. Or you could use `index.html.gz,,u` to get
+the contents of the file with a gunzip translator applied automatically. You
+could also use attributes on whole directory trees: `.,,0/` would give you a
+directory tree corresponding to the current directory, but with any translators
+disabled, for doing a backup. And `site,,u/*.html.gz` would present a whole
+directory tree of compressed HTML files as uncompressed files.
+
+One benefit of the Hurd's flexibility is that it should be possible to
+implement such a mechanism without touching the existing Hurd components:
+Rather, just implement a special proxy, that mirrors the normal filesystem, but
+is able to interpret the special extensions and present transformed files in
+place of the original ones.
+
+In the long run it's probably desirable to have the mechanism implemented in
+the standard name lookup mechanism, so it will be available globally, and avoid
+the overhead of a proxy; but for the beginning the proxy solution is much more
+flexible.
+
+The goal of this project is implementing a prototype proxy; perhaps also a
+first version of the global variant as proof of concept, if time permits. It
+requires good understanding of the name lookup mechanism, and translator
+programming; but the implementation should not be too hard. Perhaps the hardest
+part is finding a convenient, flexible, elegant, hurdish method for mapping the
+special extensions to actual translators...
+
+Possible mentors: Olaf Buddenhagen (antrik)
+
+Exercise: Try to make some modification to the existing unionfs and/or firmlink
+translators. (More specific suggestions welcome... :-) )
+
+*Status*: Sergiu Ivanov has been working *voluntarily* on
+[[namespace-based_translator_selection|scolobb]], as an inofficial GSoC 2008
+participant! Not all the desired functionality is in place yet; work is
+ongoing.
diff --git a/community/gsoc/project_ideas/nfs.mdwn b/community/gsoc/project_ideas/nfs.mdwn
new file mode 100644
index 00000000..e7c18324
--- /dev/null
+++ b/community/gsoc/project_ideas/nfs.mdwn
@@ -0,0 +1,45 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Improved NFS Implementation"]]
+
+The Hurd has both NFS server and client implementations, which work, but not
+very well: File locking doesn't work properly (at least in conjunction with a
+GNU/Linux server), and performance is extremely poor. Part of the problems
+could be owed to the fact that only NFSv2 is supported so far.
+
+(Note though that locking on the Hurd is problematic in general, not only in
+conjunction with NFS -- see the [[file_locking]] task.)
+
+This project encompasses implementing NFSv3 support, fixing bugs and
+performance problems -- the goal is to have good NFS support. The work done in
+a previous unfinished GSoC project can serve as a starting point.
+
+Both client and server parts need work, though the client is probably much more
+important for now, and shall be the major focus of this project.
+
+Some [discussion of NFS
+improvements](http://lists.gnu.org/archive/html/bug-hurd/2008-04/msg00035.html)
+has been done for a former GSoC application -- it might give you some pointers.
+But don't take any of the statements made there for granted -- check the facts
+yourself!
+
+This task, [[!GNU_Savannah_task 5497]], has no special prerequisites besides general programming skills, and
+an interest in file systems and network protocols.
+
+Possible mentors: ?
+
+Exercise: Look into one of the existing issues in the NFS code. It's quite
+possible that you will not be able to fix any of the visible problems before
+the end of the application process; but you might discover something else you
+could improve in the code while working on it :-)
+
+If you can't find anything suitable, talk to us about possible other exercise
+tasks.
diff --git a/community/gsoc/project_ideas/package_manager.mdwn b/community/gsoc/project_ideas/package_manager.mdwn
new file mode 100644
index 00000000..23304f6b
--- /dev/null
+++ b/community/gsoc/project_ideas/package_manager.mdwn
@@ -0,0 +1,51 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Hurdish Package Manager for the GNU System"]]
+
+Most GNU/Linux systems use pretty sophisticated package managers, to ease the
+management of installed software. These keep track of all installed files, and
+various kinds of other necessary information, in special databases. On package
+installation, deinstallation, and upgrade, scripts are used that make all kinds
+of modifications to other parts of the system, making sure the packages get
+properly integrated.
+
+This approach creates various problems. For one, *all* management has to be
+done with the distribution package management tools, or otherwise they would
+loose track of the system state. This is reinforced by the fact that the state
+information is stored in special databases, that only the special package
+management tools can work with.
+
+Also, as changes to various parts of the system are made on certain events
+(installation/deinstallation/update), managing the various possible state
+transitions becomes very complex and bug-prone.
+
+For the official (Hurd-based) GNU system, a different approach is intended:
+making use of Hurd [[translators|hurd/translator]] -- more specifically their
+ability to present existing data in a different form -- the whole system state
+will be created on the fly, directly from the information provided by the
+individual packages. The visible system state is always a reflection of the
+sum of packages installed at a certain moment; it doesn't matter how this state
+came about. There are no global databases of any kind. (Some things might
+require caching for better performance, but this must happen transparently.)
+
+The core of this approach is formed by [[hurd/translator/stowfs]], which
+creates a traditional Unix directory structure from all the files in the
+individual package directories. But this only handles the lowest level of
+package management. Additional mechanisms are necessary to handle stuff like
+dependencies on other packages.
+
+The goal of this task is to create these mechanisms.
+
+Possible mentors: Ben Asselstine (bing)
+
+Exercise: Make some improvement to any of the existing Hurd translators.
+Especially those in [hurdextras](http://www.nongnu.org/hurdextras/) are often
+quite rudimentary, and it shouldn't be hard to find something to improve.
diff --git a/community/gsoc/project_ideas/perl_python.mdwn b/community/gsoc/project_ideas/perl_python.mdwn
new file mode 100644
index 00000000..a51393f1
--- /dev/null
+++ b/community/gsoc/project_ideas/perl_python.mdwn
@@ -0,0 +1,41 @@
+[[!meta copyright="Copyright © 2009, 2010, 2011 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]]."]]"""]]
+
+[[!meta title="Improving Perl or Python Support"]]
+
+<!-- See also open_issues/perl and open_issues/python. -->
+
+Perl and Python are available on the Hurd, but there are quite a lot of test suite
+failures. These could be caused by problems in the system-specific
+implementation bits of Perl/Python, and/or shortcomings in the actual system
+functionality which Perl/Python depends on.
+
+The student applying for this project can pick either Perl or Python,
+whichever he is more comfortable with.
+(Perl is higher priority though; and there are more failures too.)
+
+The goal then is to fix all of the problems with the chosen language if possible, or at
+least some of them. Some issues might require digging quite deep into Hurd
+internals, while others are probably easy to fix.
+
+Note that while some Perl/Python knowledge is probably necessary to understand what
+the test suite failures are about, the actual work necessary to fix these
+issues is mostly C programming -- in the implementation of Perl/Python and/or the
+Hurd.
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Take a stab at one of the testsuite failures,
+and write a minimal testcase exposing the underlying problem.
+Actually fixing it would be a bonus of course --
+but as it's hard to predict which issues will be easy and which will be tricky,
+we will already be satisfied if the student makes a good effort.
+(We hope to see some discussion of the problems in this case though :-) )
diff --git a/community/gsoc/project_ideas/procfs.mdwn b/community/gsoc/project_ideas/procfs.mdwn
new file mode 100644
index 00000000..0434ab9c
--- /dev/null
+++ b/community/gsoc/project_ideas/procfs.mdwn
@@ -0,0 +1,52 @@
+[[!meta copyright="Copyright © 2008, 2009, 2011 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]]."]]"""]]
+
+[[!meta title="procfs"]]
+
+Although there is no standard (POSIX or other) for the layout of the `/proc`
+pseudo-filesystem, it turned out a very useful facility in GNU/Linux and other
+systems, and many tools concerned with process management use it. (`ps`, `top`,
+`htop`, `gtop`, `killall`, `pkill`, ...)
+
+Instead of porting all these tools to use [[hurd/libps]] (Hurd's official method for
+accessing process information), they could be made to run out of the box, by
+implementing a Linux-compatible `/proc` filesystem for the Hurd.
+
+The goal is to implement all `/proc` functionality needed for the various process
+management tools to work. (On Linux, the `/proc` filesystem is used also for
+debugging purposes; but this is highly system-specific anyways, so there is
+probably no point in trying to duplicate this functionality as well...)
+
+The [[existing_partially_working_procfs_implementation|hurd/translator/procfs]]
+can serve as a starting point, but needs to be largely rewritten. (It should
+use [[hurd/libnetfs]] rather than [[hurd/libtrivfs]]; the data format needs to
+change to be more Linux-compatible; and it needs adaptation to newer system
+interfaces.)
+
+This project requires learning [[hurd/translator]] programming, and
+understanding some of the internals of process management in the Hurd. It
+should not be too hard coding-wise; and the task is very nicely defined by the
+existing Linux `/proc` interface -- no design considerations necessary.
+
+**Note**: We already have several applications for this task.
+
+Possible mentors: Olaf Buddenhagen (antrik)
+
+Exercise: Add or fix one piece in the existing procfs translator.
+
+*Status*: Madhusudan.C.S has implemented a new, fully functional [[procfs|madhusudancs]] for
+GSoC 2008. He is still working on some outstanding issues.
+
+---
+
+Note that this was not the end of the story: [[jkoenig's
+`procfs`|hurd/translator/procfs/jkoenig]] is yet another re-written and
+improved version.
diff --git a/community/gsoc/project_ideas/pthreads.mdwn b/community/gsoc/project_ideas/pthreads.mdwn
new file mode 100644
index 00000000..2270c774
--- /dev/null
+++ b/community/gsoc/project_ideas/pthreads.mdwn
@@ -0,0 +1,49 @@
+[[!meta copyright="Copyright © 2008, 2009, 2010 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]]."]]"""]]
+
+[[!meta title="Convert Hurd Libraries and Servers to pthreads"]]
+
+[[!tag open_issue_libpthread]]
+
+The Hurd was originally created at a time when the [pthreads
+standard](http://www.opengroup.org/onlinepubs/009695399/basedefs/pthread.h.html)
+didn't exist yet. Thus all Hurd servers and libraries are using the old
+[[cthreads|hurd/libcthreads]] package that came with [[microkernel/Mach]],
+which is not compatible with pthreads.
+
+Not only does that mean that people hacking on Hurd internals have to deal with
+a non-standard thread package, which nobody is familiar with. Although a
+[[pthreads implementation for the Hurd|libpthread]]
+was created in the meantime, it's not
+possible to use both cthreads and pthreads in the same program. Consequently,
+pthreads can't presently be used in any Hurd servers -- including translators.
+
+(Thus it's impossible to use the [Hurd
+libfuse](http://www.nongnu.org/hurdextras/#libfuse) with any FUSE modules
+depending on pthreads for example.)
+
+Most of the conversion has already been done in previous efforts (see
+[[!GNU_Savannah_task 5487]]) -- but the tricky parts are still missing.
+
+The goal of this project is to have all the Hurd code use pthreads. Should any
+limitations in the existing pthreads implementation turn up that hinder this
+transition, they will have to be fixed as well.
+
+This project requires relatively little Hurd-specific knowledge. Experience
+with multithreaded programming in general and pthreads in particular is
+required, though.
+
+Possible mentors: Barry deFreese (bddebian), Samuel Thibault (youpi)
+
+Exercise: Try to fix one of the outstanding issues with the work done so far.
+It's not yet complete, and there hasn't been much debugging yet, so it should
+not be too hard to find something needing improvement -- but if you don't see
+anything obvious, feel free to talk to us about an alternative exercise task.
diff --git a/community/gsoc/project_ideas/secure_chroot.mdwn b/community/gsoc/project_ideas/secure_chroot.mdwn
new file mode 100644
index 00000000..bfaf330b
--- /dev/null
+++ b/community/gsoc/project_ideas/secure_chroot.mdwn
@@ -0,0 +1,48 @@
+[[!meta copyright="Copyright © 2008, 2009, 2010 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]]."]]"""]]
+
+[[!meta title="Secure chroot Implementation"]]
+
+As the Hurd attempts to be (almost) fully [[UNIX]]-compatible, it also implements a
+`chroot()` [[system call]]. However, the current implementation is not really
+good, as it allows easily escaping the `chroot`, for example by use of
+[[passive_translators|hurd/translator]].
+
+Many solutions have been suggested for this problem -- ranging from simple
+workaround changing the behavior of passive translators in a `chroot`;
+changing the context in which passive translators are executed; changing the
+interpretation of filenames in a chroot; to reworking the whole passive
+translator mechanism. Some involving a completely different approach to
+`chroot` implementation, using a proxy instead of a special [[system call]] in the
+filesystem servers.
+
+See <http://tri-ceps.blogspot.com/2007/07/theory-of-filesystem-relativity.html>
+for some suggestions, as well as the followup discussions on
+<http://lists.gnu.org/archive/html/gnu-system-discuss/2007-09/msg00118.html>
+and <http://lists.gnu.org/archive/html/bug-hurd/2008-03/msg00089.html>.
+
+The task is to pick and implement one approach for fixing chroot.
+
+This task is pretty heavy: it requires a very good understanding of file name
+lookup and the translator mechanism, as well as of security concerns in general
+-- the student must prove that he really understands security implications of
+the UNIX namespace approach, and how they are affected by the introduction of
+new mechanisms. (Translators.) More important than the actual code is the
+documentation of what he did: he must be able to defend why he chose a certain
+approach, and explain why he believes this approach really secure.
+
+Possible mentors: Carl Fredrik Hammar (cfhammar)
+
+Exercise: It's hard to come up with a relevant exercise, as there are so many
+possible solutions... Probably best to make an improvement to one of the
+existing translators -- if possible, something touching name resolution or and
+such, e.g. implementing file_reparent() in a translator that doesn't support it
+yet.
diff --git a/community/gsoc/project_ideas/server_overriding.mdwn b/community/gsoc/project_ideas/server_overriding.mdwn
new file mode 100644
index 00000000..c35d88de
--- /dev/null
+++ b/community/gsoc/project_ideas/server_overriding.mdwn
@@ -0,0 +1,74 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Server Overriding Mechanism"]]
+
+The main idea of the Hurd is that every user can influence almost all system
+functionality ([[extensible_system|extensibility]]), by running private Hurd
+servers that replace or proxy the global default implementations.
+
+However, running such a customized subenvironment presently is not easy,
+because there is no standard mechanism to easily replace an individual standard
+server, keeping everything else. (Presently there is only the [[hurd/subhurd]]
+method, which creates a completely new system instance with a completely
+independent set of servers.)
+
+The goal of this project is to provide a simple method for overriding
+individual standard servers, using environment variables, or a special
+subshell, or something like that. It is closely related to the
+[[virtualization]] task.
+
+Various approaches for such a mechanism has been discussed before.
+Probably the easiest (1) would be to modify the Hurd-specific parts of [[hurd/glibc]],
+which are contacting various standard servers to implement certain system
+calls, so that instead of always looking for the servers in default locations,
+they first check for overrides in environment variables, and use these instead
+if present. Take a look at the [socket server overriding
+patch](http://www.assembla.com/spaces/VNetHurd/documents/aJidqKp6ur3z-Nab7jnrAJ/download/A%20patch%20of%20glibc)
+for an example.
+
+A somewhat more generic solution (2) could use some mechanism for arbitrary
+client-side namespace overrides. The client-side part of the filename lookup
+mechanism would have to check an override table on each lookup, and apply the
+desired replacement whenever a match is found.
+
+Another approach would be server-side overrides. Again there are various
+variants. The actual servers themselves could provide a mechanism to redirect to
+other servers on request. (3) Or we could use some more generic server-side
+namespace overrides: Either all filesystem servers could provide a mechanism to
+modify the namespace they export to certain clients (4), or proxies could be
+used that mirror the default namespace but override certain locations. (5)
+
+Variants (4) and (5) are the most powerful. They are intimately related to
+chroots: (4) is like the current chroot implementation works in the Hurd, and
+(5) has been proposed as an alternative. The generic overriding mechanism could
+be implemented on top of chroot, or chroot could be implemented on top of the
+generic overriding mechanism. But this is out of scope for this project...
+
+In practice, probably a mix of the different approaches would prove most useful
+for various servers and use cases. It is strongly recommended that the student
+starts with (1) as the simplest approach, perhaps augmenting it with (3) for
+certain servers that don't work with (1) because of indirect invocation.
+
+This tasks requires some understanding of the Hurd internals, especially a good
+understanding of the file name lookup mechanism. It's probably not too heavy on
+the coding side.
+
+This is [[!GNU_Savannah_task 6612]]. Also there are quite a bit of emails
+discussing this topic, from a previous year's GSoC application -- see
+<http://lists.gnu.org/archive/html/bug-hurd/2007-03/msg00050.html>,
+<http://lists.gnu.org/archive/html/bug-hurd/2007-03/msg00114.html>,
+<http://lists.gnu.org/archive/html/bug-hurd/2007-06/msg00082.html>,
+<http://lists.gnu.org/archive/html/bug-hurd/2008-03/msg00039.html>.
+
+Possible mentors: Olaf Buddenhagen (antrik), Carl Fredrik Hammar (cfhammar)
+
+Exercise: Come up with a glibc patch that allows overriding one specific
+standard server using method (1).
diff --git a/community/gsoc/project_ideas/sound.mdwn b/community/gsoc/project_ideas/sound.mdwn
new file mode 100644
index 00000000..8411831b
--- /dev/null
+++ b/community/gsoc/project_ideas/sound.mdwn
@@ -0,0 +1,42 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Sound Support"]]
+
+The Hurd presently has no sound support. Fixing this, [[!GNU_Savannah_task
+5485]], requires two steps: the first is to port some other kernel's drivers to
+[[GNU_Mach|microkernel/mach/gnumach]] so we can get access to actual sound
+hardware. The second is to implement a userspace server ([[hurd/translator]]),
+that implements an interface on top of the kernel device that can be used by
+applications -- probably OSS or maybe ALSA.
+
+Completing this task requires porting at least one driver (e.g. from Linux) for
+a popular piece of sound hardware, and the basic userspace server. For the
+driver part, previous experience with programming kernel drivers is strongly
+advisable. The userspace part requires some knowledge about programming Hurd
+translators, but shouldn't be too hard.
+
+Once the basic support is working, it's up to the student to use the remaining
+time for porting more drivers, or implementing a more sophisticated userspace
+infrastructure. The latter requires good understanding of the Hurd philosophy,
+to come up with an appropriate design.
+
+Another option would be to evaluate whether a driver that is completely running
+in user-space is feasible. <!-- TODO. Elaborate. -->
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: This project requires kernel (driver framework) hacking as well as
+some Hurd server hacking; so the exercise should involve either of these, or
+even both. You could for example port some newer driver to run in the existing
+framework (see the [[device_driver|driver_glue_code]] project description), or
+try to make some fix(es) to the [unfinished random device
+implementation](http://savannah.gnu.org/patch/?6088) created by Michael
+Casadevall.
diff --git a/community/gsoc/project_ideas/tcp_ip_stack.mdwn b/community/gsoc/project_ideas/tcp_ip_stack.mdwn
new file mode 100644
index 00000000..331336ac
--- /dev/null
+++ b/community/gsoc/project_ideas/tcp_ip_stack.mdwn
@@ -0,0 +1,42 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Hurdish TCP/IP Stack"]]
+
+The Hurd presently uses a [[TCP/IP_stack|hurd/translator/pfinet]] based on code from an old Linux version.
+This works, but lacks some rather important features (like PPP/PPPoE), and the
+design is not hurdish at all.
+
+A true hurdish network stack will use a set of [[hurd/translator]] processes,
+each implementing a different protocol layer. This way not only the
+implementation gets more modular, but also the network stack can be used way
+more flexibly. Rather than just having the standard socket interface, plus some
+lower-level hooks for special needs, there are explicit (perhaps
+filesystem-based) interfaces at all the individual levels; special application
+can just directly access the desired layer. All kinds of packet filtering,
+routing, tunneling etc. can be easily achieved by stacking components in the
+desired constellation.
+
+Implementing a complete modular network stack is not feasible as a GSoC
+project, though. Instead, the task is to take some existing user space TCP/IP
+implementation, and make it run as a single Hurd server for now, so it can be
+used in place of the existing pfinet. The idea is to split it up into
+individual layers later. The initial implementation, and the choice of a TCP/IP
+stack, should be done with this in mind -- it needs to be modular enough to
+make such a split later on feasible.
+
+This is [[!GNU_Savannah_task 5469]].
+
+Possible mentors: zhengda
+
+Exercise: You could try making some improvement to the existing pfinet
+implementation; or you could work towards running some existing userspace
+TCP/IP stack on Hurd. (As a normal program for now, not a proper Hurd server
+yet.)
diff --git a/community/gsoc/project_ideas/testing_framework.mdwn b/community/gsoc/project_ideas/testing_framework.mdwn
new file mode 100644
index 00000000..ff9899d9
--- /dev/null
+++ b/community/gsoc/project_ideas/testing_framework.mdwn
@@ -0,0 +1,55 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta title="Automated Testing Framework"]]
+
+Hurd development would benefit greatly from automated tests.
+Unit tests should be added for all the major components
+(Mach; Hurd servers and libraries).
+Also, functional tests can be performed on various levels:
+Mach; individual servers; and interaction of several servers.
+
+(The highest level would actually be testing libc functionality,
+which in turn uses the various Hurd mechanisms.
+glibc already comes with a test suite --
+though it might be desirabe to add some extra tests
+for exercising specific aspects of the Hurd...)
+
+Our page on [[automated testing|open_issues/unit_testing]] collects some relevant material.
+
+The Goal of this task is to provide testing frameworks
+that allow automatically running tests
+as part of the Hurd and Mach build processes.
+The student will have to create the necessary infrastrucure,
+and a couple of sample tests employing it.
+Ideally, all the aspects mentioned above should be covered.
+At least some have to be ready for use and upstream merging
+before the end of the summer.
+
+(As a bonus,
+in addition to these explicit tests,
+it would be helpful to integrate some methods
+for testing [[locking validity|libdiskfs_locking]],
+performing static code analysis etc.)
+
+This task probably requires some previous experience
+with unit testing of C programs,
+as well as dealing with complex build systems.
+No in-depth knowledge about any specific parts of the Hurd should be necessary,
+but some general understanding of the Hurd architecture
+will have to be aquired to complete this project.
+This makes it a very good project
+to get started on Hurd development :-)
+
+Possible mentors: ?
+
+Exercise: Create a program performing some simple test(s) on the Hurd or Mach code.
+It doesn't need to be integrated in the build process yet --
+a standalone progrem with it's own Makefile is fine for now.
diff --git a/community/gsoc/project_ideas/testing_framework/discussion.mdwn b/community/gsoc/project_ideas/testing_framework/discussion.mdwn
new file mode 100644
index 00000000..b01d13c3
--- /dev/null
+++ b/community/gsoc/project_ideas/testing_framework/discussion.mdwn
@@ -0,0 +1,272 @@
+[[!meta copyright="Copyright © 2010, 2011 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_documentation]]
+
+freenode, #hurd channel, 2011-03-05:
+
+ <nixness> what about testing though?
+ <nixness> like sort of "what's missing? lets write tests for it so that
+ when someone gets to implementing it, he knows what to do. Repeat"
+ project
+ <antrik> you mean creating an automated testing framework?
+ <antrik> this is actually a task I want to add for this year, if I get
+ around to it :-)
+ <nixness> yeah I'd very much want to apply for that one
+ <nixness> cuz I've never done Kernel hacking before, but I know that with
+ the right tasks like "test VM functionality", I would be able to write up
+ the automated tests and hopefully learn more about what breaks/makes the
+ kernel
+ <nixness> (and it would make implementing the feature much less hand-wavy
+ and more correct)
+ <nixness> antrik, I believe the framework(CUnit right?) exists, but we just
+ need to write the tests.
+ <antrik> do you have prior experience implementing automated tests?
+ <nixness> lots of tests!
+ <nixness> yes, in Java mostly, but I've played around with CUnit
+ <antrik> ah, great :-)
+ <nixness> here's what I know from experience: 1) write basic tests. 2)
+ write ones that test multiple features 3) stress test [option 4)
+ benchmark and record to DB]
+ <youpi> well, what we'd rather need is to fix the issues we already know
+ from the existing testsuites :)
+
+[[GSoC project propsal|community/gsoc/project_ideas/testsuites]].
+
+ <nixness> youpi, true, and I think I should check what's available in way
+ of tests, but if the tests are "all or nothing" then it becomes really
+ hard to fix your mistakes
+ <youpi> they're not all or nothing
+ <antrik> youpi: the existing testsuites don't test specific system features
+ <youpi> libc ones do
+ <youpi> we could also check posixtestsuite which does too
+
+[[open_issues/open_posix_test_suite]].
+
+ <antrik> AFAIK libc has very few failing tests
+
+[[open_issues/glibc]].
+
+ <youpi> err, like twenty?
+ <youpi> € grep -v '^#' expected-results-i486-gnu-libc | wc -l
+ <youpi> 67
+ <youpi> nope, even more
+ <antrik> oh, sorry, I confused it with coreutils
+ <pinotree> plus the binutils ones, i guess
+ <youpi> yes
+
+[[open_issues/binutils#weak]].
+
+ <antrik> anyways, I don't think relying on external testsuites for
+ regression testing is a good plan
+ <antrik> also, that doesn't cover unit testing at all
+ <youpi> why ?
+ <youpi> sure there can be unit testing at the translator etc. level
+ <antrik> if we want to implement test-driven development, and/or do serious
+ refactoring without too much risk, we need a test harness where we can
+ add specific tests as needed
+ <youpi> but more than often, the issues are at the libc / etc. level
+ because of a combination o fthings at the translator level, which unit
+ testing won't find out
+ * nixness yewzzz!
+ <nixness> sure unit testing can find them out. if they're good "unit" tests
+ <youpi> the problem is that you don't necessarily know what "good" means
+ <youpi> e.g. for posix correctness
+ <youpi> since it's not posix
+ <nixness> but if they're composite clever tests, then you lose that
+ granularity
+ <nixness> youpi, is that a blackbox test intended to be run at the very end
+ to check if you're posix compliant?
+ <antrik> also, if we have our own test harness, we can run tests
+ automatically as part of the build process, which is a great plus IMHO
+ <youpi> nixness: "that" = ?
+ <nixness> oh nvm, I thought there was a test stuie called "posix
+ correctness"
+ <youpi> there's the posixtestsuite yes
+ <youpi> it's an external one however
+ <youpi> antrik: being external doesn't mean we can't invoke it
+ automatically as part of the build process when it's available
+ <nixness> youpi, but being internal means it can test the inner workings of
+ certain modules that you are unsure of, and not just the interface
+ <youpi> sure, that's why I said it'd be useful too
+ <youpi> but as I said too, most bugs I've seen were not easy to find out at
+ the unit level
+ <youpi> but rather at the libc level
+ <antrik> of course we can integrate external tests if they exist and are
+ suitable. but that that doesn't preclude adding our own ones too. in
+ either case, that integration work has to be done too
+ <youpi> again, I've never said I was against internal testsuite
+ <antrik> also, the major purpose of a test suite is checking known
+ behaviour. a low-level test won't directly point to a POSIX violation;
+ but it will catch any changes in behaviour that would lead to one
+ <youpi> what I said is that it will be hard to write them tight enough to
+ find bugs
+ <youpi> again, the problem is knowing what will lead to a POSIX violation
+ <youpi> it's long work
+ <youpi> while libc / posixtestsuite / etc. already do that
+ <antrik> *any* unexpected change in behaviour is likely to cause bugs
+ somewher
+ <youpi> but WHAT is "expected" ?
+ <youpi> THAT is the issue
+ <youpi> and libc/posixtessuite do know that
+ <youpi> at the translator level we don't really
+ <youpi> see the recent post about link()
+
+[link(dir,name) should fail with
+EPERM](http://lists.gnu.org/archive/html/bug-hurd/2011-03/msg00007.html)
+
+ <youpi> in my memory jkoenig pointed it out for a lot of such calls
+ <youpi> and that issue is clearly not known at the translator level
+ <nixness> so you're saying that the tests have to be really really
+ low-level, and work our way up?
+ <youpi> I'm saying that the translator level tests will be difficult to
+ write
+ <antrik> why isn't it known at the translator level? if it's a translator
+ (not libc) bug, than obviously the translator must return something wrong
+ at some point, and that's something we can check
+ <youpi> because you'll have to know all the details of the combinations
+ used in libc, to know whether they'll lead to posix issues
+ <youpi> antrik: sure, but how did we detect that that was unexpected
+ behavior?
+ <youpi> because of a glib test
+ <youpi> at the translator level we didn't know it was an unexpected
+ behavior
+ <antrik> gnulib actually
+ <youpi> and if you had asked me, I wouldn't have known
+ <antrik> again, we do *not* write a test suite to find existing bugs
+ <youpi> right, took one for the other
+ <youpi> doesn't really matter actually
+ <youpi> antrik: ok, I don't care then
+ <antrik> we write a test suite to prevent future bugs, or track status of
+ known bugs
+ <youpi> (don't care *enough* for now, I mean)
+ <nixness> hmm, so write something up antrik for GSoC :) and I'll be sure to
+ apply
+ <antrik> now that we know some translators return a wrong error status in a
+ particular situation, we can write a test that checks exactly this error
+ status. that way we know when it is fixed, and also when it breaks again
+ <antrik> nixness: great :-)
+ <nixness> sweet. that kind of thing would also need a db backend
+ <antrik> nixness: BTW, if you have a good idea, you can send an application
+ for it even if it's not listed among the proposed tasks...
+ <antrik> so you don't strictly need a writeup from me to apply for this :-)
+ <nixness> antrik, I'll keep that in mind, but I'll also be checking your
+ draft page
+ <nixness> oh cool :)
+ <antrik> (and it's a well known fact that those projects which students
+ proposed themselfs tend to be the most successful ones :-) )
+ * nixness draft initiated
+ <antrik> youpi: BTW, I'm surprised that you didn't mention libc testsuite
+ before... working up from there is probably a more effective plan than
+ starting with high-level test suites like Python etc...
+ <youpi> wasn't it already in the gsoc proposal?
+ <youpi> bummer
+ <antrik> nope
+
+freenode, #hurd channel, 2011-03-06:
+
+ <nixness> how's the hurd coding workflow, typically?
+
+*nixness* -> *foocraft*.
+
+ <foocraft> we're discussing how TDD can work with Hurd (or general kernel
+ development) on #osdev
+ <foocraft> so what I wanted to know, since I haven't dealt much with GNU
+ Hurd, is how do you guys go about coding, in this case
+ <tschwinge> Our current workflow scheme is... well... is...
+ <tschwinge> Someone wants to work on something, or spots a bug, then works
+ on it, submits a patch, and 0 to 10 years later it is applied.
+ <tschwinge> Roughly.
+ <foocraft> hmm so there's no indicator of whether things broke with that
+ patch
+ <foocraft> and how low do you think we can get with tests? A friend of mine
+ was telling me that with kernel dev, you really don't know whether, for
+ instance, the stack even exists, and a lot of things that I, as a
+ programmer, can assume while writing code break when it comes to writing
+ kernel code
+ <foocraft> Autotest seems promising
+
+See autotest link given above.
+
+ <foocraft> but in any case, coming up with the testing framework that
+ doesn't break when the OS itself breaks is hard, it seems
+ <foocraft> not sure if autotest isolates the mistakes in the os from
+ finding their way in the validity of the tests themselves
+ <youpi> it could be interesting to have scripts that automatically start a
+ sub-hurd to do the tests
+
+[[hurd/subhurd#unit_testing]].
+
+ <tschwinge> foocraft: To answer one of your earlier questions: you can do
+ really low-level testing. Like testing Mach's message passing. A
+ million times. The questions is whether that makes sense. And / or if
+ it makes sense to do that as part of a unit testing framework. Or rather
+ do such things manually once you suspect an error somewhere.
+ <tschwinge> The reason for the latter may be that Mach IPC is already
+ heavily tested during normal system operation.
+ <tschwinge> And yet, there still may be (there are, surely) bugs.
+ <tschwinge> But I guess that you have to stop at some (arbitrary?) level.
+ <foocraft> so we'd assume it works, and test from there
+ <tschwinge> Otherwise you'd be implementing the exact counter-part of what
+ you're testing.
+ <tschwinge> Which may be what you want, or may be not. Or it may just not
+ be feasible.
+ <foocraft> maybe the testing framework should have dependencies
+ <foocraft> which we can automate using make, and phony targets that run
+ tests
+ <foocraft> so everyone writes a test suite and says that it depends on A
+ and B working correctly
+ <foocraft> then it'd go try to run the tests for A etc.
+ <tschwinge> Hmm, isn't that -- on a high level -- have you have by
+ different packages? For example, the perl testsuite depends (inherently)
+ on glibc working properly. A perl program's testsuite depends on perl
+ working properly.
+ <foocraft> yeah, but afaik, the ordering is done by hand
+
+freenode, #hurd channel, 2011-03-07:
+
+ <antrik> actually, I think for most tests it would be better not to use a
+ subhurd... that leads precisely to the problem that if something is
+ broken, you might have a hard time running the tests at all :-)
+ <antrik> foocraft: most of the Hurd code isn't really low-level. you can
+ use normal debugging and testing methods
+ <antrik> gnumach of course *does* have some low-level stuff, so if you add
+ unit tests to gnumach too, you might run into issues :-)
+ <antrik> tschwinge: I think testing IPC is a good thing. as I already said,
+ automated testing is *not* to discover existing but unknown bugs, but to
+ prevent new ones creeping in, and tracking progress on known bugs
+ <antrik> tschwinge: I think you are confusing unit testing and regression
+ testing. http://www.bddebian.com/~hurd-web/open_issues/unit_testing/
+ talks about unit testing, but a lot (most?) of it is actually about
+ regression tests...
+ <tschwinge> antrik: That may certainly be -- I'm not at all an expert in
+ this, and just generally though that some sort of automated testing is
+ needed, and thus started collecting ideas.
+ <tschwinge> antrik: You're of course invited to fix that.
+
+IRC, freenode, #hurd, 2011-03-08
+
+(After discussing the [[open_issues/anatomy_of_a_hurd_system]].)
+
+ <antrik> so that's what your question is actually about?
+ <foocraft> so what I would imagine is a set of only-this-server tests for
+ each server, and then we can have fun adding composite tests
+ <foocraft> thus making debugging the composite scenarios a bit less tricky
+ <antrik> indeed
+ <foocraft> and if you were trying to pass a composite test, it would also
+ help knowing that you still didn't break the server-only test
+ <antrik> there are so many different things that can be tested... the
+ summer will only suffice to dip into this really :-)
+ <foocraft> yeah, I'm designing my proposal to focus on 1) make/use a
+ testing framework that fits the Hurd case very well 2) write some tests
+ and docs on how to write good tests
+ <antrik> well, doesn't have to be *one* framework... unit testing and
+ regression testing are quite different things, which can be covered by
+ different frameworks
diff --git a/community/gsoc/project_ideas/testsuites.mdwn b/community/gsoc/project_ideas/testsuites.mdwn
new file mode 100644
index 00000000..9ca6fe3e
--- /dev/null
+++ b/community/gsoc/project_ideas/testsuites.mdwn
@@ -0,0 +1,62 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+[[!meta title="Fix Compatibility Problems Exposed by Testsuites"]]
+
+A number of software packages come with extensive testsuites.
+Some notable ones are [[open_issues/glibc]], gnulib, Perl,
+Python, GNU Coreutils, and glib.
+While these testsuites were written mostly to track regressions in the respective packages,
+some of the tests fail on the Hurd in general.
+
+There is also the [[Open POSIX Testsuite|open_issues/open_posix_test_suite]]
+which is more of a whole system interface testing suite.
+
+Then, there is the [[open_issues/File_System_Exerciser]] which we can use to
+test our file system servers for conformity.
+
+While in some cases these might point to wrong usage of system interfaces,
+most of the time such failures are actually caused by shortcomings in Hurd's implementation of these interfaces.
+These shortcomings are often not obvious in normal use,
+but can be directly or indirectly responsible for all kinds of failures.
+The testsuites help in isolating such problems,
+so they can be tracked down and fixed.
+
+This task thus consists in running some of the mentioned testsuites
+(and/or any other ones that come to mind),
+and looking into the causes of failures.
+The goal is to analyze all failures in one or more of the listed testsuites,
+to find out what shortcomings in the Hurd implementation cause them (if any),
+and to fix at least some of these shortcomings.
+
+Note that this task somewhat overlaps with the [[Perl/Python task|perl_python]] listed above.
+Here the focus however is not on improving the support for any particular program,
+but on fixing general problems in the Hurd.
+
+This is a very flexible task:
+while less experienced students should be able to tackle at least a few of the easier problems,
+other issues will be challenging even for experienced hackers.
+No specific previous knowledge is required for this task;
+only fairly decent C programming skills.
+While tracking down the various issues,
+the student will be digging into the inner workings of the Hurd,
+and thus gradually gaining the knowledge required for Hurd development in general.
+
+A complementary task is adding a proper [[open_issues/unit_testing]] framework
+to the GNU Hurd's code base, and related packages.
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Take a stab at one of the testsuite failures,
+and write a minimal testcase exposing the underlying problem.
+Actually fixing it would be a bonus of course --
+but as it's hard to predict which issues will be easy and which will be tricky,
+we will already be satisfied if the student makes a good effort.
+(We hope to see some discussion of the problems in this case though :-) )
diff --git a/community/gsoc/project_ideas/tmpfs.mdwn b/community/gsoc/project_ideas/tmpfs.mdwn
new file mode 100644
index 00000000..63b4effe
--- /dev/null
+++ b/community/gsoc/project_ideas/tmpfs.mdwn
@@ -0,0 +1,45 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Fix tmpfs"]]
+
+In some situations it is desirable to have a file system that is not backed by
+actual disk storage, but only by anonymous memory, i.e. lives in the RAM (and
+possibly swap space).
+
+A simplistic way to implement such a memory filesystem is literally creating a
+ramdisk, i.e. simply allocating a big chunk of RAM (called a memory store in
+Hurd terminology), and create a normal filesystem like ext2 on that. However,
+this is not very efficient, and not very convenient either (the filesystem
+needs to be recreated each time the ramdisk is invoked). A nicer solution is
+having a real [[hurd/translator/tmpfs]], which creates all filesystem
+structures directly in RAM, allocating memory on demand.
+
+The Hurd has had such a tmpfs for a long time. However, the existing
+implementation doesn't work anymore -- it got broken by changes in other parts
+of the Hurd design.
+
+There are several issues. The most serious known problem seems to be that for
+technical reasons it receives [[microkernel/mach/RPC]]s from two different
+sources on one [[microkernel/mach/port]], and gets mixed up with them. Fixing
+this is non-trivial, and requires a good understanding of the involved
+mechanisms.
+
+The goal of this project is to get a fully working, full featured tmpfs
+implementation. It requires digging into some parts of the Hurd, including the
+[[pager_interface|hurd/libpager]] and [[hurd/translator]] programming. This
+task probably doesn't require any design work, only good debugging skills.
+
+Possible mentors: Carl Fredrik Hammar (cfhammar)
+
+Exercise: Take a look at tmpfs and try to fix one of the existing issues. Some
+of them are probably not too tricky; or you might discover something else you
+could improve while working on it. If you don't find anything obvious, contact
+us about a different exercise task.
diff --git a/community/gsoc/project_ideas/unionfs_boot.mdwn b/community/gsoc/project_ideas/unionfs_boot.mdwn
new file mode 100644
index 00000000..d9f1a9e1
--- /dev/null
+++ b/community/gsoc/project_ideas/unionfs_boot.mdwn
@@ -0,0 +1,45 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Allow Using unionfs Early at Boot"]]
+
+In [[UNIX]] systems, traditionally most software is installed in a common directory
+hierarchy, where files from various packages live beside each other, grouped by
+function: user-invokable executables in `/bin`, system-wide configuration files
+in `/etc`, architecture specific static files in `/lib`, variable data in
+`/var`, and so on. To allow clean installation, deinstallation, and upgrade of
+software packages, GNU/Linux distributions usually come with a package manager,
+which keeps track of all files upon installation/removal in some kind of
+central database.
+
+An alternative approach is the one implemented by GNU Stow: each package is
+actually installed in a private directory tree. The actual standard directory
+structure is then created by collecting the individual files from all the
+packages, and presenting them in the common `/bin`, `/lib`, etc. locations.
+
+While the normal Stow package (for traditional UNIX systems) uses symlinks to
+the actual files, updated on installation/deinstallation events, the Hurd
+[[hurd/translator]] mechanism allows a much more elegant solution:
+[[hurd/translator/stowfs]] (which is actually a special mode of
+[[hurd/translator/unionfs]]) creates virtual directories on the fly, composed
+of all the files from the individual package directories.
+
+The problem with this approach is that unionfs presently can be launched only
+once the system is booted up, meaning the virtual directories are not available
+at boot time. But the boot process itself already needs access to files from
+various packages. So to make this design actually usable, it is necessary to
+come up with a way to launch unionfs very early at boot time, along with the
+root filesystem.
+
+Completing this task will require gaining a very good understanding of the Hurd
+boot process and other parts of the design. It requires some design skills
+also to come up with a working mechanism.
+
+Possible mentors: Carl Fredrik Hammar (cfhammar)
diff --git a/community/gsoc/project_ideas/unionmount.mdwn b/community/gsoc/project_ideas/unionmount.mdwn
new file mode 100644
index 00000000..86ef96c7
--- /dev/null
+++ b/community/gsoc/project_ideas/unionmount.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=hurd/translator/unionmount]]
diff --git a/community/gsoc/project_ideas/valgrind.mdwn b/community/gsoc/project_ideas/valgrind.mdwn
new file mode 100644
index 00000000..e9e94857
--- /dev/null
+++ b/community/gsoc/project_ideas/valgrind.mdwn
@@ -0,0 +1,83 @@
+[[!meta copyright="Copyright © 2009, 2010, 2011 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]]."]]"""]]
+
+[[!meta title="Porting Valgrind to the Hurd"]]
+
+[[!tag open_issue_gnumach open_issue_hurd]]
+
+[Valgrind](http://valgrind.org/) is an extremely useful debugging tool for memory errors.
+(And some other kinds of hard-to-find errors too.)
+Aside from being useful for program development in general,
+a Hurd port will help finding out why certain programs segfault on the Hurd,
+although they work on Linux.
+Even more importantly, it will help finding bugs in the Hurd servers themselfs.
+
+To keep track of memory use,
+Valgrind however needs to know how each [[system call]] affects the validity of memory regions.
+This knowledge is highly kernel-specific,
+and thus Valgrind needs to be explicitely ported for every system.
+
+Such a port involves two major steps:
+making Valgrind understand how kernel traps work in general on the system in question;
+and how all the individual kernel calls affect memory.
+The latter step is where most of the work is,
+as the behaviour of each single [[system call]] needs to be described.
+
+Compared to Linux,
+[[microkernel/Mach]] (the microkernel used by the Hurd) has very few kernel traps.
+Almost all [[system call]]s are implemented as [[RPC]]s instead --
+either handled by Mach itself, or by the various [[Hurd servers|hurd/translator]].
+All RPCs use a pair of `mach_msg()` invocations:
+one to send a request message, and one to receive a reply.
+However, while all RPCs use the same `mach_msg()` trap,
+the actual effect of the call varies greatly depending on which RPC is invoked --
+similar to the `ioctl()` call on Linux.
+Each request thus must be handled individually.
+
+Unlike `ioctl()`,
+the RPC invocations have explicit type information for the parameters though,
+which can be retrieved from the message header.
+By analyzing the parameters of the RPC reply message,
+Valgrind can know exactly which memory regions are affected by that call,
+even without specific knowledge of the RPC in question.
+Thus implementing a general parser for the reply messages
+will already give Valgrind a fairly good approximation of memory validity --
+without having to specify the exact semantic of each RPC by hand.
+
+While this should make Valgrind quite usable on the Hurd already, it's not perfect:
+some RPCs might return a buffer that is only partially filled with valid data;
+or some reply parameters might be optional,
+and only contain valid data under certain conditions.
+Such specific semantics can't be deduced from the message headers alone.
+Thus for a complete port,
+it will still be necessary to go through the list of all known RPCs,
+and implement special handling in Valgrind for those RPCs that need it.
+
+The goal of this task is at minimum to make Valgrind grok Mach traps,
+and to implement the generic RPC handler.
+Ideally, specific handling for RPCs needing it should also be implemented.
+
+Completing this project will require digging into Valgrind's handling of [[system call]]s,
+and into Hurd RPCs.
+It is not an easy task, but a fairly predictable one --
+there shouldn't be any unexpected difficulties,
+and no major design work is necessary.
+It doesn't require any specific previous knowledge:
+only good programming skills in general.
+On the other hand,
+the student will obtain a good understanding of Hurd RPCs while working on this task,
+and thus perfect qualifications for Hurd development in general :-)
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: As a starter,
+students can try to teach valgrind a couple of Linux ioctls,
+as this will make them learn how to use the read/write primitives of valgrind.
diff --git a/community/gsoc/project_ideas/virtualization.mdwn b/community/gsoc/project_ideas/virtualization.mdwn
new file mode 100644
index 00000000..bd67718b
--- /dev/null
+++ b/community/gsoc/project_ideas/virtualization.mdwn
@@ -0,0 +1,76 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Virtualization Using Hurd Mechanisms"]]
+
+The main idea behind the Hurd design is to allow users to replace almost any
+system functionality ([[extensible_system|extensibility]]). Any user can easily
+create a subenvironment using some custom [[servers|hurd/translator]] instead
+of the default system servers. This can be seen as an
+[[advanced_lightweight_virtualization|hurd/virtualization]] mechanism, which
+allows implementing all kinds of standard and nonstandard virtualization
+scenarios.
+
+However, though the basic mechanisms are there, currently it's not easy to make
+use of these possibilities, because we lack tools to automatically launch the
+desired constellations.
+
+The goal is to create a set of powerful tools for managing at least one
+desirable virtualization scenario. One possible starting point could be the
+[[hurd/subhurd]]/[[hurd/neighborhurd]] mechanism, which allows a second almost totally
+independent instance of the Hurd in parallel to the main one.
+
+While subhurd allow creating a complete second system instance, with an own set
+of Hurd servers and [[UNIX]] daemons and all, there are also situations where it is
+desirable to have a smaller subenvironment, living within the main system and
+using most of its facilities -- similar to a chroot environment. A simple way
+to create such a subenvironment with a single command would be very helpful.
+
+It might be possible to implement (perhaps as a prototype) a wrapper using
+existing tools (chroot and [[hurd/translator/unionfs]]); or it might require more specific tools,
+like some kind of unionfs-like filesystem proxy that mirrors other parts of the
+filesystem, but allows overriding individual locations, in conjunction with
+either chroot or some similar mechanism to create a subenvironment with a
+different root filesystem.
+
+It's also desirable to have a mechanism allowing a user to set up such a custom
+environment in a way that it will automatically get launched on login --
+practically allowing the user to run a customized operating system in his own
+account.
+
+Yet another interesting scenario would be a subenvironment -- using some kind
+of special filesystem proxy again -- in which the user serves as root, being
+able to create local sub-users and/or sub-groups.
+
+This would allow the user to run "dangerous" applications (webbrowser, chat
+client etc.) in a confined fashion, allowing it access to only a subset of the
+user's files and other resources. (This could be done either using a lot of
+groups for individual resources, and lots of users for individual applications;
+adding a user to a group would give the corresponding application access to the
+corresponding resource -- an advanced [[ACL]] mechanism. Or leave out the groups,
+assigning the resources to users instead, and use the Hurd's ability for a
+process to have multiple user IDs, to equip individual applications with sets
+of user IDs giving them access to the necessary resources -- basically a
+[[capability]] mechanism.)
+
+The student will have to pick (at least) one of the described scenarios -- or
+come up with some other one in a similar spirit -- and implement all the tools
+(scripts, translators) necessary to make it available to users in an
+easy-to-use fashion. While the Hurd by default already offers the necessary
+mechanisms for that, these are not perfect and could be further refined for
+even better virtualization capabilities. Should need or desire for specific
+improvements in that regard come up in the course of this project, implementing
+these improvements can be considered part of the task.
+
+Completing this project will require gaining a very good understanding of the
+Hurd architecture and spirit. Previous experience with other virtualization
+solutions would be very helpful.
+
+Possible mentors: Olaf Buddenhagen (antrik), Carl Fredrik Hammar (cfhammar)
diff --git a/community/gsoc/project_ideas/vm_tuning.mdwn b/community/gsoc/project_ideas/vm_tuning.mdwn
new file mode 100644
index 00000000..ecc5f9f4
--- /dev/null
+++ b/community/gsoc/project_ideas/vm_tuning.mdwn
@@ -0,0 +1,35 @@
+[[!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]]."]]"""]]
+
+[[!meta title="VM Tuning"]]
+
+Hurd/[[microkernel/Mach]] presently make very bad use of the available physical memory in the
+system. Some of the problems are inherent to the system design (the kernel
+can't distinguish between important application data and discardable disk
+buffers for example), and can't be fixed without fundamental changes. Other
+problems however are an ordinary lack of optimization, like extremely crude
+heuristics when to start paging. (See <http://lists.gnu.org/archive/html/bug-hurd/2007-08/msg00034.html> for example.)
+Many parameters are based on assumptions from
+a time when typical machines had like 16 MiB of RAM, or simply have been set to
+arbitrary values and never tuned for actual use.
+
+The goal of this project is to bring the virtual memory management in Hurd/Mach
+closer to that of modern mainstream kernels (Linux, FreeBSD), by comparing the
+implementation to other systems, implementing any worthwhile improvements, and
+general optimization/tuning. It requires very good understanding of the Mach
+VM, and virtual memory in general.
+
+This project is related to [[!GNU_Savannah_task 5489]].
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Make some modification to the existing VM code. You could try to find
+a piece of code that can be improved with simple code optimization, for
+example.
diff --git a/community/gsoc/project_ideas/xattr.mdwn b/community/gsoc/project_ideas/xattr.mdwn
new file mode 100644
index 00000000..7178d826
--- /dev/null
+++ b/community/gsoc/project_ideas/xattr.mdwn
@@ -0,0 +1,47 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="Implement xattr Support"]]
+
+Extended attributes (xattr) are a standardized, generic method for storing
+additional metadata along with a file (inode). Most modern UNIX filesystems
+support xattrs.
+
+In general, xattrs should be used sparingly, as they are less transparent than
+data stored as explicit file contents; however, there are some cases where they
+really make sense. The Hurd's variant of ext2 presently uses some additional
+fields in the inode to store Hurd-specific metadata: most notable passive
+translator settings. As these fields are Hurd-specific, they can't be accessed
+by the standard methods from Linux for example, so it's not possible to fully
+work with a Hurd filesystem on GNU/Linux (copy, backup etc.); and also, even
+when on Hurd, only tools that explicitly support the Hurd-specific information
+can handle them.
+
+Using extended attributes instead of custom fields for the Hurd-specific
+information would be very helpful.
+
+The most important goal of this project thus is to make the Hurd ext2fs server
+able to store and read the Hurd-specific information with extended attributes
+instead of the custom fields, so it become accessible from other systems. Being
+able to access the information through the standard xattr API instead of
+Hurd-specific calls is also desirable. (And in turn requires implementing the
+generic xattr API first, which can be useful for other purposes as well.)
+
+Completing this project will require digging into some parts of the Hurd, but
+it should be quite doable without previous Hurd experience. Some experience
+with xattrs might help a bit, but shouldn't be really necessary either.
+
+Some previous work on xattr support is available in [[!GNU_Savannah_patch
+5126]], and might serve as a starting point.
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Implement support for different inode sizes (other than 128 bytes) in
+Hurd's ext2fs.
diff --git a/community/gsoc/project_ideas/xmlfs.mdwn b/community/gsoc/project_ideas/xmlfs.mdwn
new file mode 100644
index 00000000..5e5eaa13
--- /dev/null
+++ b/community/gsoc/project_ideas/xmlfs.mdwn
@@ -0,0 +1,54 @@
+[[!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]]."]]"""]]
+
+[[!meta title="xmlfs"]]
+
+Hurd [[translators|hurd/translator]] allow presenting underlying data in a
+different format. This is a very powerful ability: it allows using standard
+tools on all kinds of data, and combining existing components in new ways, once
+you have the necessary translators.
+
+A typical example for such a translator would be xmlfs: a translator that
+presents the contents of an underlying XML file in the form of a directory
+tree, so it can be studied and edited with standard filesystem tools, or using
+a graphical file manager, or to easily extract data from an XML file in a
+script etc.
+
+The exported directory tree should represent the DOM structure of the document,
+or implement XPath/XQuery, or both, or some combination thereof (perhaps XPath/XQuery could
+be implemented as a second translator working on top of the DOM one) --
+whatever works well, while sticking to XML standards as much as possible.
+
+Ideally, the translation should be reversible, so that another, complementary
+translator applied on the expanded directory tree would yield the original XML
+file again; and also the other way round, applying the complementary translator
+on top of some directory tree and xmlfs on top of that would yield the original
+directory again. However, with the different semantics of directory trees and
+XML files, it might not be possible to create such a universal mapping. Thus
+it is a desirable goal, but not a strict requirement.
+
+The goal of this project is to create a fully usable XML translator, that
+allows both reading and writing any XML file. Implementing the complementary
+translator also would be nice if time permits, but is not mandatory part of the
+task.
+
+The [[existing_partial_(read-only)_xmlfs_implementation|hurd/translator/xmlfs]]
+can serve as a starting point.
+
+This task requires pretty good designing skills. Very good knowledge of XML is also
+necessary. Learning translator programming will obviously be necessary to
+complete the task.
+
+Possible mentors: Olaf Buddenhagen (antrik)
+
+Exercise: Make some improvement to the existing xmlfs, or some other existing
+Hurd translator. (Especially those in
+[hurdextras](http://www.nongnu.org/hurdextras/) are often quite rudimental --
+it shouldn't be hard to find something to improve...)
diff --git a/community/gsoc/student_application_form.mdwn b/community/gsoc/student_application_form.mdwn
index d2ddd3ea..ba339dc9 100644
--- a/community/gsoc/student_application_form.mdwn
+++ b/community/gsoc/student_application_form.mdwn
@@ -1,48 +1,149 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2009 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
-
-Some of the questions might seem quite intimidating at first. But don't
-despair. Most certainly you won't be able to answer all of them right away --
-this is intentional. The goal is *not* to prove that you already know
-everything. Rather, we want to see that you are willing to do your howework: To
-do some actual research to find the necessary answers.
-
-Most likely you won't be able to get all answers without contacting us
-directly. (On [[IRC]] or using [[mailing_lists]].) This is intentional as well.
-We want to see that you are able and willing to communicate with us, to get the
-information you need. This is also a chance for us to get to know you a bit :-)
-
-Also keep in mind that you do not need to give perfect answers when you first
-hand in your application. The application process allows us to give feedback;
-to request further input on anything that we need.
-
-With these explanations, we hope the questions don't look so scary anymore :-)
-
-**Note:** The application Form is [limited to 7500
-characters](http://code.google.com/opensource/gsoc/2008/faqs.html#0.1_student_app).
-This is not much. You will need to put some of your information on an external
-server, and link to that.
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+Before we get to the actual application form, some important remarks about the
+application process -- please read them carefully.
+
+First of all, please give your application a useful title. In many cases, you
+can simply copy it from the project ideas list. Some ideas -- like language
+bindings for example -- are rather broad, and require an additional specifier.
+(e.g. "Python Bindings")
+
+If you are proposing a project not on the ideas list, you have to find a useful
+title yourself of course -- but surely this isn't hard, if you were able to
+come up with your own project idea :-)
+
+Submitting the application form is only part of the deal: we expect a few other
+things on top of that, as explained below. This is important, so please take
+it seriously -- without these things, the application is not complete, and we
+won't consider it.
+
+One of the things we expect is that you contact us directly as soon as possible
+(preferably even before you send the application form), on our developer
+[[mailing lists]] and [[IRC]] channel. Don't be afraid -- we won't bite :-) IRC
+in particular allows for very informal conversations.
+
+(Note though that we are not all in the same time zone, and people generally
+don't stare at the IRC screen all the time: it can take quite a long time
+until somebody replies -- even several hours. Don't get discouraged by that. Just
+be patient and hang on, or try again later.)
+
+Contacting us as soon as possible is crucial, as regular communication is the
+single most important factor for a successful GSoC project. We need to see that
+you are able and willing to talk to us regularly. Also, we get to
+know you much better this way than what the application form alone would allow us to.
+
+You shouldn't be at a loss for reasons to contact us. You ought to discuss your
+project and application with us for example -- you will gain a much better idea
+about the project, our expectations etc. In short, you will be able to
+submit a better application right from the beginning, saving both yourself and
+us some tedious round trips :-)
+
+Also, if you really want to get involved with the Hurd project, there are
+surely many things you will want to know -- after all, it's a fascinating
+project, with a fascinating architecture etc., right? :-)
+
+All in all, you should have ample
+causes to get in touch during the application period. Bonus points if you also
+participate in discussions not directly related to your project.
+
+The other thing necessary to complete your application is making a change to
+some part of the Hurd code, and submitting a patch implementing that change. (If you are
+not sure what that means, ask us!)
+
+This is important, as it shows that you have everything set up to start hacking
+on the project (source code, tool chain, testing environment etc.); and that
+you have all kinds of qualifications necessary to successfully finish your
+project: general programming skills; working in the Hurd environment;
+submitting patches and reacting to feedback; finding and/or asking for any
+information you need; and so on.
+
+Don't get us wrong: We absolutely do *not* demand that you have and know all
+this up front. After all, the idea of GSoC is to *introduce* you to free
+software development in general, and to our project specifically :-) We are
+eager to help you with anything you will need to create the patch -- you just
+need to ask!
+
+We actively encourage you to contact us whenever you have any doubts. Don't be
+afraid that we will think worse of you when you ask too much. On the contrary:
+this is an occasion for you to show us that whenever there is something you
+don't know yet, you are able to learn quickly, and know how to ask for help :-)
+
+As for the kind of change we want: ideally, it would be some real improvement
+(bug fix or new feature) in a part of the Hurd related to the specific project
+you want to work on. (This is not always possible though -- in that case, a
+useful change to some unrelated part of the Hurd would also do, or perhaps some
+not strictly useful change to the part you will be working on.)
+
+The [[project_ideas]] page has more information on this. In either case, please
+contact us, so we can discuss it, and together come up with something suitable.
+
+Note that we do not place any demands on the size of the change. Even a very
+simple modification suffices to meet the minimum requirements -- after all, the
+amount of time available for working on this before the end of the student
+selection process is quite short; and you are not obliged to do a substantial
+amount of work before you get accepted. (But if you feel more ambitious, that's
+fine of course :-) )
+
+Now to the actual questions in the application form. Please answer *all*
+questions -- we are asking them for a reason. (Whether you answer them one by
+one, or all in a larger piece of prose, is up to you.)
+
+If some of these questions look strange to you and/or you don't quite know what
+to answer, don't despair. This is not some kind of exam -- we do not expect you
+to have good answers for all of them up front. (In fact, we would be very
+surprised if anyone did...) The idea is more that you learn the answers before
+the end of the application process -- with our help. Please talk to us whenever
+you are unsure about something.
+
+And now that you are prepared to face the enemy, here we go :-)
+
+* Please supply your contact information here: full name, email address, IRC
+nick, Jabber ID, phone number, etc. -- anything we might need to recognize you
+and to keep in touch.
+
+* Introduce yourself: who are you, where are you from, what do you do, how did
+you get here... Don't write a long essay here -- just a bunch of basic facts
+you think we should know, so we get some idea whom we are talking to :-)
* Please describe the task of the project you want to work on, in your own
words. Be as specific as possible. It's not sufficient to rephrase the
-description from the project ideas page; show us that you actually understand
+description from the project ideas page -- show us that you actually understand
what this task involves! Read the available documentation (and possibly code)
-if necessary. And don't hesitate to ask us if you have questions :-)
+if necessary. And don't hesitate to ask us if you have any doubts :-)
* Give a preliminary schedule for your work. The exact dates will obviously be
only guesses; but try to be specific about all the individual steps you will
have to do to complete the task.
+Note: By the end of the summer session, the code is expected to be in a state
+ready to be merged to mainline. Experience shows that adding the "final
+touches" necessary for that, tends to take up quite a lot of time -- there are
+always some bugs here and there, some misunderstandings about how things are
+supposed to work, build system issues, missing documentation, forgotten bits,
+and so on. Thus, the schedule should assume that a larger part of the main
+implementation work will be done by midterm!
+
+Also note that by the beginning of the summer session, you need to be able to
+work on the task at more or less full speed -- meaning that you need to get
+familiar with the code, think through the design (and discuss it with us) etc.
+already in the interim period *before* the summer session.
+
* What things will you have to learn to be able to complete the project? What
do you already know?
+In case you wonder what this question is getting at: Again, we want you to show
+us that you really understand what kind of work the task involves. As always,
+we encourage you to ask us for pointers if you are not sure how to go about
+this :-)
+
* Why did you choose this project idea? What do you consider most appealing
about it?
@@ -52,41 +153,59 @@ kind of programs have you written? What kind of programming (and related) work
are you enjoying most?
* Have you been involved in any free software ("Open Source") projects yet?
-Which projects, how long, and in what way have you been involved?
+Which projects, how long, and in what way have you been involved? Have you been
+active in the Hurd project/Hurd community before?
-* Please try to describe your understanding of how a free software project
-works, how people interact in the community. Include anything specific you know
-about the Hurd project. How do you imagine your interaction with the community
-during GSoC?
+* Please briefly describe the Hurd, including the goals, architecture etc.
+Also, what makes you interested in the Hurd? Why do you want to work on it?
+What is your vision of it's future development?
-* Have you been active in the Hurd project/Hurd community before? In what way?
+We ask this because we want to make sure that people working on the Hurd do
+understand what it is all about. You will probably need to read some
+documentation -- as always, you are encouraged to ask for pointers, and
+generally to talk to us about it :-)
-* Are you running or have you run a Hurd system yet? What did you do with it?
-How was your experience?
+* Are you subscribed to the bug-hurd@gnu.org mailing list? (See
+http://lists.gnu.org/mailman/listinfo/bug-hurd )
-* Have you ever compiled parts of the Hurd -- including the Hurd
-servers/libraries, glibc, gnumach, or some standalone traslator? Which ones,
-and how? Please go into details.
+Hint: This is mostly a rhetoric question. If you haven't subscribed yet, now
+would be a good time to do it! You will need it to communicate with us during
+the application process.
-* Please briefly describe the Hurd, including the goals, architecture etc.
+* Do you have a permanent internet connection, especially during the time of
+the summer session? Are you able and willing to hang out on the Hurd IRC
+channel regularly? (As in: Running the IRC client more or less permanently and
+checking for activity now and then.) If it turns out that your mentor lives in
+a different time zone, could you shift your day/night rhythm to better match
+that of your mentor and other Hurd developers?
-* What makes you interested in the Hurd? Why do you want to work on it? What is
-your vision of it's future development?
+Hint: Hanging out on the channel regularly during the application process
+would be a good start :-)
-* Are you subscribed to bug-hurd@gnu.org, or other Hurd-related mailing lists?
-Do you have general experience with mailing list communication?
+* When does your university term end, when are your exams, and when does the
+next term begin?
-* Are you using the #hurd IRC channel on freenode? Are you familiar with IRC in
-general? Do you have a permanent internet connection, and/or access to one
-during the summer?
+We need to know up front whether there are any overlaps with the GSoC time
+frame (especially the summer session), so we can make a plan how to deal with
+it properly.
-* In what time zone do you live? Would you be able and willing to shift your
-day/night rhythm to better match that of other Hurd developers, if necessary?
+* How much time do you intend to spend on your GSoC project per day/week during
+the summer months?
-* When are the exams and vacations at your University?
+Note that according to the GSoC FAQ, the project is meant to be "your major
+occupation during the summer". In other words, you should treat it more or less
+as a normal full-time job.
-* How much time do you intend to spend on your GSoC project per day/week during
-the summer months? What other major activities will you engage in during the
-summer? (Moving apartments, longer vacations, other obligations, etc.) If any,
-how do you intend to make sure you will be able to dedicate sufficient time to
-your project nevertheless?
+* What other major activities will you engage in during the summer? (Moving
+apartments, longer vacations, other obligations, etc.) If any, how do you
+intend to make sure you will be able to dedicate sufficient time to your
+project nevertheless?
+
+Please be open about this, and also mention things you are not yet sure about.
+We can be flexible about time arrangements; but we absolutely need to know about any
+possible obstacles up front. Surprises on that score are not acceptable.
+
+* How do you intend to make sure that your code will keep on being maintained
+and supported properly after the end of the GSoC program?
+
+* Anything else you want to add to your application?
diff --git a/community/gsoc/xorg_ideas.mdwn b/community/gsoc/xorg_ideas.mdwn
new file mode 100644
index 00000000..26177345
--- /dev/null
+++ b/community/gsoc/xorg_ideas.mdwn
@@ -0,0 +1,67 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+## VT Switching for GNU Hurd
+
+While XFree86 was first ported to the Hurd more than a decade ago, and there
+are updates now and then to make newer versions of Xorg run as well,
+the support is quite rudimentary: in particular, there
+is no support for switching back to the text console while X is running.
+
+Implementing this requires creating an interface between the X server and the
+Hurd console, and implementing the necessary code on both sides.
+
+The goal of this project is to get console switching fully working on the Hurd.
+Some Hurd-specific and X-specific knowlegde will need to be obtained, but the
+task should be quite doable without previous experience with either. It
+requires implementing some pieces of code that are not quite trivial, but
+shouldn't be terribly hard either.
+
+Exercise: Try fixing <http://savannah.gnu.org/bugs/?21000>, or perhaps some
+other minor issue with X on the Hurd.
+
+
+## Initial work on porting DRM to GNU Hurd
+
+The Direct Rendering Manager (DRM) is a kernel driver component taking care of
+graphics hardware access. Originally, it only took care of the 3D acceleration
+unit, and was used mostly by the DRI (Direct Rendering Infrastructure) in Mesa.
+
+A few years ago, the developers came to the conclusion that a more robust
+and functional graphics stack requires the kernel driver to take care of other
+graphics access as well: mode setting in particular. (Essentially what the old
+KGI project proposed, see <http://www.kgi-project.org>.) Also, with the new GEM
+interface, the DRM now takes care of graphics memory management as well.
+
+With the new responsibilities, the DRM is no longer an optional addon for fast
+3D support, but a central component of the graphics stack. It needs to be
+implemented by any operating system that wants good Xorg driver support in the
+future. (Moreover, it is now also useful outside the context of Xorg.)
+
+The Hurd implementation of DRM will be somewhat special, as -- following the
+microkernel idea -- we want to run the drivers as priviledged user space server
+processes, rather than actual kernel modules.
+
+This task is about doing the first steps for porting the DRM to the Hurd. This
+can be done by taking one of the existing DRM modesetting drivers (Intel, Nouveau (Nvidia), or
+Radeon), trying to get parts of it running as a Hurd server, and
+porting/implementing necessary pieces of the general DRM framework as needed
+along the way.
+
+It is probably not realistic to get the driver fully working over the summer.
+The goal however is to get at least some parts going.
+
+This task will require obtaining a considerable amount of knowledge about the
+Hurd and Mach (especially things like virtual memory management) -- it goes
+deep into system internals. Previous experience with operating system and/or
+graphics driver development would definitely be helpful.
+
+Exercise: Try to get some part of the driver compiling on the Hurd, using stubs
+for any system-specific functionality.
diff --git a/community/meetings.mdwn b/community/meetings.mdwn
index b4a5a7b3..6c15d144 100644
--- a/community/meetings.mdwn
+++ b/community/meetings.mdwn
@@ -1,24 +1,37 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009, 2010, 2011 Free Software
+Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="Meetings with Hurd developer attendance"]]
# Upcoming
-* [[Self-organised_2008]]
+ * [[GNU Hackers Meeting, 2011, Paris|ghm2011]]
+
+## In the Future
+
+ * [[Self-organised]]
+
# Past
-* [[FOSDEM_2008]]
-* [[Weekend_at_stesie's|stesie_2007-10-12]]
-* [[FOSDEM_2007]]
-* [[RMLL_2006]]
-* [[FOSDEM_2006]]
-* [[RMLL_2005]]
-* [[FOSDEM_2005]]
-* ...
+ * [[FOSDEM_2011]]
+ * [[DebConf10]]
+ * [[GNU Hackers Meeting, 2010, Den Haag|ghm2010]]
+ * [[FOSDEM_2010]]
+ * [[EuroSys_2009]]
+ * [[FOSDEM_2008]]
+ * [[Weekend_at_stesie's|stesie_2007-10-12]]
+ * [[FOSDEM_2007]]
+ * [[RMLL_2006]]
+ * [[FOSDEM_2006]]
+ * [[RMLL_2005]]
+ * [[FOSDEM_2005]]
+ * ...
diff --git a/community/meetings/debconf10.mdwn b/community/meetings/debconf10.mdwn
new file mode 100644
index 00000000..3b83a8cc
--- /dev/null
+++ b/community/meetings/debconf10.mdwn
@@ -0,0 +1,27 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="DebConf10"]]
+
+<http://debconf10.debconf.org/>
+
+ * {{$banck_hurd}}
+
+
+[[!ymlfront data="""
+
+banck_hurd:
+
+ "presentation (including video) by Michael Banck: [*Debian GNU/Hurd -- Past.
+ Present. And
+ Future?*](http://penta.debconf.org/dc10_schedule/events/595.en.html)
+ ([slides](http://people.debian.org/~mbanck/debian-hurd.pdf))"
+
+"""]]
diff --git a/community/meetings/eurosys_2009.mdwn b/community/meetings/eurosys_2009.mdwn
new file mode 100644
index 00000000..24c2b112
--- /dev/null
+++ b/community/meetings/eurosys_2009.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 2006, 2007, 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]]."]]"""]]
+
+[[!meta title="EuroSys 2009"]]
+
+<http://eurosys2009.informatik.uni-erlangen.de/>
+
+EuroSys will take place on March 30th to April 3rd in Nuremberg, Germany.
+
+
+# Who and When
+
+[[!table class="table_style_1" data="""
+"Name","Attending","Arrival","Return"
+"Neal Walfield","yes","Monday evening","Friday"
+"[[Thomas_Schwinge|tschwinge]]","yes","Monday evening","Friday"
+"""]]
diff --git a/community/meetings/fosdem_2005.mdwn b/community/meetings/fosdem_2005.mdwn
index 984c6637..8d7f459d 100644
--- a/community/meetings/fosdem_2005.mdwn
+++ b/community/meetings/fosdem_2005.mdwn
@@ -1,12 +1,14 @@
-[[meta copyright="Copyright © 2006, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2006, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+[[!meta title="FOSDEM 2005"]]
<http://fosdem.org/2005>
diff --git a/community/meetings/fosdem_2006.mdwn b/community/meetings/fosdem_2006.mdwn
index c775b658..a869f262 100644
--- a/community/meetings/fosdem_2006.mdwn
+++ b/community/meetings/fosdem_2006.mdwn
@@ -1,13 +1,15 @@
-[[meta copyright="Copyright © 2006, 2007, 2008
-Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2006, 2007, 2008 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+[[!meta title="FOSDEM 2006"]]
<http://fosdem.org/2006>
diff --git a/community/meetings/fosdem_2007.mdwn b/community/meetings/fosdem_2007.mdwn
index c320c1fc..ab9fa413 100644
--- a/community/meetings/fosdem_2007.mdwn
+++ b/community/meetings/fosdem_2007.mdwn
@@ -1,13 +1,15 @@
-[[meta copyright="Copyright © 2006, 2007, 2008
-Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2006, 2007, 2008 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+[[!meta title="FOSDEM 2007"]]
<http://fosdem.org/2007>
@@ -16,14 +18,13 @@ Bruxelles.
# Who And When
-[[table class="table_style_1" data="""
+[[!table class="table_style_1" data="""
"Name","Attending","Arrival","Return","Share room with us"
"[[AlfredoBeaumont]]","no","n/a","n/a","n/a"
"[[AndrewResch]]","no","n/a","n/a","n/a"
"[[BenAsselstine]]","no","n/a","n/a","n/a"
"[[Barry_de_Freese|bddebian]]","undecided; help convince the boss","?","?","?"
"[[BasWijnen]]","no","n/a","n/a","n/a"
-"[[ChristopherBodenstein]]","?","?","?","?"
"[[ColinLeitner]] and<br />KaroRilling","yes","2007-02-23<br />late","2007-02-26","**yes<br />(two persons)**"
"[[CyrilBrulebois]]","yes","2007-02-23<br />late","?","no (HurdFR)"
"Gaël Le Mignot","no","n/a","n/a","n/a"
@@ -32,13 +33,11 @@ Bruxelles.
"[[GuillemJover]]","no","n/a","n/a","n/a"
"[[JeroenDekkers]]","yes","2007-02-22<br />15:30","2007-02-26","**yes**"
"[[JohanRydberg]]","no","n/a","n/a","n/a"
-"[[JordiMallach]]","?","?","?","?"
"[[Main/TheDuck]]","yes","2007-02-23<br />late","?","no (HurdFR)"
"[[MarcPoulhies]]","no","n/a","n/a","n/a"
"[[MarcoGerards]]","most probably not","n/a","n/a","n/a"
"[[MarcusBrinkmann]]","yes","2007-02-<strike>22</strike>**23**<br />12:38","2007-02-<strike>26</strike>**25**<br />19:00","**yes**"
"[[MatthieuLemerre]]","no","n/a","n/a","n/a"
-"[[ManuelMenal]]","?","?","?","?"
"[[MichaelBanck]]","yes","2007-02-22<br />12:10","2007-02-26<br />11:05","**yes**"
"[[NealWalfield]]","no","n/a","n/a","n/a"
"[[NicolasCenta]]","yes","?","?","no (HurdFR)"
@@ -46,11 +45,9 @@ Bruxelles.
"[[OlafBuddenhagen]]","yes","probably 2007-02-22<br />14:32","2007-02-26","**yes**"
"[[PeterDeSchrijver]]","yes","?","?","no"
"[[RichardBraun]]","yes","2007-02-23<br />late","?","no (HurdFR)"
-"[[RolandMcGrath]]","?","?","?","?"
"[[SamuelThibault]]","yes","2007-02-24<br />10h17","2007-02-25<br />19h43","**yes**"
"[[SoerenSchulze]]","yes","2007-02-23<br />20:03","2007-02-25","**yes**"
"[[Stefan_Siegl|stesie]]","yes","2007-02-22<br />12:10","2007-02-26<br />11:05","**yes**"
-"[[ThomasBushnell]]","?","?","?","?"
"[[Thomas_Schwinge|tschwinge]]","yes","2007-02-22<br />12:10","2007-02-26<br />11:05","**yes**"
"[[TimRetout]]","yes","2007-02-23<br />lunchtime","2007-02-25<br />evening","no"
"[[TomBachmann]]","no","n/a","n/a","n/a"
@@ -91,7 +88,7 @@ Been there in 2006. It was okay.
[[SamuelThibault]] booked rooms at ~ 18.60€ there:
-[[table class="table_style_1" data="""
+[[!table class="table_style_1" data="""
"Night of...","Persons"
"2007-02-22","<strike>7</strike>**6**"
"2007-02-23","10"
diff --git a/community/meetings/fosdem_2008.mdwn b/community/meetings/fosdem_2008.mdwn
index 47d7771a..e9625fdf 100644
--- a/community/meetings/fosdem_2008.mdwn
+++ b/community/meetings/fosdem_2008.mdwn
@@ -1,13 +1,15 @@
-[[meta copyright="Copyright © 2006, 2007, 2008
-Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2006, 2007, 2008 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+[[!meta title="FOSDEM 2008"]]
<http://fosdem.org/2008>
@@ -17,59 +19,30 @@ Bruxelles.
# Who And When
-[[table class="table_style_1" data="""
+[[!table class="table_style_1" data="""
"Name","Attending","Arrival","Return","Share room with us"
-"Alfredo Beaumont","?","?","?","?"
-"Andrew Resch","?","?","?","?"
-"Ben Asselstine","?","?","?","?"
-"[[Barry_de_Freese|bddebian]]","?","?","?","?"
"[[Bas_Wijnen|baswijnen]] and girlfriend","yes","Friday","Monday","yes (two)"
"Christian Dietrich","no","n/a","n/a","n/a"
-"Christopher Bodenstein","?","?","?","?"
"Colin Leitner","no","n/a","n/a","n/a"
-"Cyril Brulebois","?","?","?","?"
-"Daniel Wagner","?","?","?","?"
-"Fredrik Hammar","?","?","?","?"
-"Gaël Le Mignot","?","?","?","?"
"[[Gianluca_Guida|GianlucaGuida]]","yes","Thursday","Monday","yes"
-"Guillaume Libersat","?","?","?","?"
-"Guillem Jover","?","?","?","?"
-"Jeff Bailey","?","?","?","?"
-"Jeroen Dekkers","?","?","?","?"
-"Johan Rydberg","?","?","?","?"
-"Jordi Mallach","?","?","?","?"
-"Marc Dequènes","?","?","?","?"
-"Marc Poulhies","?","?","?","?"
-"Marco Gerards","?","?","?","?"
"Marcus Brinkmann","yes","Friday, 17:00","Monday, 12:00","yes"
-"Mark Kettenis","?","?","?","?"
-"Matthieu Lemerre","?","?","?","?"
-"Manuel Menal","?","?","?","?"
"[[Michael_Banck|MichaelBanck]]","yes","Friday, 17:00","Monday, 14:00","yes"
"Neal Walfield","yes","Friday, 15:20","Monday, 12:00","yes"
-"Nicolas Centa","?","?","?","?"
-"Ognyan Kulev","?","?","?","?"
"Olaf Buddenhagen","yes","Fr 15:27/15:32/15:36 (nord/central/midi)","Mo 12:09 (central)","yes"
-"Peter de Schrijver","?","?","?","?"
"Richard Braun","no","n/a","n/a","n/a"
-"Roland McGrath","?","?","?","?"
"[[Samuel_Thibault|SamuelThibault]]","yes","Thursday","Monday","yes"
"[[Soeren_Schulze|SoerenSchulze]]","yes","Friday 19:43/19:46 Midi/Central","Sunday 13:14 Central","yes"
"[[Stefan_Siegl|stesie]]","no","n/a","n/a","n/a"
-"Thomas Bushnell","?","?","?","?"
"[[Thomas_Schwinge|tschwinge]]","yes","Friday, 17:00","Monday, 14:00","yes"
"Tim Retout","plans to go","?","?","no"
-"[[Tom_Bachmann|tombachmann]]","?","?","?","?"
"[[Vikram_Vincent|vincentvikram]]","no","n/a","n/a","n/a"
-"Wouter van Heyst","?","?","?","?"
-"Yoshinori K. Okuji","?","?","?","?"
"""]]
# Accommodation
(Large) evening counts:
-[[table class="table_style_1" data="""
+[[!table class="table_style_1" data="""
, Bas, Gianluca, Marcus, Michael, Neal, Olaf, Samuel, Soeren, Thomas, Total
Thu 21, , 1? , *<strike>1</strike>*, , , , 1 , , *<strike>1</strike>*, *<strike>4</strike>* 2
Fri 22, 2 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,10
@@ -121,7 +94,7 @@ gaah, Full!
<!--
[[SamuelThibault]] booked rooms at ~ 18.60&euro; there:
-[[table class="table_style_1" data="""
+[[!table class="table_style_1" data="""
"Night of...","Persons"
"2007-02-22","<strike>7</strike>**6**"
"2007-02-23","10"
diff --git a/community/meetings/fosdem_2010.mdwn b/community/meetings/fosdem_2010.mdwn
new file mode 100644
index 00000000..9def3c1c
--- /dev/null
+++ b/community/meetings/fosdem_2010.mdwn
@@ -0,0 +1,86 @@
+[[!meta copyright="Copyright © 2006, 2007, 2008, 2009, 2010 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]]."]]"""]]
+
+[[!meta title="FOSDEM 2010"]]
+
+<http://fosdem.org/2010>
+
+FOSDEM will take place on February 6th/7th at the Université Libre de
+Bruxelles.
+
+
+# Who And When
+
+[[!table class="table_style_1" data="""
+"Name","Attending","Arrival","Return","Share room with us"
+"Anatoly A. Kazantsev","no","","",""
+"Andrei Barbu","no","","",""
+"Arne Babenhauserheide","no","","",""
+"[[Bas Wijnen|baswijnen]]","Yes","Friday evening","Sunday afternoon","no"
+"Ben Asselstine","yes","?","?","yes (but no dates confirmed)"
+"Carl Fredrik Hammar","no","","",""
+"Colin Leitner","no","","",""
+"Emilio Pozuelo Monfort","probably not","","",""
+"Flavio Cruz","no","","",""
+"[[Gianluca Guida|GianlucaGuida]]","yes","Fr.","Mo.","yes"
+"Guillem Jover","no","","",""
+"Madhusudan C.S.","?","","",""
+"Marcus Brinkmann","yes","fr","mo","yes"
+"[[Michael Banck|MichaelBanck]]","yes","Fr., early afternoon","Su., night","yes"
+"Neal Walfield","yes","Fr","Mo","yes"
+"Olaf Buddenhagen","yes","fr","mo","yes"
+"Pino Toscano","no","","",""
+"[[Samuel Thibault|SamuelThibault]]","no","","",""
+"Sergiu Ivanov","no","","",""
+"[[Soeren Schulze|SoerenSchulze]]","yes","Fr","Mo","yes"
+"[[Stefan Siegl|stesie]]","no","","",""
+"[[Thomas Schwinge|tschwinge]]","yes","Fr., 10:35","Mo., 18:25","yes"
+"Vasily Sartakov","maybe","","",""
+"Zheng Da","no","","",""
+"""]]
+
+
+# Where (Accommodation)
+
+This year, we'll stay in the [Hotel Astrid](http://www.astridhotel.be/),
+together with the FSFE folks. The following data (without Ben's) has been
+forwarded to them:
+
+[[!table class="table_style_1" data="""
+ , Ben , Gianluca, Marcus, Michael, Neal, Olaf, Thomas, Total
+Fri 5, **?**, 1 , 1 , 1 , 1 , 1 , 1 , 6
+Sat 6, **?**, 1 , 1 , 1 , 1 , 1 , 1 , 6
+Sun 7, **?**, 1 , 1 , , 1 , 1 , 1 , 5
+"""]]
+
+
+# What
+
+On Saturday, Bas will be giving a [talk about *Iris*, his new
+kernel](http://fosdem.org/2010/schedule/events/emb_iris) (Sat., 18:00, Embedded
+Developer Room).
+
+On Sunday, one can join the other folks at the [Alt-OS Developer
+Room](http://fosdem.org/2010/schedule/devrooms/altos) (also see the [Haiku
+FOSDEM2010AltOSDevroomSchedule
+page](http://dev.haiku-os.org/wiki/FOSDEM2010AltOSDevroomSchedule)) where at
+least some of us will [spend their
+time](http://lists.gnu.org/archive/html/bug-hurd/2009-12/msg00080.html).
+
+At this very place, Olaf will be giving two presentations: [*Why is Anyone
+Still Working on the GNU
+Hurd?*](http://fosdem.org/2010/schedule/events/altos_hurd) (Sun., 10:30, Alt-OS
+Developer Room), and [*Porting KGI graphics drivers from Linux to GNU
+Hurd*](http://fosdem.org/2010/schedule/events/altos_kgi_hurd) (Sun., 13:00,
+Alt-OS Developer Room).
+
+There'll be further GNU folks around; [Mini GNU Hackers Meeting at FOSDEM
+Brussels 2010](http://www.gnu.org/ghm/2010/fosdem/).
diff --git a/community/meetings/fosdem_2011.mdwn b/community/meetings/fosdem_2011.mdwn
new file mode 100644
index 00000000..8522e10f
--- /dev/null
+++ b/community/meetings/fosdem_2011.mdwn
@@ -0,0 +1,36 @@
+[[!meta copyright="Copyright © 2006, 2007, 2008, 2009, 2010, 2011 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]]."]]"""]]
+
+[[!meta title="FOSDEM 2011"]]
+
+<http://fosdem.org/2011>
+
+FOSDEM will take place on February 5th/6th at the Université Libre de
+Bruxelles.
+
+
+# Who and When
+
+[[!table class="table_style_1" data="""
+"Name","Attending","Arrival","Return","Share room with us"
+"Emilio Pozuelo Monfort","yes"," "," "," "
+"Marcus Brinkmann","yes"," "," "," "
+"Michael Banck","yes"," "," "," "
+"Neal Walfield","yes","Friday noon","Monday noon","yes"
+"Richard Braun","no","n/a","n/a","n/a"
+"[[Thomas Schwinge|tschwinge]]","no","n/a","n/a","n/a"
+"Wouter van Heyst","yes"," "," "," "
+"""]]
+
+
+# What
+
+<http://lists.gnu.org/archive/html/bug-hurd/2010-12/msg00019.html>
diff --git a/community/meetings/ghm2010.mdwn b/community/meetings/ghm2010.mdwn
new file mode 100644
index 00000000..c8a9d8c3
--- /dev/null
+++ b/community/meetings/ghm2010.mdwn
@@ -0,0 +1,26 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+[[!meta title="GNU Hackers Meeting, 2010, Den Haag"]]
+
+<http://www.gnu.org/ghm/2010/denhaag/>
+
+ * {{$walfield_hurd}}
+
+
+[[!ymlfront data="""
+
+walfield_hurd:
+
+ "video of the presentation by Neal Walfield: [*GNU/Hurd: It's About Freedom
+ (Or: Why you should
+ care)*](http://audio-video.gnu.org/video/ghm2010/GNU-Hurd_-_Its_About_Freedom,_Or_Why_you_should_care.ogv)"
+
+"""]]
diff --git a/community/meetings/ghm2011.mdwn b/community/meetings/ghm2011.mdwn
new file mode 100644
index 00000000..7a2df8a0
--- /dev/null
+++ b/community/meetings/ghm2011.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta title="GNU Hackers Meeting, 2011, Paris"]]
+
+<http://www.gnu.org/ghm/2011/paris/>
diff --git a/community/meetings/rmll_2006.mdwn b/community/meetings/rmll_2006.mdwn
index 74ad21c9..0d82a2b1 100644
--- a/community/meetings/rmll_2006.mdwn
+++ b/community/meetings/rmll_2006.mdwn
@@ -1,13 +1,15 @@
-[[meta copyright="Copyright © 2006, 2007, 2008
+[[!meta copyright="Copyright © 2006, 2007, 2008
Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+[[!meta title="RMLL 2006"]]
The 7th Rencontres Mondiales du Logiciel Libre (also known as Libre Software
Meeting) will be held on July 4th-8th 2006 in Vandoeuvre-les-Nancy.
diff --git a/community/meetings/self-organised_2008.mdwn b/community/meetings/self-organised.mdwn
index dc86afc2..1403c115 100644
--- a/community/meetings/self-organised_2008.mdwn
+++ b/community/meetings/self-organised.mdwn
@@ -1,14 +1,14 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2009 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="Self-organised meeting, somewhere in 2008"]]
+[[!meta title="Self-organised meeting"]]
This meeting will be held in a to-be-determined place, at a to-be-determined time. This page hopes to help finding a good time and place, and finding out who wants to come.
@@ -20,6 +20,7 @@ Please add yourself here.
* [[Thomas_Schwinge|tschwinge]]
* [[Tom_Bachmann|tombachmann]] (weekend in the middle of germany would be preferred)
* [[Gianluca_Guida|GianlucaGuida]] (wherever, whenever)
+* [[Samuel_Thibault|SamuelThibault]] (wherever, whenever)
# Who will come?
@@ -35,6 +36,9 @@ Please add any suggestions here, and add to your name above if that time is good
This likely has the benefit of being relatively close to most people
+<http://www.linuxhotel.de/community.html> might be a suitable venue at very
+reasonable pricing.
+
## Somewhere in Italy
This likely has the benefit of better weather. ;-)
diff --git a/community/meetings/stesie_2007-10-12.mdwn b/community/meetings/stesie_2007-10-12.mdwn
index 8559c662..d59ceded 100644
--- a/community/meetings/stesie_2007-10-12.mdwn
+++ b/community/meetings/stesie_2007-10-12.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
On the weekend 2007-10-12 to 14 [[Stefan_Siegl|stesie]] invited Hurd people.
Colin Leitner and [[Thomas_Schwinge|tschwinge]] came, as well as novice
diff --git a/community/scolobb.mdwn b/community/scolobb.mdwn
deleted file mode 100644
index 6c959f1e..00000000
--- a/community/scolobb.mdwn
+++ /dev/null
@@ -1,166 +0,0 @@
-[[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]]."]]"""]]
-
-# scolobb
-
-Sergiu Ivanov, interested non-student
-
-Mail: <mailto:unlimitedscolobb@gmail.com>
-
-Project: Namespace-based translator selection
-
----
-
-## Current Task
-
-Write the filesystem proxy for namespace-based translator selection (*nsmux*).
-
-The code is at <http://github.com/scolobb/nsmux/tree/master>.
-
----
-
-###Current Status
-
-####DONE:
-
-* The skeleton which mirrors the filesystem.
-
-####TODO:
-<<<<<<< HEAD:community/scolobb.mdwn
-
-<<<<<<< HEAD:community/scolobb.mdwn
-* Provide shadow nodes (modify the standard version of netfs_S_dir_lookup).
-=======
-* Implemented the propagation of a translator on all files belonging
- to directory 'dir' in the case of the following query: 'dir,,x'
- (might change, see the thing with "recursive wrappers")
->>>>>>> web commit by scolobb:community/scolobb.mdwn
-
-<<<<<<< HEAD:community/scolobb.mdwn
-* Create the generic filter translator.
-=======
-* Any translator can access the untranslated version of the node it is
- to be set upon by specifying the corresponding flags to the
- <lib>_startup routine, where <lib> is the name of the library used
- to create the translator.
->>>>>>> web commit by scolobb:community/scolobb.mdwn
-
-* Create the translator '0' (providing the untranslated version of the
- node).
-
-* Create the "recursive wrappers" for one-node translators.
-=======
->>>>>>> web commit by scolobb:community/scolobb.mdwn
-
-* Provide proxy nodes (modify the standard version of netfs_S_dir_lookup).
-
-* Create the generic filtering translator.
-
-* Create the translator '0' (providing the untranslated version of the
- node).
-
-* Create the "recursive wrappers" for one-node translators.
-
-* Create special translators for the main proxy so that its functionality
- should be complete.
-
-* Refine the skeleton in several places so that it should become faster
- and more reliable.
-
-* Kill bugs.
-
-<<<<<<< HEAD:community/scolobb.mdwn
-<<<<<<< HEAD:community/scolobb.mdwn
-=======
->>>>>>> web commit by scolobb:community/scolobb.mdwn
-* Integrate nsmux upstream.
-
-<<<<<<< HEAD:community/scolobb.mdwn
-=======
->>>>>>> web commit by scolobb:community/scolobb.mdwn
-=======
->>>>>>> web commit by scolobb:community/scolobb.mdwn
-* Solve the libtrivfs stacking issue.
-
-<<<<<<< HEAD:community/scolobb.mdwn
-<<<<<<< HEAD:community/scolobb.mdwn
-=======
->>>>>>> web commit by scolobb:community/scolobb.mdwn
-* Patch libnetfs (it does not support file_get_translator_cntl, for
- instance).
-<<<<<<< HEAD:community/scolobb.mdwn
-=======
-* Patch libnetfs (?).
->>>>>>> web commit by scolobb:community/scolobb.mdwn
-=======
->>>>>>> web commit by scolobb:community/scolobb.mdwn
-
----
-
-###Progress
-
-<<<<<<< HEAD:community/scolobb.mdwn
-####6: Sun Aug 3 - ?:
-=======
-####6: Mon Aug 4 - ?
->>>>>>> web commit by scolobb:community/scolobb.mdwn
-
-<<<<<<< HEAD:community/scolobb.mdwn
-<<<<<<< HEAD:community/scolobb.mdwn
-> Implement the shadow nodes.
-=======
-> Implemeting the proxy nodes.
->>>>>>> web commit by scolobb:community/scolobb.mdwn
-=======
-> Implementing the proxy nodes.
->>>>>>> web commit by scolobb:community/scolobb.mdwn
-
-####5: Thu Jul 24 - Thu Jul 24:
-
-> Created a *libnetfs*-based one-node translator, working exactly like the *libtrivfs*-based translator I had written before; the former, however, can be included in a translator stack.
-
-####4: Tue Jul 22 - Thu Jul 24:
-
-> Attempted to make a *libtrivfs*-based translator to be able to be stacked upon itself (to be able to receive a translator on top of itself, more exactly); attempted to borrow some code from *libnetfs* but this didn't bring any results.
-
-####3: Sun Jul 20 - Tue Jul 22:
-
-> Implemented the possibility to propagate a translator on all files belonging to a directory 'dir' in the request of the type 'dir,,x/'.
-
-####2: Thu Jul 17 - Fri Jul 18:
-
-> Extended the lookup code in *nsmux* to allow for looking up nodes like 'file,,x' and added the possibility to escape the double-comma in the following way: ',,,'.
-
-####1: Mon Jul 12 - Tue Jul 13:
-
-> Implemented a simple *libtrivfs*-based translator to test the lookup code for *nsmux*.
-
-####0: Sat Jul 12 - Sat Jul 12:
-
-> Made small changes to the code of *filterfs* to fit the needs of *nsmux*.
-
----
-
-## Completed Tasks
-
-####2: Sat May 3 - Fri Jul 17:
-
-> Write a translator that should filter the contents of the directory it is set on according to some property. The property can be an arbitrary command.
-
-> The code is at <http://github.com/scolobb/filterfs/tree/master>.
-
-####1: Mon Apr 28 - Wed Apr 30:
-
-> Wrote a Python extension module in C for retreiving the uptime. The module is based on the code of *w*.
-
-####0: Sun Apr 27:
-
-> Followed the code of *dmesgd* (<http://www.bddebian.com/junk/dmesgd/>) kindly offered by **bddebian** and rewrote it from scratch as a tutorial.
-
diff --git a/community/weblogs.mdwn b/community/weblogs.mdwn
index 016c483f..28f413eb 100644
--- a/community/weblogs.mdwn
+++ b/community/weblogs.mdwn
@@ -1,17 +1,24 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2009, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Weblogs from Hurd programmers and enthusiasts.
-[[inline
-pages="community/weblogs/*/* and !*/discussion"
+[[!map
+pages="community/weblogs/* and !community/weblogs/*/*"
+show=title]]
+
+---
+
+[[!inline
+pages="community/weblogs/*/* and !community/weblogs/*/*/*"
show=0
actions=no
rootpage="community/weblogs" postformtext="Add a new user named:"]]
diff --git a/community/weblogs/ArneBab.mdwn b/community/weblogs/ArneBab.mdwn
index 364672e0..1e80e5a8 100644
--- a/community/weblogs/ArneBab.mdwn
+++ b/community/weblogs/ArneBab.mdwn
@@ -1,18 +1,20 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2009 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
I'm just a Hurd dabbler who likes the ideas behind the Hurd:
-"With the Hurd, users can change anything in their system which doesn't affect other users."
+*"With the Hurd, users can change anything in their system which doesn't affect other
+users."*
-And this is one definition of freedom in a community: "Do what you want as long as you don't restrict others from doing what they want."
+And this is one definition of freedom in a community: *"Do what you want as long as
+you don't restrict others from doing what they want."*
In contrast, current systems (like Linux, MacOSX, Windows or others) require root/admin access to just install a new file system for reading out a nonstandard USB-stick (OK, who'd put reiserfs, zfs or similar on a USB stick? but still...).
@@ -36,8 +38,8 @@ See you in the Hurd!
----- My Blog -----
-[[inline
-pages="community/weblogs/ArneBab/* and !*/discussion"
+[[!inline
+pages="community/weblogs/ArneBab/* and !community/weblogs/ArneBab/*/*"
show=0
actions=no
rootpage="community/weblogs/ArneBab" postformtext="Add a new entry named:"]]
diff --git a/community/weblogs/ArneBab/2008-07-12-codeswarm-movies-for-the-hurd.mdwn b/community/weblogs/ArneBab/2008-07-12-codeswarm-movies-for-the-hurd.mdwn
index 62d1ae36..54bd0eff 100644
--- a/community/weblogs/ArneBab/2008-07-12-codeswarm-movies-for-the-hurd.mdwn
+++ b/community/weblogs/ArneBab/2008-07-12-codeswarm-movies-for-the-hurd.mdwn
@@ -2,20 +2,26 @@ Today (OK, this night) I created some codeswarm movies to visualize the code his
What's particularly interesting to me in gnumach is the tschwinge - sthibaul effect in march 2008, where development suddenly seems to speed up enormeously.
-The code movies are created from the history of the cvs branches gnumach and hurd.
+It clearly shows how much impact just two developers can have - you can have that kind of an impact, too!
+
+The code movies are created from the history of the cvs branches gnumach, hurd-l4 and
+hurd.
The movies:
- - [gnumach](http://draketo.de/filme/codeswarm/gnumach_code_evolution.avi)
+ - [Gnumach](http://draketo.de/filme/codeswarm/gnumach_code_evolution.avi)
+
+ - [Hurd](http://draketo.de/filme/codeswarm/gnu_hurd_code_evolution_1_min.avi)
- - [hurd](http://draketo.de/filme/codeswarm/gnu_hurd_code_evolution_1_min.avi)
+ - [Hurd L4](http://draketo.de/filme/codeswarm/hurd-l4.avi)
- - [hurd wiki](http://draketo.de/filme/codeswarm/hurd_wiki.avi)
+ - [Hurd wiki](http://draketo.de/filme/codeswarm/hurd_wiki.avi)
in gnumach, red is the "kern", while in "hurd" red is stuff in "release".
.*doc.* is dark blue and any stuff named .*linux.* is shown in a blue-green in
-both.
+both. In Hurd-L4 is annotated: It shows libc, gcc, Hurd and L4 kernel commits in
+different colors.
The hurd wiki movie shows all web commits as "web-hurd@gnu.org", and you can clearly see that most changes are being done via the version control system. There's a way to split the web-commits, but since there aren't many, I leave that for another day :) - [article on the ikiwiki page](http://ikiwiki.info/news/code_swarm/).
diff --git a/community/weblogs/ArneBab/2008-08-02-gnu_hurd_and_x.mdwn b/community/weblogs/ArneBab/2008-08-02-gnu_hurd_and_x.mdwn
new file mode 100644
index 00000000..d72f4cef
--- /dev/null
+++ b/community/weblogs/ArneBab/2008-08-02-gnu_hurd_and_x.mdwn
@@ -0,0 +1,38 @@
+Getting X to work on the GNU/Hurd
+=================================
+
+This is a try to get X to work in my qemu GNU/Hurd.
+
+*This is a first try, my next one will be with the [[guide_from_this_wiki|Hurd/DebianXorg]].*
+
+Firstoff: I used the following guides:
+
+* [X Under the Hurd from debian-hurd](http://www.kerneltraffic.org/debian-hurd/dh20000112_31.html#3)
+* [GNU/Hurd FAQ](http://www.gnu.org/software/hurd/faq.en.html#q4-7)
+
+
+What I did
+----------
+
+I worked as root.
+
+First I installed xorg, x-window-system-code, rxvt and twm:
+
+ apt-get install xserver-xorg x-window-system-core rxvt twm
+
+Then I set the LD_LIBRARY_PATH and DISPLAY
+
+ export LD_LIBRARY_PATH=/usr/X11R6/lib
+ export DISPLAY=localhost:0.0
+
+After that I set the mouse and keyboard translator.
+
+ settrans /dev/kbd /hurd/kbd /dev/kbd
+ settrans -c /dev/mouse /hurd/mouse --protocol=ps/2
+
+Then I started x
+
+ startx
+
+It didn't work yet - but watch the blog for updates - I'll post once I get it
+working.
diff --git a/community/weblogs/ArneBab/2011-04-06-application-pyhurd.mdwn b/community/weblogs/ArneBab/2011-04-06-application-pyhurd.mdwn
new file mode 100644
index 00000000..b0e57bfb
--- /dev/null
+++ b/community/weblogs/ArneBab/2011-04-06-application-pyhurd.mdwn
@@ -0,0 +1,148 @@
+Python Bindings for the Hurd (PyHurd)
+==========================
+
+## Contact information
+
+- Name: Arne Babenhauserheide
+- E-Mail Address: arne_bab@web.de
+- IRC-nick: ArneBab @ freenode
+- Jabber-ID: arne@jabber.fsfe.org
+- Phone-number: XXXXXXXXX
+- GnuPG key: http://draketo.de/inhalt/ich/pubkey.txt
+
+## Who I am
+
+I am a physics student from Heidelberg, Germany, a passionate free software user and roleplayer, and I started contributing to the Hurd in minor ways about 5 years ago. Now my coding skills are good enough (and I have enough time) that I feel ready to tackle a GSoC project - and I want to take the chance GSoC offers and do a focussed effort for contributing to free software before I am no longer a student. I married 4 years ago and now have a 5½ month old son whoose happy laughing can make you forget everything around you - or at least it does that to me, but what else could you expect to hear from his father about him ;)
+
+## Project
+
+For this years GSoC I want to turn the currently rudimentary Python Bindings of the Hurd into a complete Python-library for low-level Hurd and Mach hacking with high level functionality to allow for easy creation of complex applications. Particularly it should make it possible to utilize the whole Python standard library for translators.
+
+## Preliminary Schedule
+
+ * *Community bonding period.*
+ Read up on the current C-interface to the Hurd and Cython. Especially grok the Hurd hacking guide. Add docstrings to all existing source files (where they are missing) explaining what they do. Add auto-generated API-docs. Deliverable: Easy to understand API-docs of the current PyHurd, a simple way to generate them from the sources automatically.
+ * *May 23.*
+ Coding starts.
+ * *May 30.*
+ Finished a basic Hello World translator, naively implementing the necessary Mach parts directly in the translator.
+ 1. A simple program which gets a Mach port and can receive messages on that port. It has to get and hold its port at startup and send a reply port, needs to use mach_msg to get the messages, should be able to deallocate the port and must have a kill condition (for example 10 received messages).
+ 2. stdout functionality, to print all Mach messages (for debugging and to make sure that they really get received entirely).
+ 3. a parser for the Mach read file message similar to trivfs\_S\_io\_read
+ * *June 6.*
+ Moved the functionality for reading into a simple API using decorators to define actions
+ and ported Hello World to use it:
+
+ """Show Hello World."""
+ from translator import repres
+ @repres.text.event
+ def on_text_read(size):
+ return "Hello, World!"[:size]
+ * *June 13.*
+ Implemented single file read-write in the API. Added a simple writethrough translator. The API code is nicely commented.
+ * *June 20.*
+ Access Control and file attributes. Added lock_file translator which just adjusts the effective file access codes and can be used to lock a file as long as the translator is used. Might be useful for quick testing.
+ * *June 27.*
+ Translator commandline arguments and testing.
+ * *July 4.*
+ Translator: Overlay with backend store: write changes to a different file. Makes any file writeable, but keeps the changes only visible for the user who set up the translator. Effectively single-file unionmount.
+ * *July 11.*
+ Mid-term: trivfs in python works: It is possible to write translators in Python with relative ease.
+ * *July 18.*
+ More complex, specialized and helper translator libraries, along with example translators. This should recreate some of the Hurd libraries for Python and add convenience options.
+ * *July 25.*
+ Full featured setttrans in Python.
+ * *August 1.*
+ Redesigned and realized an updated controlling API with the existing direct Cython bindings.
+ * *August 8.*
+ More translators and integrating into the build system.
+ * *August 15.*
+ Suggested Pencils down. The translator API is easy to use, there are many example translators and there is a full featured settrans command in Python using the easier controlling API which shows how to control the Hurd directly from Python. The code is pushed to <https://github.com/ArneBab/PyHurd> and a git repo at <http://git.savannah.gnu.org/cgit/hurd> and integrated into the build system with a switch to enable building PyHurd.
+ * *August 22.*
+ Firm pencils down.
+
+
+## Initial Fix
+
+Initial Fix: Making PyHurd build again under Cython 0.14.1. Sent as patch series to bug-hurd@gnu.org
+
+## Detailed answers
+
+### What I have to learn, and what I already know
+
+I need to dive into the detailed interfaces of the Hurd to get a better understanding of the exact requirements for a well usable Python interface, especially for higher level functionality, and read up more on working with Cython.
+
+I already know Python and I did design my share of interfaces for my own hobby projects ([TextRPG][], [Fungus][], [evolve-keyboard-layout][] and others).
+
+[TextRPG]: https://bitbucket.org/ArneBab/textrpg/
+[Fungus]: https://bitbucket.org/ArneBab/fungus
+[evolve-keyboard-layout]: https://bitbucket.org/ArneBab/evolve-keyboard-layout
+
+Also I know the functionality and design of the Hurd from a user perspective and can code in C and C++.
+
+### Why did you choose this project idea? What do you consider most appealing about it?
+
+FIrstoff: It is about making it possible for me to hack on the Hurd using my favorite programming language.
+
+Also I can learn more about accessing low-level interfaces directly (as opposed to just using higher level abstractions) and grok the ins and outs of creating Python extensions - into which I wanted to dive for a long time now.
+
+And I helped getting the project running and am intrigued by how far it can be pushed.
+
+### Have you been involved in any free software ("Open Source") projects yet? Which projects, how long, and in what way have you been involved? Have you been active in the Hurd project/Hurd community before?
+
+I worked on documentation and news for the Hurd, wrote two plugins and the usage guide for Mercurial and created a bunch of personal Python projects. Also I generally try to nudge other Hurd developers into the direction of actually getting the system useful for people (and communicating its strengths) - and do the same for the freenet project.
+
+In my opinion, my major contribution to the Hurd is the Month of the Hurd, a try at fixing the Hurds reputation for never being finished. To achieve that goal, the Month of the Hurd only lists actually testable successes for which I can easily describe how they get the Hurd closer to its vision, ideally those which are already committed.
+
+### Please briefly describe the Hurd, including the goals, architecture etc. Also, what makes you interested in the Hurd? Why do you want to work on it? What is your vision of it's future development?
+
+The Hurd offers much greater freedom for users compared to Linux, because every user can change his/her environment to a much greater extent.
+
+Also it allows for easier low-level tinkering, making it possible for hobby-hackers to work on stuff which in linux requires dabbling with kernel-sources. Also it makes it much easier to test these low-level work, so a community can spawn which informally shares low-level hacks, giving a much bigger momentum for low-level work.
+
+And it allows for containment of potentially dangerous applications using subhurds. As a very simple example, I can open a webbrowser without giving it access to the internet and just add that capability later, when I really want to go online (as opposed to just showing local files).
+
+But mainly:
+
+ settrans -a ftp\: /hurd/hostmux /hurd/ftpfs /
+ dpkg -i ftp://ftp.gnu.org/…/*.deb
+
+And that’s only the beginning.
+
+### Are you subscribed to the bug-hurd@gnu.org mailing list? (See http://lists.gnu.org/mailman/listinfo/bug-hurd )
+
+Yes :)
+
+### Do you have a permanent internet connection, especially during the time of the summer session? Are you able and willing to hang out on the Hurd IRC channel regularly? (As in: Running the IRC client more or less permanently and checking for activity now and then.) If it turns out that your mentor lives in a different time zone, could you shift your day/night rhythm to better match that of your mentor and other Hurd developers?
+
+Yes, a permanent internet connection as well as a permanently running computer. Since I’m used to also work later in the evening (on hobby projects), the time zone should not be a major issue.
+
+### When does your university term end, when are your exams, and when does the next term begin?
+
+I have a clean timetable for the summer: No exams anymore.
+
+### How much time do you intend to spend on your GSoC project per day/week during the summer months?
+
+I plan to spend at least 40 hours per week on the PyHurd.
+
+### What other major activities will you engage in during the summer? (Moving apartments, longer vacations, other obligations, etc.) If any, how do you intend to make sure you will be able to dedicate sufficient time to your project nevertheless?
+
+Finding a job for after the GSoC. This should not take too much time, all in all, but rather mean short out-times now and then.
+
+### How do you intend to make sure that your code will keep on being maintained and supported properly after the end of the GSoC program?
+
+My main plan to keep it maintained is to comment it cleanly, and naturally to keep using the Hurd and PyHurd itself, so any breakage will bother me personally.
+
+Also i want to get it merged into the main git repositories, so it is directly accessible for later developers.
+
+### Anything else you want to add to your application?
+
+I’d love to work on PyHurd, because it grips me more and more. For example a high level API might get as simple as
+
+ from translator.source.text import *
+ from translator.repres.tree import *
+ def source_text_changed(text): … (adapt tree object)
+ def repres_tree_changed(tree): … (adapt text object)
+ → 2-way connectingk,5
+ writeonly is then done by simply leaving out the definition for the source_<whatever>_changed.
+ source is the node below and repres is the translated node
diff --git a/community/weblogs/ArneBab/2011-04-06-application-python-test.mdwn b/community/weblogs/ArneBab/2011-04-06-application-python-test.mdwn
new file mode 100644
index 00000000..4c20afa1
--- /dev/null
+++ b/community/weblogs/ArneBab/2011-04-06-application-python-test.mdwn
@@ -0,0 +1 @@
+Cancelled. See [[community/weblogs/ArneBab/2011-04-06-application-pyhurd]] instead.
diff --git a/community/weblogs/ArneBab/Hurd-showcase-qemu-image.mdwn b/community/weblogs/ArneBab/Hurd-showcase-qemu-image.mdwn
new file mode 100644
index 00000000..00d09094
--- /dev/null
+++ b/community/weblogs/ArneBab/Hurd-showcase-qemu-image.mdwn
@@ -0,0 +1,111 @@
+I’m currently preparing a qemu image for the Hurd which allows testing the capabilities of the Hurd with as little effort as possible.
+
+**Work in progress. These are my in-development notes.**
+
+For that I want to use:
+
+* An up to date debian image (no longer online, but I have a copy here).
+* My [Hurd Intro](http://bitbucket.org/ArneBab/hurd_intro),
+* Translators from [hurd-extras](http://www.nongnu.org/hurdextras/) and the [incubator](http://git.savannah.gnu.org/cgit/hurd/incubator.git/), and naturally
+* a lot of apt-get update; apt-get upgrade and apt-get dist-upgrade :) (all worked flawlessly).
+
+## Working
+
+### Generally
+
+ # ssh with public key
+ apt-get install random-egd
+ ssh-keygen
+
+ # build tools
+ apt-get install build-essential
+
+### StoreIO
+
+ # mount an iso image
+ mount foo.iso bar -t iso9660fs
+ # see myfile as device
+ settrans foo /hurd/storeio myfile
+ # so that means I can pack a complete chroot (300MB) into a file with storeio and ext2fs — giselher
+
+ # nfs mount anywhere (TODO: check this with antrik)
+ mount server:/home /home -t nfs
+ settrans /home /hurd/nfs server:/home
+
+## In Progress
+
+### Hurdextras
+
+ hg clone <hurdextras repo>
+
+### httpfs
+
+ # pkg-config is needed to avoid “PKG_CHECK_MODULES syntax error near unexpected token `HTTPFS,'”
+ # pkg-config must be installed before you run autoreconf.
+ apt-get install autoconf autoconf-archive libxml2-dev pkg-config
+ autoreconf -i -f
+ ./configure
+ make
+ make install
+
+ settrans -ac gnu /usr/local/httpfs www.gnu.org/
+ # (breaks, because libxml2 needs pthreads → work to do.)
+ # (what we need: pthreads in translators. → see the [work of Barry](https://savannah.gnu.org/task/?func=detailitem&item_id=5487))
+ # check: for i in `objdump -x /usr/local/bin/httpfs |grep NEEDED| sed s/.*NEEDED//`; do echo $i; objdump -x /usr/lib/$i | grep pthread; objdump -x /lib/$i | grep pthread; done
+
+### Tarfs
+
+ apt-get install zip libz-dev libbz2-dev
+ git clone git://git.sv.gnu.org/hurd/incubator.git tarfs
+ cd tarfs/
+ git checkout tarfs/master
+ cd tarfs
+ make
+ make install
+ # works, though with warnings.
+
+ settrans -ca new /hurd/tarfs -cz test/intro.tar.gz
+ cp repos/intro/README new/
+ settrans -g new
+ tar -tf test/intro.tar.gz
+ # works
+
+ tar -cf test/intro.tar repos/intro
+ settrans -ac t /hurd/tarfs test/intro.tar
+ # (settrans: /hurd/tarfs: Translator died :( ⇒ more work to do )
+
+### nsmux
+
+ git clone git://git.sv.gnu.org/hurd/incubator.git nsmux
+ cd nsmux/
+ git checkout -b nsmux origin/nsmux
+
+ apt-get install autoconf autoconf-archive
+ autoreconf -i -f
+ ./configure
+ make
+ make install
+
+ cd ../..
+ mkdir test
+ touch test/hello
+ settrans -ca test2 /usr/local/bin/nsmux test
+ # tar -cvf test/intro.tar repos/hurd_intro
+ cat test2/hello
+ cat test2/hello,,hello
+ # Hello, World!
+
+### clisp
+
+ git clone git://git.sv.gnu.org/hurd/incubator.git clisp
+ cd clisp/
+ git checkout -b clisp origin/clisp
+
+ apt-get install texi2html
+ make
+ make install
+
+
+### debugging Translators
+
+ rpctrace
diff --git a/community/weblogs/ArneBab/What_a_Hurd_release_should_be_able_to_do_for_me.mdwn b/community/weblogs/ArneBab/What_a_Hurd_release_should_be_able_to_do_for_me.mdwn
new file mode 100644
index 00000000..51ef2a85
--- /dev/null
+++ b/community/weblogs/ArneBab/What_a_Hurd_release_should_be_able_to_do_for_me.mdwn
@@ -0,0 +1,40 @@
+I thought a bit about what I’d need from Hurd to use it for some of my real life tasks.
+
+My desktop has to be able to do everything it does now, and that under high load, so it currently is no useful target for the Hurd.
+
+But then I have an OLPC XO sitting here, and I use it mostly for work and for clearly defined tasks. As such it seems natural to me to check, what the Hurd would have to be able to do to support my workflow on the OLPC.
+
+### What I need
+
+* Writing text and programming Python with emacs. - *works*.
+* Use Mercurial for my versiontracked stuff. - *works*.
+* Reading websites with emacs and w3m or with lynx. - *works*.
+* Use SSH to go on my desktop and on the university machine. - *should work*.
+* Run X11 with dwm and emacs. - *should work*.
+* Boot Hurd on the OLPC from a USB stick. - *not yet*?
+* Support networking over wlan and wpa_supplicant. - *not yet*? Might DDE kit help?
+* Listen to music with Quod Libet in X11. - *not yet*. Needs audio support.
+
+### What would be nice
+
+* Run a Gentoo system. - not *really* needed, but nice to update my system with the same tools.
+* Watch videos with mplayer. - unlikely. Even with Linux as kernel watching videos pushes my XO to the limit. But this is not essential.
+
+
+So, as soon as Debian GNU/Hurd (or Arch Hurd) supports the things I need, I’ll put it on a USB-stick and use it for coding and writing.
+
+To be frank: I’d likely even use it without audio-support. I have an mp3 player and can feed it via USB. So the essential features for me are:
+
+### Essential features
+
+* Writing text and programming Python with emacs. - works.
+* Use Mercurial for my versiontracked stuff. - works.
+* Use SSH to go on my desktop and on the university machine. - should work.
+* Boot Hurd on the OLPC from a USB stick. - not yet?
+* Support networking over wlan and wpa_supplicant. - not yet? Might DDE kit help?
+
+### Conclusion
+
+The Hurd doesn’t yet do everything I need for my OLPC, but it isn’t that far away either. Grub already gets [ported to OLPC](http://grub.enbug.org/OLPC), so what’s missing to make the Hurd a work system for me are just *booting on OLPC from USB stick* and *wlan-support on OLPC*.
+
+All the rest I need for work is already in place.
diff --git a/community/weblogs/ArneBab/hurd-gsoc2008-code_swarm.mdwn b/community/weblogs/ArneBab/hurd-gsoc2008-code_swarm.mdwn
new file mode 100644
index 00000000..01757867
--- /dev/null
+++ b/community/weblogs/ArneBab/hurd-gsoc2008-code_swarm.mdwn
@@ -0,0 +1,11 @@
+Hurd GSoC 2008 code_swarm
+=========================
+
+I created a code_swarm of the work done in the Hurd project during this years Google
+Summer of Code.
+
+* [Hurd GSoC 2008 code_swarm](http://draketo.de/filme/codeswarm/hurd-gsoc2008.ogv)
+
+I hope you enjoy it!
+
+PS: Now also available [on vimeo](http://www.vimeo.com/2097773) thanks to scolobb!
diff --git a/community/weblogs/ArneBab/metadata-and-program-communication-akonadi-nepomuk-dbus.mdwn b/community/weblogs/ArneBab/metadata-and-program-communication-akonadi-nepomuk-dbus.mdwn
new file mode 100644
index 00000000..41c82c83
--- /dev/null
+++ b/community/weblogs/ArneBab/metadata-and-program-communication-akonadi-nepomuk-dbus.mdwn
@@ -0,0 +1,20 @@
+Just ideas for more elegant implementations of dbus and akonadi/nepomuk using Hurd interfaces
+
+tagging:
+
+ settrans ~/ /hurd/nsmux
+ ls ~/file,,metadata
+
+store in ~/.metadata
+
+network store: search for .metadata
+
+All metadata:
+
+ settrans meta /hurd/metadata --show-store
+
+dbus:
+
+ settrans -a /dbus /hurd/dbus
+
+Programs just add an active translator in /dbus: /dbus/org.… → receives dbus calls in-process.
diff --git a/community/weblogs/ArneBab/niches_for_the_hurd.mdwn b/community/weblogs/ArneBab/niches_for_the_hurd.mdwn
new file mode 100644
index 00000000..5febe7b6
--- /dev/null
+++ b/community/weblogs/ArneBab/niches_for_the_hurd.mdwn
@@ -0,0 +1,361 @@
+Niches for the Hurd
+===================
+
+In the bug-hud mailinglist we did a search for niches where the Hurd is *the biggest
+fish in the pond*.
+
+This search was segmented into four distinct phases, three of them major:
+
+- Brainstorm
+- Reality check: can already do vs. could be used for
+- Turn ideas into applications
+- Find a compromise -> About which niches should we talk in the wiki?
+
+
+Brainstorm
+----------
+
+"Which niches could there be for the Hurd?"
+
+### Basic Results
+
+The result is a mix of target groups,
+nice features and options of the Hurd, reasons for running a Hurd and areas where
+the Hurd offers advantages:
+
+#### Nice features and options the Hurd offers
+
+- Give back power to users: arbitrary mounts, subhurds
+- Nice features: dpkg -iO ftp://foo/bar/*.deb
+- Easier access to low-level functions
+- Advanced lightweight virtualization
+- operating system study purposes as its done with minix
+- The possibility to create more efficient and powerful desktop environments
+- Having a _complete_ GNU System
+- All-in-one out-of-the-box distro running a webserver for crash-proof operation.
+
+
+#### Target groups and strong environments
+
+- Tinkerers who like its design.
+- multicore-systems
+
+
+### The keyphrases in more detail or with additional ideas
+
+#### Give back power to users: arbitrary mounts, subhurds
+
+Simpler virtual computing environments - no need to setup XEN, everyone can
+just open up his/her computer for someone else by creating a new user account,
+and the other one can login and easily adapt the system for his/her own needs.
+If most systems just differ by the translators setup on them, people could
+even transfer their whole environment from one computer to another one without
+needing root access or more root interaction than creating a new user account.
+"I want my tools" -> "no problem, just setup your translators".
+
+Also it would be possible to just open an account for stuff like joining the
+"World Community Grid" allowing for easier sharing of CPU time.
+
+
+#### Easier access to low-level functions
+
+*"One important use is for very technical people, who don't always go with
+standard solutions, but rather use new approaches to best solve their
+problems, and will often find traditional kernels too limiting."*
+
+*"Another interesting aspect is application development: With the easily
+customized/extended system functionality, and the ability to contain
+such customizations in subenvironments, I believe that Hurd offers a
+good platform for much more efficient development of complex
+applications. Application developers can just introduce the desired
+mechanisms on a very low level, instead of building around existing
+abstractions. The extensible filesystem in particular seems extremely
+helpful as a powerful, intuitive and transparent communication
+mechanism, which allows creating truly modular applications."*
+
+
+#### Advanced lightweight virtualization
+
+*"There is also the whole area I called "advanced lightweight
+virtualization" (see
+http://tri-ceps.blogspot.com/2007/10/advanced-lightweight-virtualization.html
+), i.e. the ability to create various kinds of interesting
+subenvironments. Many use cases are covered by much bigger fish; but the
+flexibility we offer here could still be interesting: I think the middle
+grounds we cover between directly running applications, and full
+isolation through containers or VMs, are quite unique. This could
+simplify management of demanding applications for example, by partially
+isolating them from other applications and the main system, and thus
+reducing incompatibilities. Creating lightweight software appliances
+sounds like an interesting option.*"
+
+#### The possibility to create more efficient and powerful desktop environments
+
+*"While I believe this can be applied to any kind of applications, I'm
+personally most interested in more efficient and powerful desktop
+environments -- these considerations are in fact what got me seriously
+interested in the Hurd.*
+
+*Even more specifically, I've done most considerations (though by far not
+all) on modular web browsing environments. Those interested can read up
+some of my thoughts on this:*
+
+
+http://sourceforge.net/mailarchive/message.php?msg_name=20080909073154.GB821%40alien.local
+
+*(Just skip the text mode browsing stuff -- the relevant part is the long
+monologue at the end... I really should put these ideas into my blog.)"*
+
+
+
+#### Nice features
+
+Another example of features which would be easily possible with the Hurd:
+
+* transparent ftp (already possible!):
+ - settrans -c ftp: /hurd/hostmux /hurd/ftpfs /
+ - ls ftp://ftp.gnu.org/
+ - # -> list the files on the FTP server.
+
+
+* media-player translator:
+ - settrans play /hurd/mediaplayer_play
+ - cp song1.ogg song2.ogg play
+ - # -> files get buffered and played.
+
+or even:
+
+* cp ftp://foo/bar/ogg play
+
+that's KDEs fabled network transparency on the filesystem / shell level (where it belongs to be desktop agnostic).
+
+* add temporary filesystems anywhere via `settrans -a NODE /hurd/ext2fs`
+
+* On-demand mounted filesystems via a passive translator which unmounts the filesystem when it isn’t used for some time.
+
+* make everything temporarily writeable without really changing it via [[hurd/translator/unionfs]]. Store the changes on an external device.
+
+* Read tar archives and mbox files via `ls foo.tar.gz,,tarfs` and `ls foo.mbox,,mboxfs`, respectively → [[hurd/translator/nsmux]].
+
+* Use stuff like the new akonady (personal information) framework in KDE more efficiently from the shell.
+
+
+Reality check
+-------------
+
+Check which of the ideas can already be done easily with the Hurd in its current
+state, which ones are a bit more complex but already possible, which ones need a bit
+of coding (could be accomplished in a few months judging from the current speed of
+development), which ones need a lot of work (or fundamental changes) and which ones
+aren't possible.
+
+### Already possible and easy
+
+- Sample translators:
+ * hello world.
+ * transparently bind FTP into the filesystem
+ * hostmux + ftpfs -> connect to FTP automatically via asking for a dir named after the hostname -> fully transparent FTP filesystem: "touch ftp: ; settrans ftp: /hurd/hostmux /hurd/ftpfs / "
+ * bind any filesystem at any place in the directory tree (you have access to) without needing to be root.
+ * elegantly mount iso images and similar as unprivileged user.
+
+- Other useful stuff:
+ * Install deb-packages from an ftp server via 'dpkg -iO ftp://foo/bar/package.deb'
+ * remount a filesystem readonly as regular user: fsysopts /foo -r
+ * give a process additional group and user permissions at runtime:
+ $ groups
+ root
+ $ ps -L # gives me the PID of my login bash -> bashPID
+ ...
+ $ addauth -p bashPID -g mail
+ $ groups
+ root mail
+
+- Having a complete GNU System (but not yet on every hardware, and only about half the software Debian offers has been ported).
+
+### Already possible but complex or underdocumented
+
+- Easier access to low-level functions via translators.
+
+- Operating system study purposes as it's done with minix.
+
+- Tinkering for fun - need documentation about the fun things which can be done.
+
+### Need a few months of coding
+
+- A filesystem-based package manager.
+
+- subhurds for regular users
+ * A framework for confining individual applications is
+ really just one possible use case of the hurdish
+ subenvironments. Writing the tools necessary for that
+ should be quite doable in a few months. It's probably
+ not really much coding -- most of the work would be
+ figuring out how it should be set up exactly.
+ * subusers
+ * "subdo":
+ # Example: Let a virus run free, but any effect vanishes
+ # once the subhurd closes.
+ $ subdo --no-lasting-changes ./virus
+
+- subhurds for quickly adapting the whole system without bothering others.
+
+- Define your personal environment via translators, so you can easily take it with
+you (translators written in scripting laguages can make this easier - they could
+also for example be taken to each computer on USB stick).
+
+- A more powerful alternative to FUSE filesystems: While FUSE is limited to standard
+filesystem semantics, while Hurd translators can implement whatever they
+want.
+It is possible to change the behaviour in any aspect, including the way
+file name lookup works. Admittedly the only specific use case I know is
+the possibility to implement namespace-based translator selection with a
+set of normal translators, without any changes to the Hurd itself.
+It is also possible to extend the filesystem interfaces, adding new RPCs
+and options as needed. This allows using the filesystem for
+communication, yet implementing domain-specific interfaces where
+standard filesystems are too unefficient or cumbersome. A sound server
+would be one possible use case.
+
+- Namespace based translator selection (if you for example want to quickly check the
+contents of an iso image, just look at them via 'ls image.iso,,iso9660fs').
+
+### Need a lot of coding or fundamental changes
+
+- Effective resource management (For example via Viengoos on which Neal Walfield is
+working). The idea is that we could make a virtue out of necessity: Once we have a
+proper resource management framework, we should be able not only to catch up with
+traditional systems in this reagard, but in fact surpass them.
+
+- The possibility to create more efficient and powerful desktop environments.
+
+- Currently to offer CPU time to some project (like the World Community Grid), it is
+necessary to install a program from them, and they can then do only what that proram
+allows them to - which leads to reinventing a processing environment instead of just
+using the existing OS.
+With the Hurd people could just create a user for them, give that user specific
+permissions (like "you're always lowest priority"), add the public ssh keys of
+the project they want to donate CPU cycles to, and the project could just turn
+the computer into the environment it needs for the specific computation,
+without compromising the main system in any way (needs better resource management).
+
+- A shared MMORPG game world consisting simply of files for levels and person
+descriptions with access rights. All synchronizing is done on the translator
+level. Programs only have to display the given files and quickly update the
+state of their own files, so the programs stay very easy. The translator could
+notify the program when something changes.
+
+- Multicore systems (need to fixup Mach for SMP)
+
+- Running parts of the Hurd on different computers, maybe even with shared servers on
+dedicated hardware (Cloud Computing when the servers can be made to migrate from
+between computers). Maybe this should be placed in "need a lot of coding".
+
+
+
+### Unfeasible ideas
+
+
+
+Applications
+------------
+
+A minor phase, which will surely be interleaved with the others: Making the ideas
+tangible to turn them into ways how people can use the Hurd.
+
+*"Hey, look, this is the Hurd. You can use it like this to do that which you can't do
+as well/easily/elegantly in any other way."*
+
+
+### Applications for private use
+
+### Applications for companies
+
+### How an application should be presented so people can easily test and digest it
+
+We need stuff which gets people to say "hey that's cool!"
+
+And it must be readily available.
+If I have to search for arcane command line parameters before I can use it,
+it's too hard.
+
+From what I see, each direct cool application must be about as simple as
+
+$ qemu hurd-is-cool.img
+$ login root
+$ settrans cool /hurd/cool
+$ ls cool
+
+One main focus in this example is: No command line parameters but the ones we
+really need. No "-a", if the example is also cool without it.
+No "--console" if it works otherwise.
+
+Especially no *"qemu --cd livecd --hda hurd.img ..."* - that one is great for
+people who already know qemu or want to learn it, but the goal here isn't to teach people
+better usage of qemu, but to show them that the Hurd is cool, and only that.
+
+All that interesting advanced stuff just gets newcomers confused.
+
+The translator concept in itself is enough news to faze a mind - anything else
+can easily be too much.
+
+If the application isn't as simple as the example above, then the best step
+would be to see if we can make it as simple - if that involves writing trivial
+scripts than be it so. They are trivial only to those who already understand
+the underlying concepts.
+
+And now enough with rambling :)
+
+The Hurd is cool, and the complex to use applications are cool, too.
+But they are hard to present in a way newcomers easily understand.
+
+
+Compromise
+----------
+
+For each niche:
+
+- What do we have to do to conquer the niche?
+- How many additional programmers can the Hurd get in this niche?
+- How does choosing this niche limit the flexibility of further development (for example due to the goals of the people who join up)?
+- Can we easily move on to conquering the next niche once we got this one?
+- What should the Hurd accomplish on the long term (long term goals)? Which possible niches help that?
+
+Each participant:
+
+- Give your personal priorities to the niches:
+ * Must -> all of these of all developers must be included;
+ remember that at most 3 to 4 ideas can be conveyed in any text.
+ * Should -> The number of shoulds can be used for ranking and similar.
+
+("must", because in a community people can do what they perceive as important, and
+telling someone to stop what he's doing is no option (in my opinion))
+
+**Result: We talk about the niches we can already fulfill :)**
+
+
+Things to do
+------------
+
+todo-item -> niches for which it is useful.
+
+*This might be useful for the next GSoC.*
+
+### Easy
+
+- Port debian packages to the Hurd -> currently mainly tinkerers, but also any other niche. In the long run this is necessary for every user. Easy start for devs.
+- Document easier access to low-level functions via translators, one function at a time. -> tinkerers.
+- get nsmux ready for regular users by setting it up in the LiveCDs by default. -> show tinkerers what it can do.
+
+### Complex
+
+- A filesystem-based package manager: Unionmounting packages. With filterfs from nsmux packages any user should be able to selectively disable any package without affecting the system of others. Simple active translators can add packages. -> clean design and more freedom for tinkerers to setup test environments: “Does this also work with XY disabled?”
+- Enable subhurds for regular users via a subdo command: A framework for confining individual applications. -> tinkerers for testing their work.
+- Define your personal environment via translators, so you can easily take it with
+you ⇒ system on a USB stick. Would work great with a filesystem based package manager. -> ?
+
+### Huge
+
+- Get Hurd/GNU Mach ready for efficient multicore usage. -> multicore
+- Running parts of the Hurd on different computers, maybe even with shared servers on
+dedicated hardware (Cloud Computing when the servers can be made to migrate from
+between computers). -> multicore on steroids :)
diff --git a/community/weblogs/ArneBab/porting-simple-packages.mdwn b/community/weblogs/ArneBab/porting-simple-packages.mdwn
new file mode 100644
index 00000000..becea251
--- /dev/null
+++ b/community/weblogs/ArneBab/porting-simple-packages.mdwn
@@ -0,0 +1,72 @@
+# Quick porting guide for simple packages
+
+*If you want to help port a package with simple issues to the Hurd, please read on.*
+
+*just imagine joe C-doodler stumbling over some GNU philosophy and thinking “hey, I’ve got 2 free hours, why not help the Hurd?”*
+*for him I’d like to have a guide (and for me, the faulty-memory-does-too-many-things :) )*
+
+*a short guide “how to do simple ports” broken down to command line level: how to get the list of simple packages (youpi told me that here), how to get the source, how to test the fix, how to submit the fix.*
+
+## Setup an instant Hurd development environment
+
+See [[Instant Development Environment|contributing#index5h2]] - just follow the command to get a Hurd running in Qemu.
+
+## Getting the list of failed packages
+
+ wget http://people.debian.org/~sthibault/failed_packages.txt.gz
+ gunzip failed_packages.txt.gz
+
+## Finding a simple task
+
+ grep PATH_MAX failed_packages.txt -B 2
+
+Each of these packages is likely to be simple to fix. The output looks like this:
+
+ …
+ --
+ tex/lilypond_2.12.3-7 by buildd_hurd-i386-mozart [optional:uncompiled:bp{-100}:calprio{-63}:days{258}]
+ Reasons for failing:
+ > file-name.cc:88: error: 'PATH_MAX' was not declared in this scope
+ --
+ …
+
+in this case, lilypond is the package.
+
+Other simple tasks can be found on [[hurd/porting/guidelines]].
+
+## Downloading the package source and installing dependencies
+
+ apt-get source PACKAGE
+ apt-get build-dep PACKAGE
+
+For example
+
+ apt-get source lilypond
+ apt-get build-dep lilypond
+
+## Fix the package
+
+See [[hurd/porting/guidelines]] for help on fixing the package.
+
+Notes:
+
+* char path[4096] is evil. Use dynamic allocation (if you can).
+* use stuff like if (x < sysconf(_SC_PATH_MAX)) {}
+* if need be, make it conditional
+
+\#ifdef PATH_MAX
+old, POSIX-violating code
+\#else
+GNU, better code
+\#endif
+
+## Test the fix (compile, run tests)
+
+ cd PACKAGE
+ dpkg-buildpackage -B
+
+Also check the packages README for instructions.
+
+## Submit the fix
+
+See [[hurd/running/debian/patch_submission]].
diff --git a/community/weblogs/ArneBab/tasks-for-the-hurd.mdwn b/community/weblogs/ArneBab/tasks-for-the-hurd.mdwn
new file mode 100644
index 00000000..bf6224b2
--- /dev/null
+++ b/community/weblogs/ArneBab/tasks-for-the-hurd.mdwn
@@ -0,0 +1,63 @@
+Tasks for the Hurd
+==================
+
+*These tasks are compiled from the
+ [[community/weblogs/ArneBab/niches_of_the_hurd]] and
+ [[community/weblogs/ArneBab/what_we_need]]. The first asked “where
+ can the Hurd find niches where it is the biggest fish in the pond,
+ and how?” while the second asked “what do we still need to make the
+ Hurd usable for most of its developers as system for their day-to-day
+ tasks?”.*
+
+*This might be useful for the next GSoC. Please feel free to edit
+ and/or migrate it mercilessly :)*
+
+### Easy
+
+- Port debian packages to the Hurd -> currently mainly tinkerers, but
+ also any other niche. In the long run this is necessary for every
+ user. Easy start for devs.
+- Document easier access to low-level functions via translators, one
+ function at a time. -> tinkerers.
+- get nsmux ready for regular users by setting it up in the LiveCDs by
+ default. -> show tinkerers what it can do.
+- Test on modern machines. If it doesn’t work, file a bug:
+ [info](http://www.mail-archive.com/bug-hurd@gnu.org/msg19105.html).
+
+
+### Complex
+
+- A filesystem-based package manager: Unionmounting packages. With
+ filterfs from nsmux packages any user should be able to selectively
+ disable any package without affecting the system of others. Simple
+ active translators can add packages. -> clean design and more
+ freedom for tinkerers to quickly setup test environments: “Does this
+ also work with XY disabled?” ⇒ rapid testing for different base
+ systems.
+- Enable subhurds for regular users via a subdo command: A framework
+ for confining individual applications. -> tinkerers for testing
+ their work.
+- Define your personal environment via translators, so you can easily
+ take it with you ⇒ system on a USB stick. Would work great with a
+ filesystem based package manager -> use the capabilities of a system
+ and all its installed packages without having to give up your own
+ custom environment.
+
+- Implement USB support, maybe using DDE or DDEkit -> prerequisite to system on USB.
+- Add Wireless support, maybe via DDE.
+- Add sound support via a sound translator.
+- Add SATA support.
+- Stabilize Xorg, so it can run fast for days.
+- Add PPPoE capablilities.
+- Debug NFS for climm, w3m and git.
+- Port a full-featured browser (i.e. Firefox).
+- (Graphical Desktop and switching between console and X) or full
+ featured high-resultion console which doesn’t need X (and emacs :)
+ ).
+
+### Huge
+
+- Get Hurd/GNU Mach ready for efficient multicore usage. -> multicore
+- Running parts of the Hurd on different computers, maybe even with
+ shared servers on dedicated hardware (Cloud Computing when the servers
+ can migrate between computers). -> multicore on steroids :)
diff --git a/community/weblogs/ArneBab/technical-advantages-of-the-hurd.mdwn b/community/weblogs/ArneBab/technical-advantages-of-the-hurd.mdwn
new file mode 100644
index 00000000..35e55518
--- /dev/null
+++ b/community/weblogs/ArneBab/technical-advantages-of-the-hurd.mdwn
@@ -0,0 +1,56 @@
+Some technical advantages of the Hurd
+=====================================
+
+*→ An answer to [just accept it, truth hurds](http://blog.flameeyes.eu/2011/05/15/just-accept-it-truth-hurds), where Flameeyes told his reasons for not liking the Hurd and asked for technical advantages (and claimed, that the Hurd does not offer a concept which got incorporated into other free software, contributing to other projects). Note: These are the points I see. Very likely there are more technical advantages which I don’t see well enough to explain them. Please feel free to [point them out](http://draketo.de/comment/reply/447#comment-form).*
+
+*__Information for potential testers:__ The Hurd is already usable, but it is not yet in production state. It progressed a lot during the recent years, though. Have a look at the [[status_report|hurd/status]] if you want to see if it’s already interesting for you.*
+
+Thanks for explaining your reasons. As answer:
+
+Firstoff: [FUSE](http://fuse.sourceforge.net/) is essentially an implementation of parts of the [[translator_system|hurd/documentation/translators]] (which is the main building block of the [Hurd](http://hurd.gnu.org)) to Linux, and NetBSD recently got a [port of the translators system of the Hurd](http://netbsd-soc.sourceforge.net/projects/hurdt/). That’s the main contribution to other projects that I see.
+
+On the bare technical side, the **translator-based filesystem** stands out: The filesystem allows for making arbitrary programs responsible for displaying a given node (which can also be a directory tree) and to start these programs on demand. To make them persistent over reboots, you only need to add them to the filesystem node (for which you need the right to change that node). Also you can start translators on any node without having to change the node itself, but then they are not persistent and only affect your view of the filesystem without affecting other users. These translators are called active, and you don’t need write permissions on a node to add them.
+<!--break-->
+The filesystem implements stuff like Gnome VFS (gvfs) and KDE **network transparency on the filesystem level**, so those are available for all programs. And you can add a new filesystem as simple user, just as if you’d just write into a file “instead of this node, show the filesystem you get by interpreting file X with filesystem Y” (this is what you actually do when setting a translator but not yet starting it (passive translator)).
+
+One practical advantage of this is that the following works:
+
+ settrans -a ftp\: /hurd/hostmux /hurd/ftpfs /
+ dpkg -i ftp://ftp.gnu.org/path/to/*.deb
+
+This installs all deb-packages in the folder `path/to` on the FTP server. The shell sees normal directories (beginning with the directory “ftp:”), so shell expressions just work.
+
+You could even define a Gentoo mirror translator (`settrans mirror\: /hurd/gentoo-mirror`), so every program could just access mirror://gentoo/portage-2.2.0_alpha31.tar.bz2 and get the data from a mirror automatically: `wget mirror://gentoo/portage-2.2.0_alpha31.tar.bz2`
+
+Or you could add a unionmount translator to root which makes writes happen at another place. **Every user is able to make a readonly system readwrite** by just specifying where the writes should go. But the writes **only affect his view of the filesystem**.
+
+Starting a network process is done by a translator, too: The first time something accesses the network card, the network translator starts up and actually provides the device. This replaces most **initscripts in the Hurd: Just add a translator to a node**, and the service will persist over restarts.
+
+It’s a surprisingly **simple concept, which reduces the complexity of many basic tasks needed for desktop systems**.
+
+And at its most basic level, *Hurd is a set of protocols for messages which allow using the filesystem to coordinate and connect processes* (along with helper libraries to make that easy).
+
+Also it adds **POSIX compatibility to Mach** (while still providing access to the capabilities-based access rights underneath, if you need them). You can **give a process permissions at runtime** and take them away at will. For example you can start all programs without permission to use the network (or write to any file) and add the permissions when you need them.
+
+ groups # → root
+ addauth -p $(ps -L) -g mail
+ groups # → root mail
+
+And then there are subhurds (essentially **lightweight virtualization** which allows cutting off processes from other processes without the overhead of creating a virtual machine for each process). But that’s an entire post of its own…
+
+And the fact that a translator is just a simple standalone program means that these can be shared and tested much more easily, opening up completely new options for lowlevel hacking, because it massively lowers the barrier of entry.
+
+And then there is the possibility of *subdividing memory management* and using different microkernels (by porting the Hurd layer, as partly done in the NetBSD port), but that is purely *academic* right now (search for *Viengoos* to see what its about).
+
+
+So in short: *The translator system in the Hurd is a simple concept which makes many tasks easy, which are complex with Linux (like init, network transparency, new filesystems, …). Additionally there are capabilities, subhurds and (academic) memory management.*
+
+Best wishes,
+Arne
+
+*PS: I decided to read flameeyes’ post as “please give me technical reasons to dispell my emotional impression”.*
+
+*PPS: If you liked this post, it would be cool if you’d flattr it: <a href="http://flattr.com/thing/273582/Some-technical-advantages-of-the-Hurd" target="_blank">
+<img src="http://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" border="0" /></a>*
+
+*PPPS: Additional information can be found in [Gaël Le Mignot’s talk notes](http://kilobug.free.fr/hurd/pres-en/abstract/html/), in [niches for the Hurd](http://www.gnu.org/software/hurd/community/weblogs/ArneBab/niches_for_the_hurd.html) and the [[GNU_Hurd_documentation_pages|hurd/documentation]].*
diff --git a/community/weblogs/ArneBab/technical-advantages-of-the-hurd/discussion.mdwn b/community/weblogs/ArneBab/technical-advantages-of-the-hurd/discussion.mdwn
new file mode 100644
index 00000000..49b64509
--- /dev/null
+++ b/community/weblogs/ArneBab/technical-advantages-of-the-hurd/discussion.mdwn
@@ -0,0 +1,248 @@
+## Followup discussion in IRC
+
+IRC, freenode, #hurd, 2011-05-15
+
+<dl>
+<dt>&lt;LibreMan&gt;</dt><dd> ArneBab: hi, I read the hurd rant by flameeyes and your response ... I'm following Hurd for some time and would like to ask some questions about it, would you mind? :)</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> please ask :)</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> I don’t mind (as long as I have the time - which I have right now)</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> ok, so essentially I'm trying to figure out, as flameeyes probably is, whether reasons behind developing Hurd are more philosophical/value based or are there real-world technical advantages to it as well</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> antrik: I think his original remark was meant as part-jokingly remark to an aquaintance - which seems fitting, when you keep in mind that flameeyes works very hard and very much on Gentoo, hardly the most popular distro (but the one I like most).</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> LibreMan: the reasons for working on the Hurd are a little bit different for every contributor.</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> (or rather: vastly different :) )</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> as I'm reading about it and your reposne as well, I'm not sure the techical advantages you list would have any real world effect on usability of the OS, do you think they would?</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> I think they would</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> ArneBab: yeah, sure ... my reasons for supporting Hurd are philosophical/value based ... I'll say that outright</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> for example you enter an FTP address in your filebrowser. No problem. Then you want to grep the file contents.</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> you go into the shell and first need to get the files (completely inconvenient)</dd>
+<dt>&lt;-- npnth (~npnth@pdpc/supporter/active/npnth) hat das Netzwerk verlassen (Disconnected by services)
+<dt>&lt;ArneBab&gt;</dt><dd> or you use gnome and kde programs, and both access the same URL, but cache 2 times.</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> ArneBab: isn't that solved by mounting it?</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> or you want to implement your own desktop and need to do that network transarency stuff yourself.</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> You can’t really mount everything - especially not without root rights.</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> and that’s just one aspect.</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> But that’s only the technical side (he only wanted to hear that)</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> the thing is all these advantages seem too trivial to support a wholly new OS to be developed ... but maybe I'm mistaken, that's why I'm asking, I would love to be good techical reasons for Hurd ... but are not aware of any so far</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> What interests me the most as that I as user can change my environment without affecting others.</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> s/as/is/</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> the main community part is (and I think I missed that), that any server is just a userspace program.</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> it can be exchanged just like any other program</dd>
+<dt>&lt;antrik&gt;</dt><dd> ArneBab: yeah, I found the original remark after following the other links... though it's rather painful to trace the conversations :-)</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> ArneBab: yeah, I understand that ... but what practical advantage would that give me I do not see ... as a server administrator for example</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> I can write an improved filesystem and pass it to you for testing, and you test it only for a backup snapshot of your disk without rebooting.</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> As server admin, you don’t need to install all drivers users could need.</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> the users can just install what they need themselves.</dd>
+<dt>&lt;antrik&gt;</dt><dd> it certainly didn't sound half-joking though... and if it was meant privately, identi.ca is clearly NOT the right place</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> LibreMan: You simply provide a base which reduces the number of things people need to install.</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> ArneBab: but do not I have to give them access to raw HW too then?</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> antrik: I prefer to always assume good faith :)</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> brb</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> child</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> re</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> well, I do not see that people not able to install their own drivers on a server would be any problem currently</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> that's my point ... is seems to solve "problems" that are not really actual real world problems ...</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> LibreMan: no, you just give them a safe device, where a server makes sure they don’t do illegal things.</dd>
+<dt>&lt;antrik&gt;</dt><dd> LibreMan: most of the advantages are not directly visible, unless you do very specific things, where traditional systems impose limits</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> For me network transparency is a realworld problem</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> as is that I can’t give a program network access later</dd>
+<dt>&lt;antrik&gt;</dt><dd> but it makes many things easier, which in the end will translate into advantages for everyone I believe</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> “log out and in again to play games”</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> (after adding yourself to the games group)</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> or better still: Always start with minimal rights and only add what is really needed.</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> There’s no reason why a program should have access to my audio hardware without me granting it.</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> That way I could even run malicious software without having to fear compromising my system.</dd>
+<dt>&lt;antrik&gt;</dt><dd> LibreMan: I could come up with situations where it could help you as an administrator; but this is not really helpful. you won't really understand the advantages until you get into a specific situation that is hard to do on Linux for example, and much easier on the Hurd</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> ArneBab: well, then it becomes a tradeoff between security and user friendliness ... I do not think that problem is unsolvable currently, I think it is a design decision not to "solve it" as wast majority of users do not actually need or want it</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> LibreMan: Time and again I find myself sitting in front of my linux box and thinking “damn, this woul be so easy in the Hurd”</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> (I do most of my work on a Linux box)</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> Gentoo GNU/Linux with KDE and Emacs</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> antrik: yeah, could you give me an example of something that is hard on linux but easy under hurd? with real world implications for real use cases :)</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> LibreMan: Get a hg/git log of a repo on an ftp server</dd>
+<dt>&lt;antrik&gt;</dt><dd> LibreMan: no, it's *not* a tradeoff. the whole point is that the Hurd architecture allows users to customize their environment *without* compromising the security of the system</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> antrik LibreMan: I think there we have one point: When you use Linux you are used to thinking of the Linux limits as the absolute limits.</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> antrik: the point is, wast majority of users do not need that ... AFAIK</dd>
+<dt>-*- youpi is fed up with using sudo just to mount an iso image
+<youpi&gt;</dt><dd> really</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> youpi: dbus</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> LibreMan: just wait for the first strong linux worm which spreads in a game and requires sudo for install… </dd>
+<dt>&lt;youpi&gt;</dt><dd> (and it's just one of the strongest examples)</dd>
+<dt>&lt;youpi&gt;</dt><dd> Tekk_: ??</dd>
+<dt>&lt;antrik&gt;</dt><dd> LibreMan: ArneBab already gave you various exmples. including at least one that works out of the box</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> youpi: with dbus you don't need root permissions</dd>
+<dt>&lt;youpi&gt;</dt><dd> Tekk_: and you can mount any iso?</dd>
+<dt>&lt;antrik&gt;</dt><dd> (others would require some additional coding)</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> Tekk_: but something needs them.</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> youpi: oh, iso...</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> ArneBab: why would a game need sudo to install? :)</dd>
+<dt>&lt;youpi&gt;</dt><dd> Tekk_: yes, iso</dd>
+<dt>&lt;youpi&gt;</dt><dd> or $WHATEVER_FS</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> youpi: sec</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> LibreMan: yes, I would ask that, too. But the general Ubuntu user?</dd>
+<dt>&lt;youpi&gt;</dt><dd> or sshfs, or ftpfs, etc.</dd>
+<dt>-*- ArneBab had hoped you’d catch that :)
+<LibreMan&gt;</dt><dd> the area where I can imagine hurd being better is virtualization</dd>
+<dt>&lt;antrik&gt;</dt><dd> LibreMan: again, the "general Ubuntu user" won't directly see the benefits. but he will see them when developers use them to implement nice features that would be much harder to implement elsewhere</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> making everything cloudy is a big trend nowadays and hurd could provide additional flexibility there ... or no? I'm really just guessing based on what I read</dd>
+<dt>&lt;antrik&gt;</dt><dd> it's a bad trend</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> LibreMan: it could give me more options when I have to work on another ones computer. After all it was conceived in the time of dumb terminals - which now comes back.</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> ArneBab: oh well, if we are talking about user stupidity then no OS is going to help ;)</dd>
+<dt>&lt;antrik&gt;</dt><dd> I'm not sure whether the Hurd help with "making things cloudy", but it's not something I'd consider an advantage anyways :-)</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> LibreMan: The OS can reduce the impact of user stupidity (called DAU in german: „Dümmster anzunehmender User“ → “dumbest conceivable user”)</dd>
+<dt>&lt;antrik&gt;</dt><dd> as for virtualization, indeed there is a *very* close relation between that and microkernel systems, which most people fail to see...</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> antrik: the "cloud" is coming if we like it or not ... it better run on FOSS if it comes ;)</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> you know, you gues have a huge advantage</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> guys*</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> people have waited forever and written you off</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> LibreMan: just think about the difference between a GNU/Linux distro and Windows XP where you were admin at all times.</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> and as duke nukem forever shows, that's a good thing ;P</dd>
+<dt>&lt;antrik&gt;</dt><dd> in fact, the only fundamental difference is that a VM makes the subenvironment look more or less like a real machine, while in traditional microkernel systems different interfaces are used</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> LibreMan: A Hurd system would go one step further.</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> You’d even need a password more seldomly, reducing the incentive to just work as admin.</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> Reason: There are less things which can really badly impact the system.</dd>
+<dt>&lt;antrik&gt;</dt><dd> LibreMan: when talking about "the cloud", people usually mean things that are fundamentally incompatible with the idea of free software</dd>
+<dt>&lt;antrik&gt;</dt><dd> (you don't have control over the software running web services)</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> antrik: but the cloud just means “I’m on a different computer”. AGPLv3 is cool there :)</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> antrik: yeah, that's the common bussines practice but it doesn't have to be ... AGPL ;)</dd>
+<dt>&lt;antrik&gt;</dt><dd> ArneBab: well, actually "the cloud" means something different to everyone ;-)</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> I do not have any problem with a cloud running AGPL software</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> antrik: well, yes :)</dd>
+<dt>&lt;antrik&gt;</dt><dd> ArneBab: but generally it relies on using programs on foreign machines, controlled by someone else. AGPL doesn't change that</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> freedombox is going to be a "cloud" too</dd>
+<dt>&lt;antrik&gt;</dt><dd> LibreMan: that's not what most people mean by "cloud"</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> at least I hope so</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> I don’t have control over my webserver. I can’t run a real Python there. Hurd could change that (though that will take a lot of coding: the conceptual options are there)</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> LibreMan: what could interest you: http://www.gnu.org/software/hurd/community/weblogs/ArneBab/niches_for_the_hurd.html</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> “Niches of the Hurd”</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> what I mean by "the cloud" is what Eben Moglen explaied it as ... the technology which make it possible to forget about the "iron" and move servers around seamlessly</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> ArneBab: thank.. going to look at it</dd>
+<dt>&lt;antrik&gt;</dt><dd> LibreMan: that's actually more or less what used to be called "grid computing" before the cloud hype</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> antrik: well ... yes, essentially</dd>
+<dt>&lt;antrik&gt;</dt><dd> LibreMan: but most people mean many other things too when talking about "clouds"</dd>
+<dt>&lt;antrik&gt;</dt><dd> and anyways, you can't really forget about the iron. there is a middle layer which you don't have control of</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> antrik: sure, I would say that most people do not know what they mean :)</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> hmm</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> ArneBab: I can see a big place for virtualization in browsers</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> I mean, with everyone so worried about the code getting executed there, we just have GNUBrowse run in it's own little environment all closed off</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> Tekk_: me too: safe subenvironments.</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> the reason I follow Hurd is because i would LOVE to have viable GPLv3 OS as opposed to GPLv2 Linux</dd>
+<dt>&lt;antrik&gt;</dt><dd> that's not a good reason</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> there are people hard at work subverting Linux</dd>
+<dt>&lt;antrik&gt;</dt><dd> first of all, we'd have to get rid of all Linux code</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> locking it down ... and Linus doesn't seem to care</dd>
+<dt>&lt;antrik&gt;</dt><dd> also, if that's all you care about, it would be less work to implement a simple monolithic kernel from scratch</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> antrik: so why is hurd a good idea if it's so much harder to develop?</dd>
+<dt>&lt;-- azeem (~mbanck@p5DF41DDE.dip0.t-ipconnect.de) hat das Netzwerk verlassen (Ping timeout: 240 seconds)
+<LibreMan&gt;</dt><dd> antrik: I thought that was the reason all along ... to develop GNU mopatible kernel</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> LibreMan: what do you mean GNU compatible?</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> Tekk_: the philosophy of GNU</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> ah, yes they've always needed a gnu kernel</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> the reason why it was created in a first place</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> LibreMan: I just added a missing part in the article: </dd>
+<dt>&lt;ArneBab&gt;</dt><dd> “And the fact that a translator is just a simple standalone program means that these can be shared and tested much more easily, opening up completely new options for lowlevel hacking, because it massively lowers the barrier of entry.</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> ”</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> ok, next question :) why is it so hard to make Hurd work?</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> because we are so few people… </dd>
+<dt>&lt;LibreMan&gt;</dt><dd> I mean, it's in developement for 20 years or so, no?</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> LibreMan: it's never been done before too</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> ArneBab: well, one person developed Linux</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> One person make Linux basically work</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> LibreMan: there has *never* been a full microkernel outside of research, which is what hurd plans to be</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> LibreMan: yeah, one person made linux kinda work in a year, then basically handed it off to everyone to help</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> but if it's so much complicated to develop, is it worth it?</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> LibreMan: and that was with a well trodden path that everyone knwos</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> But for the Hurd to basically work means it already provides far more options than waat Linux did.</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> That’s why the foundation is harder: It makes everything else easier.</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> But at the moment it works.</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> And I think I’ll just repeat that: The Hurd works. It is not feature complete, but all the really hard parts work.</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> Missing are many of the hard (but not really hard) parts, like adding drivers.</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> (and then there are ultra hard features which are possible but currently layed off, but now I get into beat-em-up speech :) )</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> I would define "works" as I can install it right now and run stable system ... I do not think it worls in those terms</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> LibreMan: that I’d define as production system</dd>
+<dt>&lt;youpi&gt;</dt><dd> LibreMan: define "stable"</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> LibreMan: I'm pretty sure linux didn't "work" by your definition when linus passed it off</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> But I can start a Hurd right now and code in it.</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> ArneBab: yeah, that's waht "works" means for me :)</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> I can start emacs</dd>
+<dt>&lt;youpi&gt;</dt><dd> LibreMan: I wouldn't even call my linux "stable"</dd>
+<dt>&lt;youpi&gt;</dt><dd> as I just need to unplug my external USB hdd to make it crash...</dd>
+<dt>&lt;youpi&gt;</dt><dd> while in a hurd system, it'd just crash the corresponding ext2fs daemon only</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> youpi: well yes :) but you can function on it pretty successfully ...</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> LibreMan: Frankly all I’m missing for a production environment are USB support and Audio.</dd>
+<dt>&lt;youpi&gt;</dt><dd> you can on a hurd system too</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> (and it should work on an OLPC)</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> youpi: without USB and sound? :P</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> Both are driver issues. No problem in the kernel.</dd>
+<dt>&lt;youpi&gt;</dt><dd> I seldomly use USB and sound actually</dd>
+<dt>&lt;youpi&gt;</dt><dd> and never for my actual work</dd>
+<dt>&lt;-- Tekk_ (~user@2002:474d:d1e9:0:21d:72ff:fe24:4c37) hat das Netzwerk verlassen (Remote host closed the connection)
+--&gt;</dt><dd> Tekk_ (~user@2002:474d:d1e9:0:21f:3aff:fe54:7cc3) hat #hurd betreten</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> youpi: yeah, but how many users can ay that?</dd>
+<dt>&lt;youpi&gt;</dt><dd> so what?</dd>
+<dt>&lt;youpi&gt;</dt><dd> how many users can install linux?</dd>
+<dt>&lt;youpi&gt;</dt><dd> does that make it unsuccessful?</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> many people actually</dd>
+<dt>&lt;youpi&gt;</dt><dd> well, many people don't care about USB and sound either</dd>
+<dt>&lt;youpi&gt;</dt><dd> depends what you mean by "many"</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> compared to how many do not mind having USB and sound ...</dd>
+<dt>&lt;youpi&gt;</dt><dd> just like depends what you mean by "stable"</dd>
+<dt>&lt;youpi&gt;</dt><dd> so _basically_ it works</dd>
+<dt>&lt;youpi&gt;</dt><dd> not for all users on earth of course</dd>
+<dt>&lt;youpi&gt;</dt><dd> not for all linux users of course</dd>
+<dt>&lt;youpi&gt;</dt><dd> but for a lot of them already</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> LibreMan: USB and Sound are just driver issues.</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> They are not part of the core functionality.</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> LibreMan: usb keyboards and mice work though</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> ArneBab: sure, but that doesn't matter ... user doen't care about the technicalities ...</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> I think</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> LibreMan: But for the Hurd it means that it’s no general unsolved problem, but just an issue of too little coders to do the work.</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> if it's driver, kernel, microkernel whatever ... does it work or not, that's what it comes down to</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> s/too little/too few/</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> so it's a matter of attracting more people to work on it</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> LibreMan: yes</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> The Arch people helped a lot with that, because 2 distributions is not just 2× one distribution (in it’s outside effect)</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> But we need more people who do the easy work.</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> relatively easy… </dd>
+<dt>&lt;ArneBab&gt;</dt><dd> porting the 10-15% packages which just have PATH_MAX issues.</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> so there would need to be sufficient motivations for them to join developement ... so far I do not see any different than Free Software ideals</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> for example</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> jupp</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> plus some cool options.</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> and experimenting in low-level</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> “ever wanted to write your own filesystem from scratch - and test it without wrecking your box?”</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> I do not understand why FSF does not do something similar to GSoC</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> LibreMan: I assume “too little money”…</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> LibreMan: hurd is in the gsoc</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> yeah, that would be the obvious answer :) and the right onw I guess</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> Besides: antrik, do you know how jkkenig fares?</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> LibreMan: gsoc is a per project thing, and most of them don't need the help</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> jkoenig</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> Tekk_: I know ... I just do not like that a company like Google needs to sponsor it and "we" are not selfsufficient</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> LibreMan: well, too few people are used to pay for what they like instead of for what requires payment.</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> But that is changing.</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> ArneBab: exactly ...</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> things like Flattr are trying to change that mentalty</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> Besides (stable): Hurd runs the Hurd wiki.</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> http://www.bddebian.com/~hurd-web/</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> I'm quite surprised I did not know about this http://www.fossfactory.org</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> I was planning to make such a website myself ...</dd>
+<dt>&lt;LibreMan&gt;</dt><dd> I do not understand why it doesn't get more publicity ... the way Kickstarted does</dd>
+<dt>-*- ArneBab goes lurker, sons here
+<jkoenig&gt;</dt><dd> ArneBab, I have exams till friday, I should be more present after that</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> what does the hello world translator do? XD</dd>
+<dt>&lt;ArneBab&gt;</dt><dd> Tekk_: content = hello</dd>
+<dt>&lt;antrik&gt;</dt><dd> ArneBab: I have no idea about the status of GSoC</dd>
+<dt>&lt;antrik&gt;</dt><dd> I haven't even read my mails for a couple of weeks; so you probably know more than me</dd>
+<dt>&lt;antrik&gt;</dt><dd> Tekk_: provide a pseudo-file with "hello world" as contents</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> ah</dd>
+<dt>&lt;antrik&gt;</dt><dd> BTW, gvfs is actually my favourite example of why the Hurd architecture makes sense</dd>
+<dt>&lt;antrik&gt;</dt><dd> they implemented an extra GNOME-specific VFS layer, that is mostly redundant with the kernel one, adding complexity, overhead, and not integrated with the rest of the system -- and the only reason they need it is because the kernel VFS of traditional systems is too limited</dd>
+<dt>&lt;antrik&gt;</dt><dd> with the Hurd's decentralized VFS, they could have implemented everything they need trivially right in the system VFS layer</dd>
+<dt>&lt;antrik&gt;</dt><dd> the question is not really what features are possible with the Hurd architecture: given enough effort, any feature can be implemented with any architecture. it's the amount of effort that differs, making some things *feasible* that are not on other systems</dd>
+<dt>&lt;Tekk_&gt;</dt><dd> see: windows ME</dd>
+<dt>&lt;antrik&gt;</dt><dd> there is no reason for example why things like isolated subenvironments couldn't be implemented on Linux. (and it fact it's clearly moving in that direction, with the virtualisation hype) -- but it requires a shitload of kernel changes. while on Hurd all it needs is a little userspace programming</dd>
+<dt>&lt;antrik&gt;</dt><dd> and every new feature added to Linux container solutions require further kernel hacking</dd>
+<dt>&lt;antrik&gt;</dt><dd> or every new feature added to FUSE</dd>
+<dt>&lt;antrik&gt;</dt><dd> and so on</dd>
+</dl>
+
+[[!tag open_issue_documentation]]
diff --git a/community/weblogs/ArneBab/what_we_need.mdwn b/community/weblogs/ArneBab/what_we_need.mdwn
new file mode 100644
index 00000000..4511eb64
--- /dev/null
+++ b/community/weblogs/ArneBab/what_we_need.mdwn
@@ -0,0 +1,39 @@
+We created a list of the things we still need for using the Hurd for in our day-to-day activities (work or hobby).
+
+As soon as these issues are taken care of, the Hurd offers everything we need for fullfilling most of our computing needs on at least one of our devices:
+
+- USB (5): Arne, ms, Michael, Emilio, antrik²³
+- Wireless (5): Arne, ms, Carl Fredrik, Michael (netbook), antrik (notebook)
+- Sound (4): ms, Carl Fredrik, Michael, antrik²
+
+- SATA (2): Michael, (Emilio)
+- Tested for modern machines°¹ (2): Emilio, antrik (notebook)
+- Stable Xorg° (2): Emilio, antrik
+- PPPoE (2): Carl Fredrik, antrik²
+
+- Graphical Desktop (1): Emilio
+- Full featured high-resultion console which doesn’t need X (1): antrik
+- Switching between console and X° (1): antrik
+- full-featured browser (i.e. Firefox)°⁵ (1): antrik
+- NFS working for climm, w3m and git (1): antrik⁴
+- mplayer with win32codecs (1): antrik³
+- gnash or alternatives (1): antrik³
+
+°: Very likely needed by more people, but not named as most pressing issue.
+¹: It’s unclear on which processors the Hurd would have problems. Please report it if you have one!
+→ [info](http://www.mail-archive.com/bug-hurd@gnu.org/msg19105.html)
+²: Would be OK to use a router box instead.
+³: Not critical but would be convenient.
+⁴: Only while *not* using Hurd as the only machine.
+⁵: [We’re close to that](http://www.mail-archive.com/bug-hurd@gnu.org/msg19177.html).
+
+So, if one of these issues seems to be interesting for you, or you think “I can do that easily”,
+why not become a Hurd hacker and add your touch? :)
+
+You can reach us in the [[mailing_lists]] and in [[irc]].
+
+The sourcecode is in our [[source_repositories]] (git). When you want to check sources relevant for you, [DDE](http://git.savannah.gnu.org/cgit/hurd/incubator.git/tree/?h=dde) might be a good place to start for wireless and sound. USB on the other hand might need work in [gnumach](http://git.savannah.gnu.org/cgit/hurd/gnumach.git/) ([[hacking_info|microkernel/mach/gnumach]]).
+
+Besides: “The great next stuff” is in the [incubator git repo](http://git.savannah.gnu.org/cgit/hurd/incubator.git/), including (among others) [clisp](http://git.savannah.gnu.org/cgit/hurd/incubator.git/tree/?h=clisp) (translators in lisp) and [nsmux](http://git.savannah.gnu.org/cgit/hurd/incubator.git/tree/?h=nsmux) (dynamically setting translators on files for one command by accessing `file,,translator`).
+
+Happy hacking!
diff --git a/community/weblogs/ArneBab/xkb-woes-trying-to-get-a-german-keyboard-layout.mdwn b/community/weblogs/ArneBab/xkb-woes-trying-to-get-a-german-keyboard-layout.mdwn
index fef628bc..693168a4 100644
--- a/community/weblogs/ArneBab/xkb-woes-trying-to-get-a-german-keyboard-layout.mdwn
+++ b/community/weblogs/ArneBab/xkb-woes-trying-to-get-a-german-keyboard-layout.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Yesterday I spent a few hours trying to get my german keyboard to let me use my umlauts (and to let me type without having to hunt down the right keys), but without much luck.
diff --git a/community/weblogs/antrik.mdwn b/community/weblogs/antrik.mdwn
new file mode 100644
index 00000000..6db88dd9
--- /dev/null
+++ b/community/weblogs/antrik.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!inline
+pages="community/weblogs/antrik/* and !community/weblogs/antrik/*/*"
+show=0
+actions=no
+rootpage="community/weblogs/antrik" postformtext="Add a new entry named:"]]
diff --git a/community/weblogs/antrik/hurd-mission-statement.mdwn b/community/weblogs/antrik/hurd-mission-statement.mdwn
new file mode 100644
index 00000000..592e176a
--- /dev/null
+++ b/community/weblogs/antrik/hurd-mission-statement.mdwn
@@ -0,0 +1,39 @@
+For a while I have been thinking about the lack of a roadmap for the
+Hurd; but now I realized that we lack something even more fundamental: a
+simple mission statement -- i.e. saying where we want to go, rather
+than how we want to get there. I think many of the problems we have are
+directly or indirectly related to that.
+
+As we didn't have such a mission statement so far, the people currently
+involved have vastly different ideas about the mission, which of course
+makes it a bit hard to come up with a suitable one now. However, I
+managed to come up with something that I believe is generic enough so
+all contributors can subscribe to it:
+
+> *The mission of the Hurd project is: to create a general-purpose
+> kernel suitable for the GNU operating system, which is viable for
+> everyday use, and gives users and programs as much control over their
+> computing environment as possible.*
+
+*"Suitable for GNU"* in the first part implies a number of things. I
+explicitely mentioned *"general-purpose"*, because this an important
+feature that sets the Hurd apart from many other microkernel projects,
+but isn't immediately obvious.
+
+I didn't mention that it must be entirely free software, as this should
+be obvious to anyone familiar with GNU.
+
+Another thing I did not mention, because it's too controversial: how
+much UNIX do we need? I think that being suitable for GNU requires a
+pretty high degree of UNIX compatibility, and also that the default
+environment looks to the user more or less like UNIX. However, some
+people claimed in the past that GNU could do without UNIX -- the wording
+used here doesn't totally preclude such views.
+
+The second part also leaves a lot of slack: I for my part still believe
+that a Mach-based Hurd can be viable for everyday use; but those who
+think that a microkernel change is required, should be happy with this
+wording as well.
+
+The third part tries to express the major idea behind the Hurd design in
+the most compact and generic way possible.
diff --git a/community/weblogs/antrik/plan9-and-the-hurd-major-differences.mdwn b/community/weblogs/antrik/plan9-and-the-hurd-major-differences.mdwn
new file mode 100644
index 00000000..9e6143bf
--- /dev/null
+++ b/community/weblogs/antrik/plan9-and-the-hurd-major-differences.mdwn
@@ -0,0 +1,50 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="Major differences between Plan9 and the Hurd"]]
+
+There are some similarities between the Hurd and Plan 9 regarding the file
+system handling -- but there are also very fundamental differences which go
+far beyond monolithic vs. microkernel design:
+
+- The Hurd is UNIX (POSIX) compatible
+
+- While (almost) all services are attached to the file system tree, not
+ all services actually export a file system interface!
+
+ Personally, I advocate using FS-based interfaces as much as possible.
+ Yet, there are some cases where they get very awkward and/or
+ inefficient, and domain-specific interfaces simply make a lot more
+ sense.
+
+ Also, some Hurd services are indeed used to implement the file systems
+ in the first place -- they work below the FS level, and obviously
+ can't use an FS interface!
+
+- File systems are completely decentralized -- clients always talk to
+ the FS servers directly, without any central VFS layer. (I don't think
+ that's the case in Plan 9?)
+
+ This offers much more flexibility -- the way the FS interfaces
+ themselves work can be modified. Many things can be implemented as
+ normal translators, that would require special VFS support on other
+ systems. (Extended attributes, VFS-based union mounts, local
+ namespaces, firmlink, magic file name suffixes etc.)
+
+- The system design allows users and applications to change almost all
+ aspects of the system functionality in the local environment easily
+ and without affecting other parts of the system.
+
+ (This is possible with Plan 9 to some extent; but the Hurd allows it
+ at a much lower level -- including stuff like the filesystem
+ interfaces, access control mechanisms, program execution and process
+ management, and so on.)
+
+I hope I didn't forget any major differences...
diff --git a/community/weblogs/hook.mdwn b/community/weblogs/hook.mdwn
new file mode 100644
index 00000000..e9e083dc
--- /dev/null
+++ b/community/weblogs/hook.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+Well as [[weblogs/ArneBab]] asked me to, I made a blog here in the Hurd's community section.
+
+So I suppose it's time for me to introduce myself. I'm a lawyer student just short of my masters' (called "diploma" here in Slovenia) and a hacker by heart. I've been using GNU/Linux for over a decade now, started on Slackware and continued on Gentoo. I try to give back to the community by being an active member (posting bugs and whatnot), coordinating the local FSFE Fellowship group and lately also lending a hand to the Gentoo Licenses team. I keep a [website and blog](http://matija.suklje.name) of my own and occasionally even write some short sad piece of sloppy code.
+
+Small disclaimer about my coding abilities:
+
+ 10 IANAC IAAL
+
+For those who wonder about what IANAC IAAL means — it's the oposite of IANAL IAAC and means "I Am Not A Coder, I Am A Lawyer" ;)
+
+[[!inline
+pages="community/weblogs/hook/* and !community/weblogs/hook/*/*"
+show=0
+actions=no
+rootpage="community/weblogs/hook" postformtext="Add a new entry named:"]]
diff --git a/community/weblogs/hook/Post.mdwn b/community/weblogs/hook/Post.mdwn
new file mode 100644
index 00000000..904ff372
--- /dev/null
+++ b/community/weblogs/hook/Post.mdwn
@@ -0,0 +1,27 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+You might wonder why this post is not titled "First Post" or anything similar showing off my arrival in the Hurd community.
+
+Well, that's both easy and hard to explain — easy, because it doesn't take much words and hard because of their impact.
+
+The thing is it may well be my first and last post here.
+
+I am not making this decision lightly, because I care a lot for FOSS and although I'm new and not much of a coder (`GOTO 10`), I can see how important GNU Hurd is and needs more advocates and contributors.
+
+Sadly, as I stated [on my normal blog](http://matija.suklje.name/?q=node/205), to be more help to the FOSS community, I actually have to help less. I have to make the painful choice to select from many FOSS-related things I care about deeply only a few I'm really good at and discard the rest. And since law is my forte, that's where I'll help and leave coding to those who are better at it.
+
+That too is freedom and probably the biggest burden of it.
+
+I'm pretty sure most people here haven't had the time to get to know me yet, but I'll still miss you. And thank you guys for your outstanding work in making the system that gives the user the most freedom possible! **Please, keep up the work!**
+
+ *hook out → just out (hopefully not forever)*
+
+P.S. `10 IANAC IAAL`
diff --git a/community/weblogs/tschwinge.mdwn b/community/weblogs/tschwinge.mdwn
new file mode 100644
index 00000000..fc0d2ace
--- /dev/null
+++ b/community/weblogs/tschwinge.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!inline
+pages="community/weblogs/tschwinge/* and !community/weblogs/tschwinge/*/*"
+show=0
+actions=no
+rootpage="community/weblogs/tschwinge" postformtext="Add a new entry named:"]]
diff --git a/community/weblogs/tschwinge/2009-06-23_split_patch_and_git_rebase_--interactive.mdwn b/community/weblogs/tschwinge/2009-06-23_split_patch_and_git_rebase_--interactive.mdwn
new file mode 100644
index 00000000..bd08060e
--- /dev/null
+++ b/community/weblogs/tschwinge/2009-06-23_split_patch_and_git_rebase_--interactive.mdwn
@@ -0,0 +1,545 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="splitting a patch into three, and then some git rebase
+--interactive"]]
+
+I was revisiting the issue of getting the Hurd's code base compiled with recent
+versions of GCC. Specifically, there were a lot of duplicate symbols shown at
+linking time, and all these were related to `inline` functions. Originally, in
+2007, we had solved this problem already (or rather, shifted it) by using GCC's
+`-fgnu89-inline` option, but as we [[!GNU_Savannah_patch 6840 desc="saw now"]],
+that one obviously doesn't help anymore if third-party code is using the Hurd's
+unfixed header files.
+
+So I was revisiting this issue. I was already prepared that this would take
+some hours, with lots of editing, compiling cycles, plus some analyzing of the
+binaries. So I made up a fresh repository for this work.
+
+ $ mkdir hurd-ei
+ $ cd hurd-ei/
+ $ git init
+ [...]
+ $ git remote add savannah git://git.savannah.gnu.org/hurd/hurd.git
+ $ git fetch
+ [...]
+
+Switch to a new topic-branch.
+
+ $ git checkout -b master-ei savannah/master
+ Branch master-ei set up to track remote branch master from savannah.
+ Switched to a new branch 'master-ei'
+
+(*`ei`* is short for `extern inline`.)
+
+The first thing to do was to disable that `-fgnu89-inline` option, so I edited
+`Makeconf` where it was added to `CFLAGS`.
+
+I started editing, compiling, editing, compiling, and so on.
+
+Finally, the tree was in a shape where everything was building fine and the
+resulting libraries contained the symbols they should, etc.
+
+I committed the whole junk as one *big blob* commit, to store it in a safe
+place (you never know with these Hurd machines...), and to continue working on
+it the next day.
+
+ $ git commit -a
+
+For the commit message, I already mostly assembled a `ChangeLog`-style log.
+Then:
+
+ $ git format-patch savannah/master..
+ 0001-Bla.patch
+
+... and here is [[0001-Bla.patch.bz2]] (compressed).
+
+
+The next day, a.k.a. today, in a different Git repository.
+
+ $ git checkout -b master-fix_inline savannah/master
+ Branch master-fix_inline set up to track remote branch master from savannah.
+ Switched to a new branch 'master-fix_inline'
+ $ bunzip2 < ../some/where/0001-Bla.patch.bz2 | git am
+ Applying: Bla.
+
+The *big blob* is now on top of savannah/master (which was
+`2772f5c6a6a51cf946fd95bf6ffe254273157a21`, by the way -- in case that you want
+to reproduce this tutorial later, simply substitute `savannah/master` with
+`2772...`).
+
+By then, I had come to the conclusion that the commit essentially was fine, but
+should be split into two, and the `configure` hunk shouldn't be in there. So
+be it.
+
+So, the `HEAD` of the active branch is our *big blob* commit that we want to
+work on. Check with `git show HEAD`:
+
+ $ git show HEAD
+ commit 93e97f3351337c349e2926f4041e61bc487ef9e6
+ Author: Thomas Schwinge <tschwinge@gnu.org>
+ Date: Tue Jun 23 00:27:28 2009 +0200
+
+ Bla.
+
+ * console-client/timer.h (fetch_jiffies): Use static inline instead of extern
+ inline.
+ * ext2fs/ext2fs.h (test_bit, set_bit, clear_bit, dino, global_block_modified)
+ (record_global_poke, sync_global_ptr, record_indir_poke, sync_global)
+ (alloc_sync): Likewise.
+ * libftpconn/priv.h (unexpected_reply): Likewise.
+ * term/term.h (qsize, qavail, clear_queue, dequeue_quote, dequeue)
+ (enqueue_internal, enqueue, enqueue_quote, unquote_char, char_quoted_p)
+ (queue_erase): Likewise.
+ * ufs/ufs.h (dino, indir_block, cg_locate, sync_disk_blocks, sync_dinode)
+ (swab_short, swab_long, swab_long_long): Likewise.
+ * term/munge.c (poutput): Use static inline instead of inline.
+
+ * libdiskfs/diskfs.h: Apply inline optimization only ifdef
+ [__USE_EXTERN_INLINES]. Use __extern_inline instead of extern inline.
+ * libftpconn/ftpconn.h: Likewise.
+ * libpipe/pipe.h: Likewise.
+ * libpipe/pq.h: Likewise.
+ * libshouldbeinlibc/idvec.h: Likewise.
+ * libshouldbeinlibc/maptime.h: Likewise.
+ * libshouldbeinlibc/ugids.h: Likewise.
+ * libstore/store.h: Likewise.
+ * libthreads/rwlock.h: Likewise.
+ * libdiskfs/extern-inline.c: Adapt to these changes.
+ * libftpconn/xinl.c: Likewise. And don't #include "priv.h".
+ * libpipe/pipe-funcs.c: Likewise.
+ * libpipe/pq-funcs.c: Likewise.
+ * libshouldbeinlibc/maptime-funcs.c: Likewise. And remove superfluous
+ includes.
+ * libstore/xinl.c: Likewise.
+ * libthreads/rwlock.c: Likewise.
+
+ * Makeconf (CFLAGS): Don't append $(gnu89-inline-CFLAGS).
+ * pfinet/Makefile (CFLAGS): Append $(gnu89-inline-CFLAGS).
+
+ diff --git a/Makeconf b/Makeconf
+ index e9b2045..236f1ec 100644
+ --- a/Makeconf
+ +++ b/Makeconf
+ @@ -65,7 +65,7 @@ INCLUDES += -I$(..)include -I$(top_srcdir)/include
+ CPPFLAGS += $(INCLUDES) \
+ -D_GNU_SOURCE -D_IO_MTSAFE_IO -D_FILE_OFFSET_BITS=64 \
+ $($*-CPPFLAGS)
+ -CFLAGS += -std=gnu99 $(gnu89-inline-CFLAGS) -Wall -g -O3 \
+ +CFLAGS += -std=gnu99 -Wall -g -O3 \
+ [...]
+
+We want to undo this one commit, but preserve its changes in the working
+directory.
+
+ $ git reset HEAD^
+ Makeconf: locally modified
+ configure: locally modified
+ console-client/timer.h: locally modified
+ ext2fs/ext2fs.h: locally modified
+ libdiskfs/diskfs.h: locally modified
+ libdiskfs/extern-inline.c: locally modified
+ libftpconn/ftpconn.h: locally modified
+ libftpconn/priv.h: locally modified
+ libftpconn/xinl.c: locally modified
+ libpipe/pipe-funcs.c: locally modified
+ libpipe/pipe.h: locally modified
+ libpipe/pq-funcs.c: locally modified
+ libpipe/pq.h: locally modified
+ libshouldbeinlibc/idvec.h: locally modified
+ libshouldbeinlibc/maptime-funcs.c: locally modified
+ libshouldbeinlibc/maptime.h: locally modified
+ libshouldbeinlibc/ugids.h: locally modified
+ libstore/store.h: locally modified
+ libstore/xinl.c: locally modified
+ libthreads/rwlock.c: locally modified
+ libthreads/rwlock.h: locally modified
+ pfinet/Makefile: locally modified
+ term/munge.c: locally modified
+ term/term.h: locally modified
+ ufs/ufs.h: locally modified
+
+Now, `HEAD` points to the commit before the previous `HEAD`, i.e. `HEAD^`.
+Again, check with `git show HEAD`:
+
+ $ git show HEAD
+ commit 2772f5c6a6a51cf946fd95bf6ffe254273157a21
+ Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
+ Date: Thu Apr 2 23:06:37 2009 +0000
+
+ 2009-04-03 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * exec.c (prepare): Call PREPARE_STREAM earlier to permit calling
+ finish_mapping on E even after errors, as is already done in do_exec.
+
+ diff --git a/exec/ChangeLog b/exec/ChangeLog
+ index 5a0ad1d..a9300bf 100644
+ --- a/exec/ChangeLog
+ +++ b/exec/ChangeLog
+ @@ -1,3 +1,8 @@
+ +2009-04-03 Samuel Thibault <samuel.thibault@ens-lyon.org>
+ +
+ + * exec.c (prepare): Call PREPARE_STREAM earlier to permit calling
+ + finish_mapping on E even after errors, as is already done in do_exec.
+ +
+ 2008-06-10 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * elfcore.c (TIME_VALUE_TO_TIMESPEC): Completely implement instead of
+ diff --git a/exec/exec.c b/exec/exec.c
+ index 05dc883..cb3d741 100644
+ --- a/exec/exec.c
+ +++ b/exec/exec.c
+ @@ -726,6 +726,9 @@ prepare (file_t file, struct execdata *e)
+
+ e->interp.section = NULL;
+
+ + /* Initialize E's stdio stream. */
+ + prepare_stream (e);
+ [...]
+
+Luckily, Git saves the previous (i.e. before the `git reset`) `HEAD` reference
+as `ORIG_HEAD`. Have a look at it with `git show ORIG_HEAD` -- it contains the
+*big blob* commit, including the preliminary commit message -- just what HEAD
+was before:
+
+ $ git show ORIG_HEAD
+ commit 93e97f3351337c349e2926f4041e61bc487ef9e6
+ Author: Thomas Schwinge <tschwinge@gnu.org>
+ Date: Tue Jun 23 00:27:28 2009 +0200
+
+ Bla.
+
+ * console-client/timer.h (fetch_jiffies): Use static inline instead of extern
+ inline.
+ [...]
+
+ diff --git a/Makeconf b/Makeconf
+ index e9b2045..236f1ec 100644
+ --- a/Makeconf
+ +++ b/Makeconf
+ @@ -65,7 +65,7 @@ INCLUDES += -I$(..)include -I$(top_srcdir)/include
+ CPPFLAGS += $(INCLUDES) \
+ -D_GNU_SOURCE -D_IO_MTSAFE_IO -D_FILE_OFFSET_BITS=64 \
+ $($*-CPPFLAGS)
+ -CFLAGS += -std=gnu99 $(gnu89-inline-CFLAGS) -Wall -g -O3 \
+ +CFLAGS += -std=gnu99 -Wall -g -O3 \
+ [...]
+
+OK, now let's pick the files that we want to have in the first of the
+envisioned two commits: these are the *static inline instead of extern inline*
+and *apply inline optimization only...* sections.
+
+ $ git add console-client/timer.h ext2fs/ext2fs.h [...] libthreads/rwlock.c
+
+Oh, we forgot something: now that we're preparing this stuff to go into the
+*master* repository, update the copyright years. Edit, edit, edit, and then,
+again:
+
+ $ git add console-client/timer.h ext2fs/ext2fs.h [...] libthreads/rwlock.c
+
+Now Git's staging area contains the changes that we want to commit (and the
+working directory contains the rest of the *big blob*). Commit these `add`ed
+files, and use *big blob*'s commit message as a template for the new one, as it
+already contains most of what we want (don't forget to chop off the unneeded
+parts).
+
+ $ git commit -c ORIG_HEAD
+ Waiting for Emacs...
+ [master-fix_inline 51c15bc] Use static inline where appropriate.
+ 6 files changed, 50 insertions(+), 51 deletions(-)
+ $ git show HEAD
+ commit c6c9d7a69dea26e04bba7010582e7bcd612e710c
+ Author: Thomas Schwinge <tschwinge@gnu.org>
+ Date: Tue Jun 23 00:27:28 2009 +0200
+
+ Use static inline where appropriate and use glibc's __extern_inline machinery.
+
+ * console-client/timer.h (fetch_jiffies): Use static inline instead of extern
+ inline.
+ * ext2fs/ext2fs.h (test_bit, set_bit, clear_bit, dino, global_block_modified)
+ (record_global_poke, sync_global_ptr, record_indir_poke, sync_global)
+ (alloc_sync): Likewise.
+ * libftpconn/priv.h (unexpected_reply): Likewise.
+ * term/term.h (qsize, qavail, clear_queue, dequeue_quote, dequeue)
+ (enqueue_internal, enqueue, enqueue_quote, unquote_char, char_quoted_p)
+ (queue_erase): Likewise.
+ * ufs/ufs.h (dino, indir_block, cg_locate, sync_disk_blocks, sync_dinode)
+ (swab_short, swab_long, swab_long_long): Likewise.
+ * term/munge.c (poutput): Use static inline instead of inline.
+
+ * libdiskfs/diskfs.h: Apply inline optimization only ifdef
+ [__USE_EXTERN_INLINES]. Use __extern_inline instead of extern inline.
+ * libftpconn/ftpconn.h: Likewise.
+ * libpipe/pipe.h: Likewise.
+ * libpipe/pq.h: Likewise.
+ * libshouldbeinlibc/idvec.h: Likewise.
+ * libshouldbeinlibc/maptime.h: Likewise.
+ * libshouldbeinlibc/ugids.h: Likewise.
+ * libstore/store.h: Likewise.
+ * libthreads/rwlock.h: Likewise.
+ * libdiskfs/extern-inline.c: Adapt to these changes.
+ * libftpconn/xinl.c: Likewise. And don't #include "priv.h".
+ * libpipe/pipe-funcs.c: Likewise.
+ * libpipe/pq-funcs.c: Likewise.
+ * libshouldbeinlibc/maptime-funcs.c: Likewise. And remove superfluous
+ includes.
+ * libstore/xinl.c: Likewise.
+ * libthreads/rwlock.c: Likewise.
+
+ diff --git a/console-client/timer.h b/console-client/timer.h
+ index 4204192..5e64e97 100644
+ --- a/console-client/timer.h
+ +++ b/console-client/timer.h
+ @@ -1,5 +1,7 @@
+ /* timer.h - Interface to a timer module for Mach.
+ - Copyright (C) 1995,96,2000,02 Free Software Foundation, Inc.
+ +
+ + Copyright (C) 1995, 1996, 2000, 2002, 2009 Free Software Foundation, Inc.
+ +
+ Written by Michael I. Bushnell, p/BSG and Marcus Brinkmann.
+
+ This file is part of the GNU Hurd.
+ @@ -54,7 +56,7 @@ int timer_remove (struct timer_list *timer);
+ /* Change the expiration time of the timer TIMER to EXPIRES. */
+ void timer_change (struct timer_list *timer, long long expires);
+
+ -extern inline long long
+ +static inline long long
+ [...]
+
+As you can see, `HEAD` now points to the new commit on top of the current
+branch. (`ORIG_HEAD` doesn't change.)
+
+On to the next, and last one, only two changes should be left: the `Makeconf`
+and `pfinet/Makefile` ones.
+
+ $ git status
+ # On branch master-fix_inline
+ # Your branch is ahead of 'savannah/master' by 1 commit.
+ #
+ # Changed but not updated:
+ # (use "git add <file>..." to update what will be committed)
+ # (use "git checkout -- <file>..." to discard changes in working directory)
+ #
+ # modified: Makeconf
+ # modified: configure
+ # modified: pfinet/Makefile
+ #
+ # Untracked files:
+ # (use "git add <file>..." to include in what will be committed)
+ #
+ # 0001-Bla.patch
+ # autom4te.cache/
+ # hurd_extern_inline_fix.patch?file_id=18191
+ no changes added to commit (use "git add" and/or "git commit -a")
+
+Alright, there is as well still the `configure` hunk that we want to get rid
+of. But first for the real second commit, after editing for again adding the
+copyright year update:
+
+ $ git add Makeconf pfinet/Makefile
+ $ git commit -c ORIG_HEAD
+ Waiting for Emacs...
+ [master-fix_inline 6a967d1] We're now C99 inline safe -- apart from the Linux code in pfinet.
+ 2 files changed, 6 insertions(+), 3 deletions(-)
+
+Check that we're in a clean state now:
+
+ $ git status
+ # On branch master-fix_inline
+ # Your branch is ahead of 'savannah/master' by 2 commits.
+ #
+ # Changed but not updated:
+ # (use "git add <file>..." to update what will be committed)
+ # (use "git checkout -- <file>..." to discard changes in working directory)
+ #
+ # modified: configure
+ #
+ # Untracked files:
+ # (use "git add <file>..." to include in what will be committed)
+ #
+ # 0001-Bla.patch
+ # autom4te.cache/
+ # hurd_extern_inline_fix.patch?file_id=18191
+ no changes added to commit (use "git add" and/or "git commit -a")
+
+Oops, we forgot something...
+
+ $ git checkout -- configure
+
+Now, our tree is clean again. (Check with `git status`.)
+
+By now, we came to the conclusion that the first of the two commits should have
+been further split into two separate ones. Of course, essentially we would do
+the same splitting again that we've done just now -- but how to easily modify
+the first commit, now that we have another one on top of it?
+
+Alright, `git rebase --interactive` to the rescue -- let's interactively
+*`rebase`* the last two commits, to modify them as wanted.
+
+ $ git rebase --interactive HEAD~2
+ Waiting for Emacs...
+
+Emacs wants us to tell which commits we want to keep as they are (`pick`),
+which should be merged into others (`squash`), and which we want to `edit`. In
+our scenario, we want to `edit` the first one and `pick` the second one.
+Change the file thusly and close it.
+
+ Stopped at 5becbb5... Use static inline where appropriate and use...
+ You can amend the commit now, with
+
+ git commit --amend
+
+ Once you are satisfied with your changes, run
+
+ git rebase --continue
+
+We want to undo this first commit to split it into two. Again, use `git reset`
+for that, while preserving the commit's changes in the working directory.
+
+ $ git reset HEAD^
+ console-client/timer.h: locally modified
+ [...]
+
+Pick the set of files that we want to have in the first of the envisioned two
+commits: the *static inline instead of extern inline* section, and commit them,
+again using the previous commit message as a template for the new one:
+
+ $ git add console-client/timer.h ext2fs/ext2fs.h [...] term/munge.c
+ $ git commit -c ORIG_HEAD
+ Waiting for Emacs...
+ [detached HEAD 51c15bc] Use static inline where appropriate.
+ 6 files changed, 50 insertions(+), 51 deletions(-)
+
+Next part: *apply inline optimization only...*. Again, `git add` those files
+that shall be part of the next commit, i.e. all remaining ones. As before, use
+the previous commit message as a template.
+
+ $ git add libdiskfs/diskfs.h [...] libthreads/rwlock.c
+ $ git commit -c ORIG_HEAD
+ Waiting for Emacs...
+ [detached HEAD 8ac30ea] [__USE_EXTERN_INLINES]: Use glibc's __extern_inline machinery.
+ 16 files changed, 508 insertions(+), 356 deletions(-)
+
+Now we're done with splitting that commit into two. (Check with `git status`
+that we didn't forget anything.) What's missing is getting back the other
+commit on top of the two now-split ones:
+
+ $ git rebase --continue
+ Successfully rebased and updated refs/heads/master-fix_inline.
+
+Here we go. The other commit has been applied on top of the two new ones.
+
+Due to time-honored tradition, I always double-check what I have just
+committed, before distributing it to the world:
+
+ $ git log --reverse -p -C --cc savannah/master..
+
+... and promptly, I recognize some changes that shouldn't be in there: when
+using it on some files, Emacs' `copyright-fix-years`, aside from indeed fixing
+the list of copyright years, and adding the current year, also changed *GPL
+... version 2* into *version 3*, which would be nice, but which we can't do for
+the moment. The error is present only in the first and second commit. If it
+were in only in the third (the last) one, simply editing the files, and then
+using `git commit --amend` would be the solution. But again there is the
+problem about how to modify the first (`HEAD~2`) and second (`HEAD~1`, or
+`HEAD^`) commit now that there is another one on top of it. By now, we know
+the solution:
+
+ $ git rebase --interactive HEAD~3
+ Waiting for Emacs...
+
+This time, we need to `edit` the first and second commits, and `pick` the third
+one.
+
+ Stopped at ffd215b... Use static inline where appropriate.
+ You can amend the commit now, with
+
+ git commit --amend
+
+ Once you are satisfied with your changes, run
+
+ git rebase --continue
+
+`git show` (which defaults to showing `HEAD`, by the way) can again be used to
+have a look at the current `HEAD` (which is the first of the three commits),
+and then we revert the unwanted changes in the editor, resulting with the
+following changed files:
+
+ $ git status
+ # Not currently on any branch.
+ # Changed but not updated:
+ # (use "git add <file>..." to update what will be committed)
+ # (use "git checkout -- <file>..." to discard changes in working directory)
+ #
+ # modified: ext2fs/ext2fs.h
+ # modified: libftpconn/priv.h
+ # modified: term/munge.c
+ # modified: term/term.h
+ # modified: ufs/ufs.h
+ #
+ # Untracked files:
+ # (use "git add <file>..." to include in what will be committed)
+ #
+ # 0001-Bla.patch
+ # autom4te.cache/
+ # hurd_extern_inline_fix.patch?file_id=18191
+ no changes added to commit (use "git add" and/or "git commit -a")
+
+Then, we can -- as `git rebase` suggested above -- *amend* the existing `HEAD`
+commit with these changes (`--amend` and `--all`), reusing `HEAD`'s commit
+message without spawning an editor (`-C HEAD`):
+
+ $ git commit --amend -C HEAD --all
+ [detached HEAD c6c9d7a] Use static inline where appropriate.
+ 6 files changed, 45 insertions(+), 46 deletions(-)
+
+Continue with the next commit:
+
+ $ git rebase --continue
+ Stopped at 8ac30ea... [__USE_EXTERN_INLINES]: Use glibc's __extern_inline machinery.
+ You can amend the commit now, with
+
+ git commit --amend
+
+ Once you are satisfied with your changes, run
+
+ git rebase --continue
+
+Again, have a look at the commit (`git show`), revert the unwanted changes,
+*amend* `HEAD`, and continue to the next commit:
+
+ $ git commit --amend -C HEAD --all
+ [detached HEAD 9990dc6] [__USE_EXTERN_INLINES]: Use glibc's __extern_inline machinery.
+ 16 files changed, 500 insertions(+), 348 deletions(-)
+ $ git rebase --continue
+ Stopped at 6a967d1... We're now C99 inline safe -- apart from the Linux code in pfinet.
+ You can amend the commit now, with
+
+ git commit --amend
+
+ Once you are satisfied with your changes, run
+
+ git rebase --continue
+
+Two files are left to be edited (`git show`, etc., again), and finally:
+
+ $ git commit --amend -C HEAD --all
+ [detached HEAD 241c605] We're now C99 inline safe -- apart from the Linux code in pfinet.
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+ $ git rebase --continue
+ Successfully rebased and updated refs/heads/master-fix_inline.
+
+That's it. `git log --reverse -p -C --cc savannah/master..` now looks as nice
+as can be.
+
+
+Of course, this is only a small insight of what is possible to do with `git
+rebase` and friends -- see the manual for further explanations.
diff --git a/community/weblogs/tschwinge/2009-06-23_split_patch_and_git_rebase_--interactive/0001-Bla.patch.bz2 b/community/weblogs/tschwinge/2009-06-23_split_patch_and_git_rebase_--interactive/0001-Bla.patch.bz2
new file mode 100644
index 00000000..4a682c86
--- /dev/null
+++ b/community/weblogs/tschwinge/2009-06-23_split_patch_and_git_rebase_--interactive/0001-Bla.patch.bz2
Binary files differ
diff --git a/community/weblogs/tschwinge/2009-06-24_importing_from_gnu_arch_into_git.mdwn b/community/weblogs/tschwinge/2009-06-24_importing_from_gnu_arch_into_git.mdwn
new file mode 100644
index 00000000..f397e75b
--- /dev/null
+++ b/community/weblogs/tschwinge/2009-06-24_importing_from_gnu_arch_into_git.mdwn
@@ -0,0 +1,104 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="converting from GNU arch to Git -- without direct repository
+access"]]
+
+I wanted to import an old GNU arch repository into Git, but only had HTTP
+access via ArchZoom. I spent quite some time to try teaching `git archimport`
+to use HTTP access to that repository, but this didn't work out. Too bad --
+but at least, using ArchZoom, I was able to get the individual revisions'
+tarballs:
+
+ $ ls -1 *.tar.gz
+ bpf--devel--0.0--base-0.tar.gz
+ bpf--devel--0.0--patch-1.tar.gz
+ bpf--devel--0.0--patch-10.tar.gz
+ bpf--devel--0.0--patch-11.tar.gz
+ bpf--devel--0.0--patch-12.tar.gz
+ bpf--devel--0.0--patch-2.tar.gz
+ bpf--devel--0.0--patch-3.tar.gz
+ [...]
+ bpf--devel--0.0--patch-9.tar.gz
+ bpf--release--0.1--base-0.tar.gz
+ bpf--release--0.1--patch-1.tar.gz
+ bpf--release--0.1--patch-2.tar.gz
+ [...]
+ bpf--release--0.1--patch-8.tar.gz
+
+I unpacked these:
+
+ $ for f in *.tar.gz; do tar -xz < "$f" || echo >&2 "$f" failed; done
+
+The last revision's tree apparently contains all previous revisions' commit
+information (author, date, message), so use that:
+
+ $ cp -a ↩
+ bpf--release--0.1--patch-8/{arch}/bpf/bpf--devel/bpf--devel--0.0/info@hurdfr.org--hurdfr/patch-log ↩
+ d-patch-log
+ $ cp -a ↩
+ bpf--release--0.1--patch-8/{arch}/bpf/bpf--release/bpf--release--0.1/info@hurdfr.org--hurdfr/patch-log ↩
+ r-patch-log
+
+... and extract the information that we need:
+
+ $ base=bpf--devel--0.0-- && ↩
+ for f in d-patch-log/*; do ↩
+ grep < "$f" ^Creator: | head -n 1 ↩
+ | { read j c && ↩
+ echo "$c" | sed s%' <.*'%% ↩
+ > "$base""$(basename "$f")".author_name && ↩
+ echo "$c" | sed -e 's%.*<%%' -e 's%>.*%%' ↩
+ > "$base""$(basename "$f")".author_email; } && ↩
+ grep < "$f" ^Standard-date: | head -n 1 | { read j d && echo "$d" ↩
+ > "$base""$(basename "$f")".author_date; } && ↩
+ { grep < "$f" ^Summary: | head -n 1 | { read j m && echo "$m"; } && ↩
+ echo && sed < "$f" '1,/^$/d'; } ↩
+ > "$base""$(basename "$f")".log ↩
+ || echo >&2 "$f" failed; ↩
+ done
+ $ base=bpf--release--0.1-- && ↩
+ for f in r-patch-log/*; [...]
+
+(Of course, I could have used something more elaborate than shell scripting...)
+
+Remove the GNU arch stuff that we don't need anymore:
+
+ $ find bpf--*/ -type d \( -name {arch} -o -name .arch-ids \) -print0 ↩
+ | xargs -0 rm -r
+
+The `base-0` revisions are actually either empty (the `devel` one) or
+equivalent to the previous revision (the `release` one), so remove these:
+
+ $ rm -rf bpf--devel--0.0--base-0 bpf--release--0.1--base-0
+
+Finally, import all the other ones:
+
+ $ mkdir g && ( cd g/ && git init )
+ $ for d in bpf--d*-? bpf--d*-?? bpf--r*; do ↩
+ test -d "$d"/ || continue && ↩
+ ( cd g/ && ↩
+ rsync -a --delete --exclude=/.git ../"$d"/ ./ && ↩
+ git add . && ↩
+ GIT_AUTHOR_NAME="$(cat ../"$d".author_name)" ↩
+ GIT_AUTHOR_EMAIL="$(cat ../"$d".author_email)" ↩
+ GIT_AUTHOR_DATE="$(cat ../"$d".author_date)" ↩
+ git commit -F ../"$d".log -a ); ↩
+ done
+
+Voilà!
+
+
+**Update 2009-06-25:**
+
+Half a day later, [[HurdFr]] published a `git archimport`-converted repository
+-- which was *identical* to my hand-crafted one (apart from having
+`git-archimport-id:` tags in the commit messages, and the first (empty) commit
+not being stripped off). :-)
diff --git a/config_edittemplate.mdwn b/config_edittemplate.mdwn
index 24641bb5..a61dbb5f 100644
--- a/config_edittemplate.mdwn
+++ b/config_edittemplate.mdwn
@@ -1,14 +1,18 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-This page exists purely for configuring the [[iki plugins/edittemplate]]
+This page exists purely for configuring the [[!iki plugins/edittemplate]]
plugin.
-[[edittemplate template="config_edittemplate/regular_page" match="*"]]
+ * [[!edittemplate template="config_edittemplate/regular_page" match="* and
+ !open_issues/*"]]
+ * [[!edittemplate template="config_edittemplate/open_issue_page"
+ match="open_issues/*"]]
diff --git a/config_edittemplate/open_issue_page.mdwn b/config_edittemplate/open_issue_page.mdwn
new file mode 100644
index 00000000..ede41ad8
--- /dev/null
+++ b/config_edittemplate/open_issue_page.mdwn
@@ -0,0 +1,33 @@
+[[!meta copyright="Copyright © 2011 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 STARTS YOUR NEW CONTENT -- remove everything from here on, including this
+line.
+
+By creating this page, you agree to assign copyright for your contribution to
+the Free Software Foundation, <http://www.fsf.org/>. The Free Software
+Foundation promises to always use a free documentation license (as per our
+criteria of free documentation) when publishing your contribution. We grant
+you back all your rights under copyright, including the rights to copy, modify,
+and redistribute your contributions.
+
+We're requiring these copyright assignments, so that we'll easily be able to
+include your contributions in official GNU documentation, such as the GNU Hurd
+Reference Manual, etc. Send email to <hurd-maintainers@gnu.org> if there are
+questions.
+
+
+As you're creating a new open issue page, please supply some suitable tags
+(like \[[!tag open_issue_porting]], or \[[!tag open_issue_hurd
+open_issue_mig]], etc.; remove the backslash, of course) to make sure that your
+report shows up on the relevant lists of open issues. Select *Preview* on this
+page to see all tags that are currently in active use.
+
+[[!inline pages=tag raw=yes feeds=no]]
diff --git a/config_edittemplate/regular_page.mdwn b/config_edittemplate/regular_page.mdwn
index fe591ac7..68669f84 100644
--- a/config_edittemplate/regular_page.mdwn
+++ b/config_edittemplate/regular_page.mdwn
@@ -1,23 +1,24 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2011 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
HERE STARTS YOUR NEW CONTENT -- remove everything from here on, including this
line.
By creating this page, you agree to assign copyright for your contribution to
-the Free Software Foundation. The Free Software Foundation promises to always
-use a free documentation license (as per our criteria of free documentation)
-when publishing your contribution. We grant you back all your rights under
-copyright, including the rights to copy, modify, and redistribute your
-contributions.
+the Free Software Foundation, <http://www.fsf.org/>. The Free Software
+Foundation promises to always use a free documentation license (as per our
+criteria of free documentation) when publishing your contribution. We grant
+you back all your rights under copyright, including the rights to copy, modify,
+and redistribute your contributions.
We're requiring these copyright assignments, so that we'll easily be able to
include your contributions in official GNU documentation, such as the GNU Hurd
-manual, etc. Send email to <hurd-maintainers@gnu.org> if there are questions.
+Reference Manual, etc. Send email to <hurd-maintainers@gnu.org> if there are
+questions.
diff --git a/confused_deputy.mdwn b/confused_deputy.mdwn
index 16b3bebf..92be6415 100644
--- a/confused_deputy.mdwn
+++ b/confused_deputy.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
[The confused deputy](http://www.cis.upenn.edu/~KeyKOS/ConfusedDeputy.html)
problem was articulated by Norm Hardy. It is a possible consequence
diff --git a/contact_us.mdwn b/contact_us.mdwn
new file mode 100644
index 00000000..2f483780
--- /dev/null
+++ b/contact_us.mdwn
@@ -0,0 +1,26 @@
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 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]]."]]"""]]
+
+ * [[Community]] -- the community around GNU Hurd.
+
+ * [[Trackers]] -- for reporting issues.
+
+ * [[Mailing_Lists]] -- preferred for general discussions, questions, bug
+ reports, etc.
+
+ * [[IRC]] -- for interactive discussions with a smaller audience.
+
+ * Non-public mail contact to the maintainers.
+
+ If you have a concern you want to send to the Hurd maintainers without
+ writing to a public mailing list, then please send email to
+ <hurd-maintainers@gnu.org>. Please don't send general support requests or
+ questions there, but instead use the [[mailing lists]].
diff --git a/contributing.mdwn b/contributing.mdwn
index b6ac3aa0..1745b61a 100644
--- a/contributing.mdwn
+++ b/contributing.mdwn
@@ -1,39 +1,47 @@
-[[meta copyright="Copyright © 2006, 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-So, you are interested in contributing to the GNU Hurd effort?
+[[!tag stable_URL]]
-Welcome! Every single contribution is very much encouraged!
+So, you are interested in contributing to the GNU Hurd project? Welcome!
+Every single contribution is very much encouraged.
-There are various ways of contributing, read on about contributing to...
+There are various ways to contribute; read up on contributing to...
-# These wiki pages
+[[!toc levels=4]]
-Please read about [[how_to_contribute_to_this_wiki|wiki]].
+If someone of you is lurking around here and would like to contribute, but
+feels she / he could do so better under formal mentoring: please
+[[contact_us]], or just speak up at one of the [[regular IRC
+meetings|IRC#regular_meetings]]!
+We also have a list of [[open_issues]] and one for more elaborate [[project
+ideas|community/gsoc/project_ideas]] - the latter originally written for the
+[[Google Summer of Code|community/gsoc]], but not exclusively. Even just
+investigating open issues, without being able to fix them, can be useful,
+because a issue that has been tracked down often becomes obvious to address for
+people who know the stuff -- but these people typically don't have the time
+that is needed to track down the issues.
-# The system itself
-There are essential two kinds of Hurd system designs.
+<a name="hurd_on_mach"></a>
+# Improve GNU Hurd Running on GNU Mach
+The *[[GNU Hurd|hurd]] running on the [[GNU Mach
+microkernel|microkernel/mach/gnumach]]* is what is commonly meant when people
+are talking about GNU/Hurd systems.
-## Hurd on Mach
-
-For one there's the implementation of the *[[Hurd]] running on the
-[[GNU_Mach_microkernel|microkernel/mach/gnumach]]*. This is what is commonly
-meant when people are talking about GNU/Hurd systems.
-
-This system has mostly been designed and implemented [in the
-'90s](http://www.gnu.org/software/hurd/history.html). It works and is usable.
-For example, this wiki system [is running on a GNU/Hurd
-system](http://www.bddebian.com/cgi-bin/uptime).
+This system has mostly been designed and implemented
+[[in the '90s|history]]. It works and is usable.
+For example, these web pages have been rendered on a GNU/Hurd system.
You can try it out for yourself: for getting access, installing
[[Debian_GNU/Hurd|hurd/running/debian]] will probably be the easiest and most
@@ -44,20 +52,115 @@ things you're going to work on (and on your internet connection), this may be
an easy way of getting used to Hurd systems. Installing in a virtual machine
is another possibility, see the page about
[[running_a_Hurd_system|hurd/running]] for the full story.
+In particular, running a Debian GNU/Hurd [[QEMU image|hurd/running/QEMU]] may
+be a viable alternative.
Then you can either play around and eventually strive to do something
-useful or -- if you want -- ask us to assign something to you, depending
+useful or -- if you want -- [[ask_us|contact_us]] to assign something to you, depending
on the skills you have and the resources you intend to invest.
Please spend some time with thinking about the items in this [[questionnaire]].
-For more reading resources, please see this whole wiki, and also
-<http://www.gnu.org/software/hurd/devel.html>,
-<http://www.gnu.org/software/hurd/docs.html> for links to a bunch of documents,
-and <http://www.gnu.org/software/hurd/> in general.
+Before you can significantly contribute to the operating system itself, you'll
+need to take some time to learn about the system, for example:
+[[microkernels for beginners|microkernel/for_beginners]], [[Mach's
+concepts|microkernel/mach/concepts]], [[Hurd's concepts|hurd/concepts]], the
+*[[hurd/critique]]*. Until you can understand and do the basic exercises
+listed there, you won't be able to significantly contribute to the Hurd.
+
+For more reading resources, please see these web pages, for example,
+[[Hurd_documentation|hurd/documentation]] and
+[[Mach_documentation|microkernel/mach/documentation]] for links to a bunch of
+documents.
+
+
+<a name="porting"></a>
+## Porting Packages
+
+Please [[contact_us]] before spending a lot of time on the following porting
+tasks: some work may already have been done that you can base your work upon.
+
+For guidelines, please have a look at the dedicated [[porting_page|hurd/porting]].
+
+
+### Debian GNU/Hurd
+
+[[!template id=note text="""#### Debian Wheezy Release
+
+There is a goal of getting Debian GNU/Hurd into shape for a proper release with
+Debian Wheezy (expected towards the end of 2012 or beginning of 2013).
+
+The *to do* list is on <http://wiki.debian.org/Debian_GNU/Hurd>."""]]
+
+The following missing packages/missing functionality block a lot of other
+packages, and are thus good candidates for porting, in order to increase
+archive coverage:
+
+* umount functionality in busybox
+* gtest
+* hdf5
+* hyperestraier
+* sane*
+* ghc (ghc6 and ghc7)
+* [[open_issues/gnat]]
+* ruby1.9.1
+
+Here is a [[list of packages that need porting|hurd/running/debian/porting]].
+
+You can also just [[install_Debian_GNU/Hurd|hurd/running/debian]] and find what
+doesn't work or suit you and try to improve that.
+
+Or, you can pick one from the [list of failing
+packages](http://people.debian.org/~sthibault/failed_packages.txt).
+
+
+## Open Issues
+
+There is a list of [[open_issues]]. This list includes everything from bug
+reports to open-ended research questions.
+
+<a name="insta-dev-env"></a>
+## Instant Development Environment
-## Hurd on a modern microkernel
+<!-- I don't like this being here. At least not in this form. This just
+duplicates information that is available in other places. (Or should be
+available in other places, in more elaborate form.)
+
+The idea of a one-stop development environment is not bad (I like that), but
+I'd do this differently. For example, we should add some Git submodules to the
+master hurd.git repository (which is currently empty), to branches that are
+known to build and interface correctly with current GNU/Hurd system
+installations (thus including TLS, etc.), and also add in my cross-gnu scripts
+and a simple build machinery so this is usable from GNU/Linux (and other
+systems), and so on and so forth.
+
+I'll have to think about it some more.
+
+--[[tschwinge]]. -->
+
+*This is a very brief guide to get your development environment set up. Pester ArneBab @ irc.freenode.net on IRC if something does not work :)*
+([[!taglink open_issue_documentation]])
+
+* Install qemu-kvm via your distros packages.
+* Download the [qemu image](http://people.debian.org/~sthibault/hurd-i386/debian-hurd.img.tar.gz): `wget http://people.debian.org/~sthibault/hurd-i386/debian-hurd.img.tar.gz`
+* Unpack it: `tar xf debian-hurd.img.tar.gz`
+* Run it: `qemu-kvm debian-hurd.img -m 512 -no-kvm-irqchip` # …irq… is a currently necessary fix due to some changes in Linux. Optionally use `--curses` to keep your keyboard layout. If need be modprobe kvm_amd, kvm intel and kvm to get kvm support (which is much, much faster)
+* login as root
+* `apt-get update`
+* `apt-get install -y git mercurial emacs vim`
+* `apt-get build-dep -y hurd gnumach`
+* `git clone git://git.sv.gnu.org/hurd/hurd.git`
+* `git clone git://git.sv.gnu.org/hurd/gnumach.git`
+* `git clone git://git.sv.gnu.org/hurd/incubator.git`
+* Get more from the [repo list](http://git.savannah.gnu.org/cgit/hurd/).
+* Read the docs on these pages.
+* Start hacking.
+* For shutting down, use `reboot`, then press `c` in grub and issue halt (to avoid filesystem corruption). Adding `--no-reboot` to the qemu line should help, too.
+
+
+<a name="hurd_on_modern_microkernel"></a>
+# Design / Research: GNU Hurd on a Modern Microkernel
Developers [[have_identified|hurd/critique]] a number of problem with the *Hurd on
Mach* system. Problems, that can not easily be fixed by bug-fixing the
@@ -70,9 +173,49 @@ itself is more a research project than a *sit down and implement/code/hack*
project.
If you're interested in contributing in this area, knowing the *Hurd on Mach*
-system nevertheless is a prerequisite. At least have a deep look at the
-documentation pointers given in the previous section. Also read through the
-[[HurdNG|hurd/ng]] section of this wiki.
+system (see [[above|contributing#hurd_on_mach]]) nevertheless is a
+prerequisite. At least have a deep look at the documentation pointers. Also
+read through the [[HurdNG|hurd/ng]] section.
-Please send email to the [[mailing_lists/l4-hurd]] mailing list for discussing
+Please send email to the [[mailing lists/l4-hurd]] mailing list for discussing
this post-Mach system design.
+
+
+# Documentation
+
+
+## Technical Writer
+
+Our hackers (programmers) typically do what their kind always does: they code.
+What they don't like too much is documenting their wonderful achievements. On
+the other hand, there are people (you?) who enjoy documenting technical
+matters, so don't hesitate to [[contact_us]] if technical documentation shall
+be your contribution to GNU Hurd development.
+
+
+## Web Pages
+
+Please read about [[how_to_contribute_to_these_web_pages|web_pages]].
+
+
+# Final Words -- Difficulties
+
+Please note that doing substantial contributions to a project as big and as
+encompassing as the GNU Hurd is not a trivial task. For working on the GNU
+Hurd's inner guts and getting useful work done, you have to plan for a
+many-months learning experience which will need sufficient self-motivation.
+Working on an advanced operating system kernel isn't something you can do in a
+few free minutes -- even less so without any previous [[kernel]] hacking
+experience.
+
+Likewise, the Linux kernel maintainers are stating the exactly same
+difficulties, which is well presented by Jonathan Corbet in his 2010 Linux
+Kernel Summit report for the opening sessions about [*welcoming of
+newcomers*](http://lwn.net/Articles/412639/).
+
+But of course, none of this is meant to be dismissive, or to scare you away --
+on the contrary: just [[start
+using|hurd/running]] the GNU Hurd, and either notice yourself what's not
+working as expected, or have a look at one of the [[Open Issues]], and we shall
+see if you'll evolve to be the next core Hurd hacker!
+You'll *just* have to get excited about it!
diff --git a/contributing/copyright_assignment.mdwn b/contributing/copyright_assignment.mdwn
new file mode 100644
index 00000000..b65594de
--- /dev/null
+++ b/contributing/copyright_assignment.mdwn
@@ -0,0 +1,28 @@
+[[!meta copyright="Copyright © 2006, 2007, 2008, 2009, 2011 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]]."]]"""]]
+
+If you have pieces of code or documentation to contribute, then, in order to
+install them into our [[source_repositories]], you have to assign the copyright
+of your changes to the [Free Software Foundation](http://www.fsf.org/).
+
+The assignment for [[GNU Mach|microkernel/mach/gnumach]] additionally covers
+[[microkernel/mach/mig/GNU_MIG]] (which used to be a component of GNU Mach, and
+logically still is).
+
+The assignment for [[GNU Hurd|hurd]] additionally covers the separate
+[[source_repositories/incubator]], [[libpthread]], [[hurd/translator/procfs]],
+[[hurd/translator/unionfs]], [[microkernel/viengoos]],
+[[web|contributing/web_pages]] repositories, and possibly more.
+
+Amongst others, the assignments for [[binutils]], [[GCC]], [[GDB]], [[glibc]]
+are separate ones.
+
+Please [[contact_us]] to request the needed forms.
diff --git a/contributing/discussion.mdwn b/contributing/discussion.mdwn
new file mode 100644
index 00000000..5a6bfd7c
--- /dev/null
+++ b/contributing/discussion.mdwn
@@ -0,0 +1,21 @@
+[[!meta copyright="Copyright © 2011 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_documentation]]
+
+
+# One-stop Development Environment
+
+Invent something.
+
+
+# Mailing Lists
+
+Add link to [[mailing_lists]] to page, and suggest following these.
diff --git a/contributing/questionnaire.mdwn b/contributing/questionnaire.mdwn
index 3320b80a..28c69f74 100644
--- a/contributing/questionnaire.mdwn
+++ b/contributing/questionnaire.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2006, 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2006, 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
People often come to us and state that they'd like to help with the GNU/Hurd.
This is very good and very much encouraged: we're always looking for volunteers
@@ -26,6 +26,11 @@ items and spend some time thinking about those.
projects are all within the *Hurd* topic, but are vastly different
projects.
+* How much time do you have?
+
+ Do you plan to work on just a small project, or do you have time for
+ longer development?
+
* How is your expertise about system and kernel programming?
Sadly we don't have the ressources to teach you from ground-up. We will --
@@ -42,4 +47,4 @@ items and spend some time thinking about those.
Every new contributor is very much encouraged to take some notes about these
-items and post them to *[[mailing_lists/bug-hurd]]*.
+items and post them to *[[mailing lists/bug-hurd]]*.
diff --git a/contributing/web_pages.mdwn b/contributing/web_pages.mdwn
new file mode 100644
index 00000000..d1b3c0fc
--- /dev/null
+++ b/contributing/web_pages.mdwn
@@ -0,0 +1,245 @@
+[[!meta copyright="Copyright © 2007, 2008, 2009, 2010, 2011 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]]."]]"""]]
+
+[[!meta title="Contribute to the Web Pages"]]
+
+[[!toc levels=3]]
+
+
+# General Information
+
+(!) Some general hints first; they may sound very familiar from other software
+projects:
+
+ * Do independent changes *separately*: don't aggregate changes that don't
+ belong together.
+ * Install your changes *early* and *often*: don't hold your contribution back
+ until you think it is perfect.
+
+## Syntax
+
+Before doing any changes, you are encouraged to play a bit in the
+[[sandbox]], to become familiar with the [[ikiwiki/Markdown]] syntax. Get some
+[[help_on_formatting|ikiwiki/formatting]].
+
+## Commit Messages
+
+Please comment every change you make, however small. Keep all comments short
+and to the point, e.g. "Fixed typo." or "Added link to main page.".
+
+## Asking Questions -- on Sub-Pages
+
+Feel free to ask questions or report problems on every page's [[discussion]]
+sub-page. They're reachable from the *Discussion* link on the top of the page,
+which will, when selected, create a new page if there isn't one yet.
+
+## Editing Pages
+
+Every page on the site is editable, like in a wiki. Feel free to join in, but
+we do have some simple requests. Please try to match the *tone* of your topics
+and edits with the existing topics. If we all pull in the same direction these
+pages will be more useful for everyone, especially for our own use.
+
+### Which Pages to Work on?
+
+If you don't know which pages to work on, please have a look at those tagged
+with [[tag/open_issue_documentation]]. Typically, you'll have to look at the
+pages' source code (Markdown) to see which parts the tag applies to.
+
+### News Items
+
+There are [[more detailed instructions about editing news items|news]].
+
+<a name="staging_area">
+## Staging Area
+</a>
+
+When you commit changes, either using the web interface or checking them in
+into the repository; they won't become visible on
+<http://www.gnu.org/software/hurd/> immediately, but on
+<http://www.bddebian.com:8888/~hurd-web/> instead. The former set of pages,
+the official GNU Hurd web appearance, will be updated periodically (but
+manually) from the latter one, where every edit is visible immediately. This
+is so that we have a chance to have the pages make fit for appearance on
+`www.gnu.org`, but you are nevertheless able to work on all pages
+unrestrictedly.
+
+
+# Editing via the Web Interface
+
+When you have found a page you want to work on, just follow the *Edit* link at the
+top of the page. When doing this for the first time, this will first redirect
+you to a page where you will have to create an account. After logging in, you
+can edit pages.
+
+
+# Working on a Checkout of the Git Repository
+
+(!) What is being described here is only the basics. The checkouts are
+completely valid Git repositories and can (and want to) be treated as such.
+Consult the Git documentation about how to shuffle around with branches, how to
+rename files, how to add arbitrary data files, and so on.
+
+(!) Before attempting any bigger editing work (to which you are sincerely
+invited!) be sure to check the involved pages' *Discussion* sub-pages (linked
+from the pages' header line) and in there take down (short) notes about the
+editing endeavours you're going to undertake. Doing so should help to (a) avoid
+double work and (b) avoid merge conflicts if you install your changes into the
+main repository.
+
+## Identifying Yourself
+
+First, let's make sure that you're properly identifying yourself towards Git.
+
+ $ git var GIT_AUTHOR_IDENT
+ Thomas Schwinge <tschwinge@gnu.org> 1186743435 +0200
+
+If it doesn't look akin to that for you, you'd better adjust either your
+`EMAIL` environment variable or alternatively tell Git about your real
+identity:
+
+ $ git config --global user.name 'Your Name'
+ $ git config --global user.email you@somewhere.invalid
+
+## Getting the Sources
+
+To be able to do a checkout from which you can later directly push your
+changes back into the master repository, you need a
+[[shell_account_on_*flubber*|public_hurd_boxen]] and need to be a member of
+the *hurd-web* group. (It's also recommended that you set up your local
+SSH configuration as advised on that page.) If you have an account on there:
+
+ $ git clone flubber:~hurd-web/hurd-web [dest]
+
+If you don't have such an account or don't have your login data handy, you can
+still get pages the read-only way.
+
+ $ git clone git://flubber.bddebian.com/~hurd-web/hurd-web [dest]
+
+If that also doesn't work out, you have yet another chance: pull over the HTTP
+protocol. Not very efficient (read: rather inefficient), but it works. This
+is also read-only.
+
+ $ git clone http://www.bddebian.com:8888/git/hurd-web [dest]
+
+For all cases: if you omit `[dest]` it will default to `hurd-web`.
+
+Later, you can just `cd` into the `hurd-web` directory and run a `git pull` to
+get hold of the latest changes others have been installing in the mean time.
+(In most cases, you should use `git pull --rebase`,
+to avoid useless *Merge branch ...* messages. See the
+Git documentation for details.)
+
+## Editing the Content
+
+But now: work on these files.
+
+ $ cd hurd-web/
+ $ emacs hurd/ng.mdwn
+ $ # Check what you've done.
+ $ git diff hurd/ng.mdwn
+ $ git commit hurd/ng.mdwn
+ [...]
+ $ # Add a new file.
+ $ emacs microkernel/mach/issues.mdwn
+ $ git add microkernel/mach/issues.mdwn
+ $ git commit microkernel/mach/issues.mdwn
+ [...]
+ $ [...]
+
+Remember that at this stage your commits have only been installed into your
+personal working copy. You'll finally have to explicitly install your changes
+into the master repository, see below.
+
+## Preview Changes
+
+You can also locally get the whole set of pages rendered to HTML:
+
+ $ hurd-web/render_locally
+ [...]
+ scanning contributing/web_pages.mdwn
+ rendering contributing/web_pages.mdwn
+
+ Now open `hurd-web.rendered/index.html' to browse the pages.
+
+### ikiwiki's `w3mmode`
+
+If you're a [`w3m`](http://w3m.sourceforge.net/) user, you can also use `w3m`
+to edit your files locally, as it were done through the web interface at
+<http://www.bddebian.com:8888/~hurd-web/>.
+
+First, generate the wrapper. Unless the configuration is changed, this has to
+be done only once.
+
+ $ hurd-web/render_locally --w3m-wrapper
+ successfully generated /home/thomas/.ikiwiki/wrappers/hurd-web.cgi
+
+Render the pages:
+
+ $ hurd-web/render_locally --w3m
+ [...]
+ scanning contributing/web_pages.mdwn
+ rendering contributing/web_pages.mdwn
+
+ Now open `hurd-web.rendered.w3m/index.html' to browse the pages.
+
+Invoke `w3m`:
+
+ $ w3m hurd-web.rendered.w3m/index.html
+
+Or, to directly create a new page:
+
+ $ w3m 'file:///$LIB/ikiwiki-w3m.cgi/hurd-web.cgi?page=open_issues/gnumach_has_a_bug&do=create'
+
+Note that the changes you do via `w3m` will not be committed to the VCS (see
+[[render_locally]] for details.)
+
+## Publish Your Changes
+
+If you like what you've done, then it's now time to publish your changes.
+
+If you can push directly into the master repository this is really simple:
+
+ $ git push
+ updating 'refs/heads/master'
+ from d83f93f34b69633ca1afb588001df7addd708faf
+ to c0b8171de9c69e029bf998aafd4682105c217eb8
+ Generating pack...
+ [...]
+ Updating web pages. This may up to a few minutes at the utmost...
+
+If you can't do that, then first prepare to publish your changes:
+
+ $ git format-patch -M -B origin
+ 0001-Be-a-bit-more-expressive.patch
+ [...]
+
+See through the generated `*.patch` files and simply delete those you don't
+want to publish.
+
+Finally, publish the good ones. If you have a local mail transfer agent
+running, the following is all you have to do:
+
+ $ git send-email --to web-hurd@gnu.org *.patch
+ [...]
+
+If you don't have an MTA running, you'll have to find another way: either post
+the `*.patch` files to <web-hurd@gnu.org> or upload them somewhere for us to
+download them from.
+
+
+# New Year Procedure
+
+Files to update:
+
+ * `/config_edittemplate/*.mdwn`, `/.templates/autotag.tmpl`
+ * `/contributing/web_pages/news/skeleton.mdwn`
+ * `/copyright.mdwn`
diff --git a/contributing/web_pages/news.mdwn b/contributing/web_pages/news.mdwn
new file mode 100644
index 00000000..54fa788d
--- /dev/null
+++ b/contributing/web_pages/news.mdwn
@@ -0,0 +1,36 @@
+[[!meta copyright="Copyright © 2009, 2010, 2011 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]]."]]"""]]
+
+[[!meta title="""How to prepare and publish a "Month of the Hurd" for the last
+month"""]]
+
+We prepare a *Month of the Hurd* in the file [[moth_next]]. The idea is
+to record to-be-published changes in that file at they time they arise, and
+then publish them en bloc at the end of the month. There are instructions for
+[[writing_the_moth]].
+
+ * At the end of the month: prepare for publishing the MotH, then send the raw
+ Markdown text to the mailing list, asking for feedback.
+
+ * ..., and publish.
+
+ $ git mv contributing/web_pages/news/moth_next.mdwn news/YYYY-MM.mdwn
+
+ Edit the news entry's *meta date* value to the timestamp when the news
+ entry is published. We have to set that one manually, as otherwise the
+ timestamp of the news entry file's creation will be taken, which is (much)
+ earlier, and not what we want. We do not set the *meta updated* value, as
+ it's correct to update that one upon further modifications of the news
+ entries.
+
+ $ git cp contributing/web_pages/news/skeleton.mdwn contributing/web_pages/news/moth_next.mdwn
+ $ git commit -m 'MotH YYYY-MM.'
+ $ git push origin master
diff --git a/contributing/web_pages/news/2011-q2-ps.mdwn b/contributing/web_pages/news/2011-q2-ps.mdwn
new file mode 100644
index 00000000..8931cbb8
--- /dev/null
+++ b/contributing/web_pages/news/2011-q2-ps.mdwn
@@ -0,0 +1,131 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+<!--
+[[!meta date="2011-07-19 23:42 UTC"]]
+-->
+
+A quarter of the Hurd, Q2 of 2011, PS: *GNU Hurd Truths and Rumors*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="
+[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+After our last *[[Quarter of the Hurd|news/2011-q2]]* has been picked up by a bunch
+of news sites, blogs, and so on, discussions have been running all over the
+net. While we are happy to see that there obviously is quite some interest in
+the GNU Hurd, we also saw some rumors and outdated information flowing around.
+In the following, we try to clear the situation up a bit.
+
+ * *Debian wants to replace the Linux kernel with the GNU Hurd*. {X}
+ **Wrong**. We plan to get into Wheezy as an additional port besides
+ GNU/Linux and GNU/kFreeBSD -- but we don't know whether we will make it.
+ It depends on a lot of factors, a lot of work is still to be done. If you
+ want to help, please see our [[contributing]] page and the *to do* list
+ maintained on <http://wiki.debian.org/Debian_GNU/Hurd>.
+
+ * *GNU Hurd developers want the Linux kernel to die*. {X}
+ **Wrong**. All of us are happy users of the Linux kernel, every
+ day, and GNU/Linux is the free operating system of choice, which
+ we're using ourselves (unless sitting in front of a GNU/Hurd
+ system). We work on the Hurd instead of Linux because of the
+ [[additional capabilities and clean design|advantages]] it
+ provides.
+
+ * *Java support for GNU/Hurd is in the works*. (./) **True**. Jérémie
+ Koenig is working on making a versatile Java programming environment
+ available on the GNU/Hurd as part of his [[Google Summer of Code
+ project|user/jkoenig/java]], focussing on OpenJDK 7. Also, we already do
+ have support by the GCJ/ECJ platform, but this is not fully functional, and
+ Jérémie is improving that, too.
+
+ * *GNU/Hurd has no support for X.org*. {X} **Wrong**. X.Org *does* work,
+ and has for a long time. (Anyone remember [1998's
+ XFree86](http://cvsweb.xfree86.org/cvsweb/xc/programs/Xserver/hw/xfree86/os-support/hurd/hurd_video.c?rev=1.1&content-type=text/vnd.viewcvs-markup),
+ by chance?) It is correct however that not a lot of advanced drivers work,
+ due to missing DRM (Direct Rendering Manager) support.
+
+[[tschwinge]] thinks that the following one is a bit questionable...
+
+ * *The GNU/Hurd only runs on legacy hardware*. {X} **Wrong**. The GNU/Hurd
+ is only tested on a few platforms, but it likely runs on modern processors.
+ If you want to see if it works for you, just test a
+ [[hurd/running/Live_CD]].
+
+* *Hurd only supports legacy devices:* ½ Partly True: Currently most drivers are from Linux 2.0. For network cards, Linux 2.6+ drivers are available through DDE, though (needs manual setup for now). With a good amount of work, DDE also allows porting other classes of drivers to allow using the drivers from recent Linux releases — and push them into userspace.
+
+* *The Hurd has no SMP:* <u>✔ **True**</u>: Even though the **Hurd servers support SMP** and **GNU Mach has SMP support**. But the latter [[does_not_yet_have_drivers_for_nowadays_chipsets|faq/smp]], so the Hurd currently can’t take advantage of multiple cores.
+
+* *Developing a microkernel must be harder than developing a monolithic kernel, because the Hurd took so long:* ✘ **Wrong**: For the last decade, the Hurd had on average 5 hobby developers. That these developers managed to get the Hurd into a state where it actually gets not too far from the Linux kernel in performance — which has about 1000 developers, many of them full time — shows the efficiency of the Hurd’s design.
+
+* *Installation does not work:* ½ Partly True: Did you read the [[README|http://people.debian.org/~sthibault/hurd-i386/installer/cdimage/YES_REALLY_README.txt]] ([[file|http://xkcd.com/293/]])? Just like any beta piece of software, there are known pitfalls which you could easily avoid (or better, help to fix). You can also simply use the the [[preinstalled image|http://people.debian.org/~sthibault/hurd-i386/debian-hurd.img.tar.gz]].
+
+* *The system is called GNU/GNU Hurd:* ✘ **Wrong**: The GNU userland (glibc, coreutils, …) and the GNU Hurd together form the GNU system. To avoid being mistaken for GNU/Linux, we normally use the name GNU/Hurd or GNU Hurd. The *correct* name is simply GNU.
+
+**Test results**
+
+The results of the test from Phoronix were quite good. We expected that the microkernel design of the Hurd would have a far more severe performance hit.
+
+Some possible explanations:
+
+* The tests were mostly CPU bound.
+* IPCs [are no more such a problem on recent hardware][ipc].
+
+And a non-explanation:
+
+* The emulation layer should rather make the context switches worse, so it’s likely not at play.
+
+[ipc]: http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.51.16
+
+"""]]
+
+<!--
+
+slashdot
+
+and phoronix did some [performance tests of the Hurd][phorperf],
+[phorperf]: http://www.phoronix.com/scan.php?page=article&item=debian_gnu_hurd&num=1
+
+---
+
+IRC, freenode, #hurd, 2011-08-24:
+
+ < ArneBab> hurd related: I now think you were right, antrik: the hurd
+ rumors don’t belong into the news (tschwinge)
+ < antrik> ArneBab: you mean the postscriptum as a whole, or just the wild
+ rumours part?...
+ < ArneBab> the whole PS
+ < ArneBab> it should rather go into a blog post
+ < ArneBab> (in the wiki)
+ < antrik> hm... I don't think I agree
+ < ArneBab> why?
+ < antrik> apparently there is a number of people following the news now,
+ and apparently many of them misread some statements... it makes sense to
+ use the same channel for clarifying them I'd say
+ < ArneBab> hm, ok
+ < ArneBab> how would you select the part to include?
+ < antrik> roughly speaking, I'd include everything that actually relates to
+ the previous news that were misunderstood
+ < antrik> and drop all unrelated speculations that popped up
+ < antrik> BTW, it *might* be useful perhaps to actually update the original
+ news posting with the clarifications?...
+ < ArneBab> we can’t do that without breaking some peoples RSS feeds
+ < antrik> note that there is another aspect to consider: the fact that
+ several news sites picked it up is indeed genuine news by itself...
+ < ArneBab> that’s right, yes
+ < antrik> will it really break anything? from what I heard so far it just
+ means they will see the posting as new again, which would actually make
+ sense in this case...
+ < antrik> but I don't insist if you think it's too risky :-)
+ < antrik> just an idea
+
+-->
diff --git a/contributing/web_pages/news/moth_next.mdwn b/contributing/web_pages/news/moth_next.mdwn
new file mode 100644
index 00000000..3faa6e60
--- /dev/null
+++ b/contributing/web_pages/news/moth_next.mdwn
@@ -0,0 +1,77 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+<!-- Date when the news item is (to be) pulished (important for RSS feeds).
+Will be set by tschwinge when publishing.
+[[!meta date="YYYY-MM-DD HH:MM UTC"]]
+-->
+
+<!-- This is just a skeleton. Use it to create a new MotH. -->
+
+A month of the Hurd: *TODO*, *TODO*, and *TODO*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="
+[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+<!--basic structure of a MotH entry. Adapt, reduce and add points as needed. At the end, try to make the text flow as a unified whole.-->
+
+This month [hurd hacker] [item]
+
+Also …
+
+[our hackers] …
+
+Mainly thanks to …
+
+Additionally …
+
+And …
+
+[reason for contibuting to the Hurd]
+
+<!--see [[contributing/web_pages/news/writing_the_moth]] for additional information on writing the MotH.-->
+
+ * [[toolchain/ELFOSABI_GNU]]
+
+ * [Arch Hurd, DDE](http://www.archhurd.org/news/22/)
+
+ * Arch Hurd will have a booth at [FrOSCon](http://www.froscon.org/).
+
+ * <http://www.golem.de/1107/84947.html>
+
+ * <http://www.phoronix.com/scan.php?page=news_item&px=OTY2Nw>
+
+ * <http://phoronix.com/forums/showthread.php?57228-A-Status-Update-On-GNU-Hurd-Java-Debian-Money>
+
+ * <http://www.phoronix.com/scan.php?page=news_item&px=OTY3NQ>
+
+ * <http://phoronix.com/forums/showthread.php?57303-Coming-Up-Benchmarks-Of-GNU-Hurd>
+
+ * <http://www.phoronix.com/scan.php?page=article&item=debian_gnu_hurd&num=1>
+
+ * <http://phoronix.com/forums/showthread.php?57441-Test-Driving-GNU-Hurd-With-Benchmarks-Against-Linux>
+
+ * <http://news.slashdot.org/story/11/07/14/2141229/Watch-Out-Linux-GNU-Hurd-Coming>
+
+ * <http://news.slashdot.org/story/11/07/18/1854209/Test-Driving-GNU-Hurd-With-Benchmarks-Against-Linux>
+
+ * <http://blog.schmehl.info/Debian/hurd-not-default>
+
+ * LWN
+
+ * Bits from the Debian GNU/Hurd porters,
+ id:"20110721172827.GF4057@const.famille.thibault.fr"
+
+ * [[2011-q2-ps]]
+
+"""]]
diff --git a/contributing/web_pages/news/skeleton.mdwn b/contributing/web_pages/news/skeleton.mdwn
new file mode 100644
index 00000000..34c7e2f8
--- /dev/null
+++ b/contributing/web_pages/news/skeleton.mdwn
@@ -0,0 +1,44 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+<!-- Date when the news item is (to be) pulished (important for RSS feeds).
+Will be set by tschwinge when publishing.
+[[!meta date="YYYY-MM-DD HH:MM UTC"]]
+-->
+
+<!-- This is just a skeleton. Use it to create a new MotH. -->
+
+A month of the Hurd: *TODO*, *TODO*, and *TODO*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="
+[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+<!--basic structure of a MotH entry. Adapt, reduce and add points as needed. At the end, try to make the text flow as a unified whole.-->
+
+This month [hurd hacker] [item]
+
+Also …
+
+[our hackers] …
+
+Mainly thanks to …
+
+Additionally …
+
+And …
+
+[reason for contibuting to the Hurd]
+
+<!--see [[contributing/web_pages/news/writing_the_moth]] for additional information on writing the MotH.-->
+
+"""]]
diff --git a/contributing/web_pages/news/writing_the_moth.mdwn b/contributing/web_pages/news/writing_the_moth.mdwn
new file mode 100644
index 00000000..82a25088
--- /dev/null
+++ b/contributing/web_pages/news/writing_the_moth.mdwn
@@ -0,0 +1,77 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+# Short Guide for Writing the MotH
+
+
+## Individual News Items
+
+The basic structure for a news item is as follows: *\[person with](link) did
+\[task with}(link to testable code/patch) which brings us further towards
+\[[goal]] by [short, easily understandable description of the contribution]*.
+
+Each news item should show a step towards the mission of the Hurd. From
+[[community/weblogs/antrik/hurd-mission-statement]] you can
+glean the following basic goals:
+
+ * Better support for day-to-day desktop use (more packages, more stable, more
+ drivers, easier to setup, ...).
+ * More user freedom and possibilities for programs/translators.
+ * Technical advancement.
+ * More unique or at least interesting features.
+ * Attract more developers and/or users.
+
+The reason for this structure is to resolve the problem that many people think
+that the Hurd won't ever be finished by concentrating on the improvements and
+the steps towards completing our mission -- but only once they have actually
+been done (to avoid showing anything which might become vaporware).
+
+
+## Sources for News Items
+
+Watch these places for news:
+
+ * GNU
+
+ * <http://lists.gnu.org/archive/html/bug-hurd/YYYY-MM/threads.html>
+
+ * <http://lists.gnu.org/archive/html/commit-hurd/YYYY-MM/threads.html>
+
+ * <http://lists.gnu.org/archive/html/help-hurd/YYYY-MM/threads.html>
+
+ * <http://lists.gnu.org/archive/html/web-hurd/YYYY-MM/threads.html>
+
+ * <http://lists.gnu.org/archive/html/hurd-devel/YYYY-MM/threads.html>
+
+ * <http://sourceware.org/ml/libc-alpha/YYYY-MM/>
+
+ Also Git log.
+
+ * (<http://sourceware.org/ml/libc-hacker/YYYY-MM/>)
+
+ * (<http://sourceware.org/ml/glibc-cvs/YYYY-qQ/>)
+
+ Better use the Git log.
+
+ * <http://lists.gnu.org/archive/html/l4-hurd/YYYY-MM/threads.html>
+
+ * Debian
+
+ * <http://lists.debian.org/debian-hurd/YYYY/MM/>
+
+ * <http://lists.debian.org/debian-glibc/YYYY/MM/>
+
+ * Arch Hurd
+
+ * <http://www.archhurd.org/news.php>
+
+ * <http://planet.archhurd.org/>
+
+ * (<http://lists.archhurd.org/devel/maillist.html>)
diff --git a/contributing/wiki.mdwn b/contributing/wiki.mdwn
deleted file mode 100644
index 02911965..00000000
--- a/contributing/wiki.mdwn
+++ /dev/null
@@ -1,167 +0,0 @@
-[[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]]."]]"""]]
-
-(!) Some general hints first; they may sound very familiar from other software
-projects:
-
- * Do independent changes *separately*: don't aggregate changes that don't
- belong together.
- * Install your changes *early* and *often*: don't hold your contribution back
- until you think it is perfect.
-
-Before doing any changes, you are encouraged to play a bit in this wiki's
-[[sandbox]], to become familiar with the [[ikiwiki/Markdown]] syntax. Get some
-[[help_on_formatting|ikiwiki/formatting]].
-
-Please comment every change you make, however small. Keep all comments short
-and to the point, e.g. "Fixed typo." or "Added link to main page.".
-
-Feel free to ask questions or report problems on every page's [[discussion]]
-sub-page. They're reachable from the *Discussion* link on the top of the page,
-which will, when selected, create a new page if there isn't one yet.
-
-Every page on the site is editable. Feel free to join in, but we do have some
-simple requests. In an ideal wiki, everyone is equal and shares equal rights,
-liberties, responsibilities and common sense. Please try to match the *tone*
-of your topics and edits with the existing topics. If we all pull in the same
-direction the site will be more useful for everyone, especially for our own
-use.
-
-
-# Edit Via the Web Interface
-
-When you found a page you want to work on, just follow the *Edit* link on the
-top of the page. When doing this for the first time, this will first transfer
-you to a page where you have to create a wiki account. After logging in, you
-can edit the wiki pages.
-
-
-# Working on a Checkout of the git Repository
-
-(!) What is being described here are only the basics. The checkouts are
-completely valid git repositories and can (and want to) be treated as such.
-Consult the git documentation about how to shuffle around with branches, how to
-rename files, how to upload arbitrary data files, and so on.
-
-(!) Before attempting any bigger editing work (to which you are sincerely
-invited!) be sure to check the involved pages' *Discussion* subpages (linked
-from the pages' header line) and in there take down (short) notes about the
-editing endeavors you're going to undertake. Doing so should help to (a) avoid
-double work and (b) avoid merge conflict if you install your changes into the
-main repository.
-
-
-First, let's make sure that you're properly identifying yourself towards git.
-
- $ git var GIT_AUTHOR_IDENT
- Thomas Schwinge <tschwinge@gnu.org> 1186743435 +0200
-
-If it doesn't look akin to that for you, you'd better adjust either your
-`EMAIL` environment variable or alternatively tell git about your real
-identity:
-
- $ git config --global user.name 'Your Name'
- $ git config --global user.email you@somewhere.invalid
-
-
-For being able to do a checkout from which you can later directly push your
-changes back into the master repository, you need a
-[[shell_account_on_*flubber*|public_hurd_boxen]] and need to be a member of
-the *wiki* group. (It's also very much recommenable that you set up your local
-ssh configuration as advised on that page.) If you have an account on there:
-
- $ git clone flubber:~wiki/wiki [dest]
-
-If you don't have such an account or don't have your login data handy, you can
-still get the pages the read-only way.
-
-Getting the files by using the native git protocol is currently not possible,
-but will be possible again as soon as the master repository has been relocated
-to the GNU Savannah machine.
-
-<!--
- $ git clone git://flubber.bddebian.com/git/wiki [dest]
-
-If that also doesn't work out, you have yet another chance: pull over the http
-protocol. Not very efficient (read: rather inefficient), but it works. This
-is also read-only.
--->
-
- $ git clone http://www.bddebian.com/git/wiki [dest]
-
-For all cases: if you omit `[dest]` it will default to `wiki`.
-
-Later, you can just `cd` into the `wiki` directory and run a `git pull` to get
-hold of the latest changes others have been installing in the mean time. (Even
-better would be to do a `git fetch`, followed by a `git rebase origin/master`
-to avoid those *Merge branch ...* messages. See the git documentation for
-details.)
-
-
-But now: work on these files.
-
- $ cd wiki/
- $ emacs hurd/ng.mdwn
- $ # Check what you've done.
- $ git diff hurd/ng.mdwn
- $ git commit hurd/ng.mdwn
- [...]
- $ # Add a new file.
- $ emacs microkernel/mach/issues.mdwn
- $ git add microkernel/mach/issues.mdwn
- $ git commit microkernel/mach/issues.mdwn
- [...]
- $ [...]
-
-Remember that at this stage your commits have only been installed into your
-personal working copy. You'll finally have to explicitly install your changes
-into the master repository, see below.
-
-
-You can also locally get the whole wiki rendered to html pages:
-
- $ wiki/render_locally
- [...]
- scanning contributing/wiki.mdwn
- rendering contributing/wiki.mdwn
-
- Now open `wiki.rendered/index.html' to browse the wiki pages.
-
-
-If you like what you've done, then it's now time to publish your changes.
-
-If you can push directly into the master repository this is really simple:
-
- $ git push
- updating 'refs/heads/master'
- from d83f93f34b69633ca1afb588001df7addd708faf
- to c0b8171de9c69e029bf998aafd4682105c217eb8
- Generating pack...
- [...]
- Updating web pages. This may up to a few minutes at the utmost...
-
-If you can't do that, then first prepare to publish your changes:
-
- $ git-format-patch -M -B origin
- 0001-Be-a-bit-more-expressive.patch
- [...]
-
-See through the generated `*.patch` files and simply delete those you don't
-want to publish.
-
-Finally, publish the good ones. If you have a local mail transfer agent
-running, the following is all you have to do:
-
- $ git-send-email --to web-hurd@gnu.org *.patch
- [...]
-
-If you don't have an MTA running, you'll have to find another way: either post
-the `*.patch` files to <web-hurd@gnu.org> or upload them somewhere for us to
-download them from.
diff --git a/copyright.html b/copyright.html
deleted file mode 100644
index fcdab55d..00000000
--- a/copyright.html
+++ /dev/null
@@ -1 +0,0 @@
-Copyright © 2002, 2003, 2004, 2005, 2006, 2007, 2008 The Contributing Authors
diff --git a/copyright.mdwn b/copyright.mdwn
new file mode 100644
index 00000000..24dc1725
--- /dev/null
+++ b/copyright.mdwn
@@ -0,0 +1,2 @@
+Copyright © 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 The
+Contributing Authors
diff --git a/dde.mdwn b/dde.mdwn
new file mode 100644
index 00000000..7d341da5
--- /dev/null
+++ b/dde.mdwn
@@ -0,0 +1,42 @@
+[[!meta copyright="Copyright © 2009, 2010 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]]."]]"""]]
+
+ * [[community/gsoc/project ideas/driver glue code]]
+
+ * [[open issues/user-space device drivers]]
+
+ * [[open issues/device drivers and io systems]]
+
+---
+
+# Documentation
+
+ * <http://demo.tudos.org/dsweeper_tutorial.html>
+
+ Why device drivers in user space; different possibilities for getting
+ device drivers; DDE's origins and rationale.
+
+ * <http://wiki.tudos.org/DDE/DDEKit>,
+ <http://os.inf.tu-dresden.de/pipermail/l4-hackers/2009/004291.html>
+
+ Structural overview of the components.
+
+
+# Discussion
+
+DDE essentially is a glue layer to embed Linux device drivers into another
+environement. In the DDE case, this *other environment* is a user-space task
+-- compared to the GNU Mach kernel having a *in-kernel* Linux 2.0 device
+drivers glue code (cf. paper by Goel et al.).
+
+
+# Source Code
+
+ * <http://www.inf.tu-dresden.de/index.php?node_id=1584&ln=en>
diff --git a/designation.mdwn b/designation.mdwn
index 4307ec5b..771d8e66 100644
--- a/designation.mdwn
+++ b/designation.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
To designate is to name.
diff --git a/destructive_interference.mdwn b/destructive_interference.mdwn
index c41e5a36..1f468034 100644
--- a/destructive_interference.mdwn
+++ b/destructive_interference.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Interference can be destructive or non-destructive. When a [[principal]]
invokes an object (thereby requesting a service) and the implementation
@@ -19,7 +19,7 @@ the Solitaire program is instantiated and given all of the user's
authority. The program may delete all of the users files after
publishing credit card and other sensitive information on the Internet.
This type of interference is undesirable, however, generally practically
-unavoidable due to the way programs work on Windows (and Unix, for that
+unavoidable due to the way programs work on Windows (and [[Unix]], for that
matter).
The problem is that the callee has induced negative consequence for caller
diff --git a/documentation.mdwn b/documentation.mdwn
index fd8aefe2..5ab08bfb 100644
--- a/documentation.mdwn
+++ b/documentation.mdwn
@@ -1,18 +1,85 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2010, 2011 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-## Documentation
+You are interested in getting familiar with the GNU/Hurd system architecture,
+or specific components of it? Here is a collection of texts to read.
-GNU Hurd Documentation http://www.gnu.org/software/hurd/docs.html
+/!\ A lot of stuff is still missing ([[!taglink open_issue_documentation]]).
-## Unix Programming
+[[!toc levels=3]]
-The C Programming Language
-by Brian W. Kernighan and Dennis M. Ritchie
+
+# Basic Knowledge
+
+Before you can go details, you have to learn the basics about operating system
+architecture. Yes, really.
+
+
+## Operating Systems Basics
+
+Books. Etc.
+
+
+## GNU/Hurd System Architecture
+
+
+### Capabilities
+
+[[!toggleable id=shapiro_capintro_1999 text="""[[!template id=note
+text="*[[shapiro\_capintro\_1999|capability]]*:
+{{$capability#shapiro_capintro_1999}}.
+{{$capability#shapiro_capintro_1999_text}}."]]"""]]
+
+ * Our use of [[capabilities|capability]]. The
+ {{$capability#wikipedia_capability-based_security}} article.
+ Alternatively/additionally, [[!toggle id=shapiro_capintro_1999
+ text="[shapiro\_capintro\_1999]"]].
+
+ In the GNU/Hurd system, a [[capability]] is represented by a [[Mach
+ port|microkernel/mach/port]].
+
+ * {{$capability#wikipedia_object-capability_model}}. Albeit not directly
+ tailored at the GNU/Hurd operating system architecture, this artice anyway
+ does a good job at describing general principles of a [[capability]]-based
+ system architecture.
+
+
+# FAQ
+
+[[FAQ]]
+
+
+# Specific Components
+
+Documentation for...
+
+ * [[GNU_Hurd|hurd/documentation]]
+
+ * [[Mach|microkernel/mach/documentation]]
+
+ * [[MIG|microkernel/mach/mig/documentation]]
+
+ * [[UNIX]]
+
+
+# Presentations
+
+## 2004
+
+ * 2004-07-02
+
+ Ognyan Kulev, *presentation of the Hurd*, at the seminar *LIO and friends*,
+ <http://debian.fmi.uni-sofia.bg/~ogi/hurd/liofest-20040702-hurd.ppt>, in
+ Bulgarian.
+
+# General
+
+ * [[Media_Appearances]]
diff --git a/donate.mdwn b/donate.mdwn
index 954b4ee4..938f950b 100644
--- a/donate.mdwn
+++ b/donate.mdwn
@@ -1,22 +1,97 @@
-[[meta copyright="Copyright © 2003, 2006, 2007, 2008
-Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2003, 2006, 2007, 2008, 2011 Free Software
+Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
If you feel like donating goods or money for the work the developers are doing,
then we're happy to confirm that this is indeed possible. Of course we'd
-really like to have you working with us on the system, but if you're feeling
-generous we won't stop you either.
+really like to have you working with us on the system and become a
+[[contributor|contributing]], but if you're feeling generous we won't stop you
+either.
-Note that you can't donate directly to the Hurd project, but only to either the
-Free Software Foundation or individually to the developers. Donations to the
-Free Software Foundation are tax deducible, see <http://fsf.org/donate>.
+[[!toc levels=2]]
+
+
+# Free Software Foundation
+
+The Free Software Foundation is the GNU project's principal organizational
+sponsor. [Donations to the FSF](http://donate.fsf.org/) are tax deducible.
+However, they can't accept donations addressed directly to/specifically for the
+GNU Hurd project.
+
+
+<a name="FOSS_Factory"></a>
+# FOSS Factory -- a Bounty System for GNU Hurd Work
+
+[[!template id=note text="""
+
+> Hey, I have more money than time or programming skills, and I'd like to help
+> GNU Hurd development specifically -- how can we arrange for this, where can I
+> donate money for GNU Hurd development?
+
+If you're dwelling on such thoughts, here is the answer; here you can donate
+money for GNU Hurd development.
+
+"""]]
+
+
+As its principal idea, [FOSS Factory](http://www.fossfactory.org/), means to
+serve as a hub and organizational platform for connecting Free/Open Source
+Software developers with monetary sponsors. From
+<http://www.fossfactory.org/aboutus.php>:
+
+[[!img foss_factory/logo.png align=right link=no]]
+
+> FOSS Factory's mission is to accelerate the advancement of free/open source
+> software by helping people collaborate on the design, funding, and
+> development of innovative software ideas. All software solutions produced
+> using our system are released under free/open source licenses. Our unique
+> model brings the best of innovators from both the entrepreneurial and FOSS
+> worlds together to solve real world problems using the mass resources of the
+> FOSS community.
+
+In very general words, their modus operandi is that the community (including
+the monetary sponsors) works together with the developers on splitting up tasks
+into suitable and assessable sub-projects as necessary, and then act as the
+reviewing instance, deciding on such sub-projects' success (and payment,
+successively). For more details see their [System
+Overview](http://www.fossfactory.org/overview.php).
+
+For now, we can assume that the amount of money to be made by working on a GNU
+Hurd task in this framework is likely to be a symbolic amount only, rather than
+being representative for the real effort that needs to be invested. Software
+development is expensive, mostly due to the amount of time that is needed for
+completing any non-trivial task. Instead, these bounties should be regarded as
+an attraction/reward, perhaps also simply as a motivation for a developer to
+focus on one specific problem, and bringing it to completion.
+
+
+## Working on a Task and/or Suggesting/Donating for a New Task
+
+In principle, any Hurd-related development task is applicable (for example,
+from the [[GSoC project ideas|community/gsoc/project_ideas]], or from the
+[[open_issues]] list), but it is of course recommendable to match sponsors'
+ideas with those of the developers and maintainers. For this, if you want to
+sponsor a project, but don't know which one to choose, or if you want to work
+on a bounty that is not yet listed on the site, we suggest that you talk to us
+first, either publically on the [[bug-hurd mailing
+list|mailing_lists/bug-hurd]] or privately on <hurd-maintainers@gnu.org>, if
+you prefer.
+
+Both for supporting (donating) as well as claiming a bounty, you have to
+register [at their site](http://www.fossfactory.org/), and proceed from there.
+Please don't hesitate to ask [[Thomas Schwinge|tschwinge]] if you need help.
+
+Continue to explore the [[list of open bounties|tag/bounty]].
+
+
+# g10 Code Maintenance Points
If you've got more money on hand than hacking time, you might consider buying
some [maintenance points](http://g10code.com/products.html#maintpoints) (EUR 10 a point) to
@@ -39,16 +114,17 @@ And for further motivation, some words of wisdom from Marcus Brinkmann:
> don't stop for a while, and just continue on my private time (as I did for
> the last five years, if I might add that ;).
+
+# Hurd Developer Meetings
+
Another possibility is to meet with the Hurd developers at a
[[meeting|community/meetings]] and spend them a pizza or beer or both or
similar.
-# Developers
-
-<small>(alphabetically)</small>
+# Individual Developers
-<!-- TODO. Need some real ikiwiki way of adding such anchors. -->
+Sorted alphabetically.
<a name="Marcus_Brinkmann"></a>
## Marcus Brinkmann
diff --git a/donate/foss_factory/logo.png b/donate/foss_factory/logo.png
new file mode 100644
index 00000000..07a62b5e
--- /dev/null
+++ b/donate/foss_factory/logo.png
Binary files differ
diff --git a/hurd/gettinghelp.mdwn b/download.mdwn
index 1faa94c5..542a9e5b 100644
--- a/hurd/gettinghelp.mdwn
+++ b/download.mdwn
@@ -1,11 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2010 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta redir=getting_help]]
+[[!tag stable_URL]]
+
+[[!meta redir=source_repositories]]
diff --git a/dsl.mdwn b/dsl.mdwn
new file mode 100644
index 00000000..28f70d7d
--- /dev/null
+++ b/dsl.mdwn
@@ -0,0 +1,22 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="DSL"]]
+
+A *DSL* is a *domain-specific language* ([[!wikipedia Domain-specific_language
+desc="Wikipedia article"]]).
+
+Compared to general-purpose programming languages, these are a candidate for
+[[open_issues/formal_verification]].
+
+DSLs are frequently used as [[IDL]]s for implementing [[RPC]] systems, but can
+also used for other portions of the [[kernel]], such as [[capability]] systems.
+This is exemplified for [[microkernel/Barrelfish]] in
+{{$microkernel/barrelfish#fof_plos09}}, for example.
diff --git a/emulation.mdwn b/emulation.mdwn
new file mode 100644
index 00000000..3238209b
--- /dev/null
+++ b/emulation.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta redir=virtualization]]
diff --git a/extensibility.mdwn b/extensibility.mdwn
index 1d6adc51..17cd5e51 100644
--- a/extensibility.mdwn
+++ b/extensibility.mdwn
@@ -1,17 +1,18 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
An extensible system is one that enables extensibility. Enabling extensibility
means providing non-privileged mechanisms to extend existing objects and to
-introduce new objects. UNIX is generally not an extensible system as it does
-not generally facilitate the hooking of system calls. For instance, there is
+introduce new objects. [[UNIX]] is generally not an extensible system as it does
+not generally facilitate the hooking of [[system call]]s. For instance, there is
no way to hook into the virtual file system. This has motivated the introduction
of separate, parallel interfaces by both the GNOME and KDE projects to provide
users a more integrated view of their objects.
diff --git a/faq.mdwn b/faq.mdwn
new file mode 100644
index 00000000..9167ede6
--- /dev/null
+++ b/faq.mdwn
@@ -0,0 +1,28 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="FAQ"]]
+
+Also see the...
+
+ * [[microkernel FAQ|microkernel/faq]],
+
+ * [[GNU Hurd FAQ|hurd/faq]],
+
+ * [[running GNU Hurd FAQ|hurd/running/faq]],
+
+ * [[Debian GNU/Hurd FAQ|hurd/running/debian/faq]].
+
+[[!inline
+pages="faq/* and !*/discussion"
+show=0
+feeds=no
+actions=yes
+rootpage="faq" postformtext="Add a new item titled:"]]
diff --git a/faq/ghamp.mdwn b/faq/ghamp.mdwn
new file mode 100644
index 00000000..16849aff
--- /dev/null
+++ b/faq/ghamp.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="GHAMP"]]
+
+*GHAMP* is the GNU/Hurd-based Apache, MySQL, PHP solution stack -- analoguous
+to GLAMP, which is based on GNU/Linux.
+
+Pronounce it like the *G* in
+[GNU](http://www.gnu.org/pronunciation/pronunciation.html), followed by a
+mostly silent *H*, and *AMP* as in amplifier.
diff --git a/faq/how_many_developers.mdwn b/faq/how_many_developers.mdwn
new file mode 100644
index 00000000..a96e0576
--- /dev/null
+++ b/faq/how_many_developers.mdwn
@@ -0,0 +1,63 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+[[!meta title="How many developers are working on the GNU Hurd, and why so
+few?"]]
+
+
+# How Many Developers?
+
+One handful works on the core of the system in their free time, and another
+handful helps with [[Debian GNU/Hurd|hurd/running/debian]] and
+[[hurd/running/Arch_Hurd]] packaging. Also, an additional handful of former
+developers are still available for answering technical questions, but are not
+participating in the current development anymore.
+
+In the past (that is, a lot of years ago), the FSF did pay a few developers for
+working full time on the GNU Hurd. But that was for a limited amount of time
+only, and evidently, it was too little for getting the system into a
+competitive state. Nowadays, it's only unpaid (apart from some
+[[bounties|tag/bounty]]) and free-time volunteers' work.
+
+In contrast to the Linux kernel, there is no industry involvement in
+development. For one, this is a good thing: independency; no conflicts of
+interests. For another, it is also a bad thing: no dedicated full-time
+manpower -- which matters a lot.
+
+
+# Why So Few?
+
+We can only speculate. One major problem might be that the [[architectural
+benefits|advantages]] are generally perceived as very abstract, with little
+practical benefit. We currently don't have many tools that are actually making
+use of all the possibilities.
+
+Another reason is that it's been taking too long. Today, most people don't
+believe it will ever be ready for production use, and thus would consider
+involvement a waste of time. This latter point is invalid, of course, as
+learning can never be a waste of time. The same holds for the [[challenges]]
+raised by the GNU Hurd -- we can only learn and improve upon working on them.
+
+For likely the same reasons there is no industry interest in the GNU Hurd: its
+advantages are too abstract and incomplete for being of interest there.
+
+As for the scientific sector, the GNU Hurd projects was rather about *using* a
+[[microkernel]] intead of doing research on them, for example. But, there have
+been some projects and theses done, and some scientific papers published on GNU
+Hurd topics, and we're generally very interested in further such projects.
+
+
+# Attracting New Faces
+
+We're an open project: any interested party (*you*!) are very welcome to start
+[[contributing]]. Mentoring is possible, too, to help you get started.
+
+Likewise, for reaching out to new developers, we're participating in [[Google's
+Summer of Code program|community/gsoc]].
diff --git a/faq/how_many_developers/discussion.mdwn b/faq/how_many_developers/discussion.mdwn
new file mode 100644
index 00000000..6ca47c9a
--- /dev/null
+++ b/faq/how_many_developers/discussion.mdwn
@@ -0,0 +1,61 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+# IRC, freenode, #hurd, 2011-05-22
+
+ <silver_hook> Since apparently Hurd's aim is a very stable and transparent
+ system ...why aren't there any companies backing it up?
+ <antrik> silver_hook: it's not in a state yet where it would be
+ commercially interesting
+ <antrik> silver_hook: and after some epic failures in the 90s, few
+ companies dare to invest in microkernel development...
+ <silver_hook> Isn't MacOS X running on top of Mach?
+ <antrik> yes, but it's not a true microkernel system
+ <antrik> for one, it's single-server, which is boring
+ <antrik> also it uses co-location, i.e. runs all the system code in the
+ kernel address space -- they are separated only formally
+ <antrik> even NT is more of a microkernel system I think
+ <silver_hook> Oh, OK, I'm not that knowledgeable about kernels to know
+ that.
+ <antrik> well, now you know :-)
+ <silver_hook> Yup, thanks :)
+ <antrik> most people don't know this, so don't worry
+ <silver_hook> I was just wondering that it might be potentially an ideal
+ server system, right?
+ <antrik> well, *potentially* it might be an ideal general-purpose system,
+ which includes server use... though personally I think the advantages of
+ the architecture are more visible in desktop use, as servers tend to be
+ rather streamlined, with little need for individualisation :-)
+ <antrik> however, it still remains to be proven that true (multi-server)
+ microkernel operating systems actually work for general-purpose
+ applications...
+ <silver_hook> antrik: I mean regarding hosting or virtual servers.
+ <antrik> so far, they are only successful in the much simpler embedded
+ space
+ <antrik> well, yes, the Hurd architecture in theory allows very much
+ flexibility regarding virtual environments... I once blogged about
+ that. not sure whether server applications really require that
+ flexibility though. I think most people are pretty happy with the various
+ virtualisation/container solutions available in Linux. again, the
+ flexibility is more relevant in the desktop space IMHO
+ <antrik> dosn't mean it wouldn't be useful for servers too... just not as
+ much of a selling point I fear :-)
+
+
+# IRC, freenode, #hurd, 2011-07-09
+
+ <antrik> gnu_srs1: regarding your question why people aren't interested in
+ workin on Hurd: Eric Raymond explains it pretty well in his famous
+ "Cathedral and Bazaar" paper
+ <antrik> people are more likely to work on something that *almost* works
+ for them, and where they only have to fill in a few missing bits
+ <antrik> the Hurd doesn't almost work for anyone
+ <antrik> actually, you should probably reread the whole paper. it's
+ essentially an analysis why the Hurd failed compared to Linux
diff --git a/faq/posix_compatibility.mdwn b/faq/posix_compatibility.mdwn
new file mode 100644
index 00000000..4490b7cb
--- /dev/null
+++ b/faq/posix_compatibility.mdwn
@@ -0,0 +1,32 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+[[!meta title="POSIX compatibility"]]
+
+Is it favorable of rather a hindrance to be compatible to POSIX and similar
+standards?
+
+A lot of things in POSIX et al. are designed for [[UNIX]]-like systems with
+traditional monolithic [[kernel]]s.
+
+Thus, a [[microkernel]]-based system, as ours is, has to employ a bunch of
+detours, for example to implement the [[`fork` system call|glibc/fork]].
+
+On the other hand, (mostly) complying to these standards, made a really big
+body of software *just work* without any (or just trivial) [[hurd/porting]].
+Especially so for command-line programs, and libraries.
+
+But: a large part of today's user programs are not written according to POSIX
+et al. low-level interfaces, but against GNOME, GTK+2, and other high-level
+frameworks and libraries. It may be a valid option to enrich these instead of
+striving for total POSIX compliance -- and the high-level programs (that is,
+their users) may not even notice this, but we would avoid a lot of overhead
+that comes with wrapping the [[Hurd interfaces|hurd/interface]] to be POSIX
+compliant.
diff --git a/faq/posix_compatibility/discussion.mdwn b/faq/posix_compatibility/discussion.mdwn
new file mode 100644
index 00000000..0d722c9e
--- /dev/null
+++ b/faq/posix_compatibility/discussion.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 2010, 2011 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_documentation]]
+
+\#hurd IRC channel on Freenode, 2010-12-21:
+
+ <antrik> tschwinge: the writeup ignores the fact that POSIX compatibility
+ is not only for applications, but also for users familiar with the UNIX
+ environment
+ <antrik> also, I still don't buy the fact that most software is not written
+ for POSIX. even if assuming that GNOME programs don't use POSIX (which is
+ only half true), there is a lot of other software in a system that is
+ just as important, though less visible
+ <antrik> (server software, startup system, device management, automation,
+ ...)
+ <antrik> tschwinge: BTW, I meant to (and partially did) write a blog
+ article on this topic -- but I didn't get around to finish it...
diff --git a/faq/sharing_the_user_space.mdwn b/faq/sharing_the_user_space.mdwn
new file mode 100644
index 00000000..ec880827
--- /dev/null
+++ b/faq/sharing_the_user_space.mdwn
@@ -0,0 +1,23 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+*Question:* Could it be possible to have a system installation where you can
+dual-boot using either the [[Linux]] kernel, or the GNU Hurd, so that
+everything but the kernel is shared?
+
+*Answer:* Given that both Linux and GNU Hurd are using the [[ELF]] binary
+format, this could indeed be made possible, if all programs agreed to rely on
+only one abstraction layer, for example the standard C library ([[glibc]]).
+(Additionally, for example for [[system call]]s that are not covered by glibc
+calls, you'd need to be able to reliably trap and emulate these.) However,
+Linux' and the GNU Hurd's [[ABI]]'s have sufficiently diverged, so that this is
+not easy to do. That's why you can't currently install a system in this way,
+but you need a separate installation of the userspace suited for the Linux
+kernel, or the GNU Hurd.
diff --git a/faq/smp.mdwn b/faq/smp.mdwn
new file mode 100644
index 00000000..e95edcd2
--- /dev/null
+++ b/faq/smp.mdwn
@@ -0,0 +1,28 @@
+[[!meta copyright="Copyright © 2009, 2011 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]]."]]"""]]
+
+[[!meta title="Does GNU/Hurd support SMP/Multicore?"]]
+
+The Hurd servers themselves are multithreaded, so they should be able to take benefit of the parallelism brought by SMP/Multicore boxes. This has however never been tested yet because of the following.
+
+[[microkernel/Mach]] used to be running on SMP boxes like the [[!wikipedia
+Intel_iPSC/860]], so principally has the required infrastructure. It has
+however not yet been enhanced to support nowadays' SMP standards like ACPI,
+etc. Also, [[GNU Mach|microkernel/mach/gnumach]]'s Linux device driver glue
+code likely isn't SMP-safe. As this glue code layer is not used in the
+[[microkernel/mach/gnumach/ports/Xen]] port of GNU Mach, the plan is to try it
+in this enviroment first.
+
+[[!tag open_issue_gnumach open_issue_xen]]
+
+That is why for now GNU/Hurd will only use one logical processor (i.e. one core or one thread, depending on the socket type).
+
+Once this issue is solved, there are follow-up issues about
+[[open_issues/multiprocessing]] and [[open_issues/multithreading]].
diff --git a/faq/system_port.mdwn b/faq/system_port.mdwn
new file mode 100644
index 00000000..c831c36f
--- /dev/null
+++ b/faq/system_port.mdwn
@@ -0,0 +1,47 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta title="Doing a GNU/Hurd System Port"]]
+
+How difficult is it to port the GNU/Hurd system to run on another architecture?
+
+The GNU/Hurd system consists of [[/Hurd]] servers running as user-space
+processes on top of the [[GNU Mach|microkernel/mach/gnumach]] microkernel. The
+system functionality is usually accessed through the
+[[POSIX|posix_compatibility]] interface that is provided by [[/glibc]] and
+[[/libpthread]].
+
+A whole-system port involves touching all these components, with varying
+degree, of course.
+
+For a CPU architecture port, the microkernel is the most involved part,
+followed by glibc and the threading library.
+
+The original [[microkernel/Mach]] microkernel was portable to a number of
+architectures which were a lot more popular at the beginning of the 1990s than
+they are now.
+
+The GNU/Hurd system is currently available for the x86 architecture. This
+includes emulators such as [[hurd/running/QEMU]] (or KVM), or
+[[hurd/running/VirtualBox]]. Besides this, there is a port for the [[Xen
+domU|microkernel/mach/gnumach/ports/xen]] *sub-architecture*.
+
+Further on, there are some [[unfinished porting
+attempts|microkernel/mach/gnumach/ports]] for the Alpha, MIPS and PowerPC
+architectures. These have not been completed due to little developer interest.
+
+Another option is to do the port at a different layer: port the Hurd servers to
+not run on the GNU Mach microkernel, but instead on top of [[another
+microkernel|which_microkernel]]. Or, even by providing a Mach emulation layer
+on top of a monolithic kernel. For example, there could be a port for [[having
+Mach run as a POSIX user-space process|open_issues/mach_on_top_of_posix]], or
+by implementing the [[Mach IPC|microkernel/mach/ipc]] facility (as well as
+several others) as Linux kernel modules. While there have been some
+experiments, no such port has been completed yet.
diff --git a/faq/which_microkernel.mdwn b/faq/which_microkernel.mdwn
new file mode 100644
index 00000000..84b661e4
--- /dev/null
+++ b/faq/which_microkernel.mdwn
@@ -0,0 +1,55 @@
+[[!meta copyright="Copyright © 2009, 2011 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]]."]]"""]]
+
+[[!meta title="What happened with the Hurd ports to the L4 / Coyotos / Viengoos
+microkernels?"]]
+
+<!-- This page shares some text with history/port_to_another_microkernel. -->
+
+It is a frequently asked question, which microkernel the Hurd should be based
+upon assuming that [[microkernel/Mach]] is no longer considered state of the
+art, and it is well known that there has been a lot of discussion about this
+topic, and also some code produced, but then, years later, the Hurd is still
+based on [[GNU Mach|microkernel/mach/gnumach]].
+
+Around the turn of the millenium, some of the Hurd developers began
+experimenting with using other [[microkernel]]s for the Hurd, as they have been
+encountering a number of fundamental design issues with the [[Mach
+microkernel|microkernel/mach]], mostly with respect to
+[[open_issues/resource_management_problems]].
+
+At that time, L4 (Pistachio) was the prime candidate. A reimplementation of
+the Hurd on this microkernel looked promising, and got pretty far (running some
+simple POSIX programs, such as `banner`). However, over time some lingering
+design issues turned out to be fundamental problems: the original L4 is not
+suitable for building object-capability systems like the Hurd. Thus
+development was aborted in 2005.
+
+During that process, Neal Walfield and Marcus Brinkmann started on a period of
+research on other microkernels, getting in deeper contact with other
+researchers. There was a lot of discussion, and a lot of good ideas produced,
+but a straight-forward port of the Hurd to such a modern microkernel (Coyotos,
+or the new L4 variants, for example) didn't seem feasible to them anymore: they
+found microkernel design and system design to be interconnected in very
+intricate ways, and this demanded design changes in the Hurd's core itself.
+
+Based on this experience, the next step was to write an own microkernel
+instead, which Neal Walfield began doing with his experimental
+[[microkernel/Viengoos]] project, for his research on resource management.
+Currently he works in another research area though, and thus Viengoos is on
+hold.
+
+Note that while none of the microkernel research work is active now, the
+previous experiments already yielded a lot of experience, which will be very
+useful in the further development / improvement of the mainline (Mach-based)
+Hurd implementation.
+
+For more details about this topic, please see our history page about the
+[[history/port_to_another_microkernel]].
diff --git a/faq/which_microkernel/discussion.mdwn b/faq/which_microkernel/discussion.mdwn
new file mode 100644
index 00000000..7ea131e9
--- /dev/null
+++ b/faq/which_microkernel/discussion.mdwn
@@ -0,0 +1,94 @@
+[[!meta copyright="Copyright © 2011 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_documentation]]
+
+[[!toc]]
+
+
+# Olaf, 2011-04-10
+
+This version mixes up three distinct phases: rewrite from scratch; redesign;
+own microkernel.
+
+While Okuji initially might have intended a direct port of the existing Hurd
+code, by the time I started following Hurd development (2004 IIRC), it has been
+long clear that Hurd/L4 is a rewrite from scratch.
+
+The next phase was the desire of Neal and especially Macrus to completely
+reinvent the design of the Hurd. This was mostly fueled by Shapiro's influence,
+resulting in a security-above-everything rage. It was in this phase that not
+only the original L4 has been abandonend, but also all thoughts about using
+newer L4 variants (which might have been suitable) were forsaken in favor of
+Shapiro's Coyotos.
+
+The whole idea of redesigning the Hurd -- especially for security concerns --
+is highly controversial: I always strongly objected to it; and Marcus later
+admitted himself that he got carried away and lost sight of what really matters
+for the Hurd. (But only after realising that Shapiro's notion of high security
+is fundamentally incompatible with the GNU philosophy.) I opted for not
+explicitely mentioning this aspect in the FAQ at all, as it's impossible to
+explain properly in a compact form, and probably impossible at all to do it in
+an objective fashion.
+
+The final phase -- following the realisation of incompatibility with
+Shapiro/Coyotos -- was the attempt to create new microkernels specifically for
+Hurd's needs. Marcus abandonned his pretty soon, and never made it public, so I
+didn't mention it at all; but Viengoos is still relevant in certain ways.
+
+BTW, my original text also more explicitely answers the question what happened
+to the Coyotos port -- which after all is what the title promises...
+
+All in all, I still think my text was better. If you have any conerns with it,
+please discuss them...
+
+
+# IRC, freenode, #hurd, 2011-09-27
+
+ <cjuner> Does anyone remember/know if/why not seL4 was considered for
+ hurd-l4? Is anyone aware of any differences between seL4 and coyotos?
+
+
+## 2011-09-28
+
+ <antrik> cjuner: the seL4 project was only at the beginning when the
+ decision was made. so was Coyotos, but Shapiro promised back then that
+ building on EROS, it would be done very fast (a promise he couldn't keep
+ BTW); plus he convinced the people in question that it's safer to build
+ on his ideas...
+ <antrik> it doesn't really matter though, as by the time the ngHurd people
+ were through with Coyotos, they had already concluded that it doesn't
+ make sense to build upon *any* third-party microkernel
+ <cjuner> antrik, what was the problem with coyotos? what would be the
+ problem with sel4 today?
+ <cjuner> antrik, yes I did read the FAQ. It doesn't mention seL4 at all
+ (there isn't even much on the hurd-l4 mailing lists, I think that being
+ due to seL4 not having been released at that point?) and it does not
+ specify what problems they had with coyotos.
+ <antrik> cjuner: it doesn't? I thought it mentioned "newer L4 variants" or
+ something like that... but the text was rewritten a couple of times, so I
+ guess it got lost somewhere
+ <antrik> cjuner: unlike original L4, it's probably possible to implement a
+ system like the Hurd on top on seL4, just like on top of
+ Coyotos. however, foreign microkernels are always created with foreign
+ design ideas in mind; and building our own design around them is always
+ problematic. it's problematic with Mach, and it will be problematic with
+ any other third-party microkernel
+ <antrik> Coyotos specifically has different ideas about memory protection,
+ different ideas about task startup, different ideas about memory
+ handling, and different ideas about resource allocation
+ <cjuner> antrik, do any specific problems of the foreign designs,
+ specifically of seL4 or coyotos come to mind?
+ <antrik> cjuner: I mentioned several for Coyotos. I don't have enough
+ understanding of the matters to go into much more detail
+ <antrik> (and I suspect you don't have enough understanding of these
+ matters to take away anything useful from more detail ;-) )
+ <antrik> I could try to explain the issues I mentioned for Coyotos (as far
+ as I understand them), but would that really help you?
diff --git a/fdl.texi b/fdl.texi
index a6845f40..26bc2d64 100644
--- a/fdl.texi
+++ b/fdl.texi
@@ -1,7 +1,9 @@
-[[meta copyright="Copyright © 2000, 2001, 2002 Free Software Foundation, Inc.,
-51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA"]]
-[[meta license="Everyone is permitted to copy and distribute verbatim copies of
-this license document, but changing it is not allowed."]]
+[[!meta copyright="Copyright © 2000, 2001, 2002 Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301,
+USA"]]
+
+[[!meta license="Everyone is permitted to copy and distribute verbatim
+copies of this license document, but changing it is not allowed."]]
@c The GNU Free Documentation License.
@center Version 1.2, November 2002
diff --git a/gcc.mdwn b/gcc.mdwn
index 93256f1b..8f311b12 100644
--- a/gcc.mdwn
+++ b/gcc.mdwn
@@ -1,11 +1,23 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-The [GNU Compiler Collection](http://gcc.gnu.org/).
+[[!meta title="GNU Compiler Collection"]]
+
+
+# <http://gcc.gnu.org/>
+
+
+# [[Maintenance|open_issues/gcc]]
+
+
+# Open Issues
+
+[[!inline pages=tag/open_issue_gcc raw=yes feeds=no]]
diff --git a/gdb.mdwn b/gdb.mdwn
index 83113f9e..46821037 100644
--- a/gdb.mdwn
+++ b/gdb.mdwn
@@ -1,17 +1,34 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009, 2011 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-The [GNU debugger *GDB*](http://www.gnu.org/software/gdb/).
+[[!meta title="GNU GDB"]]
-* [[Backtrace]]s
-* [Manual](http://sourceware.org/gdb/documentation/)
+# <http://www.gnu.org/software/gdb/>
-* [When disassemble doesn't work](http://lists.gnu.org/archive/html/bug-hurd/2007-02/msg00039.html)
+ * [[Backtrace]]s
+
+ * [Manual](http://sourceware.org/gdb/documentation/)
+
+ * [When disassemble doesn't
+ work](http://lists.gnu.org/archive/html/bug-hurd/2007-02/msg00039.html)
+
+
+# [[Maintenance|open_issues/binutils]]
+
+
+# Open Issues
+
+[[!inline pages=tag/open_issue_gdb raw=yes feeds=no]]
+
+ * *[Implementing a Mach Debugger for Multithreaded
+ Applications](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.38.5670)*,
+ Deborah Caswell and David Black, 1990. This talks about GDB.
diff --git a/gdb/backtrace.mdwn b/gdb/backtrace.mdwn
index 9716a211..7411ad05 100644
--- a/gdb/backtrace.mdwn
+++ b/gdb/backtrace.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
When someone asks you to supply a backtrace (from a [[segmentation_fault]], for
example), here is roughly what you have to do.
diff --git a/generate_interface_redir_pages b/generate_interface_redir_pages
new file mode 100755
index 00000000..b6adc349
--- /dev/null
+++ b/generate_interface_redir_pages
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+for s; do
+ s=$(basename "$s") &&
+ for i in "$s"/??.mdwn; do
+ t=$(grep '^\[\[!meta title' | cut -d \" -f 2) \
+ < "$i" &&
+ i=$(expr "$i" : '\(.*\)\.mdwn') &&
+ cat \
+ > "$t".mdwn \
+ <<EOF
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=$i]]
+EOF
+ done
+done
diff --git a/getting_help.mdwn b/getting_help.mdwn
new file mode 100644
index 00000000..92efabbe
--- /dev/null
+++ b/getting_help.mdwn
@@ -0,0 +1,29 @@
+[[!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]]."]]"""]]
+
+# Essential Documentation
+
+ * GNU/Hurd [[hurd/FAQ]]
+
+ * Debian GNU/Hurd [[hurd/running/debian/FAQ]]
+
+ * Microkernel [[microkernel/FAQ]]
+
+ * GNU Mach's [[microkernel/mach/gnumach/Hardware_Compatibility_List]]
+
+ * [[Documentation]]
+
+
+# Forums
+
+[[!inline pages=asking_questions raw=yes feeds=no]]
+
+ * [[Mailing_lists]]
+ * [[IRC]]
diff --git a/glibc.mdwn b/glibc.mdwn
index f6325ff8..54a0e19f 100644
--- a/glibc.mdwn
+++ b/glibc.mdwn
@@ -1,11 +1,78 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2010, 2011 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-The [GNU C Library](http://www.gnu.org/software/libc/).
+[[!meta title="GNU C Library"]]
+
+
+# <http://www.gnu.org/software/libc/>
+
+
+## Sources
+
+For concenience, we maintain our own [[source
+repository|source_repositories/glibc]].
+
+
+# Specifics
+
+Porting glibc to a specific architecture is non-trivial.
+
+
+## [[Hurd-specific Port|hurd/glibc]]
+
+An important part of the [[Hurd]] actually resides in glibc: here, the POSIX
+interfaces are implemented on top of the [[Hurd IPC protocols|hurd/interface]].
+This is different to the Linux port, where most simple POSIX interfaces are in
+fact simply forwarded to/implemented as [[system_call]]s.
+
+
+## [[Maintenance|open_issues/glibc]]
+
+
+# Implementation Details
+
+ * [[hurd/glibc/Hurd-specific API]]
+
+ * [[open_issues/secure_file_descriptor_handling]]
+
+ * [[signal/signal_thread]]
+
+
+## Concepts
+
+ * [[environment_variable]]
+
+ * [[file_descriptor]]
+
+ * [[process]]
+
+ * [[signal]]
+
+
+## Individual functions
+
+Some of these are well-known as [[UNIX]] [[system call]]s.
+
+ * [[fallocate]]
+
+ * [[fork]]
+
+ * [[poll]]
+
+
+# Debugging
+
+Some hints for [[debugging]].
+
+
+# Open Issues
+
+[[!inline pages=tag/open_issue_glibc raw=yes feeds=no]]
diff --git a/glibc/debugging.mdwn b/glibc/debugging.mdwn
new file mode 100644
index 00000000..6b035c12
--- /dev/null
+++ b/glibc/debugging.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+ * [[ld_so_console]]
diff --git a/glibc/debugging/ld_so_console.mdwn b/glibc/debugging/ld_so_console.mdwn
new file mode 100644
index 00000000..b3d1762f
--- /dev/null
+++ b/glibc/debugging/ld_so_console.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+If you need to debug something in the early `ld.so` startup, and can't refrain
+from good old `printf` debugging, there is a caveat: the available API in
+`ld.so` is rather limited. See the few functions is `dl-sysdep.c`. For
+example, there's a private `__libc_write`, which you should be able to use for
+writing to FD stderr -- but, at early `ld.so` startup, this isn't usable as
+`_hurd_init_dtable` is still all zeros, etc. To get you started, here is a
+simple [[dl-sysdep.c.patch]] to get access to the Mach console.
+
+Can this be integrated with the other debugging printf functions from
+`elf/dl-misc.c` (`_dl_debug_vdprintf`) ([[!taglink open_issue_glibc]])?
diff --git a/glibc/debugging/ld_so_console/dl-sysdep.c.patch b/glibc/debugging/ld_so_console/dl-sysdep.c.patch
new file mode 100644
index 00000000..eec8d7c6
--- /dev/null
+++ b/glibc/debugging/ld_so_console/dl-sysdep.c.patch
@@ -0,0 +1,63 @@
+diff --git a/sysdeps/mach/hurd/dl-sysdep.c b/sysdeps/mach/hurd/dl-sysdep.c
+index ff37add..7e6d352 100644
+--- a/sysdeps/mach/hurd/dl-sysdep.c
++++ b/sysdeps/mach/hurd/dl-sysdep.c
+@@ -44,6 +44,8 @@
+ #include <dl-machine.h>
+ #include <dl-procinfo.h>
+
++#include <device/device.h>
++
+ extern void __mach_init (void);
+
+ extern int _dl_argc;
+@@ -116,6 +118,29 @@ static void fmh(void) {
+ /* XXX loser kludge for vm_map kernel bug */
+ #endif
+
++/* Return a port to the Mach console. */
++static mach_port_t
++get_console (void)
++{
++ mach_port_t device_master, console;
++ /* We cannot use __get_privileged_ports (from hurd/privports.c), as this
++ drags in too much other libc stuff. */
++#if 0
++ error_t err = __get_privileged_ports (0, &device_master);
++
++ if (err)
++ return MACH_PORT_NULL;
++#else
++ error_t err = 0;
++ device_master = 2;
++#endif
++
++ err = __device_open (device_master, D_WRITE | D_READ, "console", &console);
++ if (err)
++ return MACH_PORT_NULL;
++
++ return console;
++}
+
+ ElfW(Addr)
+ _dl_sysdep_start (void **start_argptr,
+@@ -256,6 +279,20 @@ unfmh(); /* XXX */
+ /* Set up so we can do RPCs. */
+ __mach_init ();
+
++ /* Open the Mach console so that any message can actually be seen. This is
++ particularly useful at boot time, when started by the bootstrap file
++ system. */
++ mach_port_t console = get_console ();
++ if (console != MACH_PORT_NULL)
++ {
++ /* stdout = mach_open_devstream (console, "w"); */
++ /* stderr = stdout; */
++ /* if (stdout != NULL) */
++ /* printf ("Hello, world!\n"); */
++ int written;
++ __device_write_inband (console, 0, 0, "hello, world!\n", 14, &written);
++ }
++
+ /* Initialize frequently used global variable. */
+ GLRO(dl_pagesize) = __getpagesize (); \ No newline at end of file
diff --git a/glibc/discussion.mdwn b/glibc/discussion.mdwn
new file mode 100644
index 00000000..fac300ea
--- /dev/null
+++ b/glibc/discussion.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+
+# TLS
+
+
+## IRC, freenode, #hurd, 2011-06-11
+
+[[!tag open_issue_documentation open_issue_glibc]]
+
+ <civodul> youpi: local-tls-support.diff removes libc-tsd.h; what's the
+ rationale?
+ <youpi> it's completely replaced by __thread variables
+ <civodul> ok, but apparently there are still libc headers that #include it
+ <civodul> like malloc-machine.h
+ <youpi> they'll include bits/libc-tsd.h instead
+ <civodul> oh, ok
diff --git a/glibc/environment_variable.mdwn b/glibc/environment_variable.mdwn
new file mode 100644
index 00000000..76c1371e
--- /dev/null
+++ b/glibc/environment_variable.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+
+# External
+
+ * [*putenv() and setenv()*](http://www.greenend.org.uk/rjk/2008/putenv.html)
+ by Richard Kettlewell.
diff --git a/glibc/fallocate.mdwn b/glibc/fallocate.mdwn
new file mode 100644
index 00000000..3aecf16b
--- /dev/null
+++ b/glibc/fallocate.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+Not yet implemented for the GNU Hurd in [[glibc]].
+
+
+# External
+
+ * [*Punching holes in files*](http://lwn.net/Articles/415889/), Jonathan
+ Corbet, 2010-11-17.
diff --git a/glibc/file_descriptor.mdwn b/glibc/file_descriptor.mdwn
new file mode 100644
index 00000000..2c56d070
--- /dev/null
+++ b/glibc/file_descriptor.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+A [[UNIX file descriptor|unix/file_descriptor]] is implemented in [[glibc]] by
+using operations on objects referred to by [[Mach
+ports|microkernel/mach/port]]).
diff --git a/glibc/fork.mdwn b/glibc/fork.mdwn
new file mode 100644
index 00000000..9417106d
--- /dev/null
+++ b/glibc/fork.mdwn
@@ -0,0 +1,66 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+On [[Unix]] systems, `fork` is a rather simple [[system call]].
+
+Our implementation in [[glibc]] is and needs to be rather bulky.
+
+For example, it has to duplicate all port rights for the new [[Mach
+task|microkernel/mach/task]]. The address space can simply be duplicated by
+standard means of the [[microkernel/Mach]], but as [[unix/file_descriptor]]s
+(for example) are a concept that is implemented inside [[glibc]] (based on
+[[Mach port|microkernel/mach/port]]s), these have to be duplicated from
+userspace, which requires a small number of [[RPC]]s for each of them, and in
+the sum, [[this affects performance|open_issues/performance/fork]] when new
+processes are continuously being spawned from the shell, for example.
+
+Often, a `fork` call will eventually be followed by an `exec`, which [[may in
+turn close|open_issues/secure_file_descriptor_handling]] (most of) the
+duplicated port rights. Unfortunately, this cannot be known at the time the
+`fork` executing, so in order to optimize this, the code calling `fork` has to
+be modified instead, and the `fork`, `exec` combo be replaced by a
+`posix_spawn` call, for example, to avoid this work of duplicating each port
+right, then closing each again.
+
+As far as we know, Cygwin has the same problem of `fork` being a nontrivial
+operation. Perhaps we can learn from what they're been doing? Also, perhaps
+they have patches for software packages, to avoid using `fork` followed by
+`exec`, for example.
+
+
+# TODO
+
+ * [[fork: mach_port_mod_refs:
+ EKERN_UREFS_OWERFLOW|open_issues/fork_mach_port_mod_refs_ekern_urefs_owerflow]]
+ ([[!taglink open_issue_glibc]]).
+
+ * Include de-duplicate information from elsewhere: [[hurd-paper]],
+ [[hurd-talk]], [[hurd/ng/trivialconfinementvsconstructorvsfork]],
+ [[open_issues/resource_management_problems/zalloc_panics]] ([[!taglink
+ open_issue_glibc open_issue_documentation]]).
+
+ * We no longer support `MACH_IPC_COMPAT`, thus we can get rid of the `err =
+ __mach_port_allocate_name ([...]); if (err == KERN_NAME_EXISTS)` code
+ ([[!taglink open_issue_glibc]]).
+
+ * Can we/why can't we use the concept of *inherited ports
+ array*s/`mach_ports_register` ([[!taglink open_issue_glibc]])?
+
+
+## Related
+
+ * [[open_issues/secure_file_descriptor_handling]].
+
+
+# External
+
+ * {{$unix#djb_self-pipe}}.
+
+ * {{$unix#rjk_fork}}.
diff --git a/glibc/poll.mdwn b/glibc/poll.mdwn
new file mode 100644
index 00000000..d96f27a5
--- /dev/null
+++ b/glibc/poll.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+
+# External
+
+ * [*poll() and EOF*](http://www.greenend.org.uk/rjk/2001/06/poll.html) by
+ Richard Kettlewell.
diff --git a/glibc/process.mdwn b/glibc/process.mdwn
new file mode 100644
index 00000000..9b2ec251
--- /dev/null
+++ b/glibc/process.mdwn
@@ -0,0 +1,26 @@
+[[!meta copyright="Copyright © 2009, 2010 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]]."]]"""]]
+
+The GNU Hurd uses a similar concept to [[UNIX processes|unix/process]].
+
+As a [[Mach task|microkernel/mach/task]] only implements a part of a UNIX
+process, there is additional work to be done, for example for [[signal]]s,
+[[environment_variable]]s, [[file_descriptor]]s.
+
+
+# Controlling TTY
+
+Hurd controlling tty behavior is generally consistent with BSD's, including
+`TIOCSCTTY`. Linux also has `TIOCSCTTY` and it is harmless to use it there.
+But BSD and Hurd never do an implicit `TIOCSCTTY` (hence our `O_NOCTTY` is
+zero).
+
+C.f. <http://lists.gnu.org/archive/html/bug-hurd/2009-10/msg00030.html> and the
+following messages.
diff --git a/glibc/signal.mdwn b/glibc/signal.mdwn
new file mode 100644
index 00000000..727247ac
--- /dev/null
+++ b/glibc/signal.mdwn
@@ -0,0 +1,35 @@
+[[!meta copyright="Copyright © 2009, 2010, 2011 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]]."]]"""]]
+
+The [[*UNIX signalling mechanism*|unix/signal]] is implemented for the GNU Hurd
+by means of a separate *[[signal_thread]]* that is part of every user-space
+[[process]]. This makes handling of signals a separate thread of control.
+[[GNU Mach|microkernel/mach/gnumach]] itself has no idea what a signal is and
+`kill` is not a [[system_call]] (as it typically is in a [[UNIX]] system): it's
+implemented in [[glibc]].
+
+ * [[SA_SIGINFO, SA_SIGACTION|open_issues/sa_siginfo_sa_sigaction]]
+
+ * Why does `kill` hang sometimes?
+
+ <youpi> kill send the signal to the process
+ <youpi> if the process is hung, killing waits
+ <youpi> signals should be just asynchronous, but apparently for some
+ reason Roland & co wanted some synchronization
+
+ [[!taglink open_issue_glibc]]
+
+
+# Further Reading
+
+ * {{$unix#djb_self-pipe}}.
+
+ * {{$unix#rjk_fork}}.
diff --git a/glibc/signal/signal_thread.mdwn b/glibc/signal/signal_thread.mdwn
new file mode 100644
index 00000000..5341b1ab
--- /dev/null
+++ b/glibc/signal/signal_thread.mdwn
@@ -0,0 +1,100 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+For delivering a signal, Mach forwards an `msg_sig_post` message from the
+invoker of `kill` to the target process. The target process' [[signal_thread]]
+job is it to listen to such messages and to set up signal handler contexts in
+other threads.
+
+---
+
+[[!tag open_issue_documentation]]
+
+ <braunr> bugs around signals are very tricky
+ <braunr> signals are actually the most hairy part of the hurd
+ <braunr> and the reason they're aynchronous is that they're handled by a
+ second thread
+ <braunr> (so yes, every process on the hurd has at least two threads)
+ <svante_> braunr: How to solve the asynch problem then if every process has
+ two threads?
+ <braunr> the easiest method would be to align ourselves on what most other
+ Unices do
+ <braunr> establish a "signal protocol" between kernel and userspace
+ <braunr> with a set of signal info in a table, most likely at the top of
+ the stack
+ <braunr> but this is explicitely what the original Mach developers didn't
+ want, and they were right IMO
+ <braunr> having two threads is very clean, but it creates incompatibilites
+ with what POSIX requires
+ <braunr> so there might be a radical choice to make here
+ <braunr> and i doubt we have the resources to make it happen
+ <svante_> What is the advantage of having two threads per process, a per
+ the original design?
+ <braunr> it's clean
+ <braunr> you don't have to define async-signal-safe functions
+ <braunr> it's like using sigwait() yourself in a separate thread, or
+ multiplexing them through signalfd()
+ <svante_> Regardless of the advantages, isn't two threads per process a
+ waste of resources?
+ <braunr> sure it is
+ <braunr> but does it really matter ?
+ <braunr> mach and the hurd were intended to be "hyperthreaded"
+ <braunr> so basically, a thread should consume only a few kernel resources
+ <braunr> in GNU Mach, it doesn't even consume a kernel stack because only
+ continuations are used
+ <braunr> and in userspace, it consumes 2 MiB of virtual memory, a few table
+ entries, and almost no CPU time
+ <svante_> What does "hyperthreaded" mean: Do you have a reference?
+ <braunr> in this context, it just means there are a lot of threads
+ <braunr> even back in the 90s, the expected number of threads could scale
+ up to the thousand
+ <braunr> today, it isn't much impressive any more
+ <braunr> but at the time, most systems didn't have LWPs yet
+ <braunr> and a process was very expensive
+ <svante_> Looks like I have some catching up to do: What is "continuations"
+ and LWP? Maybe I also need a reference to an overview on multi-threading.
+ <ArneBab> Lightweight process?
+ http://en.wikipedia.org/wiki/Light-weight_process
+ <braunr> svante_: that's a whole computer science domain of its own
+ <braunr> yes
+ <braunr> LWPs are another names for kernel threads usually
+ <braunr> continuations are a facility which allows a thread to store its
+ state, yield the processor to another thread, and when it's dispatched
+ again by the scheduler, it can resume with its saved state
+ <braunr> most current kernels support kernel preemption though
+ <braunr> which means their state is saved based on scheduler decisions
+ <braunr> unlike continuations where the thread voluntarily saves its state
+ <braunr> if you only have continuations, you can't have kernel preemption,
+ but you end up with one kernel stack per processor
+ <braunr> while the other model allows kernel preemption and requires one
+ kernel stack per thread
+ <svante_> I know resources are limited, but it looks like kernel preemption
+ would be nice to have. Is that too much for a GSoC student?
+ <braunr> it would require a lot of changes in obscure and sensitive parts
+ of the kernel
+ <braunr> and no, kernel preemption is something we don't actually need
+ <braunr> even current debian linux kernels are built without kernel
+ preemption
+ <braunr> and considering mach has hard limitations on its physical memory
+ management, increasing the amount of memory used for kernel stacks would
+ imply less available memory for the rest of the system
+ <svante_> Are these hard limits in mach difficult to change?
+ <braunr> yes
+ <braunr> consider mach difficult to change
+ <braunr> that's actually one of the goals of my stalled project
+ <braunr> which I hope to resume by the end of the year :/
+ <svante_> Reading Wikipedia it looks like LWP are "kernel treads" and other
+ threads are "user threads" at least in IBM/AIX. LWP in Linux is a thread
+ sharing resources and in SunOS they are "user threads". Which is closest
+ for Hurd?
+ <braunr> i told you
+ <braunr> 14:09 < braunr> LWPs are another names for kernel threads usually
+ <svante_> Similar to to the IBM definition then? Sorry for not remembering
+ what I've been reading.
diff --git a/gnu.mdwn b/gnu.mdwn
new file mode 100644
index 00000000..4efc0bad
--- /dev/null
+++ b/gnu.mdwn
@@ -0,0 +1,21 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+{{$gnustatus-2011-01}}
+
+
+[[!ymlfront data="""
+
+gnustatus-2011-01:
+
+ "[GNU Status Reports: January
+ 2011](http://www.gnu.org/bulletins/gnustatus-2011-01.html)"
+
+"""]]
diff --git a/unsorted/GrubNotes.mdwn b/grub.mdwn
index b0b1fdf5..9327ecdf 100644
--- a/unsorted/GrubNotes.mdwn
+++ b/grub.mdwn
@@ -1,3 +1,42 @@
+<http://www.gnu.org/software/grub/>
+
+This section complements the [[InstallNotes]] with complete information
+regarding the GRUB 2 boot loader. The syntax is different from GRUB Legacy aka
+GRUB 1 (see below).
+
+ * `update-grub` is *Debian specific* and very useful. It will automatically
+ create a `/boot/grub/grub.cfg` file for the kernels in `/boot/` and for
+ OSes that it finds on various partitions, including GNU/Hurd.
+
+ * Make sure that GRUB 2's version is at least 20091130 and GNU Mach's version
+ is at least 20091020.
+
+ * Sample file:
+
+ menuentry "GNU/Linux" {
+ insmod ext2
+ set root=(hd0,12)
+ linux /boot/vmlinuz-2.6.32 root=/dev/hda12 ro
+ initrd /boot/initrd.img-2.6.32
+ }
+
+ menuentry "GNU" {
+ insmod ext2
+ set root=(hd0,16)
+ multiboot /boot/gnumach.gz root=device:hd0s16
+ module /hurd/ext2fs.static ext2fs --readonly \
+ --multiboot-command-line='${kernel-command-line}' \
+ --host-priv-port='${host-port}' \
+ --device-master-port='${device-port}' \
+ --exec-server-task='${exec-task}' -T typed '${root}' \
+ '$(task-create)' '$(task-resume)'
+ module /lib/ld.so.1 exec /hurd/exec '$(exec-task=task-create)'
+ }
+
+---
+
+**The following information may be outdated and should be revised.**
+
This section complements the [[InstallNotes]] with complete information regarding the GRUB boot loader. The syntax is different from Lilo's and so to scratch my own itch I'm creating this quick reference. The [Grub manual](http://www.gnu.org/software/grub/manual/grub.html) is another good reference.
* update-grub is **Debian specific** and very nice. It will automatically create a /boot/grub/menu.lst file for the kernels in /boot/. It will also append a manually configured set for other partitions like the GNU/Hurd.
@@ -11,27 +50,27 @@ This section complements the [[InstallNotes]] with complete information regardin
* boot
* sample file
- title GNU/Linux
- root (hd0,11)
- kernel /boot/vmlinuz-2.4.18 root=/dev/hda12 ro
- initrd /boot/initrd.img-2.4.18
- savedefault
-
- title GNU
- root (hd0,15)
- kernel /boot/oskit-mach root=device:hd0s16 --
- module /hurd/ext2fs.static \
- --multiboot-command-line=${kernel-command-line} \
- --host-priv-port=${host-port} \
- --device-master-port=${device-port} \
- --exec-server-task=${exec-task} \
- -T typed ${root} $(task-create) $(task-resume)
- module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
- savedefault
-
- title DOS
- rootnoverify (hd0,0)
- chainloader +1
+ title GNU/Linux
+ root (hd0,11)
+ kernel /boot/vmlinuz-2.4.18 root=/dev/hda12 ro
+ initrd /boot/initrd.img-2.4.18
+ savedefault
+
+ title GNU
+ root (hd0,15)
+ kernel /boot/oskit-mach root=device:hd0s16 --
+ module /hurd/ext2fs.static \
+ --multiboot-command-line=${kernel-command-line} \
+ --host-priv-port=${host-port} \
+ --device-master-port=${device-port} \
+ --exec-server-task=${exec-task} \
+ -T typed ${root} $(task-create) $(task-resume)
+ module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+ savedefault
+
+ title DOS
+ rootnoverify (hd0,0)
+ chainloader +1
-- [[Main/GrantBow]] - 01 Oct 2002 <br /> -- [[Main/GrantBow]] - 22 Dec 2002
diff --git a/Mach/AdvancedGrubUsage.mdwn b/grub/tftp_boot.mdwn
index 8e307b4f..8e307b4f 100644
--- a/Mach/AdvancedGrubUsage.mdwn
+++ b/grub/tftp_boot.mdwn
diff --git a/history.mdwn b/history.mdwn
new file mode 100644
index 00000000..0abcbd52
--- /dev/null
+++ b/history.mdwn
@@ -0,0 +1,94 @@
+[[!meta copyright="Copyright © 1998, 1999, 2001, 2002, 2007, 2008, 2009, 2011
+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 stable_URL]]
+
+Richard Stallman (RMS) started GNU in 1983, as a project to create a
+complete free operating system. In the text of the GNU Manifesto, he
+mentioned that there is a primitive kernel. In the first GNUsletter,
+Feb. 1986, he says that GNU's kernel is TRIX, which was developed at
+the Massachusetts Institute of Technology.
+
+By December of 1986, the Free Software Foundation (FSF) had "started
+working on the changes needed to TRIX" [Gnusletter, Jan. 1987].
+Shortly thereafter, the FSF began "negotiating with Professor Rashid
+of Carnegie-Mellon University about working with them on the
+development of the Mach kernel" [Gnusletter, June, 1987]. The text
+implies that the FSF wanted to use someone else's work, rather than
+have to fix TRIX.
+
+In [Gnusletter, Feb. 1988], RMS was talking about taking Mach and
+putting the Berkeley Sprite filesystem on top of it, "after the parts
+of Berkeley Unix... have been replaced."
+
+Six months later, the FSF is saying that "if we can't get Mach, we'll
+use TRIX or Berkeley's Sprite." Here, they present Sprite as a
+full-kernel option, rather than just a filesystem.
+
+In January, 1990, they say "we aren't doing any kernel work. It does
+not make sense for us to start a kernel project now, when we still
+hope to use Mach" [Gnusletter, Jan. 1990]. Nothing significant occurs
+until 1991, when a more detailed plan is announced:
+
+<BLOCKQUOTE>
+We are still interested in a multi-process kernel running on top of
+Mach. The CMU lawyers are currently deciding if they can release Mach
+with distribution conditions that will enable us to distribute it. If
+they decide to do so, then we will probably start work. CMU has
+available under the same terms as Mach a single-server partial Unix
+emulator named Poe; it is rather slow and provides minimal
+functionality. We would probably begin by extending Poe to provide
+full functionality. Later we hope to have a modular emulator divided
+into multiple processes. [Gnusletter, Jan. 1991].
+</BLOCKQUOTE>
+
+RMS explains the relationship between [[the Hurd and
+Linux|hurd-and-linux]], where he mentions
+that the FSF started developing the Hurd in 1990. As of [Gnusletter,
+Nov. 1991], the Hurd (running on Mach) is GNU's official kernel.
+
+---
+
+# Announcements
+
+These are all the announcements made over the years. Most of them were
+either sent to the <A HREF="news:gnu.announce">gnu.announce</A> news group or Hurd interest
+mailing lists.
+
+ * [[hurd-flash15]] -- Release 0.2 announcement (complete GNU system)
+ * [[hurd-flash14]] -- Release 0.2 announcement (Hurd)
+ * [[hurd-flash13]] -- Test release announcement (Aug 96)
+ * [[hurd-flash12]] -- Test release status (Jul 96)
+ * [[hurd-flash11]] -- Binary image available, Apr 96
+ This and [NetBSD](http://www.netbsd.org/) boot flopies should be enough to
+ get a working GNU/Hurd system!
+ * [[hurd-flash10]] -- New Snapshot, Apr 96 -- NFS and lots else works!
+ * [[hurd-flash9]] -- News Flash, Nov 95 -- ftp works!
+ * [[hurd-flash8]] -- New Snapshot, Jul 95 -- ext2fs support
+ * [[hurd-flash7]] -- New Snapshot, Apr 95
+ * [[hurd-flash6]] -- News flash, Nov 94
+ * [[hurd-flash5]] -- News flash, Sep 94 -- gcc runs!
+ * [[hurd-flash4]] -- News flash, Aug 94
+ * [[hurd-flash3]] -- News flash, Jul 94 -- emacs runs!
+ * [[hurd-flash2]] -- News flash, May 94
+ * [[hurd-flash]] -- News flash, Apr 94 -- it boots!
+ * [[hurd-announce2]] -- GNU Hurd announcement, Nov 93
+ * [[hurd-announce]] -- GNU Hurd announcement, May 91
+
+---
+
+ * [History
+ 1997-2003](http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00718.html)
+ -- personal view of Marcus Brinkmann about Hurd development in 1997-2003.
+
+---
+
+ * [[Port_to_another_microkernel]]
diff --git a/history/hurd-announce b/history/hurd-announce
new file mode 100644
index 00000000..2f165ad8
--- /dev/null
+++ b/history/hurd-announce
@@ -0,0 +1,47 @@
+From mib@PREP.AI.MIT.EDU Tue May 7 12:07:53 1991
+From: mib@PREP.AI.MIT.EDU
+Newsgroups: gnu.announce
+Subject: FSF work on a GNU OS
+Date: 6 May 91 22:15:22 GMT
+Reply-To: mib@prep.ai.mit.edu
+Distribution: gnu
+Organization: GNUs Not Usenet
+
+The Free Software Foundation is beginning work on a GNU operating
+system built on top of the Mach 3.0 microkernel. There are three
+goals to this project worth noting:
+
+o Binary compatability with 4.4 BSD, and other U*x or U*xish systems
+ on other hardware where appropriate, convenient, and consistent with
+ the design;
+
+o Posix compliance (in combination with the GNU C Library and the GNU
+ C Compiler); and
+
+o Ease of use as well as several new features and functionality.
+
+
+I am interested in constructive criticism on the interfaces, design,
+and implementation from experts in the field of OS research and design
+consistent with the above goals. Advice from seasoned U*x hackers is
+especially welcome.
+
+We have a mailing list for discussion. Currently there is little
+discussion on the group; the major contributors to the ideas behind
+the design all live in the Boston area at this point, and work has
+been done via face-to-face communication. I would like to open the
+field of discussion to a broader base, both to get wider dissemination
+of the ideas behind the current design, as well as to get a greater
+breadth of criticism. Periodic postings are currently made to the
+mailing list containing a snapshot of the interfaces used by the
+various pieces of the system. I would like to see discussion as well;
+perhaps we need a critical mass to get this.
+
+Interested individuals should send me email. I don't regularly read
+the newsgroups to which this message is posted.
+
+
+[U*x is an abbreviation for a well-known trademark of AT&T. :-)]
+
+ -mib
+
diff --git a/history/hurd-announce2 b/history/hurd-announce2
new file mode 100644
index 00000000..dce41c43
--- /dev/null
+++ b/history/hurd-announce2
@@ -0,0 +1,143 @@
+From mib@gnu.ai.mit.edu Wed Nov 3 21:51:03 1993
+Path: usenet.ee.pdx.edu!cs.uoregon.edu!ogicse!emory!nigel.msen.com!sdd.hp.com!swrinde!cs.utexas.edu!uunet!spool.mu.edu!bloom-beacon.mit.edu!ai-lab!prep.ai.mit.edu!gnulists
+From: mib@gnu.ai.mit.edu (Michael I Bushnell)
+Newsgroups: gnu.announce,gnu.misc.discuss
+Subject: Hurd status and call for volunteers
+Message-ID: <9311020719.AA02206@geech.gnu.ai.mit.edu>
+Date: 1 Nov 93 21:19:05 GMT
+Article-I.D.: geech.9311020719.AA02206
+Followup-To: gnu.misc.discuss
+Distribution: world
+Lines: 124
+Approved: info-gnu@prep.ai.mit.edu
+To: info-gnu@prep.ai.mit.edu
+X-Shopping-List:
+ (1) Chaotic casino griddles (2) Cervical congestion (3) Neoclassical
+ consoles
+Xref: usenet.ee.pdx.edu gnu.announce:160 gnu.misc.discuss:3985
+
+This message to help sate curiosity, as well as to ask for volunteers.
+Until we are ready for alpha test, this is the last such message that
+will be posted here. If you want to receive further such messages,
+send mail to hurd-ann-request@gnu.ai.mit.edu and ask to be put on that
+(moderated) announcements list.
+
+
+What is already done with the Hurd:
+
+The filesystem is complete; it runs (read-only), and most of its calls
+have been tested and work. The filesystem is able to download
+programs, by a kludge similar to the kludge used to enable the kernel
+to download the first task. In the actual bootstap sequence, it will
+download the execserver.
+
+The proc and auth servers are completed; the exec server is nearly
+complete (for a.out, not for bfd).
+
+C library support for Mach and Hurd rpc stubs, and some of the mach
+and hurd specific code, is done. Much untested and probably wrong
+code has been written to implement Unix "system calls". A large piece
+of this (the descriptor management code) is believed by Roland to have
+some architectural flaw, but he isn't sure.
+
+Some small filesystem servers (shadow directories, for example) have
+been written, but have not been compiled, let alone tested.
+
+
+There are currently three things happening wrt the Hurd:
+
+I am spending nearly all my time getting things to boot and run. My
+work is currently directed toward that goal; in the immediate present
+I am working with Roland on getting the library in its near-final
+state (which will last a long time) to make compiling easier. It is
+because this is nearly done that I can send this message.
+
+Roland is working on the library. Most of the remaining architectural
+work is done and being tested. Then Roland will work on integrating
+cthreads (which is mostly busywork), miscellaneous filesystem calls,
+and then file descriptors. After that comes signals.
+
+Jan Brittenson will be working on the network server library. This is
+a library that, when linked against a BSD protocol stack, will produce
+a Hurd network server. (Such a server implements the socket interface
+in socket.defs.)
+
+
+There are four general tasks that can be done by other people:
+
+1. Completing the existing work on the terminal driver. The existing
+work implements most of the logic you already associate with a Posixy
+terminal driver; it needs the port management and buffering logic
+added.
+
+2. Writing a readline terminal driver. We will want, as an
+alternative to the Posixy terminal driver, a readline type terminal
+driver.
+
+3. Writing miscellaneous shell utilities. Here we need shell
+utilities to create translators, etc. They should have a nice rich
+set of features to do all kinds of GNU things.
+
+4. Writing miscellaneous filesystem servers. Here we need a
+transparent tar server, a transparent FTP server, and the like.
+
+
+Future plans for work to be written by me (once the bootstrap works,
+and in addition to testing library code as Roland finishes it):
+
+o split the existing filesystem into three parts:
+ o a library for port management for complicated multi-threaded
+ servers;
+ o a library for "normal" disk-based filesystems;
+ o ufs specific code.
+
+o Write the PF_FILE socket server (what you know as PF_UNIX).
+
+o Finish the posixy terminal driver if nobody else has.
+
+o Write miscellaneous shell utilities that nobody else has.
+
+o Build a self-hosting system.
+
+
+What you need in order to be able to help now:
+
+o A 386 PC running Mach 3.0. If you have some other kind of hardware,
+ then you need to port the GNU C library support first. I'm not
+ entirely sure how much work that involves; you will need to contact
+ Roland. It might be too much trouble at this point to spend any
+ effort on it. It's best if it's a machine for which a free port of
+ Mach is available, though you could do useful work even if it's not.
+
+ If you are not currently running Mach 3.0 with somebody's
+ single-server, then it is very unlikely you could help, unless you
+ have a Unix source license. In that case, you could talk to CMU
+ (write mach@cs.cmu.edu) to find out how to get Mach 3.0 running on
+ your machine. It is not possible to do development without a Unix
+ emulator of some kind; just bare Mach 3.0 is not sufficient. I have
+ neither the time nor knowledge to help someone get a 3.0
+ single-server system running.
+
+o Clue. I don't have enough time to explain operating systems or Unix
+ to people. You need to have an iron-clad grasp of Unix semantics
+ (specificaly BSD); it's essential that things be exactly right from
+ that standpoint. It's not enough that you've programmed Unix
+ before; you need to understand all the nits. However, you may
+ disregard my previous comments about a "two question limit". You do
+ need the ability to intuit to some extent, however.
+
+o Time. It's not good for me to delegate a task and then have nothing
+ happen on it. If you have a full-time job where you can't justify
+ Hurd work as part of your job, you might find that you don't really
+ have as much time as you thought. Please make sure you really have
+ enough time before volunteering for a task.
+
+o Efficient net access. Without a real Internet connection (mail only
+ is not sufficient), it will be impossible for you to do development
+ right now.
+
+
+If you think you can help, send me email. If you don't think you can
+help right now, then don't give up: the list of conditions will change
+as the list of delegatable tasks changes.
+
diff --git a/history/hurd-flash b/history/hurd-flash
new file mode 100644
index 00000000..d1bacc79
--- /dev/null
+++ b/history/hurd-flash
@@ -0,0 +1,22 @@
+Path: gnurd!usenet.ee.pdx.edu!cs.uoregon.edu!sgiblab!swrinde!gatech!europa.eng.gtefsd.com!MathWorks.Com!news.kei.com!bloom-beacon.mit.edu!ai-lab!life.ai.mit.edu!mib
+From: mib@churchy.gnu.ai.mit.edu (Michael I Bushnell)
+Newsgroups: gnu.misc.discuss,comp.os.mach
+Subject: Hurd now bootstraps
+Date: 05 Apr 1994 21:49:50 GMT
+Organization: Free Software Foundation, Cambridge, MA
+Lines: 11
+Message-ID: <MIB.94Apr5174952@churchy.gnu.ai.mit.edu>
+NNTP-Posting-Host: churchy.gnu.ai.mit.edu
+
+
+The GNU Hurd now bootstraps, successfully starting the core servers
+(the filesystem, exec server, process server, auth server, and init)
+and running the first program. A snapshot of the code that did this
+is on alpha.gnu.ai.mit.edu in the usual place, /gnu/hurd-snap.tar.gz.
+
+--
++1 617 623 3248 (H) | The soul of Jonathan was bound to the soul of David,
++1 617 253 8568 (W) -+- and Jonathan loved him as his own soul.
+1105 Broadway | Then Jonathan made a covenant with David
+Somerville, MA 02144 | because he loved him as his own soul.
+
diff --git a/history/hurd-flash10 b/history/hurd-flash10
new file mode 100644
index 00000000..d6d5685b
--- /dev/null
+++ b/history/hurd-flash10
@@ -0,0 +1,25 @@
+Date: Mon, 15 Apr 1996 15:28:29 -0400
+Message-Id: <199604151928.PAA00636@geech.gnu.ai.mit.edu>
+From: mib@gnu.ai.mit.edu (Michael I. Bushnell, p/BSG)
+To: hurd-ann@gnu.ai.mit.edu
+Subject: New Hurd snapshot available
+X-Geek-Code: (V2.1) GCS/J/M/MU/P/S/O>AT d- H-- s-: g+++ p0 !au a- w++ v+++(*) C+
++$ UB++++$ P--- L 3- E++ N++ K++++ W-- M- V-- po-- Y+(--) t++ 5+ j++ R- G'''' tv
++ b+++ !D B-- e+ u++(*) h* f? r n y++
+X-Tom-Swiftie: "Use the `&' operator to get the address," Tom pointed out.
+Sender: owner-abshurd@cs.pdx.edu
+Precedence: bulk
+
+
+I have just cut a new source snapshot. If things go nicely, a binary
+snapshot may appear soon as well. You can find this snapshot as
+
+ftp://alpha.gnu.ai.mit.edu/gnu/hurd-snap-960415.tar.gz
+
+Many many things work! Emacs built native and just *went*. The
+system now works standalone; you can use gdb (it's much nicer than
+other mach-ish gdb's, of course); the network is functional (complete
+with NFS), etc.
+
+Michael
+
diff --git a/history/hurd-flash11 b/history/hurd-flash11
new file mode 100644
index 00000000..57851b01
--- /dev/null
+++ b/history/hurd-flash11
@@ -0,0 +1,25 @@
+From: Miles Bader <miles@gnu.ai.mit.edu>
+To: hurd-ann@gnu.ai.mit.edu
+Date: Thu, 18 Apr 1996 19:08:07 -0400
+Subject: hurd binary image
+
+
+A filesystem image from a working hurd system, corresponding to the latest
+snapshot, is available as:
+
+ ftp://alpha.gnu.ai.mit.edu/gnu/hurd-image-960418.tar.gz
+
+The whole tree takes about 37meg (warning -- it unpacks into `.'). Follow
+the instructions in ./INSTALL-binary to make a working hurd system.
+
+Due to a timely trashing of the disk on our main hurd machine, it has been
+verified that it is possible to make a bootable hurd system from scratch
+using this image and a set of netbsd 1.1 boot floppies...
+
+The sources for the mach kernel included in the image are available in the
+same directory as mach4-UK22.tar.gz and mach4-i386-UK22.tar.gz.
+
+-Miles
+--
+Miles Bader / miles@gnu.ai.mit.edu / (617) 253-8568
+Amadera e ike!
diff --git a/history/hurd-flash12 b/history/hurd-flash12
new file mode 100644
index 00000000..5be9c94e
--- /dev/null
+++ b/history/hurd-flash12
@@ -0,0 +1,76 @@
+From: mib@gnu.ai.mit.edu (Michael I. Bushnell, p/BSG)
+Newsgroups: gnu.misc.discuss
+Subject: Hurd 0.0 release status
+Followup-To: gnu.misc.discuss
+Date: 13 Jul 1996 23:53:41 GMT
+Organization: Touring Consulting Services
+Lines: 35
+Message-ID: <MIB.96Jul13195341@gnu.ai.mit.edu>
+NNTP-Posting-Host: churchy.gnu.ai.mit.edu
+
+
+People are eager to know how close we are to release, so here's an
+update:
+
+There is one rather annoying bug I'd like to find which is causing
+random crashes. I expect this will not be too hard to locate. There
+are some more trivial bugs, but the release will not be held up for
+them.
+
+Forty-three packages of GNU software have been built native.
+Remaining to be built are three packages for which new releases are
+expected soon.
+
+Also remaining to be built native are bash, gdb, mach, the Hurd
+itself, and the internet utilities and daemons. We intend to sync our
+separate copy of libc source with the libc maintainer, and then build
+it native too.
+
+Because of obnoxious export restrictions, we have still to make
+separate shared libraries for the crypt functions.
+
+Except for the actual final packaging, all the release engineering
+tasks to be done have been completed.
+
+
+To summarize, we still need to:
+
+o Fix one obnoxious bug
+o Compile three packages that are waiting for release;
+o Compile gdb, bash, mach, and hurd native
+o Sync libc source and compile native
+o Deal with crypt shared libraries
+o Final packaging
+
+Michael
+
+From: mib@gnu.ai.mit.edu (Michael I. Bushnell, p/BSG)
+Newsgroups: gnu.misc.discuss
+Subject: Re: Hurd--ne plus ultra of vaporware?
+Date: 17 Jul 1996 03:02:14 GMT
+
+In article <4sg6tp$n4t@linux.cs.Helsinki.FI> torvalds@linux.cs.Helsinki.FI (Linus Torvalds) writes:
+
+ Hey! We could also ask some well-known rock-group for one of their
+ lyrics, and use that as the theme song for the Hurd release. And then
+ we could ask shops to stay open longer to sell the Hurd! Whaddaya think?
+ Don't say it has been delayed, just shout so loudly about all the new
+ features that nobody cares about the delay?
+
+Perhaps we could get Morrisey to sing the song. He's very good
+looking. Much better looking than that Mick Jagger fellow.
+
+Or something delicate, like Bach's French Suite in G. That would be
+fun.
+
+In any case, here's the state of the release:
+
+o Everything but nine packages has been compiled native.
+o The random crash bug I alluded to is fixed.
+o We have to build a floppy image for part of the installation instructions.
+
+That's it. I bet you nobody in Redmond has ever made a statement like
+that...
+
+Michael
+
diff --git a/history/hurd-flash13 b/history/hurd-flash13
new file mode 100644
index 00000000..a2de6bfd
--- /dev/null
+++ b/history/hurd-flash13
@@ -0,0 +1,120 @@
+Date: Mon, 5 Aug 1996 22:36:31 -0400
+From: thomas@gnu.ai.mit.edu (Thomas Bushnell, n/BSG)
+To: info-gnu@prep.ai.mit.edu, hurd-ann@gnu.ai.mit.edu, hurd-dev@gnu.ai.mit.edu
+Subject: Hurd 0.0 and GNU 0.0 released
+X-Name-Change: My name used to be `Michael'; now it is `Thomas'.
+X-Tom-Swiftie: "I guess I shouldn't have broken the mirror," Tom reflected.
+
+
+
+
+I am pleased to announce version 0.0 of the GNU Hurd, available via
+anonymous FTP from prep.ai.mit.edu [18.159.0.42] in the file
+/pub/gnu/hurd-0.0.tar.gz (about 1.2 MB compressed).
+
+This file contains complete source code for the following:
+
+Hurd servers:
+
+ auth, crash, devio, devport, exec, ext2fs, fifo, fwd, ifsock, init,
+ magic, new-fifo, nfs, null, pfinet, pflocal, proc, symlink, term,
+ ufs.
+
+Hurd libraries:
+
+ diskfs, fshelp, ihash, iohelp, netfs, pager, pipe, ports, ps,
+ shouldbeinlibc, store, threads, trivfs.
+
+Hurd utilities and other programs:
+
+ boot, shd, ps, settrans, showtrans, sync, su, mount, fsysopts,
+ storeinfo, login, w, uptime, hurdids, loginpr, sush, vmstat,
+ portinfo, devprobe, reboot, halt, fsck, fsck.ufs, mkfs.ufs, clri.ufs,
+ stati.ufs, getty, rc.
+
+
+------
+
+
+In addition, we have prepared a binary distribution of a complete
+version 0.0 GNU system corresponding to this Hurd release. This
+release runs only on PC-AT compatible systems with i[345]86
+processors.
+
+The GNU Hurd, plus Mach, is a kernel, not an operating system. The
+GNU operating system, like the Unix operating system, consists of many
+components, including kernel, libraries, compilers, assembler, shell,
+parser generators, utilities, window system, editors, text formatters,
+and so on. The GNU project set out a decade ago to develop this
+system, and we've been writing various components of it ever since.
+
+This release uses the `UK22' version of the Mach kernel, as
+distributed by the University of Utah. It is too difficult to prepare
+a detailed list of supported devices at this point. Common disk
+controllers and ethernet cards are generally supported.
+
+This release does not contain the X Window System.
+
+This release may be fetched by anonymous FTP from prep.ai.mit.edu
+[18.159.42] in the directory /pub/gnu/gnu-0.0/.
+
+In that directory, you should find the following files:
+
+ README
+ SOURCES
+ INSTALL-binary
+ grub-boot.image (about 1.4 MB, not compressed)
+ gnu-0.0.tar.gz (about 56.9 MB compressed)
+ gnu-0.0-stripped.tar.gz (about 26.2 MB compressed)
+
+SOURCES contains a complete list describing the sources for the
+binaries found in the image. INSTALL-binary contains complete
+installation instructions for this release.
+
+(The files README, SOURCES, and INSTALL-binary are also found in the
+root directory of the gnu-0.0 release.)
+
+gnu-0.0.tar.gz holds the image of the complete system. It unpacks
+into a directory that requires approximately 233 MB of disk space.
+
+gnu-0.0-stripped.tar.gz holds the same contents as gnu-0.0, except
+that executable programs have been stripped to save space, and the
+libraries have had debugging symbols stripped to save space and speed
+linking. It unpacks into a directory that requires about 85.5 MB of
+disk space.
+
+We recommend using the unstripped image, or you will be unable to
+debug anything. Surely there are bugs. So fetch the unstripped
+image, at least to have around.
+
+grub-boot.image is an image of a 3.5" floppy disk that you will need
+in order to complete part of the installation instructions.
+
+The following free software packages are found in this release:
+
+ autoconf, automake, bash, bc, binutils, bison, cpio, cvs, diffutils,
+ doschk, e2fsprogs, ed, emacs, fileutils, findutils, flex, from, gawk,
+ gcal, gcc, gdb, gdbm, gettext, glibc, gmp, gperf, grep, grub, gzip,
+ hello, hurd, indent, inetutils, less, mach, make, m4, miscfiles,
+ ncurses, nethack, nvi, patch, ptx, rcs, readline, recode, sed,
+ serverboot, sharutils, shellutils, tar, termcap, termutils, texinfo,
+ textutils, time, wdiff.
+
+
+------
+
+
+Here are md5sum checksums for the files mentioned in this message:
+
+b5f888bab3eb193fe97a00a141324c9d INSTALL-binary
+345dcd826747d7b11fc78f4db162d75b README
+1a5744bb4ed3448045fa6d24153d65fe SOURCES
+f7b1bc428bc4ee29977a5b28f5762092 gnu-0.0-stripped.tar.gz
+24554c58e5c89f295176e17d21dbae8e gnu-0.0.tar.gz
+8338c619d860b71bc4128c9c0fd39d63 grub-boot.image
+1fd18ccc4c81d051b83d28b13dc07ee2 hurd-0.0.tar.gz
+
+-----
+
+Br. Thomas Bushnell, n/BSG
+
diff --git a/history/hurd-flash14 b/history/hurd-flash14
new file mode 100644
index 00000000..2d67687a
--- /dev/null
+++ b/history/hurd-flash14
@@ -0,0 +1,62 @@
+I am pleased to announce version 0.2 of the GNU Hurd, available via
+anonymous FTP from prep.ai.mit.edu [18.159.0.42] in the file
+/pub/gnu/hurd-0.2.tar.gz (about 1.37 MB compressed).
+
+(The GNU Hurd, plus Mach, is a kernel, not an operating system. The
+GNU operating system, like the Unix operating system, consists of many
+components, including kernel, libraries, compilers, assembler, shell,
+parser generators, utilities, window system, editors, text formatters,
+and so on. The GNU project set out a decade ago to develop this
+system, and we've been writing various components of it ever since.)
+
+This release contains many bug fixes from version 0.1. Many thanks to
+all the people who are helping find bugs!
+
+The best way you can help find bugs is to try and compile and use on
+the Hurd as many programs as you can find and find out where bugs
+still exist. There are also unimplemented features, and your reports
+will help us to prioritize which things we work on.
+
+The system is vastly more reliable than it has been in the past.
+
+One important addition:
+
+ New programs addauth, rmauth, unsu, su, and setauth modify the uid
+ sets of running programs. Using addauth you can add root to your
+ emacs, write a file, and then use rmauth to take the uid back. (Of
+ course, passwords are required when necessary.) New program `ids'
+ will tell you what all the user ids are that a program has. Note
+ that in the Hurd a program can have several user ids all at once,
+ just like Unix supports having several group ids. Now that you can
+ dynamically change the ids of running programs, system
+ administration (among other things) becomes much easier.
+
+For more detailed news, see the NEWS file in the distribution.
+
+This release contains complete source code for the following:
+
+Hurd servers:
+
+ auth, crash, devport, exec, ext2fs, fifo, fwd, ifsock, init,
+ magic, new-fifo, nfs, null, pfinet, pflocal, proc, symlink, term,
+ ufs, storeio, firmlink.
+
+Hurd libraries:
+
+ diskfs, fshelp, ihash, iohelp, netfs, pager, pipe, ports, ps,
+ shouldbeinlibc, store, threads, trivfs, hurdbugaddr, ftpconn
+
+Hurd utilities and other programs:
+
+ boot, shd, ps, settrans, showtrans, sync, su, mount, fsysopts,
+ storeinfo, login, w, uptime, ids, sush, vmstat, portinfo, devprobe,
+ reboot, halt, fsck, fsck.ufs, mkfs.ufs, clri.ufs, stati.ufs, getty,
+ rc, e2os, vminfo, nfsd, mail.local, serverboot, MAKEDEV, loginpr,
+ addauth, rmauth, unsu, setauth, ftpcp, ftpdir.
+
+We are also making a complete GNU 0.2 binary release, which will
+include Hurd 0.2, glibc 2.0.4, gnumach 1.1.2, and many other
+programs. This binary release is announced separately.
+
+
+Thomas Bushnell, n/BSG
diff --git a/history/hurd-flash15 b/history/hurd-flash15
new file mode 100644
index 00000000..0785ac59
--- /dev/null
+++ b/history/hurd-flash15
@@ -0,0 +1,60 @@
+
+I am pleased to announce version 0.2 of the complete Hurd based GNU
+system. This release runs only on PC-AT compatible systems with
+i[3456]86 processors.
+
+The GNU Hurd, plus Mach, is a kernel, not an operating system. The
+GNU operating system, like the Unix operating system, consists of many
+components, including kernel, libraries, compilers, assembler, shell,
+parser generators, utilities, window system, editors, text formatters,
+and so on. The GNU project set out a decade ago to develop this
+system, and we've been writing various components of it ever since.
+
+This release uses the GNUmach distribution of the Mach kernel, version
+1.1.3. Popular PC devices are generally supported.
+
+This release does not contain the X Window System.
+
+This release may be fetched from the directory
+ftp://prep.ai.mit.edu/pub/gnu/gnu-0.2. (prep.ai.mit.edu is 18.159.42,
+for the nameserver-impaired).
+
+In that directory, you should find the following files:
+
+README
+SOURCES
+INSTALL-binary
+grub-boot.image (about 1.5 MB, not compressed)
+gnu-0.2.tar.gz (about 73 MB compressed)
+
+SOURCES contains a complete list describing the sources for the
+binaries found in the image. INSTALL-binary contains complete
+installation instructions for this release.
+
+(The files README, SOURCES, and INSTALL-binary are also found in the
+root directory of the gnu-0.2 release.)
+
+gnu-0.2.tar.gz holds the image of the complete system. It unpacks
+into a directory that requires approximately 285 MB of disk space.
+
+grub-boot.image is an image of a 3.5" floppy disk that you will need
+in order to complete part of the installation instructions.
+
+The following free software packages are included in this release:
+
+autoconf automake bash bc binutils bison cpio cvs diffutils doschk
+e2fsprogs ed emacs emacs lisp manual fileutils findutils flex from g77
+gawk gcal gcc gdb gettext glibc gmp gnuchess gnumach gnugo grep grub
+gzip hello hurd indent inetutils less libg++ lynx m4 make miscfiles
+ncurses nethack nvi patch perl ptx readline rcs recode sed sendmail
+sh-utils sharutils tar termutils texinfo textutils time wdiff
+
+--
+
+Here are md5sum checksums for the files mentioned in this message:
+
+3749b016ab581e007b90d17b9092e134 INSTALL-binary
+1f800c326ba4c3a0b3f3a3463597317b README
+40d1e1a38dd86f28fe2718081ac865cb SOURCES
+f29c1a03c1667a8019b66f6effa89d39 gnu-0.2.tar.gz
+8ad3c7254802a16068a956e836266212 grub-boot.image
diff --git a/history/hurd-flash2 b/history/hurd-flash2
new file mode 100644
index 00000000..b1d4f66f
--- /dev/null
+++ b/history/hurd-flash2
@@ -0,0 +1,152 @@
+From: mib@churchy.gnu.ai.mit.edu (Michael I Bushnell)
+Newsgroups: gnu.misc.discuss,comp.os.mach,comp.os.linux.development,comp.os.linux.misc,comp.unix.pc-clone.32bit
+Subject: GNU Hurd Task List and Call for Volunteers
+Followup-To: gnu.misc.discuss
+Date: 18 May 1994 17:54:47 GMT
+Organization: FOO
+Lines: 140
+Message-ID: <MIB.94May18135447@churchy.gnu.ai.mit.edu>
+NNTP-Posting-Host: churchy.gnu.ai.mit.edu
+Xref: usenet.ee.pdx.edu gnu.misc.discuss:7630 comp.os.mach:1434 comp.os.linux.d
+evelopment:9867 comp.os.linux.misc:16767 comp.unix.pc-clone.32bit:5854
+
+
+Now that the Hurd can run (albeit haltingly) on its own, it is
+possible for people who do not have Mach 3.0 single-servers to
+contribute without much trouble. (However, if you don't have a
+single-server, you probably won't be able to use a debugger, but that
+doesn't mean you can't do debugging, right?)
+
+We at the FSF don't have any expertise in setting up Mach 3.0
+machines; the machines that we do development on belong to the Open
+Software Foundation and were set up by them. So one of the things on
+the task list is to organize things so that people (like us and most
+of you) who don't know how to do it can do it. It's not impossible to
+figure out, it's just a pain and a marvelous thing for a volunteer to
+do.
+
+You can get Mach 3.0 from CMU; you get the C library and the Hurd from
+us. You need the soon-to-be-released version 1.07.6 of the C library
+and the latest Hurd snapshot (as well as our special version of MiG)
+from alpha.gnu.ai.mit.edu.
+
+All our work is based upon i386. The Hurd (except for a few programs;
+see the Hurd README file) is machine independent. The C library
+should not be too much trouble to port. Ports and information about
+porting difficulty for either of these are greatly desired.
+
+The Hurd is not yet self-hosting. While you are welcome to fetch the
+code and put things together, it is not likely that you will have a
+useful system right now. But you might be able to do significant work
+(see the task list below). And, even if you can't do significant
+work, I'm interested in hearing about any places where you had
+particular difficulty.
+
+If you want to start on one of these tasks, please let me know so I
+can keep track of volunteers properly. This task list will be updated
+periodically; gnu@prep.ai.mit.edu always has the latest version.
+
+ -mib
+
+GNU Hurd Task List Version 1.0.
+
+If you would like to work on one of these, please contact mib@gnu.ai.mit.edu.
+
+
+Mach 3.0 Work
+
+ o Mach 3.0 comes with CMU makefiles that depend on a drecky environment.
+ It would be very helpful to have makefiles and installation stuff so
+ that it worked well for cross-compilation between systems and used
+ GNU tools.
+
+ o MiG needs to be made able to support cross-compilation.
+
+ o A replacement for MiG that understood C .h files.
+
+ o Bootstrap tools and documentation to help people set up Mach 3.0
+ machines if they already have Linux; if they already have Net BSD;
+ if they don't have anything.
+
+ o Mach 3.0 needs to provide support for task virtual timers similar
+ in functionality to the Unix ITIMER_PROF and ITIMER_VIRTUAL timers.
+
+ o Mach 3.0 needs to provide a way for users to do statistical PC
+ profiling similar to the Unix profil system call.
+
+ o Mach 3.0 needs a facility to automatically send task and thread
+ status on task/thread exit to a port that can only be changed by
+ a privileged user; this would be used to implement process
+ accounting.
+
+ o Mach 3.0 needs a facility to find out what task is the parent of
+ a given task.
+
+ o Mach 3.0 needs a facility to find out which pages of a task's
+ address space are in core to implement Unix's mincore call.
+
+ o Mach 3.0 needs a facility to do msync.
+
+ o Mach 3.0 needs a replacement for MEMORY_OBJECT_COPY_CALL that
+ works at least for the cases needed in ordinary files. (Write mib if
+ you want to know what the problem is and some ideas about how to
+ solve it.)
+
+ o Mach 3.0 needs proxy memory objects. (mib can tell you what these
+ are and why they are important.)
+
+ o Mach 3.0 needs a way to do per-task resource counters that are
+ accessible to servers called by the task.
+
+ o Mach 3.0 needs facilities to implement resource limits of various sorts.
+
+ o Mach 3.0 needs a way to have a thread's CPU time statistics
+ include time spent by servers on its behalf.
+
+ o Of course, free ports are always necessary to machines that don't
+ already have free ports.
+
+ o Much work can be done doing research in how to improve Mach VM
+ performance and timesharing scheduling policy.
+
+
+Hurd work (these are brief descriptions; mib can give more information):
+
+ o We need a translator for /dev.
+
+ o We need a replacement for utmp and wtmp that understands the
+ Hurd `login collection' concept. Programs like who and finger
+ then need to be changed to use this.
+
+ o We need some existing shell programs changed to do Hurd things:
+ like ls, su, fsck, tar, cpio, etc.
+
+ o Some new programs need to be written: login, getty, ps, tools
+ for new filesystem features.
+
+ o Shadow directory translators. (Roland has the beginnings of this.)
+
+ o A system for write, send, talkd and so forth to bleep users;
+ this should be integrated with the utmp replacement above.
+
+ o X.
+
+ o A filesystem for /tmp that uses virtual memory instead of disk.
+
+ o Filesystem implementations (using libdiskfs) for other popular
+ formats, especially the Linux formats as well as MSDOG.
+
+ o Transparent FTP translator.
+
+ o NFS client implementation. You should start with BSD's 4.4 code
+ and support the extensions they support; don't worry about Hurd
+ extensions right now. (The server we want to write ourselves
+ because it will probably involve changing the Hurd interfaces.)
+
+ o A fancy terminal driver that uses readline and supports detach/attach.
+
+--
++1 617 623 3248 (H) | The soul of Jonathan was bound to the soul of David,
++1 617 253 8568 (W) -+- and Jonathan loved him as his own soul.
+1105 Broadway | Then Jonathan made a covenant with David
+Somerville, MA 02144 | because he loved him as his own soul.
diff --git a/history/hurd-flash3 b/history/hurd-flash3
new file mode 100644
index 00000000..19a5f371
--- /dev/null
+++ b/history/hurd-flash3
@@ -0,0 +1,77 @@
+Date: Tue, 05 Jul 1994 20:15:09 -0400
+From: mib@gnu.ai.mit.edu (Michael I Bushnell)
+To: hurd-ann@gnu.ai.mit.edu
+Subject: New Hurd snapshot
+
+
+A new Hurd snapshot has been released. You can get it from
+alpha.gnu.ai.mit.edu in the file /gnu/hurd-snap.tar.gz. You will need
+the most recent version of the GNU C library; version 1.08.3 or later.
+(Version 1.08.3 is an alpha release; you can get it from
+alpha.gnu.ai.mit.edu in the same directory.)
+
+This snapshot of the Hurd has a limping terminal driver. It can run
+emacs, bash, a whole slew of utilities, and (most importantly) GNU
+Hello.
+
+ -mib
+
+
+Here is the new part of the NEWS file:
+
+The Hurd now runs all the programs in the GNU fileutils, textutils,
+and shellutils distributions, with the exception of who. Most
+importantly it runs GNU Hello. Also, emacs works (with the kludgy
+`boot' terminal driver) and bash works.
+
+The simple pipes server works; it will be replaced eventually by the
+pflocal server (which isn't done yet). The terminal driver is limping
+but working. It doesn't support terminal ioctls yet. A minor bug in
+auth has been fixed. boot interprets more Hurd protocols; this was
+done to get emacs functioning. Some more-or-less serious bugs in exec
+were fixed; they were found by running emacs (a quite large executable
+indeed). At bootstrap time, init starts pipes and term itself;
+eventually these will be passive translators, but we don't want to
+write the new disk format until we're self-hosting or fsck and UX will
+get confused. The file proc/primes.c has been documented; thanks go
+to Jim Blandy. Some bugs in proc dealing with pgrp and wait were
+fixed; a nasty hash table bug was also fixed. The simple shell can do
+pipes. Several serious bugs in ufs were fixed dealing with extension
+of large files and writes of data not aligned on block boundaries.
+The ufs pager was over-serialized; that's been fixed. Directory
+lookups and modifications now use mapped I/O directly; this is an
+important speed-up. The structure of the pager lockes has been
+changed significantly. UFS now supports Mach copying mode
+MEMORY_OBJECT_COPY_DELAY; this significantly improves process startup
+time.
+
+Some minor changes have been made to several interfaces. The
+interface for fs.defs:dir_readdir has been totally changed. There are
+some new fs.defs interfaces: file_check_access, file_notice_changes,
+dir_notice_changes. The fsys.defs:fsys_getroot interface was changed
+to work correctly. process.defs:proc_setprocargs is renamed, and a
+fetch function proc_get_arg_locations is added. The ifsock.defs
+interface was simplified.
+
+Several bugs were fixed in libdiskfs. The new dir_readdir interface
+requires new support from format-specific code. Some race conditions
+have been fixed. dir-pathtrans.c now deals correctly with multiple
+slashes in a row. A new concept called "light references" allows
+pagers to remain active without preventing truncate-on-nolinks from
+working right. New interfaces in fs.defs are implemented (except
+file_notice_changes). Active translator usage has been fixed to work
+correctly, but passive translators are still untested. libdiskfs now
+thinks it supports S_IFSOCK nodes, but that's untested (of course)
+because pflocal isn't done yet.
+
+The passive translator startup interface in libfshelp has been
+radically simplified. The pager library now lets other code set and
+changee the attributes on objects, synchronously if desired. An
+init/terminate race condition was fixed. The ports library now
+allows single-threaded users to work right (they didn't before). The
+trivfs library works; see the ifsock server for a simple example of
+its use. See term or pipes for more complex examples.
+
+There is a task list in the file `tasks'; let me know if you are
+interested in working on one of these.
+
diff --git a/history/hurd-flash4 b/history/hurd-flash4
new file mode 100644
index 00000000..89ae9848
--- /dev/null
+++ b/history/hurd-flash4
@@ -0,0 +1,101 @@
+From: mib@gnu.ai.mit.edu (Michael I Bushnell)
+To: hurd-ann@gnu.ai.mit.edu
+Date: Mon, 8 Aug 94 16:01:23 -0400
+Subject: New Hurd Snapshot
+X-Shopping-List:
+ (1) Starboard sauce (2) Cinematic lesions (3) Two-way alphabetic
+ accordions
+
+
+A new Hurd snapshot has been placed on alpha.gnu.ai.mit.edu in
+/pub/gnu/hurd-snap.tar.gz.
+
+It is expected that the next snapshot after this one will have signals
+basically working and thus be usable for a self-hosting system. In
+addition, the next snapshot will probably have the current state of
+our networking code (which has been proceeding, but has been absent
+from the snapshots).
+
+Here is the NEWS about this current snapshot, however. Because some
+big changes were made to the makefile and directory structure, things
+might have gotten inadvertently ommitted from the snapshot. If this
+happened, please let me know ASAP and I'll fix it and make a new
+snapshot.
+
+ -mib
+
+
+August 8, 1994:
+
+Structural changes:
+
+Makefiles have been vastly improved and are simpler. The programs
+`su', `ps', and `sh' have been moved from separate dirs into `utils';
+the programs `symlink' and `ifsock' have been moved into `trans'.
+
+Several changes were made to GCC use. You should definitely get GCC
+version 2.6.0 now. Version 2.6.1 will have distributed the proper
+`specs' file for the i386-gnu target, but it isn't quite ready yet, so
+you still have to copy hurd/gcc-specs into
+gcc-lib/i386-gnu/2.6.0/specs.
+
+
+Interface changes:
+
+The tioctl.defs suite is complete now.
+
+INTR RPC's have been changed; individual RPC's are no longer marked
+INTR. Rather, entire interfaces are marked `INTR_INTERFACE' if they
+conform to the library's signalling/interruption expectations.
+
+There is a new magical retry type (for dir_pathtrans and fsys_getroot)
+called `machtype' and a new one `/'; the former is for @sys tweaks and
+the latter cleans up the retry of root-based symlinks a bit.
+
+There is a new interface `login.defs'.
+
+The "dotdot node" is no longer passed at fsys_startup time; instead,
+it is passed by fsys_getroot.
+
+
+Library changes:
+
+The ports library now does death-timeouts for multi-threaded servers;
+it doesn't actually work right yet, however. Also the ports library
+has new features (soft vs. hard ports; no outstanding ports
+notifications) that enable server-death to be done cleanly. (I hope;
+libdiskfs and ufs haven't yet been changed to use it, so libports
+might not actually have the right facilities yet.)
+
+The translator startup routines in libfshelp have been vastly improved
+(so that they can actually be used).
+
+Numerous bugfixes in libdiskfs, particularly relating to translator
+usage. Use new magical retry type `/' when appropriate. Use new
+dotdot node protocol. O_FSYNC and O_NOATIME are now honored properly.
+Alternative methods of storing symlinks are now supported through new
+hooks.
+
+The new dotdot protocol is now used by libtrivfs. Also, users of the
+library are now able to set the atime and mtime when necessary.
+
+The special threads version of malloc has been placed back in
+libthreads now that the C library uses a Mach-safe version on its own.
+
+
+Program changes:
+
+The `boot' program no longer implements the tioctl interface now that
+the terminal driver works.
+
+A bug was fixed in the handling of pgrps in `proc'.
+
+Many bugfixes in term. The tioctl interface is now implemented. EOF
+processing is fixed; break characters now work right. Signals and
+interruption are now done correctly. VDISCARD works.
+
+Ufs has Some bigs fixed in dir.c. Filesystem upgraded to BSD 4.4.
+There are now some compatibility flags.
+
+New program dev.trim does a very minimal /dev (but doesn't work yet).
+New program dev is an initial (but poor) attempt at a real /dev.
diff --git a/history/hurd-flash5 b/history/hurd-flash5
new file mode 100644
index 00000000..041a0ef7
--- /dev/null
+++ b/history/hurd-flash5
@@ -0,0 +1,23 @@
+From: mib@gnu.ai.mit.edu (Michael I Bushnell)
+Message-Id: <9409210619.AA17570@churchy.gnu.ai.mit.edu>
+To: "Lots of potentially interested people and" <nobody@gnu.ai.mit.edu>
+Subject: New milestone acheived by the GNU Hurd
+X-Tom-Swiftie: "I can't get this fire started," Tom said woodenly.
+
+
+I have just successfully compiled and run a null C program on the
+Hurd. This is using GCC native as one would normally use GCC.
+
+Sadly, it took quite a while (too long, in fact) to read the large
+archives that make up the GNU C library, but I think I know where the
+substantial inefficiency is.
+
+Once that is done, I would be happy to label this a "self-hosting
+system". But not just yet.
+
+The last bug preventing this was an error in dealing with files over
+about 8 M; this came about because in order to link a program one
+needed the GNU C library, which is over 9M when symbols are included.
+
+ -mib
+
diff --git a/history/hurd-flash6 b/history/hurd-flash6
new file mode 100644
index 00000000..e774714e
--- /dev/null
+++ b/history/hurd-flash6
@@ -0,0 +1,46 @@
+Return-Path: <pdxgate.cs.pdx.edu!gnu.ai.mit.edu!mib>
+Received: from pdxgate.cs.pdx.edu by gnurd with uucp
+ (Linux Smail3.1.28.1 #14) id m0r66pm-00010fC; Fri, 11 Nov 94 17:00 PST
+Received: from cs.pdx.edu by pdxgate.cs.pdx.edu (4.1/CATastrophe-9/19/94-U)
+ id AA05257; Fri, 11 Nov 94 16:40:48 PST
+Received: from churchy.gnu.ai.mit.edu by cs.pdx.edu (4.1/CATastrophe-9/19/94-P)
+ id AA02600; Fri, 11 Nov 94 16:40:22 PST
+Received: by churchy.gnu.ai.mit.edu (5.65/4.0)
+ id <AA12621@churchy.gnu.ai.mit.edu>; Fri, 11 Nov 94 16:45:35 -0500
+Received: by churchy.gnu.ai.mit.edu (5.65/4.0)
+ id <AA12580@churchy.gnu.ai.mit.edu>; Fri, 11 Nov 94 16:38:44 -0500
+Date: Fri, 11 Nov 94 16:38:44 -0500
+From: mib@gnu.ai.mit.edu (Michael I Bushnell)
+Message-Id: <9411112138.AA12580@churchy.gnu.ai.mit.edu>
+To: hurd-ann@gnu.ai.mit.edu, hurd-dev@gnu.ai.mit.edu, info-gnu@prep.ai.mit.edu
+Subject: New Hurd Snapshot
+X-Shopping-List:
+ (1) Horrendous collision devotions (2) Wondrous consolation (3)
+ Conscious cooking auctions
+X-Filter: mailagent [version 3.0 PL19] for trent@gnurd.uu.pdx.edu
+
+
+A new Hurd snapshot has been placed on alpha.gnu.ai.mit.edu. There
+may be unforseen problems with this snapshot, so the old one has been
+left. You may fetch this snapshot via anonymous FTP in the file
+/gnu/hurd-snap.tar.gz.
+
+The Hurd requires a modified version of MiG; you can get it by
+anonymous ftp to kahlua.cs.utah.edu in /pub/mach/mach4-UK02p6.tar.gz.
+Note that we are not yet using Mach4 for the Hurd, but we plan to
+switch as soon as its feasible.
+
+Other necessary software to run this snapshot include the latest
+snapshot of binutils/ld/gas source from Cygnus and the latest GCC.
+(Problems have been reported with GCC 2.6.1; you might want to wait
+until 2.6.2 is released.) And, of course, you also need the latest
+test version of the GNU C Library, found on alpha.gnu.ai.mit.edu.
+
+This is not yet a real release; it is certainly not up to the quality
+of even a hesitant alpha release. But it may be useful for
+educational value or to help with the Hurd effort.
+
+I will be out of town for most of the rest of the year; I will be
+reading email but I may not be able to help with problems. Sorry...
+
+ -mib
diff --git a/history/hurd-flash7 b/history/hurd-flash7
new file mode 100644
index 00000000..ce6e08d2
--- /dev/null
+++ b/history/hurd-flash7
@@ -0,0 +1,17 @@
+Date: Wed, 12 Apr 1995 15:08:18 -0400
+From: Michael I Bushnell <mib@gnu.ai.mit.edu>
+To: hurd-ann@duality.gnu.ai.mit.edu
+Subject: New Hurd Snapshot available
+
+A new hurd snapshot is now available from
+ftp://alpha.gnu.ai.mit.edu/gnu/hurd-snap.tar.gz.
+
+This snapshot contains many improvements over the last one, and is
+also probably easier to compile.
+
+This snapshot must be used with the most recent libc snapshot,
+ftp://alpha.gnu.ai.mit.edu/gnu/libc-950411.tar.gz. Previous versions
+of the library will not work right.
+
+If any files are discovered to be missing, please let me know asap.
+
diff --git a/history/hurd-flash8 b/history/hurd-flash8
new file mode 100644
index 00000000..555186ec
--- /dev/null
+++ b/history/hurd-flash8
@@ -0,0 +1,73 @@
+Date: Sun, 23 Jul 1995 16:27:46 -0400
+Message-Id: <199507232027.QAA09306@geech.gnu.ai.mit.edu>
+From: Michael I Bushnell <mib@gnu.ai.mit.edu>
+To: hurd-ann@gnu.ai.mit.edu
+Subject: Hurd snapshot!
+X-Geek-Code: (V2.1) GCS/J/M/MU/P/S/O>AT d- H-- s-: g+++ p0 !au a- w++ v+++(*) C+
++$ UB++++$ P--- L 3- E++ N++ K++++ W-- M- V-- po-- Y+(--) t++ 5+ j++ R- G'''' tv
++ b+++ !D B-- e+ u++(*) h* f? r n y++
+X-Zippy-Says: I just had a NOSE JOB!!
+Sender: owner-abshurd@cs.pdx.edu
+Precedence: bulk
+
+
+I have just put a new Hurd snapshot on alpha.gnu.ai.mit.edu in
+/gnu/hurd-snap-950723.tar.gz.
+
+You will also need the new libc snapshot, which should appear in the
+same place today. Older libc snapshots will not be happy.
+
+The binary images (hurd-floppy.fs.gz and hurd-image.tar.gz) have not
+been updated. It is difficult to use the Hurd standalon, because the
+Mach boot loaders can now no longer boot the Hurd. A new boot loader
+is nearly finished. Perhaps we can make new binary images then, or a
+volunteer might take over this useful work. (Hint, hint.)
+
+Michael
+
+
+
+Here is the NEWS:
+
+July 23, 1995
+
+Shared libraries now work; use -static to link programs and avoid the
+shared libraries. The Hurd programs are normally built static; this
+will probably change soon.
+
+The ext2fs server now works, as do the tools to manipulate ext2fs
+filesystems. A snapshot of the tools will be made soon under separate
+cover. Many thanks to Ted Ts'o for his valuable work on the tools.
+
+Readers of the Makefiles will notice that we now generate dependencies
+automatically.
+
+The old netserv library is gone.
+
+The `boot' hack has been modified slightly to avoid the normalq libc startup
+files, because they no longer work with UX.
+
+Some small bugs have been fixed in the devio server.
+
+The ports library has been totally rewritten; new features permit
+servers to have greater control over thread RPC's and port creation.
+
+The fshelp library now does most of the work for translator
+interaction; it's simpler now too. Filesystems have much less work to
+do; the relevant code in libdiskfs is now understanble instead of
+unparseable chaos.
+
+The ports library provides for timeouts; the diskfs library almost
+uses it, but because of a bug, it's disabled for now.
+
+Filesystems are now expected to sync themselves if necessary; the new
+fsys_set_options RPC provides for changeing (or cancelling) the sync
+intervale. The diskfs library does this for you. The update program
+is no longer necessary.
+
+A small bug in the proc server has been hacked around; the real fix
+will come later.
+
+Many important bugs in the C library have been fixed since the last
+snapshot; perhaps all of them. ;-)
+
diff --git a/history/hurd-flash9 b/history/hurd-flash9
new file mode 100644
index 00000000..1ff32ba9
--- /dev/null
+++ b/history/hurd-flash9
@@ -0,0 +1,39 @@
+Date: Wed, 29 Nov 1995 13:13:23 -0500
+Message-Id: <199511291813.NAA10983@duality.gnu.ai.mit.edu>
+From: mib@gnu.ai.mit.edu (Michael I. Bushnell, p/BSG)
+To: hurd-ann@gnu.ai.mit.edu (and others)
+Subject: Announcement
+X-Geek-Code: (V2.1) GCS/J/M/MU/P/S/O>AT d- H-- s-: g+++ p0 !au a- w++ v+++(*) C+
++$ UB++++$ P--- L 3- E++ N++ K++++ W-- M- V-- po-- Y+(--) t++ 5+ j++ R- G'''' tv
++ b+++ !D B-- e+ u++(*) h* f? r n y++
+X-Windows: The Cutting Edge of Obsolescence.
+Sender: owner-abshurd@cs.pdx.edu
+Precedence: bulk
+
+
+The Hurd has succesfully completed its first FTP:
+
+bash# ftp 128.52.46.31
+Connected to 128.52.46.31.
+220 albert.gnu.ai.mit.edu FTP server (Version 5.60) ready.
+Name (128.52.46.31:root):
+331 Password required for root.
+Password:230 User root logged in.
+ftp> cd ~mib
+250 CWD command successful.
+ftp> get ftptest
+200 PORT command successful.
+150 Opening ASCII mode data connection for ftptest (16 bytes).
+226 Transfer complete.
+17 bytes received in 0.07 secs (0.24 Kbytes/sec)
+ftp> quit
+221 Goodbye.
+bash# cat ftptest
+this is a test.
+bash#
+
+
+Tre cool.
+
+Michael
+
diff --git a/history/port_to_another_microkernel.mdwn b/history/port_to_another_microkernel.mdwn
new file mode 100644
index 00000000..a8ec3fe7
--- /dev/null
+++ b/history/port_to_another_microkernel.mdwn
@@ -0,0 +1,178 @@
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+2009, 2010, 2011 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]]."]]"""]]
+
+[[!meta title="Porting the Hurd to another microkernel"]]
+
+<!-- This page shares some text with faq/which_microkernel. -->
+
+It is a frequently asked question, [[faq/which_microkernel]] the Hurd should be
+based upon assuming that [[microkernel/Mach]] is no longer considered state of
+the art, and it is well known that there has been a lot of discussion about
+this topic, and also some code produced, but then, years later, the Hurd is
+still based on [[GNU Mach|microkernel/mach/gnumach]].
+
+At first, there was an effort to directly port the Hurd to the
+[[L4_microkernel_family|microkernel/l4]]. Then the story continued...
+
+[[!toc levels=2]]
+
+
+# L4
+
+## Initial Idea
+
+Encountering a number of fundamental design issues with the [[Mach
+microkernel|microkernel/mach]] (mostly regarding [[resource
+management|open_issues/resource_management_problems]]), some of the Hurd
+developers began experimenting with using other microkernels for the Hurd
+around the turn of the millenium.
+
+The idea of using L4 as a [[microkernel]] for a Hurd system was initially
+voiced in the [[community]] by Okuji Yoshinori, who, for discussing this
+purpose, created the [[mailing_lists/l4-hurd]] mailing list in November 2000.
+
+Over the years, a lot of discussion have been held on this mailing list, which
+today is still the right place for [[next-generation Hurd|hurd/ng]]
+discussions.
+
+
+## Why?
+
+Even though that said resource management issues constitute a broad research
+topic, there was no hope that the original Mach project would work on these:
+[[microkernel/Mach]] wasn't maintained by its original authors anymore. Mach
+had served its purpose as a research vehicle, and has been retired by its
+stakeholders.
+
+Thus, switching to a well-maintained current [[microkernel]] was expected to
+yield a more solid foundation for a Hurd system than the [[decaying
+Mach|microkernel/mach/history]] design and implementation was able to.
+
+At that time, the [[L4 microkernel family|microkernel/L4]] was one obvious
+choice. Being a second-generation microkernel, it was deemed to provide for a
+faster system kernel implementation, especially in the time-critical [[IPC]]
+paths. Also, as L4 was already implemented for a bunch of different
+architectures (x86, Alpha, MIPS; also including SMP support), and the Hurd
+itself being rather archtecture-agnostic, it was expected to be able to easily
+support more platforms than with the existing system.
+
+
+## Steps and Goals
+
+At the same time, the idea was -- while mucking with the system's core anyway
+-- to improve on some fundamental design issues, too -- like the resource
+management problems, for example.
+
+One goal of porting the Hurd to L4 was to make the Hurd independent of
+[[microkernel/Mach]] interfaces, to make it somewhat microkernel-agnostic.
+
+One idea was to first introduce a Mach-on-L4 emulation layer, to easily get a
+usable (though slow) Hurd-using-Mach-interfaces-on-L4 system, and then
+gradually move the Hurd servers to use L4 intefaces rather than Mach ones.
+
+A design upon the lean L4 kernel would finally have made it feasible to move
+devices drivers out of the kernel's [[TCB]].
+
+
+# Implementation
+
+The project itself then was mostly lead by Marcus Brinkmann and Neal Walfield.
+Neal started the original Hurd/L4 port while visiting Karlsruhe university in
+2002. He explains:
+
+> My intention was to adapt the Hurd to exploit L4's concepts and intended
+> [[design_pattern]]s; it was not to simply provide a Mach
+> [[compatibility_layer]] on top of L4. When I left Karlsruhe, I no longer had
+> access to [[microkernel/l4/Pistachio]] as I was unwilling to sign an NDA.
+> Although the specification was available, the Karlsruhe group only [released
+> their code in May
+> 2003](https://lists.ira.uni-karlsruhe.de/pipermail/l4ka/2003-May/000345.html).
+> Around this time, Marcus began hacking on Pistachio. He created a relatively
+> complete run-time. I didn't really become involved again until the second
+> half of 2004, after I complete by Bachelors degree.
+
+Development of Hurd/L4 was done in the [CVS module
+`hurd-l4`](http://savannah.gnu.org/cgi-bin/viewcvs/hurd/hurd-l4/). The `doc`
+directory contains a design document that is worth reading for anyone who
+wishes to learn more about Hurd/L4.
+
+Even though there was progress -- see, for example, the [[QEMU image for
+L4|hurd/running/qemu/image_for_l4]] -- this port never reached a releasable
+state. Simple POSIX programs, such as `banner` could run, but for more complex
+system interfaces, a lot more work was needed.
+
+Eventually, a straight-forward port of the original Hurd's design wasn't deemed
+feasible anymore by the developers, partly due to them not cosidering L4
+suitable for implementing a general-purpose operating system on top of it, and
+because of deficiencies in the original Hurd's design, which they discovered
+along their way. Neal goes on:
+
+> Before Marcus and I considered [[microkernel/Coyotos]], we had already
+> rejected some parts of the Hurd's design. The
+> [[open_issues/resource_management_problems]] were
+> what prompted me to look at L4. Also, some of the problems with
+> [[hurd/translator]]s were already well-known to us. (For a more detailed
+> description of the problems we have identified, see our [[hurd/critique]] in the
+> 2007 July's SIGOPS OSR. We have also written a forward-looking
+> [[hurd/ng/position_paper]].)
+
+> We visited Jonathan Shapiro at Hopkins in January 2006. This resulted in a
+> number of discussions, some quite influential, and not always in a way which
+> aligned our position with that of Jonathan's. This was particularly true of
+> a number of security issues.
+
+A lange number of discussion threads can be found in the archives of the
+[[mailing_lists/l4-hurd]] mailing list.
+
+> Hurd-NG, as we originally called it, was an attempt to articulate the system
+> that we had come to envision in terms of interfaces and description of the
+> system's structure. The new name was selected, if I recall correctly, as it
+> clearly wasn't the Hurd nor the Hurd based on L4.
+
+
+## Termination
+
+As of 2005, development of Hurd/L4 has stopped.
+
+
+# Coyotos
+
+Following that, an attempt was started to use the kernel of the
+[[microkernel/Coyotos]] system. As Coyotos is an object-capability system
+througout, the microkernel would obviously be more suitable for this purpose;
+and it looked pretty promising in the beginning. However, further
+investigations found that there are some very fundamental philosophical
+differences between the Coyotos and Hurd designs; and thus this this attempt
+was also abandonned, around 2006 / 2007. (This time before producing any
+actual code.)
+
+
+# Viengoos
+
+By now (that is, after 2006), there were some new [[microkernel/L4]] variants
+available, which added protected [[IPC]] paths and other features necessary for
+object-capability systems; so it might be possible to implement the Hurd on top
+of these. However, by that time the developers concluded that microkernel
+design and system design are interconnected in very intricate ways, and thus
+trying to use a third-party microkernel will always result in trouble. So Neal
+Walfield created the experimental [[microkernel/Viengoos]] kernel instead --
+based on the experience from the previous experiments with L4 and Coyotos --
+for his [[research on resource
+management|open_issues/resource_management_problems]]. Currently he works in
+another research area though, and thus Viengoos is on hold.
+
+
+# Intermediate Results
+
+Note that while none of the microkernel work is active now, the previous
+experiments already yielded a lot of experience, which will be very useful in
+the further development / improvement of the mainline (Mach-based) Hurd
+implementation.
diff --git a/history/port_to_another_microkernel/discussion.mdwn b/history/port_to_another_microkernel/discussion.mdwn
new file mode 100644
index 00000000..f2161195
--- /dev/null
+++ b/history/port_to_another_microkernel/discussion.mdwn
@@ -0,0 +1,69 @@
+[[!meta copyright="Copyright © 2009, 2011 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]]."]]"""]]
+
+IRC, #hurd, 2011-01-12.
+
+[[!taglink open_issue_documentation]]
+
+ <Pete-J> Hello i am just curious of the development of Hurd - what's the
+ current mission on the microkernel i see projects like l4 and viengoos,
+ will one of these projects replace Mach? or will you stick with Mach
+ <Pete-J> as i understand is that Mach is a first generation microkernel
+ that's very old in design and causes alot of issues
+ <Pete-J> that's where l4 and viengoos comes in - they are trying to be the
+ next generation Mach - am i correct?
+ <neal> l4 is not a drop in replacement for Mach
+ <neal> it doesn't actually do much resource management
+ <neal> for instance, you still have to implement a memory manager
+ <neal> this is where several issues are with Mach
+ <neal> l4 doesn't address those issues; it punts to the operating system
+ <Pete-J> and what about viengoos?
+ <neal> it's unfinished
+ <neal> and it implemented some untested ideas
+ <neal> i.e., parts of viengoos were research
+ <neal> there has not been a sufficient evaluation of those ideas to
+ determine whether they are a good approach
+ <Pete-J> meaning that viengoos is a research kernel that could aid Mach?
+ <neal> I'm not sure I understand your question
+ <Pete-J> Well is viengoos trying to be a replacement for Mach, or will
+ viengoos be an experiment of new ideas that could be implemented in Mach?
+ <Pete-J> i am sorry for my limited english
+ <neal> viengoos was designed with a Hurd-like user-land in mind
+ <neal> in that sense it was a Mach replacement
+ <neal> (unlike L4)
+ <neal> viengoos consisted of a few experiments
+ <neal> one could implement them in mach
+ <neal> but it would require exposing new interfaces
+ <neal> in which case, I'm not sure you could call the result Mach
+ <Pete-J> Well as i understand you develop two microkernels side by side,
+ wouldnt it be more effective to investigate viengoos more and maybe move
+ the focus to viengoos?
+ <antrik> no
+ <antrik> having something working all the time is crucial
+ <antrik> it's very hard to motivate people to work on a project that might
+ be useful, in a couple of years, perhaps...
+ <Pete-J> Well Mach is meant to be replaced one day - i see no reason to
+ keep on developing it just because it works at this moment
+ <Pete-J> *if Mach is meant to be replaced
+ <antrik> it's not at all clear that it will be replaced by something
+ completely different. I for my part believe that modifying the existing
+ Mach is a more promising approach
+ <Pete-J> as i understand man power is something you need - and by spreading
+ out the developers just makes the progress more slow
+ <antrik> but even if it *were* to be replaced one day, it doesn't change
+ the fact that we need it *now*
+ <antrik> all software will be obsolete one day. doesn't mean it's not worth
+ working on
+ <antrik> the vast majority of work is not on the microkernel anyways, but
+ on the system running on top of it
+ <Pete-J> ahh i see
+ <antrik> manpower is not something that comes from nowhere. again, having
+ something working is crucial in a volunteer project like this
+ <antrik> there are no fixed plans
diff --git a/history/port_to_l4.mdwn b/history/port_to_l4.mdwn
new file mode 100644
index 00000000..3f951a64
--- /dev/null
+++ b/history/port_to_l4.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 2011 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 stable_URL]]
+
+[[!meta redir=port_to_another_microkernel]]
diff --git a/hurd-and-linux.html b/hurd-and-linux.html
new file mode 100644
index 00000000..01b08aa1
--- /dev/null
+++ b/hurd-and-linux.html
@@ -0,0 +1,49 @@
+[[!meta copyright="Copyright © 1996, 1997, 1998, 2008, 2009 Free Software
+Foundation, Inc."]]
+
+[[!meta license="Verbatim copying and distribution of this entire article is
+permitted in any medium, provided this notice is preserved."]]
+
+[[!meta title="The Hurd and Linux"]]
+
+[[!tag stable_URL]]
+
+by <A HREF="http://www.stallman.org/">Richard Stallman</A>.
+
+<P>
+People sometimes ask, ``Why did the FSF develop a new free kernel
+instead of using Linux?'' It's a reasonable question. The answer,
+briefly, is that that is not the question we faced.
+
+<P>
+When we started developing the Hurd in 1990, the question facing us
+was, ``How can we get a free kernel for the GNU system?'' There was
+no free Unix-like kernel then, and we knew of no other plan to write
+one. The only way we could expect to have a free kernel was to write
+it ourselves. So we started.
+
+<P>
+We heard about Linux after its release. At that time, the question
+facing us was, ``Should we cancel the Hurd project and use Linux
+instead?''
+
+<P>
+We heard that Linux was not at all portable (this may not be true
+today, but that's what we heard then). And we heard that Linux was
+architecturally on a par with the Unix kernel; our work was leading to
+something much more powerful.
+
+<P>
+Given the years of work we had already put into the Hurd, we decided
+to finish it rather than throw them away.
+
+<P>
+If we did face the question that people ask---if Linux were already
+available, and we were considering whether to start writing another
+kernel---we would not do it. Instead we would choose another project,
+something to do a job that no existing free software can do.
+
+<P>
+But we did start the Hurd, back then, and now we have made it work.
+We hope its superior architecture will make free operating systems
+more powerful.
diff --git a/hurd-l4.mdwn b/hurd-l4.mdwn
new file mode 100644
index 00000000..afc8f8f3
--- /dev/null
+++ b/hurd-l4.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 2009, 2011 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 stable_URL]]
+
+[[!meta redir=history/port_to_another_microkernel]]
diff --git a/hurd-paper.html b/hurd-paper.html
new file mode 100644
index 00000000..880f5fca
--- /dev/null
+++ b/hurd-paper.html
@@ -0,0 +1,761 @@
+[[!meta copyright="Copyright © 1996, 1997, 1998, 2007, 2008, 2009 Free Software
+Foundation, Inc."]]
+
+[[!meta license="Verbatim copying and distribution of this entire article is
+permitted in any medium, provided this notice is preserved."]]
+
+[[!meta title="Towards a New Strategy of OS Design, an architectural overview
+by Thomas Bushnell, BSG."]]
+
+[[!tag stable_URL]]
+
+This article explains why FSF is developing a new operating system named the
+Hurd, which will be a foundation of the whole GNU system.
+The Hurd is built
+on top of CMU's Mach 3.0 kernel and uses Mach's virtual memory management and
+message-passing facilities.
+The GNU C Library will provide the Unix system
+call interface, and will call the Hurd for needed services it can't provide
+itself.
+The design and implementation of the Hurd is being lead by Michael
+Bushnell, with assistance from Richard Stallman, Roland McGrath,
+Jan Brittenson, and others.
+
+<H2>Part 1: A More Usable Approach to OS Design</H2>
+<P>
+The fundamental purpose of an operating system (OS) is to enable a variety of
+programs to share a single computer efficiently and productively.
+This
+demands memory protection, preemptively scheduled timesharing, coordinated
+access to I/O peripherals, and other services.
+In addition, an OS can allow
+several users to share a computer.
+In this case, efficiency demands services
+that protect users from harming each other, enable them to share without
+prior arrangement, and mediate access to physical devices.
+<P>
+On today's computer systems, programmers usually implement these goals
+through a large program called the kernel.
+Since this program must be
+accessible to all user programs, it is the natural place to add functionality
+to the system.
+Since the only model for process interaction is that of
+specific, individual services provided by the kernel, no one creates other
+places to add functionality.
+As time goes by, more and more is added to the
+kernel.
+<P>
+A traditional system allows users to add components to a kernel only if they
+both understand most of it and have a privileged status within the system.
+Testing new components requires a much more painful edit-compile-debug cycle
+than testing other programs.
+It cannot be done while others are using the
+system.
+Bugs usually cause fatal system crashes, further disrupting others'
+use of the system.
+The entire kernel is usually non-pageable.
+(There are
+systems with pageable kernels, but deciding what can be paged is difficult
+and error prone.
+Usually the mechanisms are complex, making them difficult
+to use even when adding simple extensions.)
+<P>
+Because of these restrictions, functionality which properly belongs
+<STRONG>behind</STRONG>
+the wall of a traditional kernel is usually left out of systems unless it is
+absolutely mandatory.
+Many good ideas, best done with an open/read/write
+interface cannot be implemented because of the problems inherent in the
+monolithic nature of a traditional system.
+Further, even among those with
+the endurance to implement new ideas, only those who are privileged users of
+their computers can do so.
+The software copyright system darkens the mire by
+preventing unlicensed people from even reading the kernel source.
+<P>
+Some systems have tried to address these difficulties.
+Smalltalk-80 and
+the Lisp Machine both represented one method of getting around the problem.
+System code is not distinguished from user code; all of the system is
+accessible to the user and can be changed as need be.
+Both systems were
+built around languages that facilitated such easy replacement and extension,
+and were moderately successful.
+But they both were fairly poor at insulating
+users and programs from each other, failing one of the principal goals of OS
+design.
+<P>
+Most projects that use the Mach 3.0 kernel carry on the hard-to-change
+tradition of OS design.
+The internal structure is different, but the same
+heavy barrier between user and system remains.
+The single-servers, while
+fairly easy to construct, inherit all the deficiencies of the monolithic
+kernels.
+<P>
+A multi-server divides the kernel functionality up into logical blocks with
+well-defined interfaces.
+Properly done, it is easier to make changes and add
+functionality.
+So most multi-server projects do somewhat better.
+Much more
+of the system is pageable.
+You can debug the system more easily.
+You can
+test new system components without interfering with other users.
+But the
+wall between user and system remains; no user can cross it without special
+privilege.
+<P>
+The GNU&nbsp;Hurd, by contrast, is designed to make the area of
+<STRONG>system</STRONG>
+code as
+limited as possible.
+Programs are required to communicate only with a few
+essential parts of the kernel; the rest of the system is replaceable
+dynamically.
+Users can use whatever parts of the remainder of the system
+they want, and can easily add components themselves for other users to take
+advantage of.
+No mutual trust need exist in advance for users to use each
+other's services, nor does the system become vulnerable by trusting the
+services of arbitrary users.
+<P>
+This has been done by identifying those system components which users
+<STRONG>must</STRONG>
+use in order to communicate with each other.
+One of these is responsible for
+identifying users' identities and is called the
+<DFN>
+authentication server.
+</DFN>
+In
+order to establish each other's identities, programs must communicate, each
+with an authentication server they trust.
+Another component establishes
+control over system components by the superuser, provides global bookkeeping
+operations, and is called the
+<DFN>
+process server.
+</DFN>
+<P>
+Not all user programs need to communicate with the process server; it is only
+necessary for programs which require its services.
+Likewise, the
+authentication server is only necessary for programs that wish to communicate
+their identity to another.
+None of the remaining services carry any special
+status; not the network implementation, the filesystems, the program
+execution mechanism (including setuid), or any others.
+
+<H3>The Translator Mechanism</H3>
+<P>
+The Hurd uses Mach ports primarily as methods for communicating between users
+and servers.
+(A Mach port is a communication point on a Mach task where
+messages are sent and received.) Each port implements a particular set of
+protocols, representing operations that can be undertaken on the underlying
+object represented by the port.
+Some of the protocols specified by the Hurd
+are the I/O protocol, used for generic I/O operations; the file protocol,
+used for filesystem operations; the socket protocol, used for network
+operations; and the process protocol, used for manipulating processes et al.
+<P>
+Most servers are accessed by opening files.
+Normally, when you open a file,
+you create a port associated with that file that is owned by the server
+that owns the directory containing the file.
+For example, a disk-based
+filesystem will normally serve a large number of ports, each of which
+represents an open file or directory.
+When a file is opened, the server
+creates a new port, associates it with the file, and returns the port to the
+calling program.
+<P>
+However, a file can have a
+<DFN>translator</DFN>
+associated with it.
+In this case,
+rather than return its own port which refers to the contents of the file, the
+server executes a translator program associated with that file.
+This
+translator is given a port to the actual contents of the file, and is then
+asked to return a port to the original user to complete the open operation.
+<P>
+This mechanism is used for
+<CODE>mount</CODE>
+by having a translator associated with
+each mount point.
+When a program opens the mount point, the translator (in
+this case, a program which understands the disk format of the mounted
+filesystem) is executed and returns a port to the program.
+After the
+translator is started, it need not be run again unless it dies; the parent
+filesystem retains a port to the translator to use in further requests.
+<P>
+The owner of a file can associate a translator with it without special
+permission.
+This means that any program can be specified as a translator.
+Obviously the system will not work properly if the translator does not
+implement the file protocol correctly.
+However, the Hurd is constructed so
+that the worst possible consequence is an interruptible hang.
+<P>
+One way to use translators is to access hierarchically structured data using
+the file protocol.
+For example, all the complexity of the user interface to
+the
+<CODE>ftp</CODE>
+program is removed.
+Users need only know that a particular
+directory represents FTP and can use all the standard file manipulation
+commands (e.g
+<CODE>ls</CODE>
+or
+<CODE>cp</CODE>)
+to access the remote system, rather than learning
+a new set.
+Similarly, a simple translator could ease the complexity of
+<CODE>tar</CODE>
+or
+<CODE>gzip</CODE>.
+(Such transparent access would have some added cost, but it would
+be convenient.)
+
+<H3>Generic Services</H3>
+<P>
+With translators, the filesystem can act as a rendezvous for interfaces which
+are not similar to files.
+Consider a service which implements some version
+of the X protocol, using Mach messages as an underlying transport.
+For each
+X display, a file can be created with the appropriate program as its
+translator.
+X clients would open that file.
+At that point, few file
+operations would be useful (read and write, for example, would be useless),
+but new operations (
+<CODE>XCreateWindow</CODE>
+or
+<CODE>XDrawText</CODE>)
+might become meaningful.
+In this case, the filesystem protocol is used only to manipulate
+characteristics of the node used for the rendezvous.
+The node need not
+support I/O operations, though it should reply to any such messages with a
+<CODE>message_not_understood</CODE>
+return code.
+<P>
+This translator technique is used to contact most of the services in the Hurd
+that are not structured like hierarchical filesystems.
+For example, the
+password server, which hands out authorization tags in exchange for
+passwords, is contacted this way.
+Network protocol servers are also
+contacted in this fashion.
+Roland McGrath thought up this use of translators.
+
+<H3>Clever Filesystem Pictures</H3>
+<P>
+In the Hurd, translators can also be used to present a filesystem-like view
+of another part of the filesystem, with some semantics changed.
+For example,
+it would be nice to have a filesystem that cannot itself be changed, but
+nonetheless records changed versions of its files elsewhere.
+(This could be
+useful for source code management.)
+<P>
+The Hurd will have a translator which creates a directory which is a
+conceptual union of other directories, with collision resolution rules of
+various sorts.
+This can be used to present a single directory to users that
+contains all the programs they would want to execute.
+There are other useful
+variations on this theme.
+
+<H3>What The User Can Do</H3>
+<P>
+No translator gains extra privilege by virtue of being hooked into the
+filesystem.
+Translators run with the uid of the owner of the file being
+translated, and can only be set or changed by that owner.
+The I/O and
+filesystem protocols are carefully designed to allow their use by mutually
+untrusting clients and servers.
+Indeed, translators are just ordinary
+programs.
+The GNU C library has a variety of facilities to make common sorts
+of translators easier to write.
+<P>
+Some translators may need special privileges, such as the password server or
+translators which allow setuid execution.
+These translators could be run by
+anyone, but only if they are set on a root-owned node would they be able to
+provide all their services successfully.
+This is analogous to letting any
+user call the
+<CODE>reboot</CODE>
+system call, but only honoring it if that user is root.
+
+<H3>Why This Is So Different</H3>
+<P>
+What this design provides is completely novel to the Unix world.
+Until now,
+OSs have kept huge portions of their functionality in the realm of system
+code, thus preventing its modification and extension except in extreme need.
+Users cannot replace parts of the system in their programs no matter how much
+easier that would make their task, and system managers are loath to install
+random tweaks off the net into their kernels.
+<P>
+In the Hurd, users can change almost all of the things that are decided for
+them in advance by traditional systems.
+In combination with the tremendous
+control given by the Mach kernel over task address spaces and properties, the
+Hurd provides a system in which users will, for the first time, be able to
+replace parts of the system they dislike, without disrupting other users.
+<P>
+Most Mach-based OSs to date have mostly implemented a wider set of the
+<STRONG>
+same old
+</STRONG>
+Unix semantics in a new environment.
+In contrast, GNU is extending
+those semantics to allow users to improve, bypass, or replace them.
+
+
+<H2>Part 2: A Look at Some of the Hurd's Beasts</H2>
+<H3>The Authentication Server</H3>
+<P>
+One of the Hurd's more central servers is the authentication server.
+Each
+port to this server identifies a user and is associated by this server with
+an
+<DFN>id block</DFN>.
+Each id block contains sets of user and group ids.
+Either
+set may be empty.
+This server is not the same as the password server
+referred to above.
+<P>
+The authentication server exports three services.
+First, it provides simple
+boolean operations on authentication ports: given two authentication ports,
+this server will provide a third port representing the union of the two sets
+of uids and gids.
+Second, this server allows any user with a uid of zero to
+create an arbitrary authentication port.
+Finally, this server provides RPCs
+(Remote Procedure Calls between different programs and possibly different
+hosts) which allow mutually untrusting clients and servers to establish their
+identities and pass initial information on each other.
+This is crucial to
+the security of the filesystem and I/O protocols.
+<P>
+Any user could write a program which implements the authentication protocol;
+this does not violate the system's security.
+When a service needs to
+authenticate a user, it communicates with its trusted authentication server.
+If that user is using a different authentication server, the transaction will
+fail and the server can refuse to communicate further.
+Because, in effect,
+this forces all programs on the system to use the same authentication server,
+we have designed its interface to make any safe operation possible, and to
+include no extraneous operations.
+(This is why there is a separate password
+server.)
+<H3>The Process Server</H3>
+<P>
+The process server acts as an information categorization repository.
+There
+are four main services supported by this server.
+First, the process server
+keeps track of generic host-level information not handled by the Mach kernel.
+For example, the hostname, the hostid, and the system version are maintained
+by the process server.
+Second, this server maintains the Posix notions of
+sessions and process groups, to help out programs that wish to use Posix
+features.
+<P>
+Third, the process server maintains a one-to-one mapping between Mach tasks
+and Hurd processes.
+Every task is assigned a pid.
+Processes can register a
+message port with this server, which can then be given out to any program
+which requests it.
+This server makes no attempt to keep these message ports
+private, so user programs are expected to implement whatever security they
+need themselves.
+(The GNU C Library provides convenient functions for all
+this.) Processes can tell the process server their current `argv' and `envp'
+values; this server will then provide, on request, these vectors of arguments
+and environment.
+This is useful for writing
+<CODE>ps</CODE>-like
+programs and also
+makes it easier to hide or change this information.
+None of these features
+are mandatory.
+Programs are free to disregard all of this and never register
+themselves with the process server at all.
+They will, however, still have a
+pid assigned.
+<P>
+Finally, the process server implements
+<DFN>process collections</DFN>,
+which are used
+to collect a number of process message ports at the same time.
+Also,
+facilities are provided for converting between pids, process server ports,
+and Mach task ports, while ensuring the security of the ports managed.
+<P>
+It is important to stress that the process server is optional.
+Because of
+restrictions in Mach, programs must run as root in order to identify all the
+tasks in the system.
+But given that, multiple process servers could
+co-exist, each with their own clients, giving their own model of the
+universe.
+Those process server features which do not require root privileges
+to be implemented could be done as per-user servers.
+The user's hands are
+not tied.
+<H3>Transparent FTP</H3>
+<P>
+Transparent FTP is an intriguing idea whose time has come.
+The popular
+<CODE>ange-ftp</CODE>
+package available for GNU Emacs makes access to FTP files
+virtually transparent to all the Emacs file manipulation functions.
+Transparent FTP does the same thing, but in a system wide fashion.
+This
+server is not yet written; the details remain to be fleshed out, and will
+doubtless change with experience.
+<P>
+In a BSD kernel, a transparent FTP filesystem would be no harder to write
+than in the Hurd.
+But mention the idea to a BSD kernel hacker, and the
+response is that ``such a thing doesn't belong in the kernel''.
+In a sense,
+this is correct.
+It violates all the layering principles of such systems to
+place such things in the kernel.
+The unfortunate side effect, however, is
+that the design methodology (which is based on preventing users from changing
+things they don't like) is being used to prevent system designers from making
+things better.
+(Recent BSD kernels make it possible to write a user program
+that provides transparent FTP.
+An example is
+<CODE>alex</CODE>,
+but it needs to run
+with full root privileges.)
+<P>
+In the Hurd, there are no obstacles to doing transparent FTP.
+A translator
+will be provided for the node
+<CODE>/ftp</CODE>.
+The contents of
+<CODE>/ftp</CODE>
+will probably
+not be directly listable, though further subdirectories will be.
+There will
+be a variety of possible formats.
+For example, to access files on uunet, one
+could
+<CODE>
+cd /ftp/ftp.uu.net:anonymous:mib@gnu.
+</CODE>
+Or to access files on a remote
+account, one might
+<CODE>
+cd /ftp/gnu.org:mib:passwd.
+</CODE>
+Parts of this
+command could be left out and the transparent FTP program would read them
+from a user's
+<CODE>.netrc</CODE>
+file.
+In the last case, one might just
+<CODE>
+cd /ftp/gnu.org;
+</CODE>
+when the rest of the data is already in
+<CODE>.netrc</CODE>.
+<P>
+There is no need to do a
+<CODE>cd</CODE>
+first--use any file command.
+To find out about
+RFC 1097 (the Telnet Subliminal Message Option), just type
+<CODE>
+more /ftp/ftp.uu.net/inet/rfc/rfc1097.
+</CODE>
+A copy command to a local disk
+could be used if the RFC would be read frequently.
+<H3>Filesystems</H3>
+<P>
+Ordinary filesystems are also being implemented.
+The initial release of the
+Hurd will contain a filesystem upwardly compatible with the BSD 4.4 Fast File
+System.
+In addition to the ordinary semantics, it will provide means to
+record translators, offer thirty-two bit user ids and group ids, and supply a
+new id per file, called the
+<DFN>author</DFN>
+of the file, which can be set by the
+owner arbitrarily.
+In addition, because users in the Hurd can have multiple
+uids (or even none), there is an additional set of permission bits providing
+access control for
+<DFN>
+unknown user
+</DFN>
+(no uids) as distinct from
+<DFN>
+known but arbitrary user
+</DFN>
+(some uids: the existing
+<DFN>world</DFN>
+category of file
+permissions).
+<P>
+The Network File System protocol will be implemented using 4.4 BSD as a
+starting point.
+A log-structured filesystem will also be implemented using
+the same ideas as in Sprite, but probably not the same format.
+A GNU network
+file protocol may be designed in time, or NFS may be extended to remove its
+deficiencies.
+There will also be various ``little'' filesystems, such as the
+MS-DOS filesystem, to help people move files between GNU and other OSs.
+
+<H3>Terminals</H3>
+<P>
+An I/O server will provide the terminal semantics of Posix.
+The GNU C
+Library has features for keeping track of the controlling terminal and for
+arranging to have proper job control signals sent at the proper times, as
+well as features for obeying keyboard and hangup signals.
+<P>
+Programs will be able to insert a terminal driver into communications
+channels in a variety of ways.
+Servers like
+<CODE>rlogind</CODE>
+will be able to insert
+the terminal protocol onto their network communication port.
+Pseudo-terminals will not be necessary, though they will be provided for
+backward compatibility with older programs.
+No programs in GNU will depend
+on them.
+<P>
+Nothing about a terminal driver is forced upon users.
+A terminal driver
+allows a user to get at the underlying communications channel easily, to
+bypass itself on an as-needed basis or altogether, or to substitute a
+different terminal driver-like program.
+In the last case, provided the
+alternate program implements the necessary interfaces, it will be used by the
+C Library exactly as if it were the ordinary terminal driver.
+<P>
+Because of this flexibility, the original terminal driver will not provide
+complex line editing features, restricting itself to the behavior found in
+Posix and BSD.
+In time, there will be a
+<CODE>readline</CODE>-based
+terminal driver,
+which will provide complex line-editing features for those users who want
+them.
+<P>
+The terminal driver will probably not provide good support for the
+high-volume, rapid data transmission required by UUCP or SLIP.
+Those
+programs do not need any of its features.
+Instead they will be using the
+underlying Mach device ports for terminals, which support moving large
+amounts of data efficiently.
+
+<H3>Executing Programs</H3>
+<P>
+The implementation of the
+<CODE>execve</CODE>
+call is spread across three programs.
+The
+library marshals the argument and environment vectors.
+It then sends a
+message to the file server that holds the file to be executed.
+The file
+server checks execute permissions and makes whatever changes it desires in
+the exec call.
+For example, if the file is marked setuid and the fileserver
+has the ability, it will change the user identification of the new image.
+The file server also decides if programs which had access to the old task
+should continue to have access to the new task.
+If the file server is
+augmenting permissions, or executing an unreadable image, then the exec needs
+to take place in a new Mach task to maintain security.
+<P>
+After deciding the policy associated with the new image, the filesystem calls
+the exec server to load the task.
+This server, using the BFD (Binary File
+Descriptor) library, loads the image.
+BFD supports a large number of object
+file formats; almost any supported format will be executable.
+This server
+also handles scripts starting with
+<CODE>#!</CODE>,
+running them through the indicated
+program.
+<P>
+The standard exec server also looks at the environment of the new image; if
+it contains a variable
+<CODE>EXECSERVERS</CODE>
+then it uses the programs specified
+there as exec servers instead of the system default.
+(This is, of course,
+not done for execs that the file server has requested be kept secure.)
+<P>
+The new image starts running in the GNU C Library, which sends a message to
+the exec server to get the arguments, environment, umask, current directory,
+etc.
+None of this additional state is special to the file or exec servers;
+if programs wish, they can use it in a different manner than the Library.
+
+<H3>New Processes</H3>
+<P>
+The
+<CODE>fork</CODE>
+call is implemented almost entirely in the GNU C Library.
+The new
+task is created by Mach kernel calls.
+The C Library arranges to have its
+image inherited properly.
+The new task is registered with the process server
+(though this is not mandatory).
+The C Library provides vectors of functions
+to be called at fork time: one vector to be called before the fork, one after
+in the parent, and one after in the child.
+(These features should not be
+used to replace the normal fork-calling sequence; it is intended for
+libraries which need to close ports or clean up before a fork occurs.)
+The C
+library will implement both fork calls specified by the draft Posix.4a (the
+proposed standard dealing with the threads extension to the real-time
+extension).
+<P>
+Nothing forces the user to create new tasks this way.
+If a program wants to
+use almost the normal fork, but with some special characteristics, then it
+can do so.
+Hooks will be provided by the C Library, or the function can even
+be completely replaced.
+None of this is possible in a traditional Unix
+system.
+
+<H3>Asynchronous Messages</H3>
+<P>
+As mentioned above, the process server maintains a
+<DFN>
+message port
+</DFN>
+for each
+task registered with it.
+These ports are public, and are used to send
+asynchronous messages to the task.
+Signals, for example, are sent to the
+message port.
+The signal message also provides a port as an indication that
+the sender should be trusted to send the signal.
+The GNU C Library lists a
+variety of ports in a table, each of which identifies a set of signals that
+can be sent by anyone who possesses that port.
+For example, if the user
+possesses the task's kernel port, it is allowed to send any signal.
+If the
+user possesses a special
+<DFN>
+terminal id
+</DFN>
+port, it is allowed to send the
+keyboard and hangup signals.
+Users can add arbitrary new entries into the C
+library's signal permissions table.
+<P>
+When a process's process group changes, the process server will send it a
+message indicating the new process group.
+In this case, the process server
+proves its authority by providing the task's kernel port.
+<P>
+The C library also has messages to add and delete uids currently used by the
+process.
+If new uids are sent to the program, the library adds them to its
+current set, and then exchanges messages with all the I/O servers it knows
+about, proving to them its new authorization.
+Similarly, a message can
+delete uids.
+In the latter case, the caller must provide the process's task
+port.
+(You can't harm a process by giving it extra permission, but you can
+harm it by taking permission away.) The Hurd will provide user programs to
+send these messages to processes.
+For example, the
+<CODE>su</CODE>
+command will be able
+to cause all the programs in your current login session, to gain a new uid,
+rather than spawn a subshell.
+<P>
+The C library will allow programs to add asynchronous messages they wish to
+recognize, as well as prevent recognition of the standard set.
+<H3>Making It Look Like Unix</H3>
+<P>
+The C Library will implement all of the calls from BSD and Posix as well as
+some obvious extensions to them.
+This enables users to replace those calls
+they dislike or bypass them entirely, whereas in Unix the calls must be used
+``as they come'' with no alternatives possible.
+<P>
+In some environments binary compatibility will also be supported.
+This works
+by building a special version of the library which is then loaded somewhere
+in the address space of the process.
+(For example, on a VAX, it would be
+tucked in above the stack.) A feature of Mach, called system call
+redirection, is then used to trap Unix system calls and turn them into jumps
+into this special version of the library.
+(On almost all machines, the cost
+of such a redirection is very small; this is a highly optimized path in Mach.
+On a 386 it's about two dozen instructions.
+This is little worse than a
+simple procedure call.)
+<P>
+Many features of Unix, such as signal masks and vectors, are handled
+completely by the library.
+This makes such features significantly cheaper
+than in Unix.
+It is now reasonable to use
+<CODE>sigblock</CODE>
+extensively to protect
+critical sections, rather than seeking out some other, less expensive method.
+
+<H3>Network Protocols</H3>
+<P>
+The Hurd will have a library that will make it very easy to port 4.4 BSD
+protocol stacks into the Hurd.
+This will enable operation, virtually for
+free, of all the protocols supported by BSD.
+Currently, this includes the
+CCITT protocols, the TCP/IP protocols, the Xerox NS protocols, and the ISO
+protocols.
+<P>
+For optimal performance some work would be necessary to take advantage of
+Hurd features that provide for very high speed I/O.
+For most protocols this
+will require some thought, but not too much time.
+The Hurd will run the
+TCP/IP protocols as efficiently as possible.
+<P>
+As an interesting example of the flexibility of the Hurd design, consider the
+case of IP trailers, used extensively in BSD for performance.
+While the Hurd
+will be willing to send and receive trailers, it will gain fairly little
+advantage in doing so because there is no requirement that data be copied and
+avoiding copies for page-aligned data is irrelevant.
diff --git a/hurd-talk.html b/hurd-talk.html
new file mode 100644
index 00000000..ec9eb777
--- /dev/null
+++ b/hurd-talk.html
@@ -0,0 +1,1062 @@
+[[!meta copyright="Copyright © 2001 Marcus Brinkmann"]]
+
+[[!meta license="Verbatim copying and distribution of this entire article is
+permitted in any medium, provided this notice is preserved."]]
+
+[[!meta title="The Hurd, a presentation by Marcus Brinkmann"]]
+
+[[!tag stable_URL]]
+
+<H4><A NAME="contents">Table of Contents</A></H4>
+<UL>
+ <LI><A HREF="#int" NAME="TOCint">Introduction</A>
+ <LI><A HREF="#ove" NAME="TOCove">Overview</A>
+ <LI><A HREF="#his" NAME="TOChis">Historicals</A>
+ <LI><A HREF="#ker" NAME="TOCker">Kernel Architectures</A>
+ <LI><A HREF="#mic" NAME="TOCmic">Micro vs Monolithic</A>
+ <LI><A HREF="#sin" NAME="TOCsin">Single Server vs Multi Server</A>
+ <LI><A HREF="#mul" NAME="TOCmul">Multi Server is superior, ...</A>
+ <LI><A HREF="#the" NAME="TOCthe">The Hurd even more so.</A>
+ <LI><A HREF="#mac" NAME="TOCmac">Mach Inter Process Communication</A>
+ <LI><A HREF="#how" NAME="TOChow">How to get a port?</A>
+ <LI><A HREF="#exa" NAME="TOCexa">Example of <SAMP>hurd_file_name_lookup</SAMP></A>
+ <LI><A HREF="#pat" NAME="TOCpat">Pathname resolution example</A>
+ <LI><A HREF="#map" NAME="TOCmap">Mapping the POSIX Interface</A>
+ <LI><A HREF="#filser" NAME="TOCfilser">File System Servers</A>
+ <LI><A HREF="#act" NAME="TOCact">Active vs Passive</A>
+ <LI><A HREF="#aut" NAME="TOCaut">Authentication</A>
+ <LI><A HREF="#ope" NAME="TOCope">Operations on authentication ports</A>
+ <LI><A HREF="#est" NAME="TOCest">Establishing trusted connections</A>
+ <LI><A HREF="#pas" NAME="TOCpas">Password Server</A>
+ <LI><A HREF="#pro" NAME="TOCpro">Process Server</A>
+ <LI><A HREF="#filsys" NAME="TOCfilsys">Filesystems</A>
+ <LI><A HREF="#dev" NAME="TOCdev">Developing the Hurd</A>
+ <LI><A HREF="#sto" NAME="TOCsto">Store Abstraction</A>
+ <LI><A HREF="#deb" NAME="TOCdeb">Debian GNU/Hurd</A>
+ <LI><A HREF="#stabin" NAME="TOCstabin">Status of the Debian GNU/Hurd binary archive</A>
+ <LI><A HREF="#stainf" NAME="TOCstainf">Status of the Debian infrastructure</A>
+ <LI><A HREF="#staarc" NAME="TOCstaarc">Status of the Debian Source archive</A>
+ <LI><A HREF="#debide" NAME="TOCdebide">Debian GNU/Hurd: Good idea, bad idea?</A>
+ <LI><A HREF="#end" NAME="TOCend">End</A>
+</UL>
+<HR>
+<H3>Talk about the Hurd</H3>
+<P>
+This talk about the Hurd was written by Marcus Brinkmann for
+<UL>
+<LI>OSDEM, Brussels, 4. Feb 2001,
+<LI>Frühjahrsfachgespräche, Cologne, 2. Mar 2001 and
+<LI>Libre Software Meeting, Bordeaux, 4. Jul 2001.
+</UL>
+
+<H4><A HREF="#TOCint" NAME="int">Introduction</A></H4>
+<P>
+When we talk about free software, we usually refer to the free
+software licenses. We also need relief from software patents, so our
+freedom is not restricted by them. But there is a third type of
+freedom we need, and that's user freedom.
+
+<P>
+Expert users don't take a system as it is. They like to change the
+configuration, and they want to run the software that works best for
+them. That includes window managers as well as your favourite text
+editor. But even on a GNU/Linux system consisting only of free
+software, you can not easily use the filesystem format, network
+protocol or binary format you want without special privileges. In
+traditional unix systems, user freedom is severly restricted by the
+system administrator.
+
+<P>
+The Hurd removes these restrictions from the user. It provides an
+user extensible system framework without giving up POSIX compatibility
+and the unix security model. Throughout this talk, we will see that
+this brings further advantages beside freedom.
+
+<H4><A HREF="#TOCove" NAME="ove">Overview</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+
+<P>
+The Hurd is a POSIX compatible multi-server
+system operating on top of the GNU&nbsp;Mach microkernel.
+
+<P>
+Topics:
+<UL>
+ <LI>GNU&nbsp;Mach</LI>
+ <LI>The Hurd</LI>
+ <LI>Development</LI>
+ <LI>Debian GNU/Hurd</LI>
+</UL>
+</TD></TR></TABLE>
+
+<P>
+The Hurd is a POSIX compatible multi-server system operating on top of
+the GNU&nbsp;Mach Microkernel.
+
+<P>
+I will have to explain what GNU&nbsp;Mach is, so we start with that. Then
+I will talk about the Hurd's architecture. After that, I will give a
+short overview on the Hurd libraries. Finally, I will tell you how
+the Debian project is related to the Hurd.
+
+<H4><A HREF="#TOChis" NAME="his">Historicals</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%">
+<TR><TD VALIGN="TOP" ALIGN="LEFT">
+<UL>
+ <LI>1983: Richard Stallman founds the GNU project.</LI>
+ <LI>1988: Decision is made to use Mach 3.0 as the kernel.</LI>
+ <LI>1991: Mach 3.0 is released under compatible license.</LI>
+ <LI>1991: Thomas Bushnell, BSG, founds the Hurd project.</LI>
+ <LI>1994: The Hurd boots the first time.</LI>
+ <LI>1997: Version 0.2 of the Hurd is released.<BR><BR></LI>
+ <LI>1998: Debian hurd-i386 archive is created.</LI>
+ <LI>2001: Debian GNU/Hurd snapshot fills three CD images.</LI>
+</UL>
+</TD></TR></TABLE>
+
+<P>
+When Richard Stallman founded the GNU project in 1983, he wanted to
+write an operating system consisting only of free software. Very
+soon, a lot of the essential tools were implemented, and released
+under the GPL. However, one critical piece was missing: The kernel.
+<P>
+After considering several alternatives, it was decided not to write a
+new kernel from scratch, but to start with the Mach microkernel. This
+was in 1988, and it was not before 1991 that Mach was released under a
+license allowing the GNU project to distribute it as a part of the
+system.
+<P>
+In 1998, I started the Debian GNU/Hurd project, and in 2001 the number
+of available GNU/Hurd packages fills three CD images.
+
+<H4><A HREF="#TOCker" NAME="ker">Kernel Architectures</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<P>
+Microkernel:
+<UL>
+ <LI>Enforces resource management (paging, scheduling)</LI>
+ <LI>Manages tasks</LI>
+ <LI>Implements message passing for IPC</LI>
+ <LI>Provides basic hardware support</LI>
+</UL>
+<P>
+Monolithic kernel:
+<UL>
+ <LI>No message passing necessary</LI>
+ <LI>Rich set of features (filesystems, authentication, network
+ sockets, POSIX interface, ...)</LI>
+</UL>
+</TD></TR></TABLE>
+<P>
+Microkernels were very popular in the scientific world around that
+time. They don't implement a full operating system, but only the
+infrastructure needed to enable other tasks to implement most
+features. In contrast, monolithical kernels like Linux contain
+program code of device drivers, network protocols, process management,
+authentication, file systems, POSIX compatible interfaces and much
+more.
+<P>
+So what are the basic facilities a microkernel provides? In general,
+this is resource management and message passing. Resource management,
+because the kernel task needs to run in a special privileged mode of
+the processor, to be able to manipulate the memory management unit and
+perform context switches (also to manage interrupts). Message
+passing, because without a basic communication facility the other
+tasks could not interact to provide the system services. Some
+rudimentary hardware device support is often necessary to bootstrap
+the system. So the basic jobs of a microkernel are enforcing the
+paging policy (the actual paging can be done by an external pager
+task), scheduling, message passing and probably basic hardware device
+support.
+<P>
+Mach was the obvious choice back then, as it provides a rich set of
+interfaces to get the job done. Beside a rather brain-dead device
+interface, it provides tasks and threads, a messaging system allowing
+synchronous and asynchronous operation and a complex interface for
+external pagers. It's certainly not one of the sexiest microkernels
+that exist today, but more like a big old mama. The GNU project
+maintains its own version of Mach, called GNU&nbsp;Mach, which is based on
+Mach 4.0. In addition to the features contained in Mach 4.0, the GNU
+version contains many of the Linux 2.0 block device and network card
+drivers.
+<P>
+A complete treatment of the differences between a microkernel and
+monolithical kernel design can not be provided here. But a couple of
+advantages of a microkernel design are fairly obvious.
+
+<H4><A HREF="#TOCmic" NAME="mic">Micro vs Monolithic</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<P>
+Microkernel
+<UL>
+ <LI>Clear cut responsibilities
+ <LI>Flexibility in operating system design, easier debugging</LI>
+ <LI>More stability (less code to break)</LI>
+ <LI>New features are not added to the kernel</LI>
+</UL>
+<P>
+Monolithic kernel
+<UL>
+ <LI>Intolerance or creeping featuritis</LI>
+ <LI>Danger of spaghetti code</LI>
+ <LI>Small changes can have far reaching side effects</LI>
+</UL>
+</TD></TR></TABLE>
+<P>
+Because the system is split up into several components, clean
+interfaces have to be developed, and the responsibilities of each part
+of the system must be clear.
+<P>
+Once a microkernel is written, it can be used as the base for several
+different operating systems. Those can even run in parallel which
+makes debugging easier. When porting, most of the hardware dependant
+code is in the kernel.
+<P>
+Much of the code that doesn't need to run in the special kernel mode
+of the processor is not part of the kernel, so stability increases
+because there is simply less code to break.
+<P>
+New features are not added to the kernel, so there is no need to hold
+the barrier high for new operating system features.
+<P>
+Compare this to a monolithical kernel, where you either suffer from
+creeping featuritis or you are intolerant of new features (we see both
+in the Linux kernel).
+<P>
+Because in a monolithical kernel, all parts of the kernel can access
+all data structures in other parts, it is more likely that short cuts
+are used to avoid the overhead of a clean interface. This leads to a
+simple speed up of the kernel, but also makes it less comprehensible
+and more error prone. A small change in one part of the kernel can
+break remote other parts.
+
+<H4><A HREF="#TOCsin" NAME="sin">Single Server vs Multi Server</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<P>
+Single Server
+<UL>
+ <LI>A single task implements the functionality of the operating system.</LI>
+</UL>
+<P>
+Multi Server
+<UL>
+ <LI>Many tasks cooperate to provide the system's functionality.</LI>
+ <LI>One server provides only a small but well-defined part of the
+ whole system.</LI>
+ <LI>The responsibilities are distributed logically among the servers.</LI>
+</UL>
+<P>
+A single-server system is comparable to a monolithic kernel system. It
+has similar
+advantages and disadvantages.
+</TD></TR></TABLE>
+<P>
+There exist a couple of operating systems based on Mach, but they all
+have the same disadvantages as a monolithical kernel, because those
+operating systems are implemented in one single process running on top
+of the kernel. This process provides all the services a monolithical
+kernel would provide. This doesn't make a whole lot of sense (the
+only advantage is that you can probably run several of such isolated
+single servers on the same machine). Those systems are also called
+single-server systems. The Hurd is the only usable multi-server
+system on top of Mach. In the Hurd, there are many server programs,
+each one responsible for a unique service provided by the operating
+system. These servers run as Mach tasks, and communicate using the
+Mach message passing facilities. One of them does only provide a
+small part of the functionality of the system, but together they build
+up a complete and functional POSIX compatible operating system.
+
+<H4><A HREF="#TOCmul" NAME="mul">Multi Server is superior, ...</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<P>
+Any multi-server has advantages over single-server:
+<UL>
+ <LI>Clear cut responsibilities</LI>
+ <LI>More stability: If one server dies, all others remain</LI>
+ <LI>Easier development cycle: Testing without reboot (or replacing
+ running servers), debugging with gdb</LI>
+ <LI>Easier to make changes and add new features
+</UL>
+</TD></TR></TABLE>
+<P>
+Using several servers has many advantages, if done right. If a file
+system server for a mounted partition crashes, it doesn't take down
+the whole system. Instead the partition is "unmounted", and
+you can try to start the server again, probably debugging it this time
+with gdb. The system is less prone to errors in individual
+components, and over-all stability increases. The functionality of
+the system can be extended by writing and starting new servers
+dynamically. (Developing these new servers is easier for the reasons
+just mentioned.)
+<P>
+But even in a multi-server system the barrier between the system and
+the users remains, and special privileges are needed to cross it. We
+have not achieved user freedom yet.
+
+<H4><A HREF="#TOCthe" NAME="the">The Hurd even more so.</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<P>
+The Hurd goes beyond all this, and allows users to write and run their
+servers, too!
+<UL>
+ <LI>Users can replace system servers dynamically with their own
+ implementations.</LI>
+ <LI>Users can decide what parts of the remainder of the system they
+ want to use.</LI>
+ <LI>Users can extend the functionality of the system.</LI>
+ <LI>No mutual trust necessary to make use of other users
+ services.</LI>
+ <LI>Security of the system is not harmed by trusting users
+ services.</LI>
+</UL>
+</TD></TR></TABLE>
+<P>
+To quote Thomas Bushnell, BSG, from his paper
+[[``Towards_a_New_Strategy_of_OS_design''_(1996)|hurd-paper]]:
+<BLOCKQUOTE>
+The GNU&nbsp;Hurd, by contrast, is designed to make the area of system code
+as limited as possible. Programs are required to communicate only
+with a few essential parts of the kernel; the rest of the system is
+replaceable dynamically. Users can use whatever parts of the
+remainder of the system they want, and can easily add components
+themselves for other users to take advantage of. No mutual trust need
+exist in advance for users to use each other's services, nor does the
+system become vulnerable by trusting the services of arbitrary users.
+</BLOCKQUOTE>
+
+<P>
+<EM>So the Hurd is a set of servers running on top of the Mach
+micro-kernel, providing a POSIX compatible and extensible operating
+system. What servers are there? What functionality do they provide,
+and how do they cooperate?</EM>
+
+<H4><A HREF="#TOCmac" NAME="mac">Mach Inter Process Communication</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<P>
+Ports are message queues which can be used as one-way communication
+channels.
+<UL>
+ <LI>Port rights are receive, send or send-once</LI>
+ <LI>Exactly one receiver</LI>
+ <LI>Potentially many senders</LI>
+</UL>
+<P>
+MIG provides remote procedure calls on top of Mach IPC. RPCs look like
+function calls to the user.
+</TD></TR></TABLE>
+<P>
+Inter-process communication in Mach is based on the ports concept. A
+port is a message queue, used as a one-way communication channel. In
+addition to a port, you need a port right, which can be a send right,
+receive right, or send-once right. Depending on the port right, you
+are allowed to send messages to the server, receive messages from it,
+or send just one single message.
+<P>
+For every port, there exists exactly one task holding the receive
+right, but there can be no or many senders. The send-once right is
+useful for clients expecting a response message. They can give a
+send-once right to the reply port along with the message. The kernel
+guarantees that at some point, a message will be received on the reply
+port (this can be a notification that the server destroyed the
+send-once right).
+<P>
+You don't need to know much about the format a message takes to be
+able to use the Mach IPC. The Mach interface generator mig hides the
+details of composing and sending a message, as well as receiving the
+reply message. To the user, it just looks like a function call, but
+in truth the message could be sent over a network to a server running
+on a different computer. The set of remote procedure calls a server
+provides is the public interface of this server.
+
+
+<H4><A HREF="#TOChow" NAME="how">How to get a port?</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<P>
+Traditional Mach:
+<UL>
+ <LI>Nameserver provides ports to all registered servers.</LI>
+ <LI>The nameserver port itself is provided by Mach.</LI>
+ <LI>Like a phone book: One list.</LI>
+</UL>
+<P>
+The Hurd:
+<UL>
+ <LI>The filesystem is used as the server namespace.</LI>
+ <LI>Root directory port is inserted into each task.</LI>
+ <LI>The C library finds other ports with hurd_file_name_lookup,
+ performing a pathname resolution.</LI>
+ <LI>Like a tree of phone books.</LI>
+</UL>
+</TD></TR></TABLE>
+<P>
+So how does one get a port to a server? You need something like a
+phone book for server ports, or otherwise you can only talk to
+yourself. In the original Mach system, a special nameserver is
+dedicated to that job. A task could get a port to the nameserver from
+the Mach kernel and ask it for a port (with send right) to a server
+that registered itself with the nameserver at some earlier time.
+<P>
+In the Hurd, there is no nameserver. Instead, the filesystem is used
+as the server namespace. This works because there is always a root
+filesystem in the Hurd (remember that the Hurd is a POSIX compatible
+system); this is an assumption the people who developed Mach couldn't
+make, so they had to choose a different strategy. You can use the
+function hurd_file_name_lookup, which is part of the C library, to get
+a port to the server belonging to a filename. Then you can start to
+send messages to the server in the usual way.
+
+<H4><A HREF="#TOCexa" NAME="exa">Example of <SAMP>hurd_file_name_lookup</SAMP></A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT"><PRE>
+mach_port_t identity;
+mach_port_t pwserver;
+kern_return_t err;
+
+pwserver = hurd_file_name_lookup
+ ("/servers/password");
+
+err = password_check_user (pwserver,
+ 0 /* root */, "supass",
+ &identity);
+</PRE></TD></TR></TABLE>
+<P>
+As a concrete example, the special filename
+<SAMP>/servers/password</SAMP> can be used to request a port to the
+Hurd password server, which is responsible to check user provided
+passwords.
+<P>
+(explanation of the example)
+
+<H4><A HREF="#TOCpat" NAME="pat">Pathname resolution example</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<P>
+Task: Lookup /mnt/readme.txt where /mnt has a mounted filesystem.
+<UL>
+ <LI>The C library asks the root filesystem server about
+ <SAMP>/mnt/readme.txt</SAMP>.</LI>
+ <LI>The root filesystem returns a port to the mnt filesystem server
+ (matching <SAMP>/mnt</SAMP>) and the retry name
+ <SAMP>/readme.txt</SAMP>.</LI>
+ <LI>The C library asks the mnt filesystem server about
+ <SAMP>/readme.txt</SAMP>.</LI>
+ <LI>The mnt filesystem server returns a port to itself and records
+ that this port refers to the regular file
+ <SAMP>/readme.txt</SAMP>.</LI>
+</UL>
+</TD></TR></TABLE>
+<P>
+The C library itself does not have a full list of all available
+servers. Instead pathname resolution is used to traverse through a
+tree of servers. In fact, filesystems themselves are implemented by
+servers (let us ignore the chicken and egg problem here). So all the
+C library can do is to ask the root filesystem server about the
+filename provided by the user (assuming that the user wants to resolve
+an absolute path), using the <SAMP>dir_lookup</SAMP> RPC. If the
+filename refers to a regular file or directory on the filesystem, the
+root filesystem server just returns a port to itself and records that
+this port corresponds to the file or directory in question. But if a
+prefix of the full path matches the path of a server the root
+filesystem knows about, it returns to the C library a port to this
+server and the remaining part of the pathname that couldn't be
+resolved. The C library than has to retry and query the other server
+about the remaining path component. Eventually, the C library will
+either know that the remaining path can't be resolved by the last
+server in the list, or get a valid port to the server in question.
+
+<H4><A HREF="#TOCmap" NAME="map">Mapping the POSIX Interface</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<TABLE BORDER="0" CELLPADDING="10">
+<TR>
+<TH>Filedescriptor</TH>
+<TH>Port to server providing the file</TH>
+</TR><TR>
+<TD VALIGN="TOP" ALIGN="LEFT"><SAMP>fd = open(name,...)</SAMP></TD>
+<TD VALIGN="TOP"
+ALIGN="LEFT"><SAMP>dir_lookup(..,name,..,&amp;port)</SAMP><BR>
+[pathname resolution]</TD>
+</TR><TR>
+<TD VALIGN="TOP" ALIGN="LEFT"><SAMP>read(fd, ...)</SAMP></TD>
+<TD VALIGN="TOP" ALIGN="LEFT"><SAMP>io_read(port, ...)</SAMP></TD>
+</TR><TR>
+<TD VALIGN="TOP" ALIGN="LEFT"><SAMP>write(fd, ...)</SAMP></TD>
+<TD VALIGN="TOP" ALIGN="LEFT"><SAMP>io_write(port, ...)</SAMP></TD>
+</TR><TR>
+<TD VALIGN="TOP" ALIGN="LEFT"><SAMP>fstat(fd, ...)</SAMP></TD>
+<TD VALIGN="TOP" ALIGN="LEFT"><SAMP>io_stat(port, ...)</SAMP></TD>
+</TR><TR>
+<TD VALIGN="TOP" ALIGN="LEFT">...</TD><TD></TD>
+</TR>
+</TABLE>
+</TD></TR></TABLE>
+<P>
+It should by now be obvious that the port returned by the server can
+be used to query the files status, content and other information from
+the server, if good remote procedure calls to do that are defined and
+implemented by it. This is exactly what happens. Whenever a file is
+opened using the C libraries <SAMP>open()</SAMP> call, the C library
+uses the above pathname resolution to get a port to a server providing
+the file. Then it wraps a file descriptor around it. So in the Hurd,
+for every open file descriptor there is a port to a server providing
+this file. Many other C library calls like <SAMP>read()</SAMP> and
+<SAMP>write()</SAMP> just call a corresponding RPC using the port
+associated with the file descriptor.
+
+<H4><A HREF="#TOCfilser" NAME="filser">File System Servers</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<UL>
+ <LI>Provide file and directory services for ports (and more).</LI>
+ <LI>These ports are returned by a directory lookup.</LI>
+ <LI>Translate filesystem accesses through their root path (hence the
+ name translator).</LI>
+ <LI>The C library maps the POSIX file and directory interface (and
+ more) to RPCs to the filesystem servers ports, but also does work on
+ its own.</LI>
+ <LI>Any user can install file system servers on inodes they own.</LI>
+</UL>
+</TD></TR></TABLE>
+<P>
+So we don't have a single phone book listing all servers, but rather a
+tree of servers keeping track of each other. That's really like
+calling your friend and asking for the phone number of the blond girl
+at the party yesterday. He might refer you to a friend who hopefully
+knows more about it. Then you have to retry.
+<P>
+This mechanism has huge advantages over a single nameserver. First,
+note that standard unix permissions on directories can be used to
+restrict access to a server (this requires that the filesystems
+providing those directories behave). You just have to set the
+permissions of a parent directory accordingly and provide no other way
+to get a server port.
+<P>
+But there are much deeper implications. Most of all, a pathname never
+directly refers to a file, it refers to a port of a server. That
+means that providing a regular file with static data is just one of
+the many options the server has to service requests on the file port.
+A server can also create the data dynamically. For example, a server
+associated with <SAMP>/dev/random</SAMP> can provide new random data
+on every <SAMP>io_read()</SAMP> on the port to it. A server
+associated with <SAMP>/dev/fortune</SAMP> can provide a new fortune
+cookie on every <SAMP>open()</SAMP>.
+<P>
+While a regular filesystem server will just serve the data as stored
+in a filesystem on disk, there are servers providing purely virtual
+information, or a mixture of both. It is up to the server to behave
+and provide consistent and useful data on each remote procedure call.
+If it does not, the results may not match the expectations of the user
+and confuse him.
+<P>
+A footnote from the Hurd info manual:
+<BLOCKQUOTE>
+(1) You are lost in a maze of twisty little filesystems, all
+alike....
+</BLOCKQUOTE>
+<P>
+Because a server installed in the filesystem namespace translates all
+filesystem operations that go through its root path, such a server is
+also called "active translator". You can install translators using
+the settrans command with the <SAMP>-a</SAMP> option.
+
+<H4><A HREF="#TOCact" NAME="act">Active vs Passive</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<P>
+Active Translators:
+<UL>
+ <LI>"<SAMP>settrans -a /cdrom /hurd/isofs /dev/hd2</SAMP>"</LI>
+ <LI>Are running filesystem servers.</LI>
+ <LI>Are attached to the root node they translate.</LI>
+ <LI>Run as a normal process.</LI>
+ <LI>Go away with every reboot, or even time out.</LI>
+</UL>
+</TD></TR></TABLE>
+<P>
+Many translator settings remain constant for a long time. It would be
+very lame to always repeat the same couple of dozens settrans calls
+manually or at boot time. So the Hurd provides a filesystem extension
+that allows to store translator settings inside the filesystem and let
+the filesystem servers do the work to start those servers on demand.
+Such translator settings are called "passive translators". A passive
+translator is really just a command line string stored in an inode of
+the filesystem. If during a pathname resolution a server encounters
+such a passive translator, and no active translator does exist already
+(for this node), it will use this string to start up a new translator
+for this inode, and then let the C library continue with the path
+resolution as described above. Passive translators are installed with
+settrans using the <SAMP>-p</SAMP> option (which is already the
+default).
+
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<P>
+Passive Translators:
+<UL>
+ <LI>"<SAMP>settrans /mnt /hurd/ext2fs /dev/hd1s1</SAMP>"</LI>
+ <LI>Are stored as command strings into an inode.</LI>
+ <LI>Are used to start a new active translator if there isn't
+ one.</LI>
+ <LI>Startup is transparent to the user.</LI>
+ <LI>Startup happens the first time the server is needed.</LI>
+ <LI>Are permanent across reboots (like file data).</LI>
+</UL>
+</TD></TR></TABLE>
+<P>
+So passive translators also serve as a sort of automounting feature,
+because no manual interaction is required. The server start up is
+deferred until the service is need, and it is transparent to the user.
+<P>
+When starting up a passive translator, it will run as a normal process
+with the same user and group id as those of the underlying inode. Any
+user is allowed to install passive and active translators on inodes
+that he owns. This way the user can install new servers into the
+global namespace (for example, in his home or tmp directory) and thus
+extend the functionality of the system (recall that servers can
+implement other remote procedure calls beside those used for files and
+directories). A careful design of the trusted system servers makes
+sure that no permissions leak out.
+<P>
+In addition, users can provide their own implementations of some of
+the system servers instead the system default. For example, they can
+use their own exec server to start processes. The user specific exec
+server could for example start java programs transparently (without
+invoking the interpreter manually). This is done by setting the
+environment variable <SAMP>EXECSERVERS</SAMP>. The systems default
+exec server will evaluate this environment variable and forward the
+RPC to each of the servers listed in turn, until some server accepts
+it and takes over. The system default exec server will only do this
+if there are no security implications. (XXX There are other ways to
+start new programs than by using the system exec server. Those are
+still available.)
+<P>
+Let's take a closer look at some of the Hurd servers. It was already
+mentioned that only few system servers are mandatory for users. To
+establish your identity within the Hurd system, you have to
+communicate with the trusted systems authentication server
+<SAMP>auth</SAMP>. To put the system administrator into control over
+the system components, the process server does some global
+bookkeeping.
+<P>
+But even these servers can be ignored. However, registration with the
+authentication server is the only way to establish your identity
+towards other system servers. Likewise, only tasks registered as
+processes with the process server can make use of its services.
+
+<H4><A HREF="#TOCaut" NAME="aut">Authentication</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<P>
+A user identity is just a port to an authserver. The auth server
+stores four set of ids for it:
+<UL>
+ <LI>effective user ids</LI>
+ <LI>effective group ids</LI>
+ <LI>available user ids</LI>
+ <LI>available group ids</LI>
+</UL>
+<P>
+Basic properties:
+<UL>
+ <LI>Any of these can be empty.</LI>
+ <LI>A 0 among the user ids identifies the superuser.</LI>
+ <LI>Effective ids are used to check if the user has the
+ permission.</LI>
+ <LI>Available ids can be turned into effective ids on user
+ request.</LI>
+</UL>
+</TD></TR></TABLE>
+<P>
+The Hurd auth server is used to establish the identity of a user for a
+server. Such an identity (which is just a port to the auth server)
+consists of a set of effective user ids, a set of effective group ids,
+a set of available user ids and a set of available group ids. Any of
+these sets can be empty.
+
+<H4><A HREF="#TOCope" NAME="ope">Operations on authentication ports</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<P>
+The auth server provides the following operations on ports:
+<UL>
+ <LI>Merge the ids of two ports into a new one.</LI>
+ <LI>Return a new port containing a subset of the ids in a port.</LI>
+ <LI>Create a new port with arbitrary ids (superuser only).</LI>
+ <LI>Establish a trusted connection between users and servers.</LI>
+</UL>
+</TD></TR></TABLE>
+<P>
+If you have two identities, you can merge them and request an identity
+consisting of the unions of the sets from the auth server. You can
+also create a new identity consisting only of subsets of an identity
+you already have. What you can't do is extending your sets, unless
+you are the superuser which is denoted by having the user id 0.
+
+<H4><A HREF="#TOCest" NAME="est">Establishing trusted connections</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<UL>
+ <LI>User provides a rendezvous port to the server (with
+ <SAMP>io_reauthenticate</SAMP>).</LI>
+ <LI>User calls <SAMP>auth_user_authenticate</SAMP> on the
+ authentication port (his identity), passing the rendezvous port.</LI>
+ <LI>Server calls <SAMP>auth_server_authenticate</SAMP> on its
+ authentication port (to a trusted auth server), passing the
+ rendezvous port and the server port.</LI>
+ <LI>If both authentication servers are the same, it can match the
+ rendezvous ports and return the server port to the user and the user
+ ids to the server.</LI>
+</UL>
+</TD></TR></TABLE>
+<P>
+Finally, the auth server can establish the identity of a user for a
+server. This is done by exchanging a server port and a user identity
+if both match the same rendezvous port. The server port will be
+returned to the user, while the server is informed about the id sets
+of the user. The server can then serve or reject subsequent RPCs by
+the user on the server port, based on the identity it received from
+the auth server.
+<P>
+Anyone can write a server conforming to the auth protocol, but of
+course all system servers use a trusted system auth server to
+establish the identity of a user. If the user is not using the system
+auth server, matching the rendezvous port will fail and no server port
+will be returned to the user. Because this practically requires all
+programs to use the same auth server, the system auth server is
+minimal in every respect, and additional functionality is moved
+elsewhere, so user freedom is not unnecessarily restricted.
+
+<H4><A HREF="#TOCpas" NAME="pas">Password Server</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<P>
+The password server <SAMP>/servers/password</SAMP> runs as root and
+returns a new authentication port in exchange for a unix password.
+<P>
+The ids corresponding to the authentication port match the unix user
+and group ids.
+<P>
+Support for shadow passwords is implemented here.
+</TD></TR></TABLE>
+<P>
+The password server sits at <SAMP>/servers/password</SAMP> and runs as
+root. It can hand out ports to the auth server in exchange for a unix
+password, matching it against the password or shadow file. Several
+utilities make use of this server, so they don't need to be setuid
+root.
+
+<H4><A HREF="#TOCpro" NAME="pro">Process Server</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<P>
+The superuser must remain control over user tasks, so:
+<UL>
+ <LI>All mach tasks are associated with a PID in the system default
+ proc server.</LI>
+</UL>
+<P>
+Optionally, user tasks can store:
+<UL>
+ <LI>Their environment variables.</LI>
+ <LI>Their argument vector.</LI>
+ <LI>A port, which others can request based on the PID (like a
+ nameserver).</LI>
+</UL>
+<P>
+Also implemented in the proc server:
+<UL>
+ <LI>Sessions and process groups.</LI>
+ <LI>Global configuration not in Mach, like hostname, hostid, system
+ version.</LI>
+</UL>
+</TD></TR></TABLE>
+<P>
+The process server is responsible for some global bookkeeping. As
+such it has to be trusted and is not replaceable by the user.
+However, a user is not required to use any of its service. In that
+case the user will not be able to take advantage of the POSIXish
+appearance of the Hurd.
+<P>
+The Mach Tasks are not as heavy as POSIX processes. For example,
+there is no concept of process groups or sessions in Mach. The proc
+server fills in the gap. It provides a PID for all Mach tasks, and
+also stores the argument line, environment variables and other
+information about a process (if the mach tasks provide them, which is
+usually the case if you start a process with the default
+<SAMP>fork()</SAMP>/<SAMP>exec()</SAMP>). A process can also register
+a message port with the proc server, which can then be requested by
+anyone. So the proc server also functions as a nameserver using the
+process id as the name.
+<P>
+The proc server also stores some other miscellaneous information not
+provided by Mach, like the hostname, hostid and system version.
+Finally, it provides facilities to group processes and their ports
+together, as well as to convert between pids, process server ports and
+mach task ports.
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<P>
+User tasks not registering themselve with proc only have a PID assigned.
+<P>
+Users can run their own proc server in addition to the system default,
+at least for those parts of the interface that don't require superuser
+privileges.
+</TD></TR></TABLE>
+<P>
+Although the system default proc server can't be avoided (all Mach
+tasks spawned by users will get a pid assigned, so the system
+administrator can control them), users can run their own additional
+process servers if they want, implementing the features not requiring
+superuser privileges.
+
+<H4><A HREF="#TOCfilsys" NAME="filsys">Filesystems</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<P>
+Store based filesystems
+<UL>
+ <LI><SAMP>ext2fs</SAMP></LI>
+ <LI><SAMP>ufs</SAMP></LI>
+ <LI><SAMP>isofs</SAMP> (iso9660, RockRidge, GNU extensions)</LI>
+ <LI><SAMP>fatfs</SAMP> (under development)</LI>
+</UL>
+<P>
+Network file systems
+<UL>
+ <LI><SAMP>nfs</SAMP></LI>
+ <LI><SAMP>ftpfs</SAMP></LI>
+</UL>
+<P>
+Miscellaneous
+<UL>
+ <LI><SAMP>hostmux</SAMP></LI>
+ <LI><SAMP>usermux</SAMP></LI>
+ <LI><SAMP>tmpfs</SAMP> (under development)</LI>
+</UL>
+</TD></TR></TABLE>
+<P>
+We already talked about translators and the file system service they
+provide. Currently, we have translators for the ext2, ufs and iso9660
+filesystems. We also have an nfs client and an ftp filesystem.
+Especially the latter is intriguing, as it provides transparent access
+to ftp servers in the filesystem. Programs can start to move away
+from implementing a plethora of network protocols, as the files are
+directly available in the filesystem through the standard POSIX file
+interface.
+
+
+<H4><A HREF="#TOCdev" NAME="dev">Developing the Hurd</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<P>
+Over a dozen libraries support the development of new servers.
+<P>
+For special server types highly specialized
+libraries require only the implementation of a
+number of callback functions.
+<UL>
+ <LI>Use <SAMP>libdiskfs</SAMP> for store based filesystems.</LI>
+ <LI>Use <SAMP>libnetfs</SAMP> for network filesystems, also for
+ virtual filesystems.</LI>
+ <LI>Use <SAMP>libtrivfs</SAMP> for simple filesystems providing only
+ a single file or directory.</LI>
+</UL>
+</TD></TR></TABLE>
+<P>
+The Hurd server protocols are complex enough to allow for the
+implementation of a POSIX compatible system with GNU extensions.
+However, a lot of code can be shared by all or at least similar
+servers. For example, all storage based filesystems need to be able to
+read and write to a store medium splitted in blocks. The Hurd comes
+with several libraries which make it easy to implement new servers.
+Also, there are already a lot of examples of different server types in
+the Hurd. This makes writing a new server easier.
+<P>
+<SAMP>libdiskfs</SAMP> is a library that supports writing store based
+filesystems like ext2fs or ufs. It is not very useful for filesystems
+which are purely virtual, like <SAMP>/proc</SAMP> or files in
+<SAMP>/dev</SAMP>.
+<P>
+<SAMP>libnetfs</SAMP> is intended for filesystems which provide a rich
+directory hierarchy, but don't use a backing store (for example ftpfs,
+nfs).
+<P>
+<SAMP>libtrivfs</SAMP> is intended for filesystems which just provide
+a single inode or directory. Most servers which are not intended to
+provide a filesystem but other services (like
+<SAMP>/servers/password</SAMP>) use it to provide a dummy file, so
+that file operations on the servers node will not return errors. But
+it can also be used to provide meaningful data in a single file, like
+a device store or a character device.
+
+<H4><A HREF="#TOCsto" NAME="sto">Store Abstraction</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<P>
+Another very useful library is libstore, which is used by all store
+based filesystems. It provides a store media abstraction. A store
+consists of a store class and a name (which itself can sometimes
+contain stores).
+<P>
+Primitive store classes:
+<UL>
+ <LI>device store like device:hd2, device:hd0s1, device:fd0</LI>
+ <LI>file store like file:/tmp/disk_image</LI>
+ <LI>task store like task:PID</LI>
+ <LI>zero store like zero:4m (like /dev/zero, of size 4 MB)</LI>
+</UL>
+</TD></TR></TABLE>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<P>
+Composed store classes:
+<UL>
+ <LI>copy store like copy:zero:4m</LI>
+ <LI>gunzip/bunzip2 store like gunzip:device:fd0</LI>
+ <LI>concat store like concat:device:hd0s2:device:hd1s5</LI>
+ <LI>ileave store (RAID-0(2))</LI>
+ <LI>remap store like remap:10+20,50+:file:/tmp/blocks</LI>
+ <LI>...</LI>
+</UL>
+<P>
+Wanted: A similar abstraction for streams (based on channels), which
+can be used by network and character device servers.
+</TD></TR></TABLE>
+<P>
+<SAMP>libstore</SAMP> provides a store abstraction, which is used by
+all store based filesystems. The store is determined by a type and a
+name, but some store types modify another store rather than providing
+a new store, and thus stores can be stacked. For example, the device
+store type expects a Mach device, but the remap store expects a list
+of blocks to pick from another store, like remap:1+:device:hd2, which
+would pick all blocks from hd2 but the first one, which skipped.
+Because this functionality is provided in a library, all libstore
+using filesystems support many different store kinds, and adding a new
+store type is enough to make all store based filesystems support it.
+
+<H4><A HREF="#TOCdeb" NAME="deb">Debian GNU/Hurd</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<P>
+Goal:
+<UL>
+ <LI>Provide a binary distribution of the Hurd that is easy to
+ install.</LI>
+</UL>
+<P>
+Constraints:
+<UL>
+ <LI>Use the same source packages as Debian GNU/Linux.</LI>
+ <LI>Use the same infrastructure:
+ <UL>
+ <LI>Policy</LI>
+ <LI>Archive</LI>
+ <LI>Bug tracking system</LI>
+ <LI>Release process</LI>
+ </UL></LI>
+</UL>
+<P>
+Side Goal:
+<UL>
+ <LI>Prepare Debian for the future:
+ <UL>
+ <LI>More flexibility in the base system</LI>
+ <LI>Identify dependencies on the Linux kernel</LI>
+ </UL></LI>
+</UL>
+</TD></TR></TABLE>
+<P>
+The Debian distribution of the GNU&nbsp;Hurd that I started in 1998 is
+supposed to become a complete binary distribution of the Hurd that is
+easy to install.
+
+<H4><A HREF="#TOCstabin" NAME="stabin">Status of the Debian GNU/Hurd binary archive</A></H4>
+<P>
+See
+<A HREF="http://buildd.debian.org/stats/graph.png">http://buildd.debian.org/stats/graph.png</A>
+for the most current version of the statistic.
+
+<H4><A HREF="#TOCstainf" NAME="stainf">Status of the Debian infrastructure</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<P>
+Plus:
+<UL>
+ <LI>Source packages can identify build and host OS using
+ dpkg-architecture.</LI>
+</UL>
+<P>
+Minus:
+<UL>
+ <LI>The binary architecture field is insufficient.</LI>
+ <LI>The BTS has no architecture tag.</LI>
+ <LI>The policy/FHS need (small) Hurd specific extensions.</LI>
+</UL>
+</TD></TR></TABLE>
+<P>
+While good compatibiity can be achieved at the source level,
+the binary packages can not always express their relationship
+to the available architectures sufficiently.
+<P>
+For example, the Linux version of makedev is binary-all, where
+a binary-all-linux relationship would be more appropriate.
+<P>
+More work has to be done here to fix the tools.
+
+<H4><A HREF="#TOCstaarc" NAME="staarc">Status of the Debian Source archive</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<UL>
+ <LI>Most packages just work.</LI>
+ <LI>Maintainers are usually responsive and cooperative.</LI>
+ <LI>Turtle, the autobuilder, crunches through the whole list right
+ now.</LI>
+</UL>
+<P>
+Common pitfalls are POSIX incompatibilities:
+<UL>
+ <LI>Upstream:
+ <UL>
+ <LI>Unconditional use of <SAMP>PATH_MAX</SAMP>
+ (<SAMP>MAXPATHLEN</SAMP>), <SAMP>MAXHOSTNAMELEN</SAMP>.</LI>
+ <LI>Unguarded use of Linux kernel features.</LI>
+ <LI>Use of legacy interfaces (<SAMP>sys_errlist</SAMP>,
+ <SAMP>termio</SAMP>).</LI>
+ </UL></LI>
+ <LI>Debian:
+ <UL>
+ <LI>Unguarded activation of extensions available with Linux.</LI>
+ <LI>Low quality patches.</LI>
+ <LI>Assuming GNU/Linux in package scripts.</LI>
+ </UL></LI>
+</UL>
+</TD></TR></TABLE>
+<P>
+Most packages are POSIX compatible and can be compiled without
+changes on the Hurd. The maintainers of the Debian source packages
+are usually very kind, responsiver and helpful.
+<P>
+The Turtle autobuilder software (<A
+HREF="http://turtle.sourceforge.net" >http://turtle.sourceforge.net</A>)
+builds the Debian packages on the Hurd automatically.
+
+<H4><A HREF="#TOCdebide" NAME="debide">Debian GNU/Hurd: Good idea, bad idea?</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<P>
+Upstream benefits:
+<UL>
+ <LI>Software packages become more portable.</LI>
+</UL>
+<P>
+Debian benefits:
+<UL>
+ <LI>Debian becomes more portable.</LI>
+ <LI>Maintainers learn about portability and other systems.</LI>
+ <LI>Debian gets a lot of public recognition.</LI>
+</UL>
+<P>
+GNU/Hurd benefits:
+<UL>
+ <LI>Large software base.</LI>
+ <LI>Great infrastructure.</LI>
+ <LI>Nice community to partner with.</LI>
+</UL>
+</TD></TR></TABLE>
+<P>
+The sheet lists the advantages of all groups involved.
+
+<H4><A HREF="#TOCend" NAME="end">End</A></H4>
+<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
+<P>
+Join us at
+<UL>
+ <LI><A HREF="http://hurd.gnu.org/" >http://hurd.gnu.org/</A></LI>
+ <LI><A HREF="http://www.debian.org/ports/hurd"
+ >http://www.debian.org/ports/hurd</A></LI>
+ <LI><A HREF="http://www.hurdfr.org"
+ >http://www.hurdfr.org</A></LI>
+</UL>
+</TD></TR></TABLE>
+<P>
+List of contacts.
diff --git a/hurd.mdwn b/hurd.mdwn
index 0bdcdca8..b0db8a64 100644
--- a/hurd.mdwn
+++ b/hurd.mdwn
@@ -1,12 +1,37 @@
-[[img logo.png]]
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+2009, 2010, 2011 Free Software Foundation, Inc."]]
-[[toc ]]
+[[!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]]."]]"""]]
+
+The GNU Hurd is under active development. Because of that, there is no
+*stable* version. We distribute the Hurd sources only through [[Git|source_repositories]] at present.
+
+Although it is possible to bootstrap the GNU/Hurd system from the sources by
+cross-compiling and installing the system software and the basic applications,
+this is a difficult process. It is not recommended that you do this. Instead,
+you should get a binary distribution of the GNU/Hurd, which comes with all the
+GNU software precompiled and an installation routine which is easy to use.
+
+The Debian project has commited to provide such a binary distribution.
+[[Debian_GNU/Hurd|running/debian]] is currently under development and available
+in the *unstable* branch of the Debian archive.
+
+---
+
+[[!toc]]
# Introduction
-* [[TheGnuHurd]] - A Brief Description
-* [[HurdNames]] - Acronym, Origin and Usage
+* [[What_Is_the_GNU_Hurd]] - A Brief Description
+* [[Advantages]]. And [[challenges]].
* [[History]]
+ * [[history/Port_to_another_microkernel]]
* [[Logo]]
* [[Status]]
* [[KnownHurdLimits]]
@@ -20,17 +45,15 @@
# Understanding
* Introductory Material
- * [Marcus Brinkmann](http://www.gnu.org/software/hurd/hurd-talk.html)
+ * [[Documentation]]
* [Gaël Le Mignot](http://kilobug.free.fr/hurd/pres-en/slides/slides.html)
* Architecture
- * [Towards a New Strategy of OS Design](http://www.gnu.org/software/hurd/hurd-paper.html) by Thomas Bushnell, BSG.
+ * [[Towards_a_New_Strategy_of_OS_Design|hurd-paper]] by Thomas Bushnell, BSG.
* Marcus Brinkmann's [revisit](http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00651.html)
* Jonathan S. Shapiro [comments](http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00654.html)
* [[Critique]] - Analysis
* [[Hurd_Hacking_Guide]]
* [[Concepts]]
-* Other resources
- * [Docs at gnu.org](http://www.gnu.org/software/hurd/docs.html)
# Using
@@ -38,6 +61,7 @@
* [[running/Distrib]] -- Distributions
* [[Public_Hurd_Boxen]]
* [[Neighborhurd]]s and [[Subhurd]]s
+* [[DDE]] -- Device Driver Environment
## Common Problems
@@ -50,22 +74,29 @@
# Contributing
* [[Contributing]]
-* [[ToDo]]
-* [[Building]]
- * [[building/Cross-Compiling]]
+* [[Open Issues|tag/open_issue_hurd]]
# Developer References
* [[Rules]]
* [[Trackers]]
+* [[Building]]
* [[Toolchain]]
* [[glibc]]
+* RPC [[Interface]]s
* Libraries
* [[libpager]]
+ * [[libports]]
* [[libstore]]
* [[libchannel]]
* [[libhello_example]] -- Hurd library example
+ * [[libtrivfs]]
+ * [[libnetfs]] -- short introductory material
+ * [[libihash]]
+ * [[libpthread]]
* [[IO_Path]]
+* [[Porting]]
* [[Debugging]]
* [Hurd Sourcecode Reference](http://www.htu.tugraz.at/~past/hurd/global/): Searchable and browsable index of the code.
+* [[Networking]]
diff --git a/hurd/authentication.mdwn b/hurd/authentication.mdwn
index cbb164c8..2d6084bf 100644
--- a/hurd/authentication.mdwn
+++ b/hurd/authentication.mdwn
@@ -1,16 +1,16 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
UIDs on the Hurd are separate from processes. A process has
[[capabilities|capability]] designating so-called UID vectors that
-are implemented by an [[auth]] server. This
+are implemented by an [[translator/auth]] server. This
makes them easily [[virtualizable|virtualization]].
When a process wishes to gain access to a resource provided by a third
diff --git a/hurd/binutils.mdwn b/hurd/binutils.mdwn
index 97c93602..f9266448 100644
--- a/hurd/binutils.mdwn
+++ b/hurd/binutils.mdwn
@@ -1,14 +1,11 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2010 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-[[General_information|/binutils]] about the binutils.
-
-There shouldn't be any differences within the binutils between, for example,
-the GNU/Hurd and GNU/Linux ports.
+[[!meta redir=/binutils]]
diff --git a/hurd/building.mdwn b/hurd/building.mdwn
index 7a24f70a..a7066465 100644
--- a/hurd/building.mdwn
+++ b/hurd/building.mdwn
@@ -13,12 +13,18 @@ do what you expect it to do is the highest if you try building from the Debian
source packages. This is especially true if you want to use your compilation
within a Debian system.
+Note that for building code to run on GNU/Hurd systems, you need a toolchain
+for the GNU Hurd. You can either compile on a GNU/Hurd system, or need a
+cross-compiler targeting GNU/Hurd. Our [[toolchain page|toolchain]] has the
+details.
+
+
## Getting the Source Code
You can chose between getting the [sources from the developers's
-RCS](http://www.gnu.org/software/hurd/download.html#cvs):
+git](http://savannah.gnu.org/git/?group=hurd):
- $ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co hurd
+ $ git clone git://git.sv.gnu.org/hurd/hurd.git
... or (if you are working on a Debian system) the ones that are used for the
[current Debian hurd package](http://packages.debian.net/source/unstable/hurd):
@@ -93,10 +99,6 @@ to `make`:
This will automatically build all libraries that are required to build the
requested server or library.
-### Cross Compiling
-
-Read about [[cross-compiling]].
-
## RPC IDs
diff --git a/hurd/building/cross-compiling.mdwn b/hurd/building/cross-compiling.mdwn
index 11afc97f..73c19b4d 100644
--- a/hurd/building/cross-compiling.mdwn
+++ b/hurd/building/cross-compiling.mdwn
@@ -1,261 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2010 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-# `cross-gnu`
+[[!tag stable_URL]]
-[[Thomas_Schwinge|tschwinge]] has written a shell script for building a
-complete cross-build environment for GNU/Hurd systems.
-
-For now, find the shell scripts at
-<http://nic-nac-project.de/~schwinge/tmp/cross-gnu> and
-<http://nic-nac-project.de/~schwinge/tmp/cross-gnu-env>.
-
-
-## Using
-
-Read through it. Understand it. Only then use it by following the next steps.
-
-/!\ Be made aware that -- while it is of course possible to build a working
-cross-compiler -- this is not trivial to do. You'll have to patch source
-packages. See the following list about needed patches, which have not yet been
-installed in the upstream repositories.
-
-
-### Supported Versions of Source Packages
-
-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]]
-
- * 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
-
- 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
- also be fine, as should be all other recent releases.
-
-* `src/gcc`: [[GNU_Compiler_Collection|gcc]]
-
- * SVN `gcc-4_1-branch`
-
- $ svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_1-branch
-
- Prepare:
-
- $ ( 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.
-
- * SVN `gcc-4_2-branch`
-
- $ svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_2-branch
-
- Prepare:
-
- $ ( cd gcc-4_2-branch/ && contrib/gcc_update --touch )
-
- * 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.
-
- <!--
- GCC 4.3 has not yet been released.
- * SVN `gcc-4_3-branch`
- -->
- * SVN `trunk` -- upcoming 4.3 series
-
- $ svn co svn://gcc.gnu.org/svn/gcc/trunk
-
- Prepare:
-
- $ ( 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`: [[GNU_Mach|microkernel/mach/gnumach]]
-
- * CVS `gnumach-1-branch`
-
- $ 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`: [[GNU_Mach_Interface_Generator|microkernel/mach/mig]]
-
- * CVS `HEAD`
-
- $ cvs -d:pserver:anoncvs@cvs.gnu.org:/cvsroot/hurd co mig
-
- Prepare:
-
- $ ( cd mig/ && autoreconf -vfi )
-
-* `src/hurd`: [[GNU_Hurd|hurd]]
-
- * CVS `HEAD`
-
- $ cvs -d:pserver:anoncvs@cvs.gnu.org:/cvsroot/hurd co hurd
-
-* `src/glibc`: [[GNU_C_Library|glibc]]
-
- * CVS `glibc-2_7-branch`
-
- $ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/glibc \
- co -r glibc-2_7-branch glibc
- $ mv libc glibc-2_7-branch
-
- * 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/>
- should also be fine, but need the same set of patches as the
- `glibc-2_7-branch` needs.
-
-<!--
-
- * CVS `HEAD`
-
- $ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/glibc \
- co glibc
- $ mv libc glibc-HEAD
-
- * TODO.
- <http://lists.gnu.org/archive/html/bug-hurd/2007-11/msg00026.html>
-
--->
-
-<!--
-
-* `src/gdb`: [[GNU_Debugger|gdb]]
-
- This is optional and will only be compiled if present.
-
- * CVS `gdb_6_6-branch`
-
- $ 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.
-
--->
-
-
-### Preparation
-
-Unpack the tarballs if you downloaded any.
-
-Create a directory where the cross build shall be rooted in and a `src`
-subdirectory in there. Then create symbolic links for every of the above
-packages: from `src/PACKAGE` to where you stored or unpacked it. If you don't
-intend to build several cross compilers or use the source trees otherwise, you
-can also directly store the source trees in `src/`. The source trees can be
-shared between multiple cross build trees since the packages' build systems are
-supposed not to modify the files in the source trees. Not all packages adhere
-to that, but they fail to do so only for pre-processed documentation, etc.
-
-Either make sure that `cross-gnu-env` and `cross-gnu` are found in `$PATH`
-(`~/bin/`, for example) or alternatively remember to use their full paths in
-the following.
-
-The system you're running the script on (the *build* system) needs to have a
-basic compiling environment installed, i.e., a C compiler with the basic
-libraries and `make`. You might also need `flex` and `bison`. For building
-recent version of GCC (e.g., the upcoming 4.3, which is not yet supported)
-you'll need to have development packages of GMP and MPFR installed.
-
-
-### Setting Up the Environment
-
-Do this every time you intend to use the cross compiler:
-
- $ ROOT=to/the/cross/build/root
- $ . cross-gnu-env
-
-This will set several environment variables, which are later used by (a) the
-`cross-gnu` script and (b) by you, the user of the cross compiler. `$TARGET`
-will be set by the script, `$PATH` will be adjusted, etc. See the
-`cross-gnu-env` file for all environment variables that are set, as well as
-their default values. `$ROOT` will be made an absolute path if it isn't
-already.
-
-Later, you'll be able to do things like `../configure --host="$TARGET"` and the
-cross compiler will be found automatically.
-
-
-### Creating the Cross Build Environment
-
-After setting up the environemt, just run `cross-gnu` and watch the messages
-flow by. In the end you should see a message: *[...]/cross-gnu: Everything
-should be in place now.*
-
-
-### Makefile
-
-A [[Makefile]] has been written to automate the above steps. You will require
-an Internet connection and atleast 1.5 GiB of hard-disk space. Just run...
-
- make
-
-... to build the toolchain. To clean up, use...
-
- make clean
-
-
-### Staying Up-To-Date
-
-You can re-run `cross-gnu` to rebuild the parts of the sources that have
-changed since the last run. This will save a lot of time compared to starting
-from scratch again. Also, it is especially useful if you aren't working with
-unpacked tarballs, but on CVS's branches or want to quickly get a new tool
-chain with patches you applied to the source trees. However: do *not* use this
-technique when doing major changes to the source trees, like switching from GCC
-4.0 to GCC 4.1.
-
-
-#### Comment
-
-Unfortunately the GNU Automake build system (which is used by GNU Mach's
-`gnumach-1-branch`) will overwrite installed files (header files in this case
-here), even if they didn't change. And because all packages' build systems are
-using dependency tracking, a lot of files will be rebuilt each time `cross-gnu`
-is re-run, even if the files themselves didn't change. Talk to [[tschwinge]]
-if you want to work on fixing that -- it is already clear what needs to be
-done, it just hasn't been done yet.
-
-
-# References
-
-* <http://lists.gnu.org/archive/html/bug-hurd/2004-09/msg00030.html>
+[[!meta redir=/toolchain/cross-gnu]]
diff --git a/hurd/building/cross-compiling/Makefile b/hurd/building/cross-compiling/Makefile
deleted file mode 100644
index 7a6a9524..00000000
--- a/hurd/building/cross-compiling/Makefile
+++ /dev/null
@@ -1,168 +0,0 @@
-# "HurdToolchainMakefile" - a Makefile for setting up Hurd toolchain builds
-
-# Copyright (C) 2007 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the
-# Free Software Foundation; either version 2, or (at your option) any later
-# version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-# Written by Shakthi Kannan <shakthi.kannan@qvantel.com>.
-
-
-## Variables
-TOPDIR=.
-DOWNLOADS=${TOPDIR}/downloads
-ROOT=${TOPDIR}/root
-SRC=${ROOT}/src
-GLIBC_DIR=${SRC}/glibc
-PATCH0_DIR=patch0
-PATCH1_DIR=patch1
-
-## Patches
-PATCH1 = 0003-2007-09-13-H.J.-Lu-hongjiu.lu-intel.com.patch \
- 0005-Hurd-specific-kernel-features.h.patch \
- 0007-2007-10-05-version-of-stat.patch.patch \
- 0008-r2425-of-debian-patches-hurd-i386-local-atomic-no-mu.patch \
- 0010-r2425-of-debian-patches-hurd-i386-local-gscope.diff.patch \
- 0012-r2425-of-debian-patches-hurd-i386-local-no-strerror_.patch \
- 0013-r2626-of-debian-patches-hurd-i386-local-tls-support.patch \
- 0014-r2591-of-debian-patches-hurd-i386-local-tls.diff.patch \
- 0015-r2630-of-debian-patches-hurd-i386-submitted-libc_onc.patch \
- 0016-Include-stdint.h.patch \
- 0017-r2598-of-debian-patches-any-local-stdio-lock.diff.patch \
- 0018-r2650-of-debian-patches-hurd-i386-submitted-strtoul.patch \
- 0019-2007-11-12-Aurelien-Jarno-aurelien-aurel32.net-Tho.patch \
- 0020-r2656-of-debian-patches-any-submitted-sched_h.diff.patch \
- 0022-2007-11-18-Roland-McGrath-roland-frob.com.patch
-
-PATCH0 = 0009-2007-07-22-version-of-init-first.c_vs._GCC_4.1.patch.patch \
- 0011-2007-02-08-version-of-resolv_res_send.c.patch.patch
-
-all: create_dir get_sources apply_glibc_patches build_all
-
-## Create directories
-create_dir:
- cd ${TOPDIR}
- mkdir ${DOWNLOADS}
- mkdir -p ${SRC}
-
-get_sources: get_cross_gnu get_binutils get_gcc get_gnumach get_mig get_hurd get_glibc
-
-get_cross_gnu:
- @ echo " ___ _ __ ___ ___ ___ __ _ _ __ _ _ "
- @ echo " / __| '__/ _ \/ __/ __|_____ / _\` | '_ \| | | |"
- @ echo "| (__| | | (_) \__ \__ \_____| (_| | | | | |_| |"
- @ echo " \___|_| \___/|___/___/ \__, |_| |_|\__,_|"
- @ echo " |___/ "
- cd ${DOWNLOADS}; \
- wget http://nic-nac-project.de/~schwinge/tmp/cross-gnu
- @ echo " ___ _ __ ___ ___ ___ __ _ _ __ _ _ ___ _ ____ __"
- @ echo " / __| '__/ _ \/ __/ __|_____ / _\` | '_ \| | | |_____ / _ \ '_ \ \ / /"
- @ echo "| (__| | | (_) \__ \__ \_____| (_| | | | | |_| |_____| __/ | | \ V / "
- @ echo " \___|_| \___/|___/___/ \__, |_| |_|\__,_| \___|_| |_|\_/ "
- @ echo " |___/ "
- cd ${DOWNLOADS}; \
- wget http://nic-nac-project.de/~schwinge/tmp/cross-gnu-env; \
- chmod +x cross-gnu; \
- chmod +x cross-gnu-env
-
-get_binutils:
- @ echo " _ _ _ _ _ "
- @ echo "| |__ (_)_ __ _ _| |_(_) |___ "
- @ echo "| '_ \| | '_ \| | | | __| | / __|"
- @ echo "| |_) | | | | | |_| | |_| | \__ \\"
- @ echo "|_.__/|_|_| |_|\__,_|\__|_|_|___/"
- cd ${SRC}; \
- cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/src co -r binutils-2_18-branch binutils; \
- mv src binutils
-
-get_gcc:
- @ echo " __ _ ___ ___ "
- @ echo " / _\` |/ __/ __|"
- @ echo "| (_| | (_| (__ "
- @ echo " \__, |\___\___|"
- @ echo " |___/ "
- cd ${SRC}; \
- svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_1-branch; \
- mv gcc-4_1-branch gcc; \
- ( cd gcc/ && contrib/gcc_update --touch )
-
-get_gnumach:
- @ echo " _ "
- @ echo " __ _ _ __ _ _ _ __ ___ __ _ ___| |__ "
- @ echo " / _\` | '_ \| | | | '_ \` _ \ / _\` |/ __| '_ \ "
- @ echo "| (_| | | | | |_| | | | | | | (_| | (__| | | |"
- @ echo " \__, |_| |_|\__,_|_| |_| |_|\__,_|\___|_| |_|"
- @ echo " |___/ "
- cd ${SRC}; \
- cvs -d:pserver:anoncvs@cvs.gnu.org:/cvsroot/hurd co -r gnumach-1-branch gnumach; \
- ( cd gnumach/ && autoreconf -vfi )
-
-get_mig:
- @ echo " _ "
- @ echo " _ __ ___ (_) __ _ "
- @ echo "| '_ \` _ \| |/ _\` |"
- @ echo "| | | | | | | (_| |"
- @ echo "|_| |_| |_|_|\__, |"
- @ echo " |___/ "
- cd ${SRC}; \
- cvs -d:pserver:anoncvs@cvs.gnu.org:/cvsroot/hurd co mig; \
- ( cd mig/ && autoreconf -vfi )
-
-get_hurd:
- @ echo " _ _ "
- @ echo "| |__ _ _ _ __ __| |"
- @ echo "| '_ \| | | | '__/ _\` |"
- @ echo "| | | | |_| | | | (_| |"
- @ echo "|_| |_|\__,_|_| \__,_|"
- cd ${SRC}; \
- cvs -d:pserver:anoncvs@cvs.gnu.org:/cvsroot/hurd co hurd
-
-get_glibc:
- @ echo " _ _ _ "
- @ echo " __ _| (_) |__ ___ "
- @ echo " / _\` | | | '_ \ / __|"
- @ echo "| (_| | | | |_) | (__ "
- @ echo " \__, |_|_|_.__/ \___|"
- @ echo " |___/ "
- cd ${SRC}; \
- cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/glibc co -r glibc-2_7-branch glibc; \
- mv libc glibc
- mkdir ${GLIBC_DIR}/${PATCH0_DIR}
- mkdir ${GLIBC_DIR}/${PATCH1_DIR}
-
-get_patch0: $(PATCH0)
-
-get_patch1: $(PATCH1)
-
-$(PATCH1):
- wget -r -np -nd -P ${GLIBC_DIR}/${PATCH1_DIR} http://www.schwinge.homeip.net/~thomas/tmp/glibc-patches/$@
- cd ${GLIBC_DIR}; \
- patch -p1 < ${PATCH1_DIR}/$@
-
-$(PATCH0):
- wget -r -np -nd -P ${GLIBC_DIR}/${PATCH0_DIR} http://www.schwinge.homeip.net/~thomas/tmp/glibc-patches/$@
- cd ${GLIBC_DIR}; \
- patch -p0 < ${PATCH0_DIR}/$@
-
-apply_glibc_patches: get_patch0 get_patch1
-
-build_all:
- ROOT=${TOPDIR}/root ; \
- export PATH="$(PATH):$(DOWNLOADS)" ; \
- echo $$PATH ; \
- . ${DOWNLOADS}/cross-gnu-env ; \
- ${DOWNLOADS}/cross-gnu
-
-clean:
- rm -rf downloads root *~
diff --git a/hurd/building/cross-compiling/discussion.mdwn b/hurd/building/cross-compiling/discussion.mdwn
deleted file mode 100644
index f75e9e3e..00000000
--- a/hurd/building/cross-compiling/discussion.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-[[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]]."]]"""]]
-
-What happens if the external link goes down? Is there any way to store files
-within the wiki itself? --[[vincentvikram]]
-
-> You can store files in the wiki if you have direct access to the Git
-> repository.
-
-> I'm not sure I'd like arbitrary people to be able to store files in the wiki,
-> as that might be abused easily and once a file is stored in the Git
-> repository, there's no clean way to get rid of it anymore. Of course, there
-> are valid cases for adding raw files, then you can always send me a link and
-> ask me to add that file.
-
-> Now, as for the `cross-gnu` shell script, as I said: it will eventually be
-> made part of the Hurd CVS repository.
-
-> --[[tschwinge]]
diff --git a/hurd/building/example.mdwn b/hurd/building/example.mdwn
index afa18d8a..7c84b102 100644
--- a/hurd/building/example.mdwn
+++ b/hurd/building/example.mdwn
@@ -1,17 +1,17 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
I checked out the source code on my Ubuntu GNU/Linux system connected to the
Internet using:
- cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co hurd
+ git clone git://git.sv.gnu.org/hurd/hurd.git
I mounted the hurd directory on Ubuntu from my GNU Hurd system connected to the
LAN through NFS:
diff --git a/hurd/concepts.mdwn b/hurd/concepts.mdwn
index e416f1e6..e8183d79 100644
--- a/hurd/concepts.mdwn
+++ b/hurd/concepts.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
* [[Translator]]
* [[Virtual_File_System]]
diff --git a/hurd/console.mdwn b/hurd/console.mdwn
index 3895531b..4f976efd 100644
--- a/hurd/console.mdwn
+++ b/hurd/console.mdwn
@@ -16,10 +16,6 @@ The latest Hurd package in Debian has all that is needed to run (dunno about hur
Additional information about the console can be found in the [Hurd Console Tutorial](http://uwhug.org.uk/index.pl?Hurd_Console_Tutorial)
-## <a name="Table_of_Contents"> Table of Contents </a>
-
-%TOC%
-
## <a name="What_is_the_new_console_"> What is the new console? </a>
**_The new Hurd console features:_**
diff --git a/hurd/contributing.mdwn b/hurd/contributing.mdwn
deleted file mode 100644
index f083b9b8..00000000
--- a/hurd/contributing.mdwn
+++ /dev/null
@@ -1,48 +0,0 @@
-[[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]]."]]"""]]
-
-# Porting Applications
-
-Debian is currently the Hurd distribution of choice among Hurd
-users and developers. Approximately half of the Debian archive
-has been compiled successfully on the Hurd, however, many
-programs fail to build for various reasons. A [list of build
-failures including error messages](http://unstable.buildd.net/buildd/hurd-i386_Failed.html)
-can be found, as well as a [preliminary analysis](http://lists.debian.org/debian-hurd/2007/07/msg00000.html)
-of them. If you want to port any of these, file patches in the
-[Alioth patch tracker](http://alioth.debian.org/tracker/?atid=410472&group_id=30628&func=browse)
- for review. It might be a good idea to record your intention
-to port something in the [Alioth task tracker](http://alioth.debian.org/pm/task.php?group_project_id=34&group_id=30628&func=browse) so other people do not do duplicated work. You can also just
-install the Hurd and find what doesn't work for you and port
-it and then file patches for that package in [above patch tracker](http://alioth.debian.org/tracker/?atid=410472&group_id=30628&func=browse).
-Another important task is making sure that patches go upstream as
-well, especially for GNU projects.
-
-If you want to further development, a list of interesting
-projects is available in the [Alioth task tracker](http://alioth.debian.org/pm/task.php?group_project_id=35&group_id=30628&func=browse).
-Those projects are not necessarily Debian specific, but do
-not touch the Hurd proper.
-
-# Hurd Proper
-
-If you are interested in developping the Hurd proper, there is
-plenty of work to do. Before you can significantly contribute,
-take some time to learn about the system, e.g.,
-[[microkernels_for_beginners|microkernel/for_beginners]]. Until you can do the basic exercises
-listed there, you won't be able to significantly contribute to
-the Hurd.
-
-See the [[ToDo]].
-
-# GNU Mach
-
-[[GNU_Mach|microkernel/mach/gnumach]] is the underlying microkernel used by the
-Hurd. It has a number of deficencies;
-[[microkernel/mach/gnumach/projects]].
diff --git a/hurd/critique.mdwn b/hurd/critique.mdwn
index 9770138e..c432cc17 100644
--- a/hurd/critique.mdwn
+++ b/hurd/critique.mdwn
@@ -1,15 +1,17 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[NealWalfield]] and [[MarcusBrinkmann]] wrote a paper titled [*A Critique of
-the GNU Hurd Multi-Server Operating
+[[!meta title="A Critique of the GNU Hurd Multi-server Operating System"]]
+
+Neal Walfield and Marcus Brinkmann wrote a paper titled [*A Critique of
+the GNU Hurd Multi-server Operating
System*](http://walfield.org/papers/200707-walfield-critique-of-the-GNU-Hurd.pdf).
This was published in ACM SIGOPS Operating Systems Review in July 2007. This
is sometimes referred to as *the critique*.
diff --git a/hurd/dde.mdwn b/hurd/dde.mdwn
new file mode 100644
index 00000000..6327a1ef
--- /dev/null
+++ b/hurd/dde.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 2009, 2010, 2011 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 stable_URL]]
+
+ * [[community/gsoc/project ideas/driver glue code]]
+
+ * [[open issues/user-space device drivers]]
+
+ * [[open issues/device drivers and io systems]]
+
+---
+
+There is an effort going on to make [[/DDE]] usable in GNU/Hurd
+userspace.
+
+See Zheng Da's [[project page|zhengda]], as well as another [[guide]].
diff --git a/hurd/dde/guide.mdwn b/hurd/dde/guide.mdwn
new file mode 100644
index 00000000..31671308
--- /dev/null
+++ b/hurd/dde/guide.mdwn
@@ -0,0 +1,213 @@
+[[!meta copyright="Copyright © 2010,2011 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]]."]]"""]]
+
+This guide explains how to build and set up
+a DDE-based network card driver
+with Debian GNU/Hurd,
+if your (wired) network card
+is not supported by the old in-kernel drivers shipped with gnumach.
+
+This guide assumes that you have
+an installation of Debian GNU/Linux on the same machine,
+which helps in fetching the required packages
+in absence of working networking in the Hurd.
+The whole process is much more cumbersome otherwise.
+It also assumes that apart from networking,
+your Hurd system is already installed and operational.
+
+
+We start by booting into Debian GNU/Linux,
+so we can downloading everything we will need for building DDE.
+
+Once there, first mount the Hurd partition (as root):
+
+ $ mount /dev/hdd1 /mnt -t ext2 # assuming your Hurd partition is hdd1 -- replace with whatever matches your setup
+
+Prepare apt offline configuration so we can get necessary packages:
+
+ $ cd /mnt/etc/apt
+
+ $ echo "deb http://ftp.debian-ports.org/debian unreleased main" >> sources.list # if you don't have sources.list set up yet on the Hurd system
+
+ $ echo "deb-src http://ftp.debian-ports.org/debian unreleased main" >> sources.list
+
+ $ echo "deb http://ftp.uk.debian.org/debian unstable main" >> sources.list
+
+ $ echo "deb-src http://ftp.uk.debian.org/debian unstable main" >> sources.list
+
+ $ wget http://www.gnu.org/software/hurd/hurd/running/debian/DebianAptOffline/apt.conf.offline
+
+Download the packages for offline installation:
+
+ $ cd /mnt
+
+ $ apt-get -c etc/apt/apt.conf.offline update
+
+ $ apt-get -c etc/apt/apt.conf.offline build-dep hurd gnumach
+
+ $ apt-get -c etc/apt/apt.conf.offline install git-core build-essential libpciaccess-dev libpcap0.8-dev
+
+Get DDE code:
+
+ $ cd /mnt/home/me # assuming your user name on the Hurd system is "me"
+
+ $ mkdir dde && cd dde
+
+ $ git clone git://git.sv.gnu.org/hurd/incubator.git -b dde hurd
+
+ $ git clone git://git.sv.gnu.org/hurd/gnumach.git -b master-user_level_drivers
+
+Now comes the tricky part:
+you need to find out
+whether there is already a driver for your card
+in the DDE source tree,
+and otherwise get the driver code
+from the official Linux source tree.
+
+For this, you have to find out which Linux driver
+is responsible for your network card.
+In this guide we will use the forcedeth driver
+(for Nvidia nForce chipsets) as example.
+We check whether there is already a `dde_forcedeth` directory
+in the newly cloned `hurd_dde` tree.
+If there isn't, we have to find and download
+the right source file from Linux:
+
+Point a (JavaScript-capable) web browser at
+
+ http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.29.y.git;a=tree;f=drivers/net;hb=HEAD
+
+(Note: you **have** to use 2.6.29,
+as this is the version DDE is currently based on.)
+
+Find the right file to download
+(forcedeth.c in this example);
+then hit the "raw" link,
+and save the resulting file (page) to /mnt/home/me/dde
+
+(If you happen to need one of the few drivers
+that consist of more than one source file,
+the process will be more complicated,
+and can't be covered in this guide...)
+
+
+Now everything should be in place,
+so we can boot into Hurd to do the actual work.
+
+Once there, install the packages previously downloaded (again as root):
+
+ $ apt-get build-dep hurd gnumach
+
+ $ apt-get install git-core build-essential libpciaccess-dev libpcap0.8-dev
+
+Make sure we can build stuff as normal user:
+
+ $ chown -R me ~me/dde
+
+Now you can log in with the normal user account to build stuff.
+
+Build a DDE-enabled Mach:
+
+ $ cd ~me/dde/gnumach
+
+ $ autoreconf -i && ./configure --enable-kdb --enable-device-drivers=none --enable-lpr --enable-floppy --enable-ide
+
+ $ make
+
+
+If not already present in DDE,
+we need to prepare the driver for the network card:
+
+ $ cd ~me/dde/hurd
+
+ $ cp -r dde_pcnet32 dde_forcedeth # using pcnet32 as template
+
+ $ cd dde_forcedeth
+
+ $ rm pcnet32.c # don't want the actual pcnet32 code here...
+
+ $ cp ~me/dde/forcedeth.c . # ...but rather the forcedeth code
+
+ $ sed -i 's/pcnet32/forcedeth/g' Makefile # adapt Makefile accordingly
+
+ $ sed -i 's/pcnet32/forcedeth/g' .gitignore
+
+ $ sed -i 's:-lhurd-slab:../libhurd-slab/libhurd-slab.a:' Makefile # fix up build system... XXX I guess this part is obsolete
+
+ $ sed -i 's:-I/include:-I..:' Makefile # same
+
+ $ nano forcedeth.c # Near the top of the file, there will be many #include lines. After the last one, add this:
+
+ #include <ddekit/timer.h>
+
+ $ cd ..
+
+Commit the new driver with git.
+This will be helpful if we update the DDE code later;
+as well as for creating a patch for later reuse
+and/or upstream submission:
+
+ $ git add dde_forcedeth
+
+ $ git commit -a -m 'Add forcedeth driver'
+
+
+Having prepared the driver,
+we can now build the necessary Hurd and DDE bits:
+
+ $ autoreconf -i && ./configure
+
+ $ mkdir -p hurd/include/ddekit # workaround for a buildsystem bug... XXX I'm pretty sure this is not necessary anymore
+
+ $ make libddekit libmachdev devnode pfinet # Hurd components
+
+ $ cd libdde_linux26 # common DDE driver code -- uses a different Makefile system than the Hurd components!
+
+ $ make
+
+ $ cd ../dde_forcedeth # actual driver
+
+ $ make
+
+Install the various built components to their final destinations (as root):
+
+ $ cd ~me/dde/
+
+ $ cp gnumach/gnumach /boot/gnumach_dde
+
+ $ mkdir /hurd/dde
+
+ $ cp hurd/devnode/devnode hurd/pfinet/pfinet hurd/dde_forcedeth/dde_forcedeth /hurd/dde
+
+
+Now everything should be ready.
+Before we can use the driver,
+we have to boot with the newly built gnumach_dde
+instead of the standard kernel.
+(Adapt your grub configuration;
+or manually edit the entry
+in the boottime grub menu while testing.)
+
+Once there, set up the translators for the driver (as root):
+
+ $ settrans -c /dev/forcedeth /hurd/dde/forcedeth
+
+ $ settrans -c /dev/eth0 /hurd/dde/devnode -M /dev/forcedeth eth0
+
+Finally, we can set up the actual network translator,
+using something like:
+
+ $ settrans -c /servers/socket/2 /hurd/dde/pfinet -i /dev/eth0 -a 192.168.1.194 -g 192.168.1.254 -m 255.255.255.0
+
+For the exact syntax,
+see the normal network setup documentation.
+The only differences here
+are the different location of the pfinet binary,
+and the different syntax for the -i option.
diff --git a/hurd/dde/guide/discussion.mdwn b/hurd/dde/guide/discussion.mdwn
new file mode 100644
index 00000000..a1cccad4
--- /dev/null
+++ b/hurd/dde/guide/discussion.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+ToDo:
+
+[[!tag open_issue_documentation]]
+
+* This guide is probably out of date in some points: the build system got reworked in the meantime I believe...
+* The formatting here needs serious cleanup
+* Might be nice to explain how to find out the right Linux driver, and in which source file it resides
diff --git a/hurd/debugging.mdwn b/hurd/debugging.mdwn
index b84c5675..d6e9c8b5 100644
--- a/hurd/debugging.mdwn
+++ b/hurd/debugging.mdwn
@@ -1,12 +1,14 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
# Strategies
@@ -18,5 +20,6 @@ is included in the section entitled
# About Specific Packages
-* [[glibc]]
-* [[Hurd]]
+ * [[glibc]]
+ * [[translator]]s
+ * [[trap_in_the_kernel]]
diff --git a/hurd/debugging/gdb.mdwn b/hurd/debugging/gdb.mdwn
index 98c31435..1fede74f 100644
--- a/hurd/debugging/gdb.mdwn
+++ b/hurd/debugging/gdb.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
The [[GNU_debugger_*GDB*|/gdb]] works on GNU/Hurd
systems as it does on other system, but has some additional [hurd-specific
diff --git a/hurd/debugging/gdb/noninvasive_debugging.mdwn b/hurd/debugging/gdb/noninvasive_debugging.mdwn
index 62179f7d..fa7a3c5b 100644
--- a/hurd/debugging/gdb/noninvasive_debugging.mdwn
+++ b/hurd/debugging/gdb/noninvasive_debugging.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Sometimes using [[GDB]] on a [[system_server|translator]] can result in a [[deadlock]]. You
can however still use GDB by using the [`set
diff --git a/hurd/debugging/glibc.mdwn b/hurd/debugging/glibc.mdwn
index a0890fe8..028d4fe4 100644
--- a/hurd/debugging/glibc.mdwn
+++ b/hurd/debugging/glibc.mdwn
@@ -1,13 +1,24 @@
+[[!meta copyright="Copyright © 2007, 2008, 2010, 2011 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 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,19 +26,35 @@ 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 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:
-
-[TODO].
+There is a list of [[known failures|open_issues/glibc]].
---
-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 +68,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 +78,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 +89,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/debugging/rpctrace.mdwn b/hurd/debugging/rpctrace.mdwn
index 68edca2f..f7136056 100644
--- a/hurd/debugging/rpctrace.mdwn
+++ b/hurd/debugging/rpctrace.mdwn
@@ -1,12 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009, 2010, 2011 Free Software
+Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
*rpctrace* is -- roughly -- an equivavlent to Linux's *strace* or Solaris' or
BSD's *truss*. It is used to trace [[remote_procedure_call|rpc]]s a process is
@@ -17,6 +18,8 @@ See `rpctrace --help` about how to use it.
# Issues and Patches
+[[!tag open_issue_hurd]]
+
* <http://savannah.gnu.org/patch/?2104> -- don't assert that local port names
are valid
* <http://savannah.gnu.org/bugs/?3939> -- `rpctrace`d program hangs when signal
@@ -24,12 +27,32 @@ See `rpctrace --help` about how to use it.
* <http://savannah.gnu.org/patch/?1633> -- terminated with `C-c` `rpctrace`d
programs hang
* <http://savannah.gnu.org/patch/?5580> -- more readable output
-* <http://savannah.gnu.org/bugs/?20612> -- heisenbug
+
+* IRC, unknown channel, unknown date
+
+ <youpi> how to rpctrace a translator ?
+ <youpi> ah, just settrans /usr/bin/rpctrace...
+ <youpi> hum, it hung, and killing it got a Mach panic (thread in unexpected
+ state) ...
+
+* IRC, unknown channel, unknown date
+
+ <antrik> hm... for a funny effect, try running rpctrace on
+ /servers/socket/1, and then use dpkg... ;-)
+
+* IRC, unknown channel, unknown date.
+
+ <youpi> the problem of rpctrace is that it's a man in the middle :)
+ <youpi> so in principle, by design authentication stuff shouldn't work
+ <antrik> I don't think the Hurd auth mechanism in any way prevents or tries to prevent man-in-the-middle...
+ <youpi> maybe, but just try, you'll see all kinds of issue as soon as you have authentication stuff
+ <youpi> and the basic reason is that being a man in the middle needs special care
+ <youpi> which rpctrace doesn't completely do
+ <antrik> it's a while since I have dived into rpctrace; but AIUI, it should work just fine if the proxying is done properly
+ <antrik> note that there is a number of known bugs in rpctrace, for which zhengda has sent patches... though I haven't reviewed all of them I think
+ <antrik> there are some nasty Mach operations that are really hard to proxy -- but I don't think the auth mechanism needs any of these...
-# TODO
+# See Also
- <youpi> how to rpctrace a translator ?
- <youpi> ah, just settrans /usr/bin/rpctrace...
- <youpi> hum, it hung, and killing it got a Mach panic (thread in unexpected
- state) ...
+See also [[open_issues/librpci]].
diff --git a/hurd/debugging/subhurd.mdwn b/hurd/debugging/subhurd.mdwn
index caad950b..7b5b07b1 100644
--- a/hurd/debugging/subhurd.mdwn
+++ b/hurd/debugging/subhurd.mdwn
@@ -85,6 +85,6 @@ W3
Sources:
-* <http://www.gnu.org/software/hurd/howto/subhurd.html>
+* [[subhurd/running_a_subhurd]]
* <http://lists.gnu.org/archive/html/bug-hurd/2007-02/msg00030.html>
* [[Thomas_Schwinge|tschwinge]]'s mind
diff --git a/hurd/debugging/translator.mdwn b/hurd/debugging/translator.mdwn
new file mode 100644
index 00000000..d439e17b
--- /dev/null
+++ b/hurd/debugging/translator.mdwn
@@ -0,0 +1,15 @@
+[[!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]]."]]"""]]
+
+[[!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..b7cfc3c9
--- /dev/null
+++ b/hurd/debugging/translator/capturing_stdout_and_stderr.mdwn
@@ -0,0 +1,37 @@
+[[!meta copyright="Copyright © 2008, 2009, 2010 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 in this situation where [[translator/pfinet]] was
+silently dying all the time, without any console output:
+
+ $ 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.)
+
+Be made aware that both `stdout` and `stderr` will be block bufferend and no
+longer line buffered when doing such a redirection, so you'll have to arrange
+for appropriate `fflush`es on these, or force them to be line buffered again
+using the appropriate glibc magic (`setvbuf`). Otherwise you'll see text in
+the output files only if either glibc herself decides to flush (after some KiB
+of text) the after translator exits.
+
+There is also a [[related open issue|open_issues/translator_stdout_stderr]].
diff --git a/hurd/debugging/hurd.mdwn b/hurd/debugging/translator/gdb.mdwn
index 043da3e0..82a50736 100644
--- a/hurd/debugging/hurd.mdwn
+++ b/hurd/debugging/translator/gdb.mdwn
@@ -1,32 +1,32 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[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/debugging/trap_in_the_kernel.mdwn b/hurd/debugging/trap_in_the_kernel.mdwn
new file mode 100644
index 00000000..11f989e3
--- /dev/null
+++ b/hurd/debugging/trap_in_the_kernel.mdwn
@@ -0,0 +1,27 @@
+[[!meta copyright="Copyright © 2010 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_gnumach open_issue_documentation]]
+
+IRC, #hurd, September 2010
+
+ <diegonc> when an application executes an out instruction in user mode, how is
+ kernel mode entered? general protection trap?
+ <youpi> some sort of trap, yes
+ <youpi> I'd rather think about illegal instruction, but yes
+ <diegonc> hm.. so to debug what happens inside that instruction I'll have to
+ break at the trap handler. Can I instruct kdb to stop only when a given task
+ caused the trap?
+ <youpi> applications usually don't trap, so what I usually do is to uncomment
+ the test at the end of user_trap() before the call to kdb_trap()
+ <diegonc> "if (debug_all_traps_with_kdb && .. " <- that test?
+ <youpi> yes
+ <youpi> so comment the test to make kdb_trap() called all the time
+ <diegonc> oh, I understand now :)
diff --git a/hurd/documentation.mdwn b/hurd/documentation.mdwn
index 4d431b0b..48fd017c 100644
--- a/hurd/documentation.mdwn
+++ b/hurd/documentation.mdwn
@@ -1,13 +1,73 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+2009, 2011 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+# Introductory Material
+
+ * [[What_Is_the_GNU_Hurd]]
+
+ * [[Advantages]]
* [[FAQ]]
- * <http://www.gnu.org/software/hurd/docs.html>
+ * [[*The_Hurd_and_Linux*|/hurd-and-linux]], a comment by Richard Stallman.
+
+ * [[*Towards_a_New_Strategy_of_OS_Design*|/hurd-paper]], an architectural
+ overview by Thomas Bushnell, BSG.
+
+ * [[*The_Hurd*|/hurd-talk]], a presentation by Marcus Brinkmann.
+
+ * The *[[translator_primer]]*.
+
+ * A document about *[[translators]]* by Marcus Brinkmann.
+
+ * [[*A_Critique_of_the_GNU_Hurd_Multi-server_Operating_System*|critique]], an
+ analysis of the GNU Hurd on GNU Mach system, written by Neal Walfield and
+ Marcus Brinkmann.
+
+## External
+
+ * [*Examining the Legendary HURD
+ Kernel*](http://www.informit.com/articles/printerfriendly.aspx?p=1180992),
+ an article by David Chisnall.
+
+ Also covers a bit of GNU's and the Hurd's history, fundamental techniques
+ applied, comparisions to other systems.
+
+
+# Development
+
+ * *[[The_GNU_Hurd_Reference_Manual|reference_manual]]*.
+
+ * The *[[Hurd_Hacking_Guide]]*, an introduction to GNU&nbsp;Hurd and Mach
+ programming by Wolfgang Jährling.
+
+ * [*Manually Bootstrapping a
+ Translator*](http://walfield.org/pub/people/neal/papers/hurd-misc/manual-bootstrap.txt),
+ a text by Neal Walfield about how to *manually connect the translator to
+ the filesystem*.
+
+ * [[*The_Authentication_Server*|auth]], the transcript of a talk about the
+ details of the authentication mechanisms in the Hurd by Wolfgang Jährling.
+
+ * [*The Mach Paging Interface as Used by the
+ Hurd*](http://lists.gnu.org/archive/html/l4-hurd/2002-06/msg00001.html), a
+ text by Neal Walfield.
+
+ * In the
+ [[Position_paper_*Improving_Usability_via_Access_Decomposition_and_Policy*|ng/position_paper]]
+ Neal Walfield and Marcus Brinkmann give an overview about how a future,
+ subsequent system may be architected.
+
+ * [*Generalizing mobility for the Hurd*](http://users.student.lth.se/cs07fh9/2009-hammar-hurd-mobility.pdf),
+ a thesis written by Carl Fredrik Hammar,
+ investigates the mobility aspect of stores
+ and how it can be generalized and used for other applications.
+ The background chapter may be of interest to new developers.
diff --git a/hurd/documentation/auth.html b/hurd/documentation/auth.html
new file mode 100644
index 00000000..27f9ca2c
--- /dev/null
+++ b/hurd/documentation/auth.html
@@ -0,0 +1,168 @@
+[[!meta copyright="Copyright © 2002, 2008 Free Software Foundation, Inc."]]
+
+[[!meta license="Verbatim copying and distribution of this entire article is
+permitted in any medium, provided this notice is preserved."]]
+
+[[!meta title="The Authentication Server, the transcript of a talk about the
+details of the authentication mechanisms in the Hurd by Wolfgang Jährling"]]
+
+<H3><A NAME="contents">Table of Contents</A></H3>
+<UL>
+ <LI><A HREF="#intro" NAME="TOCintro">Introduction</A>
+ <LI><A HREF="#ids" NAME="TOCids">How IDs are represented and used</A>
+ <LI><A HREF="#posix" NAME="TOCposix">POSIX and beyond</A>
+ <LI><A HREF="#servers" NAME="TOCservers">Related servers</A>
+</UL>
+<HR>
+
+<H3><A HREF="#TOCintro" NAME="intro">Introduction</A></H3>
+<P>
+In this text, which mostly resembles the talk I gave at Libre Software
+Meeting 2002 in Bordeaux, I will describe what the auth server does,
+why it is so important and which cool things you can do with it, both
+on the programming and the user side. I will also describe related
+programs like the password and fakeauth servers. Note that this text
+is targeted at programmers who want to understand the auth mechanism
+in detail and are already familiar with concepts like Remote Procedure
+Calls (RPCs) as well as the way User- and Group-IDs are used in the
+POSIX world.
+
+<P>
+The auth server is a very small server, therefore it gives a useful
+example when you want to learn how a server typically looks like. One
+reason why it is so small is that the auth interface, which it
+implements, consists of only four RPCs. You can find the interface in
+hurd/hurd/auth.defs and the server itself in hurd/auth/.
+
+<H3><A HREF="#TOCids" NAME="ids">How IDs are represented and used</A></H3>
+<P>
+Each process holds (usually) one port to auth (an auth_t in C source,
+which actually is a mach_port_t, of course). The purpose of auth is
+to manage User-IDs and Group-IDs, which is the reason why users often
+will have no choice but to make use of the systems main auth server,
+which does not listen on /servers/auth; instead you inherit a port to
+auth from your parent process. Each such port is (internally in the
+auth server) associated with a set of effective User- and Group-IDs as
+well as a set of available User- and Group-IDs. So we have four sets
+of IDs in total. The available IDs can be turned into corresponding
+effective IDs at any time.
+
+<P>
+When you send an auth_getids RPC on the port you hold, you will get
+information about which IDs are associated with it, so you can figure
+out which permissions you have. But how will a server know that you
+have these permissions and therefore know which actions (e.g. writing
+into file "foo") it is supposed to do on your behalf and which not?
+The establishing of a trusted connection to a server works as follows:
+
+<P><OL>
+<LI>A user wants a server to know its IDs</LI>
+<LI>The user requests a reauthentication from the server</LI>
+<LI>In this request the user will include a port</LI>
+<LI>Both will hand this port to auth</LI>
+<LI>The user uses auth_user_authenticate</LI>
+<LI>The server uses auth_server_authenticate</LI>
+<LI>The server also passes a new port to auth</LI>
+<LI>auth matches these two requests</LI>
+<LI>The user gets the new port from auth</LI>
+<LI>The server learns about the IDs of the user</LI>
+<LI>The user uses the new port for further communication</LI>
+</OL>
+
+<P>
+We have different RPCs for users and servers because what we pass and
+what we get back differs for them: Users get a port, and servers get
+the sets of IDs, and have to specify the port which the user will get.
+
+<P>
+It is interesting to note that auth can match the requests by
+comparing two integers, because when you get the same port from two
+people, you will have the same mach_port_t (which is nothing but an
+integer).
+
+<P>
+All of this of course only works if they use the same auth server,
+which is why I said often you have no choice other than to use the
+one main auth server. But this is no serious restriction, as the auth server has
+almost no functionality one might want to replace. In fact, there is
+one replacement for the default auth implementation, but more on that
+later.
+
+<H3><A HREF="#TOCposix" NAME="posix">POSIX and beyond</A></H3>
+<P>
+Before we examine what is possible with this design, let us take a
+short look at how the POSIX semantics are implemented on top of this
+design. When a program that comes out of POSIX-land asks for its own
+effective User- or Group-ID, we will tell it about the first of the
+effective IDs. In the same sense, the POSIX real User- or Group-ID is
+the first available ID and the POSIX saved User- or Group-ID is the
+second available ID, which is why you have the same ID two times in
+the available IDs when you log into your GNU/Hurd machine (you can
+figure out which IDs you have with the program "ids", that basically
+just does an auth_getauth RPC). When you lack one of those IDs (for
+example when you have no effective Group-ID), a POSIX program asking
+for this particular information will get "-1" as the ID.
+
+<P>
+But as you can imagine, we can do more than what POSIX specifies. Fox
+example, we can modify our permissions. This is always done with the
+auth_makeauth RPC. In this RPC, you specify the IDs that should be
+associated with the new port. All of these IDs must be associated
+with either the port where the RPC is sent to or one of the additional
+ports you can specify; an exception is the superuser root, which is
+allowed to creat ports that are associated with arbitrary IDs.
+Hereby you can convert available into effective IDs.
+
+<P>
+This opens the door to a bunch of nice features. For example, we have
+the addauth program in the Hurd, which makes it possible to add an ID
+to either a single process or a group of processes if you hold the ID or know the
+appropriate password, and there is a corresponding rmauth program that
+removes an ID. So when you are working on your computer with GNU
+Emacs and want to edit a system configuration file, you switch to
+Emacs' shell-mode, do an "addauth root", enter the password, edit the
+file, and when you are done switch back to shell-mode and do "rmauth
+root". These programs have some interesting options, and there are
+various other programs, for setting the complete list of IDs (setauth)
+and so on.
+
+<H3><A HREF="#TOCservers" NAME="servers">Related servers</A></H3>
+<P>
+Finally, I want to explain two servers which are related to auth. The
+first is the password server, which listens on /servers/password. If
+you pass to it a User- or Group-ID and the correct password for it, it
+will return a port to auth to you which is associated with the ID you
+passed to it. It can create such a port because it is running as
+root. So let us assume you are an FTP server process. You will start
+as root, because you want to use port 21 (in this case, "port" does
+not refer to a mach_port_t, of course). But then, you can drop all
+your permissions so that you run without any ID. This makes it far
+less dangerous to communicate with yet unknown users over the
+network. But when someone now hands a username and password to you,
+you can ask the password server for a new auth port. The password
+server will check the data you pass to it, for example by looking into
+/etc/shadow, and if it is valid, it will ask the auth server for a new
+port. It receives this port from auth and then passes it on to you.
+So you have raised your permissions. (And for the very curious: Yes,
+we are well aware of the differences between this concept and
+capabilities; and we also do have some kinds of capabilities in
+various parts of the Hurd.)
+
+<P>
+My second example is the fakeauth server. It also implements the auth
+protocol. It is the part of the fakeroot implementation that gives a
+process the impression that it runs as root, even if it doesn't. So
+when the process asks fakeauth about its own IDs, fakeauth will tell
+the process that it runs as root. But when the process wants to make
+use of the authentication protocol described earlier in this text,
+fakeauth will forward the request to its own auth server, which will
+usually be the systems main auth server, which will then be able to
+match the auth_*_authenticate requests. So what fakeauth does is
+acting as a proxy auth server that gives someone the impression to run
+as root, while not modifying what that one is allowed to do.
+
+<P>
+At this point, I have said at least most of what can be said about the
+auth server and the protocol it implements, so I will finish by saying
+that it might be an interesting task (for you) to modify some existing
+software to take advantage of the features I described here.
diff --git a/mailinglists.mdwn b/hurd/documentation/hurd-and-linux.mdwn
index 709b1771..678ea8da 100644
--- a/mailinglists.mdwn
+++ b/hurd/documentation/hurd-and-linux.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta redir=mailing_lists]]
+[[!meta redir=/hurd-and-linux]]
diff --git a/Hurd/GNUHurdStatus.mdwn b/hurd/documentation/hurd-paper.mdwn
index 21448e60..06c23662 100644
--- a/Hurd/GNUHurdStatus.mdwn
+++ b/hurd/documentation/hurd-paper.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta redir=hurd/status]]
+[[!meta redir=/hurd-paper]]
diff --git a/recentchanges.mdwn b/hurd/documentation/hurd-talk.mdwn
index 260e8011..83dcaf74 100644
--- a/recentchanges.mdwn
+++ b/hurd/documentation/hurd-talk.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta redir=recent_changes]]
+[[!meta redir=/hurd-talk]]
diff --git a/hurd/documentation/translator_primer.mdwn b/hurd/documentation/translator_primer.mdwn
new file mode 100644
index 00000000..e5c8c160
--- /dev/null
+++ b/hurd/documentation/translator_primer.mdwn
@@ -0,0 +1,85 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+# Small Examples on Using Translators
+
+The [[concept|concepts]] of user-space servers, [[translator]]s, is a very
+powerful one. Here is an introductionary text.
+
+
+## Intro
+
+The Hurd has some unique capabilities, and we created this simple image
+to enable you to easily try three of them:
+
+* The simplest of translators: Hello World!
+* Transparent FTP
+* Mount a remote ISO file
+
+### Hello World
+
+To try out the simplest of translators, you can go the following simple steps:
+
+ $ touch hello
+ $ cat hello
+ $ settrans hello /hurd/hello
+ $ cat hello
+ "Hello World!"
+ $ settrans -g hello
+ $ cat hello
+
+What you do with these steps is first verifying that the file "hello" is empty.
+
+Then you setup the translator /hurd/hello in the file/node hello.
+
+After that you check the contents of the file, and the translator returns "Hello World!".
+
+To finish it,
+you remove the translator from the file "hello"
+(and tell any active running instances to go away)
+via "settrans -g hello".
+Having done that, verify that now the file is empty again.
+
+### Transparent FTP
+
+We already setup a a transparent FTP translator for you at /ftp:
+
+With it you can easily access public FTP via the file system, for example the one from the GNU project:
+
+ $ ls /ftp://ftp.gnu.org/
+
+But you can also do this very easily yourself:
+
+ $ # Setup the translator on the node ftp:
+ $ settrans -c ftp: /hurd/hostmux /hurd/ftpfs /
+
+and you can access FTP sites via the pseudo-directory ftp:, for example with
+
+ $ ls ftp://ftp.gnu.org/
+
+What you do here is setting up the translator /hurd/hostmux on ftp: and passing it the translator /hurd/ftpfs to use for resolving accesses as well as / as additional path component.
+
+### ISO file mount
+
+Now that we can access ftp.gnu.org transparently, let's mount a remote ISO file:
+
+ $ settrans -c mnt /hurd/iso9660fs ftp://ftp.gnu.org/old-gnu/gnu-f2/hurd-F2-main.iso
+ $ ls mnt/
+
+It is interesting to note that since the ISO9660 format is indexed, ftpfs does not have to download the whole ISO file, it merely fetches what iso9660fs requests.
+
+
+These were only three basic usages of translators on the Hurd. We're sure you'll quickly see many other ways to use this.
+
+As a last comment: You can setup a translator on any node you have access to, so you can for example mount any filesystems as normal user.
+
+You might currently be logged in as root, but you could just as well do the same as normal user.
+
+Why don't you try it out?
diff --git a/hurd/documentation/translators.html b/hurd/documentation/translators.html
new file mode 100644
index 00000000..8ae2c180
--- /dev/null
+++ b/hurd/documentation/translators.html
@@ -0,0 +1,236 @@
+[[!meta copyright="Copyright © 1998, 1999, 2007, 2008 Free Software Foundation,
+Inc."]]
+
+[[!meta license="Verbatim copying and distribution of this entire article is
+permitted in any medium, provided this notice is preserved."]]
+
+[[!meta title="Translators"]]
+
+By Marcus Brinkmann.
+
+<ul>
+<li><a href="#concept" name="TOC_concept">Concept</a></li>
+<li><a href="#examples" name="TOC_examples">Examples</a></li>
+<li><a href="#actpas" name="TOC_actpas">Passive Translators, Active Translators</a></li>
+<li><a href="#manage" name="TOC_manage">Managing Translators</a></li>
+</ul>
+<h3><a href="#TOC_concept" name="concept">Concept</a></h3>
+<p>
+Before we take a closer look at translators, let us consider regular
+filesystems. A filesystem is store for a hierarchical tree of directories
+and files. You access directories and files by a special character string,
+the path. Furthermore, there are symbolic links to refer to one file at
+several places in the tree, there are hard links to give one and the same
+file several names. There are also special device files for communication
+with the hardware device drivers of the kernel, and there are mount points
+to include other stores in the directory tree. Then there are obscure
+objects like fifos and hard links.</p>
+<p>
+Although these objects are very different, they share some common
+properties, for example, they have all an owner and a group associated with
+them as well as access rights (permissions). This information is written in
+inodes. This is a actually a further commonality: Every object has exactly
+one inode associated with it (hard links are somewhat special as they share
+one and the same inode). Sometimes, the inode has further information
+stored in it. For example, the inode can contain the target of a symbolic
+link.</p>
+<p>
+However, these commonalities are usually not exploited in the
+implementations, despite the common programming interface to them. All
+inodes can be accessed through the standard POSIX calls, for example
+<code>read()</code> and <code>write()</code>. For example, to add a new
+object type (for example a new link type) to a common monolithic unix
+kernel, you would need to modify the code for each filesystem
+seperately.</p>
+<p>
+In the Hurd, things work differently. Although in the Hurd a special
+filesystem server can exploit special properties of standard object types
+like links (in the ext2 filesystem with fast links, for example), it has a
+general interface to add such features without modifying existing code.</p>
+<p>
+The trick is to allow a program to be inserted between the actual content of
+a file and the user accessing this file. Such a program is called a
+translator, because it is able to process the incoming requests in many
+different ways. In other words, a translator is a Hurd server which provides
+the basic filesystem interface.</p>
+<p>
+Translators have very interesting properties. From the kernels point of
+view, they are just another user process. This means, translators can be run
+by any user. You don't need root priviligies to install or modify a
+translator, you only need the access rights for the underlying inode the
+translator is attached to. Many translators don't require an actual file to
+operate, they can provide information by their own means. This is why
+the information about translators is stored in the inode.</p>
+<p>
+Translators are responsible to serve all file system operations that involve
+the inode they are attached to. Because they are not restricted to the usual
+set of objects (device file, link etc), they are free to return anything
+that makes sense to the programmer. One could imagine a translator that
+behaves like a directory when accessed by <code>cd</code> or
+<code>ls</code> and at the same time behaves like a file when accessed by
+<code>cat</code>.</p>
+<h3><a href="#TOC_examples" name="examples">Examples</a></h3>
+<h4>Mount Points</h4>
+<p>
+A mount point can be seen as an inode that has a special translator attached
+to it. Its purpose would be to translate filesystem operations on the mount
+point in filesystem operations on another store, let's say, another
+partition.</p>
+<p>
+Indeed, this is how filesystems are implemented under the Hurd. A
+filesystem is a translator. This translator takes a store as its argument,
+and is able to serve all filesystem operations transparently.</p>
+<h4>Device Files</h4>
+<p>
+There are many different device files, and in systems with a monolithical
+kernel, they are all provided by the kernel itself. In the Hurd, all device
+files are provided by translators. One translator can provide support for
+many similar device files, for example all hard disk partitions. This way,
+the number of actual translators needed is quite small. However, note that
+for each device file accessed, a seperate translator task is started.
+Because the Hurd is heavily multi threaded, this is very cheap.</p>
+<p>
+When hardware is involved, a translator usually starts to communicate with
+the kernel to get the data from the hardware. However, if no hardware access
+is necessary, the kernel does not need to be involved. For example,
+<code>/dev/zero</code> does not require hardware access, and can therefore
+be implemented completely in user space.</p>
+<h4>Symbolic Links</h4>
+<p>
+A symbolic link can be seen as a translator. Accesing the symbolic link
+would start up the translator, which would forward the request to the
+filesystem that contains the file the link points to.</p>
+<p>
+However, for better performance, filesystems that have native support
+for symbolic links can take advantage of this feature and implement
+symbolic links differently. Internally, accessing a symbolic link would not
+start a new translator process. However, to the user, it would still look
+as if a passive translator is involved (see below for an explanation what a
+passsive translator is).</p>
+<p>
+Because the Hurd ships with a symlink translator, any filesystem server that
+provides support for translators automatically has support for symlinks (and
+firmlinks, and device files etc)! This means, you can get a working
+filesystem very fast, and add native support for symlinks and other features
+later.</p>
+<h3><a href="#TOC_actpas" name="actpas">Passive Translators, Active Translators</a></h3>
+<p>
+There are two types of translators, passive and active. They are really
+completely different things, so don't mix them up, but they have a close
+relation to each other.</p>
+<h4>Active Translators</h4>
+<p>
+An active translator is a running translator process, as introduced above.
+You can set and remove active translators using the
+<code>settrans -a</code></a>
+command. The <code>-a</code> option is necessary to tell
+<code>settrans</code> that you want to modify the active translator.</p>
+<p>
+The <code>settrans</code> command takes three kind of arguments. First, you
+can set options for the <code>settrans</code> command itself, like
+<code>-a</code> to modify the active translator. Then you set the inode you
+want to modify. Remember that a translator is always associated with an
+inode in the directory hierarchy. You can only modify one inode at a time.
+If you do not specify any more arguments, <code>settrans</code> will try to
+remove an existing translator. How hard it tries depends on the force
+options you specify (if the translator is in use by any process, you will
+get "device or resource busy" error message unless you force it to go away).</p>
+<p>
+But if you specify further arguments, it will be interpreted as a command
+line to run the translator. This means, the next argument is the filename of
+the translator executable. Further arguments are options to the translator,
+and not to the <code>settrans</code> command.</p>
+<p>
+For example, to mount an ext2fs partition, you can run
+<code>settrans -a -c /mnt /hurd/ext2fs /dev/hd2s5</code>. The
+<code>-c</code> option will create the mount point for you if it doesn't
+exist already. This does not need to be a directory, by the way. To unmount,
+you would try <code>settrans -a /mnt</code>.</p>
+<h4>Passive Translators</h4>
+<p>
+A passive translator is set and modified with the same syntax as the active
+translator (just leave away the <code>-a</code>, so everything said above is
+true for passive translators, too. However, there is a difference: passive
+translators are not yet started.</p>
+<p>
+This makes sense, because this is what you usually want. You don't want the
+partition mounted unless you really access files on this partition. You
+don't want to bring up the network unless there is some traffic and so
+on.</p>
+<p>
+Instead, the first time the passive translator is accessed, it is
+automatically read out of the inode and an active translator is started on
+top of it using the command line that was stored in the inode. This is
+similar to the Linux automounter functionality. However, it does not come as
+an additional bonus that you have to set up manually, but an integral part of
+the system. So, setting passive translators defers starting the translator
+task until you really need it. By the way, if the active translator dies for
+some reason, the next time the inode is accessed the translator is
+restarted.</p>
+<p>
+There is a further difference: active translators can die or get lost. As
+soon as the active translator process is killed (for example, because you
+reboot the machine) it is lost forever. Passive translators are not transient
+and stay in the inode during reboots until you modify them with the
+<code>settrans</code> program or delete the inodes they are attached to.
+This means, you don't need to maintain a configuration file with your mount
+points.</p>
+<p>
+One last point: Even if you have set a passive translator, you can still
+set a different active translator. Only if the translator is automatically
+started because there was no active translator the time the inode was
+accessed the passive translator is considered.</p>
+<h3><a href="#TOC_manage" name="manage">Managing Translators</a></h3>
+<p>
+As mentioned above, you can use
+<code>settrans</code></a>
+to set and alter passive and active translators. There are a lot of options
+to change the behaviour of <code>settrans</code> in case something goes
+wrong, and to conditionalize its action. Here are some common usages:</p>
+<ul><li><code>settrans -c /mnt /hurd/ext2fs /dev/hd2s5</code> mounts a
+partition, the translator will stay across reboots.</li>
+<li><code>settrans -a /mnt /hurd/ext2fs ~/dummy.fs</code> mounts a
+filesystem inside a data file, the translator will go away if it dies.</li>
+<li><code>settrans -fg /nfs-data</code> forces a translator to go away.</li>
+</ul>
+<p>
+You can use the <code>showtrans</code></a>
+command to see if a translator is attached to an inode. This will only show
+you the passive translator though.</p>
+<p>
+You can change the options of an active (filesystem) translator with
+<code>fsysopts</code> without actually restarting it. This is very
+convenient. For example, you can do what is called "remounting a
+partition read-only" under Linux simply by running <code>fsysopts
+/mntpoint --readonly</code>. The running active translator
+will change its behaviour according to your request if possible.
+<code>fsysopts /mntpoint</code> without a parameter shows you the current
+settings.</p>
+<h4>Examples</h4>
+<p>
+I recommend that you start by reading the <code>/bin/mount</code> command,
+it is only a small script. Because setting filesystem translators is
+similar to mounting partitions, you can easily grasp the concept this way.
+Make a file system image with <code>dd if=/dev/zero of=dummy.fs bs=1024k
+count=8; mke2fs dummy.fs</code> and "mount" it with <code>settrans -c dummy
+/hurd/ext2fs `pwd`/dummy.fs</code>. Note that the translator is not started
+yet, no new <code>ext2fs</code> process is running (verify with <code>ps
+Aux</code>). Check that everything is correct using <code>showtrans</code></p>
+<p>
+Now type <code>ls dummy</code> and you will notice the short delay that
+occurs while the translator is started. After that, there will be no more
+delays accessing dummy. Under Linux, one would say that you automounted a
+loop file system. Check with <code>ps Aux</code> that there is an <code>ext2fs
+dummy</code> process up and running now. Now put some files into the new
+directory. Try to make the filesystem read-only with <code>fsysopts</code>.
+Note how further write attempts fail now. Try to kill the active translator
+with <code>settrans -g</code>.</p>
+<p>
+You should have some understanding of what is going on now. Now remember
+that this was only <em>one</em> special server, the Hurd ext2fs server.
+There are many more server in the <code>hurd</code> directory. Some of them
+are for filesystems. Some are needed for file system features like links.
+Some are needed for device files. Some are useful for networking. Imagine
+"mounting" an FTP Server with <code>settrans</code> and downloading files
+simply with the standard <code>cp</code> command. Or editing your web sites
+with <code>emacs /ftp/homepage.my.server.org/index.html</code>!</p>
diff --git a/hurd/faq.mdwn b/hurd/faq.mdwn
index aab538d9..413aaf3f 100644
--- a/hurd/faq.mdwn
+++ b/hurd/faq.mdwn
@@ -1,17 +1,20 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2010 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="GNU Hurd FAQ"]]
+[[!meta title="GNU Hurd FAQ"]]
-[[inline
+See also other [[/FAQ]].
+
+[[!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/faq/gramatically_speaking.mdwn b/hurd/faq/gramatically_speaking.mdwn
deleted file mode 100644
index f6073376..00000000
--- a/hurd/faq/gramatically_speaking.mdwn
+++ /dev/null
@@ -1,42 +0,0 @@
-[[meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 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]]."]]"""]]
-
-[[meta title="Grammatically speaking, what is the Hurd?"]]
-
-*Hurd*, as an acronym, stands for *Hird of Unix-Replacing Daemons*. *Hird*, in
-turn, stands for *Hurd of Interfaces Representing Depth*.
-
-We treat *Hurd* as a title rather than as a proper name: it requires an
-article, as in *the Hurd*. For instance: *The ext2 filesystem is provided by
-the Hurd, not by Mach.* Note that all of the following are incorrect: *Hurd*,
-*HURD*, *The HURD*, and *the hurd*.
-
-We write *the GNU Hurd* instead of *the Hurd* when we want to emphasize that
-the Hurd is a GNU package. Once this has been made clear, we usually use the
-shorter form, without *GNU*.
-
-The whole operating system includes not only the kernel and the system servers,
-but also many more programs. This system is called *GNU*, or *the GNU
-operating system*. The GNU programs can also run on other operating system
-kernels. We say *GNU/Hurd* when we want to put emphasis on the fact that this
-is the GNU system running on top of the Hurd, and to contrast it with the
-GNU/Linux system which is GNU using Linux as the kernel.
-
-Finally, there is *Debian GNU/Hurd*. This refers to the distribution of the GNU
-system as created by the Debian developers. For example: *What do you run on
-your laptop? Debian GNU/Hurd, of course.*
-
-The French generally write *le Hurd*--that is, they treat the name as masculine
-singular, capitalized as in English.
-
-When we are referring to the microkernel, we say *Mach* and use it as a proper
-noun. For example: *Mach uses the device drivers found in version 2.0.x of
-Linux.* We sometimes say *the Mach microkernel* instead of just *Mach*.
diff --git a/hurd/faq/how_about_drivers.mdwn b/hurd/faq/how_about_drivers.mdwn
new file mode 100644
index 00000000..0556fd28
--- /dev/null
+++ b/hurd/faq/how_about_drivers.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="What drivers does GNU/Hurd have?"]]
+
+Currently, Mach integrates drivers from Linux 2.0 through some glue code. As
+it's very old, that limits hardware support a lot, of course. We are however
+working on using the DDE toolkit to run linux drivers in userland processes,
+which provides both long-term support for new hardware and safety against driver
+bugs.
diff --git a/hurd/faq/how_to_switch_microkernels.mdwn b/hurd/faq/how_to_switch_microkernels.mdwn
new file mode 100644
index 00000000..21f7a371
--- /dev/null
+++ b/hurd/faq/how_to_switch_microkernels.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2009, 2010 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]]."]]"""]]
+
+[[!meta title="How difficult would it be to switch to another microkernel?"]]
+
+One would have to reimplement the `mach/` and `sysdeps/mach/` parts of
+[[glibc]] and [[libpthread]]. Quite a few other Hurd tools also assume a
+[[microkernel/Mach]] kernel and would have to be adapted or rewritten.
diff --git a/hurd/faq/l4.mdwn b/hurd/faq/l4.mdwn
deleted file mode 100644
index 185c713a..00000000
--- a/hurd/faq/l4.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-[[meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 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]]."]]"""]]
-
-[[meta title="Why is there no information on the official website about the
-Hurd port to L4 (Hurd/L4)?"]]
-
-There is an ongoing effort to port the Hurd to the L4 microkernel family. This
-will take time and the port is not in a releasable state -- this is why there
-is no information about the L4 port on the website for the Hurd project
-<http://www.gnu.org/software/hurd> other than this FAQ entry.
-
-The development of Hurd/L4 is being done in the `hurd-l4` module of the Hurd
-CVS repository. The `doc` directory contains a design document that is worth
-reading for anyone who wishes to learn more about Hurd/L4. If you wish to
-follow the development or contribute patches to Hurd/L4, please subscribe to
-the [[mailing_lists/l4-hurd]] mailing list.
diff --git a/hurd/faq/off.mdwn b/hurd/faq/off.mdwn
new file mode 100644
index 00000000..64009101
--- /dev/null
+++ b/hurd/faq/off.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="How am I supposed to shut my Hurd system down?"]]
+
+The GNU/Hurd does not use SYSV runlevels, so commands like
+
+ $ shutdown -h now
+
+will not work. Simply use the equivalent shortcut
+
+ $ halt
+
+which is provided natively on GNU/Hurd, instead of from SYSV runlevels.
+
+Note that due to a bug,
+we [[recommend you run syncfs|open_issues/sync_but_still_unclean_filesystem]]
+prior to issuing the `halt` command.
diff --git a/hurd/faq/old-stuff.mdwn b/hurd/faq/old-stuff.mdwn
index 6bb6f55f..df2058c0 100644
--- a/hurd/faq/old-stuff.mdwn
+++ b/hurd/faq/old-stuff.mdwn
@@ -1,19 +1,19 @@
In addition to the [general FAQ](http://www.gnu.org/software/hurd/docs.html#TOCfaq) there are the following typical newbie questions. (There is an [updated version](http://tuxou.ouvaton.org/hurd/) which is not official yet.)
-If you still have problems, do not hesitate to make use of the [[mailing_lists]] or the [[IRC]].
+If you still have problems, do not hesitate to make use of the [[mailing lists]] or the [[IRC]].
* **_You say GNU, don't you mean GNU/Hurd?_**
* Yes and no. GNU refers to the system as a whole, while GNU/Hurd is more specific, saying that it is the GNU system running on the Hurd -- to differentiate it from the GNU system running on Linux, GNU/Linux. Also see [[GNU/GnuNames]]
* **_What editor can I use?_**
- * `nano` is the default editor on a fresh install, not `ae`.
+ * `nano` is the default editor on a fresh install, not `ae`, but a lot of editors are available.
* **_Why can't I get the answers I need from Hurd hackers?_**
* This [document](http://www.catb.org/~esr/faqs/smart-questions.html) may help you understand some developers attitudes and social norms.
-* **_Where are the virtual consoles I use when running GNU/Linux?_**
+* **_Where are the virtual consoles I use when running Linux?_**
* You need to [use screen](http://www.gnu.org/software/hurd/faq.en.html#q4-6) instead, also available when running GNU/Linux.
- * The [new console](http://lists.debian.org/debian-hurd/2002/debian-hurd-200209/msg00054.html) by Marcus Brinkmann could also be used. It supports the Alt-Fn keys for switching like in GNU/Linux. NOTE: that message has an error in the configuration steps, it says `/dev/vts` when it means `/dev/vcs`. A more up-to-date howto is [[console]].
+ * The [new console](http://lists.debian.org/debian-hurd/2002/debian-hurd-200209/msg00054.html) by Marcus Brinkmann could also be used. It supports the Alt-Fn keys for switching like in Linux. NOTE: that message has an error in the configuration steps, it says `/dev/vts` when it means `/dev/vcs`. A more up-to-date howto is [[console]].
* **_What is a translator?_**
* The official FAQ [answers](http://www.gnu.org/software/hurd/faq.en.html#q4-2) this question by a reference to [hurd-doc-translator](http://www.debian.org/ports/hurd/hurd-doc-translator).
@@ -28,16 +28,16 @@ If you still have problems, do not hesitate to make use of the [[mailing_lists]]
* These are different versions of the Mach microkernel that supports the Hurd that runs on top of it. For more info, see [[Mach]]
* **_What software is available for GNU?_**
- * Most packages from [Debian](http://www.debian.org/) [GNU/Linux](http://www.gnu.org/gnu/linux-and-gnu.html) which aren't linux-specific ([Packages That Won't Be Ported](http://www.debian.org/ports/hurd/hurd-devel-debian)) are expected to work on GNU/Hurd too. See the database in <http://packages.debian.org/>. Programs which need pthreads, including [GNOME](http://www.gnome.org), [KDE](http://www.kde.org), [Mozilla](http://www.mozilla.org), [OpenOffice](http://www.openoffice.org), [SDL](http://www.libsdl.org), etc. are being worked on currently using Neal Walfields libpthreads. See the [[Distrib/PortingIssues]] document for some common build problems and their solutions.
+ * Most (2/3) packages from [Debian](http://www.debian.org/) [GNU/Linux](http://www.gnu.org/gnu/linux-and-gnu.html) which aren't linux-specific ([Packages That Won't Be Ported](http://www.debian.org/ports/hurd/hurd-devel-debian)) are expected to work on GNU/Hurd too. See the database in <http://packages.debian.org/>. Notably, [GNOME](http://www.gnome.org), and [KDE](http://www.kde.org) work. See the [[porting/guidelines]] document for some common build problems and their solutions.
* If you can't fetch a package with "apt-get install ", try building it from source: "apt-get source &amp;&amp; cd &lt;package\_dir&gt; &amp;&amp; debian/rules binary".
- * As of January 2007, 50% of Debian packages have been ported on the Hurd. Of course, bug testing is welcome.
+ * As of April 2010, 65% of Debian packages have been ported on the Hurd. Of course, bug testing is welcome.
* **_How do I initialize a serial console on the Hurd?_**
* You can try out the Serial Howto at <http://www.nongnu.org/thug/serial-howto.txt>
* For a real serial console at boot time you need to rebuild your GNUmach 1.x kernel. For more info see the Utah release notes at [http://www.cs.utah.edu/flux/mach4-i386/html/mach4-UK22.html#serial\_console](http://www.cs.utah.edu/flux/mach4-i386/html/mach4-UK22.html#serial_console)
* **_Will GNU work in Vmware?_**
- * It's highly recommended and easier to get a full image for Bochs. See [[Distrib]]
+ * It's highly recommended and easier to get a full image for qemu. See [[Distrib]]
* It didn't use to, [Hurd bootstrap fails](http://lists.debian.org/debian-hurd/2002/debian-hurd-200207/msg00069.html). Vmware is not [free software](http://www.gnu.org/philosophy/free-sw.html) and it is [[Distrib/VmWare]]. We recommend to use [free](http://www.gnu.org/philosophy/free-sw.html) alternatives, like [[Distrib/BochsEmulator]].
* A faster, more widespread and [free](http://www.gnu.org/philosophy/free-sw.html) recent alternative is [QEMU][[running/QEMU]]. You can find more informations on [[running/QEMU]].
* If someone prefers using VMWare:
diff --git a/faq.en.in b/hurd/faq/old_faq.txt
index 11e1c242..617d7661 100644
--- a/faq.en.in
+++ b/hurd/faq/old_faq.txt
@@ -1,3 +1,14 @@
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 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]]."]]"""]]
+
Frequently Asked Questions about the GNU Hurd
This document attempts to answer the questions that most often plague
@@ -547,7 +558,5 @@ Answers were given by (in chronological order):
* {MB} Marcus Brinkmann <Marcus.Brinkmann@ruhr-uni-bochum.de>
* {AMS} Alfred M. Szmidt <ams@gnu.org>
* {OK} Ognyan Kulev <ogi@fmi.uni-sofia.bg>
-* {FH} Frdric Henry <neryel@reveries.info>
+* {FH} Frédéric Henry <neryel@reveries.info>
* {MM} Manuel Menal <mmenal@hurdfr.org>
-
- vim:ts=8:sw=8:tw=72
diff --git a/hurd/faq/old_hurd_faq.txt b/hurd/faq/old_hurd_faq.txt
new file mode 100644
index 00000000..e6c6cb5a
--- /dev/null
+++ b/hurd/faq/old_hurd_faq.txt
@@ -0,0 +1,289 @@
+The Unofficial (and no longer maintained) GNU&nbsp;Hurd FAQ, Version 0.13
+
+Contributions by:
+
+Michael I. Bushnell <mib@gnu.org>
+Len Tower <tower@gnu.org>
+Trent Fisher <trent@gnurd.uu.pdx.edu>
+jlr@usoft.spb.su
+Remy Card <Remy.Card@masi.ibp.fr>
+Louis-Dominique Dubeau <hallu@info.polymtl.ca>
+
+Original Document by: Derek Upham <upham@cs.ubc.ca>
+
+
+==============================
+
+Contents:
+
+Q0. Where can I get the Unofficial GNU Hurd FAQ?
+Q2. Where can I get a copy?
+Q3. Why bother writing a new OS when we have Linux and 386/BSD?
+Q4. What's all this about Mach 3.0 (and Mach 4.0)?
+Q5. Where can I find more information?
+Q6. What's a proper machine?
+Q7. What sort of machines will run Hurd in the future?
+Q8. What is the current development status?
+Q9. What sort of system would we have if the Hurd was bootable today?
+
+==============================
+
+Q0. Where can I get the Unofficial GNU Hurd FAQ?
+
+The Unofficial Hurd FAQ (what you are reading now) is occasionally
+posted to the USENET newsgroup, gnu.misc.discuss. It is also
+available from
+
+ http://www.enci.ucalgary.ca/~gord/hurd/hurd-faq.txt (Broken Link ?)
+
+If you don't have WWW access, you may send mail to me, Gordon
+Matzigkeit <gord@enci.ucalgary.ca> with a subject line that reads:
+
+ Subject: send hurd-faq
+
+You should receive a PGP-signed copy of the current version of this
+document in a matter of minutes.
+
+
+Q2. Where can I get a copy?
+
+To put it simply, you can't. It is still under development (by
+Michael Bushnell, Roland McGrath and Miles Bader). It is almost, but
+not quite, at the point where you can do real work on it. Keep your
+fingers crossed.
+
+Some people have actually bootstrapped it, but the work is not easy,
+and the current snapshot won't work until a new multiserver boot
+mechanism is made.
+
+If you *really* want to try it, beware that it is still pre-alpha
+code, and that it will likely crash on you. See Trent Fisher's Hurd
+pages (under question 5) for the latest information.
+
+
+Q3. Why bother writing a new OS when we have Linux and 386/BSD?
+
+For one thing, Linux and BSD don't scale well. Hardware designers are
+shifting more and more toward multiprocessor machines for performance,
+and standard Unix kernels do not provide much multiprocessor support.
+The Hurd, on the other hand, runs on top of the Mach 3.0 micro-kernel
+[[1]] from CMU. Mach was designed precisely for multiprocessing
+machines, so its portability should carry over nicely to the Hurd.
+
+In addition, the Hurd will be considerably more flexible and robust
+than generic Unix. Wherever possible, Unix kernel features have been
+moved into unprivileged space. Once there, anyone who desires can
+develop custom replacements for them. Users will be able to write and
+use their own file systems, their own `exec' servers, or their own
+network protocols if they like, all without disturbing other users.
+
+The Linux kernel has now been modified to allow user-level file
+systems, so there is proof that people will actually use features such
+as these. It will be much easier to do under the Hurd, however,
+because the Hurd is almost entirely run in user space and because the
+various servers are designed for this sort of modification.
+
+
+Q4. What's all this about Mach 3.0 (and Mach 4.0)?
+
+As mentioned above, Mach is a micro-kernel, written at Carnegie Mellon
+University. A more descriptive term might be a greatest-common-factor
+kernel, since it provides facilities common to all ``real'' operating
+systems, such as memory management, inter-process communication,
+processes, and a bunch of other stuff. Unfortunately, the system
+calls used to access these facilities are only vaguely related to the
+familiar and cherished Unix system calls. There are no "fork",
+"wait", or "sleep" system-calls, no SIGHUPs, nothing like that. All
+this makes it rather difficult to, say, port GNU Emacs to a Mach box.
+
+The trick is, of course, to write an emulation library. Unix programs
+can then use (what they think are) POSIX system calls and facilities
+while they are really using Mach system calls and facilities.
+
+The simplest way of going about this is to take an ordinary Unix
+kernel, open it up, and rip out all the machine-specific guts; any
+time the Unix kernel talks to the machine, replace the code with calls
+to the Mach micro-kernel. Run this fake kernel on a Mach machine and
+you end up with something that looks and acts just like Unix (even to
+GNU Emacs). Note that the Unix kernel we have implemented is just one
+Really Big Mach program (called a single-server).
+
+The Hurd, on the other hand, breaks the giant Unix kernel down into
+various Mach programs running as daemons. Working in concert with
+facilities placed in the C library, these daemons provide all of the
+POSIX system-calls and features; from the outside they look just like
+a standard Unix kernel. This means that, for practical purposes,
+anything that you can port to Linux will also port to the Hurd.
+
+Of course, if a user wishes to run his own daemons, he can do that as
+well....
+
+Mach 4.0 is an enhanced version of Mach 3.0, put out by the people at
+the University of Utah. They are working on another free operating
+system, and part of it includes an enhanced, more flexible version of
+Mach. The Hurd has moved to Mach 4.0, which is good, because it is a
+lot easier to build than 3.0 was.
+
+You can find more information on Mach by browsing the Hurd pages given
+in the next answer, or by looking at the Project Mach and Flux
+homepages at:
+
+Carnegie Mellon University (for Mach versions before 4.0):
+
+ http://www.cs.cmu.edu/afs/cs.cmu.edu/project/mach/public/www/mach.html
+
+the University of Utah (for Mach 4.0):
+
+ http://www.cs.utah.edu/projects/flux/mach4/html/
+
+
+Q5. Where can I find more information?
+
+The June 1995 GNU's Bulletin contains the following official
+information:
+
+ The GNU&nbsp;Hurd now runs programs native. We have implemented both
+ shared libraries using ELF, & the popular `ext2' file system used
+ by Linux. It can run GCC, `make', Emacs, & most other GNU
+ utilities. Progress is being made so rapidly that by the time you
+ read this it probably does much more. It is right on the verge of
+ being self-hosting (able to run on its own well enough to compile
+ its own source code, & be used for its own development). We have
+ much better device supportm [sic] & some new utilities, including a
+ fancy `ps' & `settrans'. For a complete system we still have much
+ more work to do, but we will make an alpha release as soon as the
+ network software is finished & shared libraries have been well
+ tested. We have a mailing list to announce progress; to be added
+ to it, ask `hurd-announce-request@gnu.org'.
+
+The Portland State University CS department (via Trent Fisher)
+maintains a WWW server with various Hurd documents, including Michael
+Bushnell's Hurd paper, all the collected GNU's Bulletins, and various
+announcements posted to "gnu.misc.discuss". The top-level GNU page is
+
+ http://www.cs.pdx.edu/~trent/gnu/gnu.html
+
+and the Hurd page is
+
+ http://www.cs.pdx.edu/~trent/gnu/hurd/hurd.html
+
+People in Europe might want to try the GNU WWW server for DESY
+Germany, first:
+
+ http://info.desy.de/gnu/www
+
+This site lacks culled, Hurd-specific information at the moment, but
+it does have the last two GNU's Bulletins plus lots of general
+information.
+
+There is a snapshot of the Hurd development tree on
+"alpha.gnu.ai.mit.edu" in the "/gnu" directory. It is updated as
+significant changes are made, and not guaranteed to run.
+
+You can subscribe to the Hurd announcement list by sending a request
+to "hurd-announce-request@gnu.org". This is a moderated list
+for distributing Hurd info to ``all and sundry'', and anyone can join.
+In addition, there is a private (invitation-only) list for developers
+to coordinate their efforts. It's not even worth thinking about
+unless you (a) have a lot of free time on your hands, (b) know Unix
+internals and Mach very well, and (c) have a proper machine.
+
+
+Q6. What's a proper machine?
+
+A ``proper machine'', at the moment, means an x86 box running Mach 3.0
+(or 4.0), with FreeBSD 2.x, NetBSD 1.x, or Linux.
+
+A single-server OS is no longer required for development because by
+the time the Hurd bootstrap mechanism is finished, the Hurd will
+probably be self-hosting.
+
+Linux, FreeBSD, or NetBSD will only be required to splat the Hurd
+binaries onto a partition of some sort, and to provide a way of
+transferring files to the Hurd until the networking code is ready.
+
+
+Q7. What sort of machines will run Hurd in the future?
+
+The first thing a prospective Hurd machine needs is a Mach 3.0 port.
+According to the most recent "comp.os.mach" FAQ (which hasn't been
+updated since February 1994), the following chips have redistributable
+Mach micro-kernels and device drivers:
+
+ Intel 80x86 (ISA and PS/2 buses)
+ Motorola 68000 (Sun 3)
+ Motorola 88000 (Omron Luna)
+ DEC Vax
+ DEC Pmax (DECstation 3100)
+ DEC Alpha
+ MIPS R4000 (DECstation 5000 et al.)
+ IBM RS/6000
+ Apple Macintosh
+
+IBM is planning to run WorkplaceOS (the OS/2 successor) over Mach 3.0
+on the PowerPC chip (closely related to the RS/6000), so the PowerPC
+will likely be added to this list soon. The University of Utah has
+ported Mach 4.0 to the HP700, but it is not yet stable.
+
+Sun Sparc machines have a redistributable Mach microkernel, but the
+device drivers require a SunOS 4.1.1 source license.
+
+In addition, any prospective Hurd machine needs a port of the GNU C
+library. Version 1.07.4 of the library can handle the following
+chips:
+
+ Intel 80x86 (BSD, Dynix, Hurd, SCO, SysV)
+ Motorola 68000 (HP BSD, NEWS, Sun 4)
+ MIPS R4000 (Ultrix)
+ Sun Sparc (Solaris 2, Sun 4)
+ DEC Alpha (OSF/1, mostly finished)
+
+So if the next Hurd snapshot is self-hosting, we will be able to run
+it (in theory) on Intel 80x86s, Motorola 68000s, MIPS R4000s and DEC
+Alphas.
+
+People who can port the Mach micro-kernel to new architectures are
+encouraged to do so. People who can port the GNU C library to new
+chips (a much larger group) are also encouraged to do so. You can
+help out here without knowing anything about Mach or having any
+special machine. Note that once the GNU C library exists for a new
+chip, for _any_ OS, making a Hurd port later is simple (and making
+ports to other chips becomes easier as well---the effects are
+cumulative).
+
+By current indications, the other hardware requirements (RAM, disk
+space, and the like) will be about the same as those of BSD 4.4.
+
+
+Q8. What is the current development status?
+
+Please see Trent Fisher's Hurd pages for details.
+
+
+Q9. What sort of a system would we have if the Hurd was bootable
+today?
+
+Quite likely, if you already use an end-user system like Linux,
+FreeBSD, or NetBSD, you'll be disappointed with the Hurd. It will
+take some time before the OS hackers really get to work on
+applications and major enhancements.
+
+But, rest assured, Hurd development should proceed very rapidly.
+
+Of course, if you think you can help, or you just enjoy neat stuff,
+then you'll probably like the Hurd. When you actually understand a
+fraction of what's going on behind the scenes, it's very impressive.
+
+All I'm saying is that I'm not expecting all the Windows '95 users in
+the world to switch to the Hurd right away. Wait a little while,
+maybe 5-6 years (ample time for GNUStep and Guile to be in use), and
+GNU users everywhere will be very happy that the FSF proceeded with
+the Hurd. :)
+
+
+==============================
+
+Footnotes:
+
+[[1]] Yes, I know that ``micro-kernel'' is about as apt a description
+as ``Reduced Instruction Set Chip'', but we're stuck with it.
diff --git a/hurd/faq/release.mdwn b/hurd/faq/release.mdwn
index c93ba353..d80c6825 100644
--- a/hurd/faq/release.mdwn
+++ b/hurd/faq/release.mdwn
@@ -1,14 +1,14 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="When will the Hurd be released?"]]
+[[!meta title="When will the Hurd be released?"]]
Next year.
diff --git a/hurd/faq/slash_usr_symlink.mdwn b/hurd/faq/slash_usr_symlink.mdwn
index d78913fb..5c47f4e1 100644
--- a/hurd/faq/slash_usr_symlink.mdwn
+++ b/hurd/faq/slash_usr_symlink.mdwn
@@ -1,17 +1,17 @@
-[[meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2008 Free Software
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2008 Free Software
Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="Why is `/usr' a symbolic link to `.'?"]]
+[[!meta title="Why is `/usr' a symbolic link to `.'?"]]
-The distinction between `/` and `/usr` has historical reasons. Back when Unix
+The distinction between `/` and `/usr` has historical reasons. Back when [[Unix]]
systems were booted from two tapes, a small root tape and a big user tape.
Today, we like to use different partitions for these two spaces. The Hurd
throws this historical garbage away. We think that we have found a more
diff --git a/hurd/faq/still_useful.mdwn b/hurd/faq/still_useful.mdwn
new file mode 100644
index 00000000..bffeaebd
--- /dev/null
+++ b/hurd/faq/still_useful.mdwn
@@ -0,0 +1,46 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+what are the advantages with the Hurd over Linux, in general of course, nothing
+in depth
+
+> Flexibility for the user:
+>
+> transparent ftp
+>
+> $ cd /ftp://ftp.debian.org/debian
+> $ ls
+>
+> personnal filesystem
+>
+> $ dd < /dev/zero > myspace.img bs=1M count=1024
+> $ mke2fs myspace.img
+> $ settrans myspace /hurd/ext2fs myspace.img
+> $ cd myspace
+
+>> Just curious, but I keep seeing these (and other similar) concepts being
+>> brought up as the amazing selling points of the Hurd, but all of this is
+>> entirely doable now in Linux with FUSE or things like it.
+
+>>> Nowadays, at LAST, yes, partly.
+
+>> I'm not sure if an ftp filesystem has been implemented for FUSE yet, but its
+>> definately doable; and loopback filesystems like in your second example have
+>> been supported for years.
+
+>>> As a normal user? And establish a tap interface connected through ppp over
+>>> ssh or whatever you could want to imagine?
+
+>> What, then, are the major selling points or benefits?
+
+>>> These were just examples, Linux is trying to catch up in ugly ways indeed
+>>> (yes, have a look at the details of fuse, it's deemed to be inefficient).
+>>> In the Hurd, it's that way from the _ground_ and there is no limitation
+>>> like having to be root or ask for root to add magic lines, etc.
diff --git a/hurd/faq/top.mdwn b/hurd/faq/top.mdwn
new file mode 100644
index 00000000..9e385c0f
--- /dev/null
+++ b/hurd/faq/top.mdwn
@@ -0,0 +1,16 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="What is a replacement for procps' top?"]]
+
+Here is a replacement to use, until the real `top` works, which depends on
+[[hurd/translator/procfs]] and some [[!taglink porting|open_issue_porting]].
+
+ $ while :; do ps -e -v -s CPU --top=22 -r; sleep 5; done
diff --git a/hurd/gcc.mdwn b/hurd/gcc.mdwn
index 3700b8b8..129aa8a9 100644
--- a/hurd/gcc.mdwn
+++ b/hurd/gcc.mdwn
@@ -1,15 +1,11 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2010 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-[[General_information|/gcc]] about the GCC.
-
-Apart from the target-specific configuration machinery, there shouldn't be any
-major differences within GCC between, for example, the GNU/Hurd and GNU/Linux
-ports. Especially all the compiler magic is all the same.
+[[!meta redir=/gcc]]
diff --git a/hurd/getting_help.mdwn b/hurd/getting_help.mdwn
deleted file mode 100644
index 540dc851..00000000
--- a/hurd/getting_help.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-[[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]]."]]"""]]
-
-# Essential Documentation
-
-* [[FAQ]]
-* [[microkernel/mach/gnumach/Hardware_Compatibility_List]]
-
-# Forums
-
-Please follow these [guidelines](http://catb.org/~esr/faqs/smart-questions.html)
-when asking your question. Namely: spend some time trying
-to solve the problem on your own (e.g., [search the web](http://www.google.com),
-use this wiki, etc.), show us that you did so when you
-ask your question, and provide as many relevant details as possible
-reproducing them as exactly as possible.
-
-* [[Mailing_lists]]
-* [[IRC]]
diff --git a/hurd/glibc.mdwn b/hurd/glibc.mdwn
index de85c03d..39bfed62 100644
--- a/hurd/glibc.mdwn
+++ b/hurd/glibc.mdwn
@@ -1,12 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
[[General_information|/glibc]] about the glibc.
diff --git a/hurd/glibc/hurd-specific_api.mdwn b/hurd/glibc/hurd-specific_api.mdwn
index 7333ec0d..7ead63cd 100644
--- a/hurd/glibc/hurd-specific_api.mdwn
+++ b/hurd/glibc/hurd-specific_api.mdwn
@@ -1,17 +1,18 @@
-[[meta copyright="Copyright © 2002, 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2002, 2007, 2008, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-[[meta title="Hurd-specific glibc API"]]
+[[!meta title="Hurd-specific glibc API"]]
These functions have meaning only under Hurd. They are needed to get port
-names that are used in native Hurd API (the RPC calls to servers). The `.defs`
+names that are used in native Hurd API (the [[RPC]]s to servers). The `.defs`
and `.h` files can be found in `/include/hurd` when all development files are
installed (Debian package `hurd-dev`.) Note that `.defs` are not included in C
programs -- they are used to produce `.h` files.
@@ -81,7 +82,13 @@ programs -- they are used to produce `.h` files.
<dt><tt><b>openport</b> (io_t port, int flags);</tt></dt>
<p>
</p>
- <dd>Open a file descriptor on a port. FLAGS are as for <tt>open</tt>; flags affected by <tt>io_set_openmodes</tt> are not changed by this. If successful, this consumes a user reference for PORT (which will be deallocated on close.) See <tt>&amp;lt;hurd/io.defs&amp;gt;</tt> and <tt>&amp;lt;hurd/io.h&amp;gt;</tt>.</dd>
+ <dd>Open a [[unix/file_descriptor]] on a [[microkernel/mach/port]]. FLAGS
+ are as for <tt>open</tt>; flags affected by <tt>io_set_openmodes</tt> are
+ not changed by this. If successful, this consumes a user reference for
+ PORT (which will be deallocated on close.) See
+ <tt>&amp;lt;hurd/io.defs&amp;gt;</tt> and
+ <tt>&amp;lt;hurd/io.h&amp;gt;</tt>.
+ </dd>
<p>
</p>
<dt><tt>task_t</tt></dt>
@@ -157,7 +164,7 @@ programs -- they are used to produce `.h` files.
</p>
<dt><tt>thread_t</tt></dt>
<dt><tt><b>hurd_thread_self</b> (void);</tt></dt>
- <dd>Return the current thread's thread port. This is a cheap operation (no system call), but it relies on Hurd signal state being set up.</dd>
+ <dd>Return the current thread's thread port. This is a cheap operation (no [[system call]]), but it relies on Hurd signal state being set up.</dd>
<p>
</p>
<dt><tt>error_t</tt></dt>
diff --git a/hurd/history.mdwn b/hurd/history.mdwn
deleted file mode 100644
index 7ee5df5a..00000000
--- a/hurd/history.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-[[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]]."]]"""]]
-
-<a href="http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00718.html" target="_top">History 1997-2003</a></dt>
-<dd> Personal view of Marcus Brinkmann about Hurd development in 1997-2003.
diff --git a/hurd/hurd_hacking_guide.mdwn b/hurd/hurd_hacking_guide.mdwn
index 0cb96f32..ea9aa259 100644
--- a/hurd/hurd_hacking_guide.mdwn
+++ b/hurd/hurd_hacking_guide.mdwn
@@ -1,13 +1,25 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-Originally written by Wolfgang Jährling, the [Hurd Hacking Guide](http://www.gnu.org/software/hurd/hacking-guide/hhg.html)
-contains an overview of some of the Hurd's features.
-Also contains a tutorial on writing your own [[translator]].
+Originally written by Wolfgang Jährling, the *Hurd Hacking Guide* contains an
+introduction to GNU Hurd and GNU Mach programming, an overview of some of the
+Hurd's features. It also contains a tutorial on writing your own
+[[translator]].
+
+Before using the code in the example (trivfs) please do read the Changelog. A lot of changes might have taken place.
+
+ * [HTML version](http://www.gnu.org/software/hurd/hacking-guide/hhg.html) for
+ browsing online,
+ * [PostScript version](http://www.gnu.org/software/hurd/hacking-guide/hhg.ps)
+ [187kB, 37 pages],
+ * [ASCII text
+ version](http://www.gnu.org/software/hurd/hacking-guide/hhg.txt) [59kB],
+ * [Texinfo source](http://www.gnu.org/software/hurd/hacking-guide/hhg.texi)
+ [60kB].
diff --git a/hurd/interface.mdwn b/hurd/interface.mdwn
new file mode 100644
index 00000000..53cd31f0
--- /dev/null
+++ b/hurd/interface.mdwn
@@ -0,0 +1,16 @@
+[[!meta copyright="Copyright © 2009, 2010 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]]."]]"""]]
+
+[[!meta title="Interfaces"]]
+
+/!\ Incomplete.
+
+[[!map pages="hurd/interface/* and !hurd/interface/*_*"
+show=title]]
diff --git a/hurd/interface/dir_link.mdwn b/hurd/interface/dir_link.mdwn
new file mode 100644
index 00000000..0f1db578
--- /dev/null
+++ b/hurd/interface/dir_link.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/23]]
diff --git a/hurd/interface/dir_lookup.mdwn b/hurd/interface/dir_lookup.mdwn
new file mode 100644
index 00000000..40e79538
--- /dev/null
+++ b/hurd/interface/dir_lookup.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/18]]
diff --git a/hurd/interface/dir_mkdir.mdwn b/hurd/interface/dir_mkdir.mdwn
new file mode 100644
index 00000000..bf386818
--- /dev/null
+++ b/hurd/interface/dir_mkdir.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/20]]
diff --git a/hurd/interface/dir_mkfile.mdwn b/hurd/interface/dir_mkfile.mdwn
new file mode 100644
index 00000000..01828a03
--- /dev/null
+++ b/hurd/interface/dir_mkfile.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/25]]
diff --git a/hurd/interface/dir_notice_changes.mdwn b/hurd/interface/dir_notice_changes.mdwn
new file mode 100644
index 00000000..5763a0a3
--- /dev/null
+++ b/hurd/interface/dir_notice_changes.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/26]]
diff --git a/hurd/interface/dir_readdir.mdwn b/hurd/interface/dir_readdir.mdwn
new file mode 100644
index 00000000..b41e8d49
--- /dev/null
+++ b/hurd/interface/dir_readdir.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/19]]
diff --git a/hurd/interface/dir_rename.mdwn b/hurd/interface/dir_rename.mdwn
new file mode 100644
index 00000000..3839487f
--- /dev/null
+++ b/hurd/interface/dir_rename.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/24]]
diff --git a/hurd/interface/dir_rmdir.mdwn b/hurd/interface/dir_rmdir.mdwn
new file mode 100644
index 00000000..d69fdd30
--- /dev/null
+++ b/hurd/interface/dir_rmdir.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/21]]
diff --git a/hurd/interface/dir_unlink.mdwn b/hurd/interface/dir_unlink.mdwn
new file mode 100644
index 00000000..a8861bac
--- /dev/null
+++ b/hurd/interface/dir_unlink.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/22]]
diff --git a/hurd/interface/file_chauthor.mdwn b/hurd/interface/file_chauthor.mdwn
new file mode 100644
index 00000000..6fcf97f1
--- /dev/null
+++ b/hurd/interface/file_chauthor.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/02]]
diff --git a/hurd/interface/file_check_access.mdwn b/hurd/interface/file_check_access.mdwn
new file mode 100644
index 00000000..5ab4af57
--- /dev/null
+++ b/hurd/interface/file_check_access.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/09]]
diff --git a/hurd/interface/file_chflags.mdwn b/hurd/interface/file_chflags.mdwn
new file mode 100644
index 00000000..6e55536b
--- /dev/null
+++ b/hurd/interface/file_chflags.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/04]]
diff --git a/hurd/interface/file_chmod.mdwn b/hurd/interface/file_chmod.mdwn
new file mode 100644
index 00000000..0bbb8d92
--- /dev/null
+++ b/hurd/interface/file_chmod.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/03]]
diff --git a/hurd/interface/file_chown.mdwn b/hurd/interface/file_chown.mdwn
new file mode 100644
index 00000000..a99bcf85
--- /dev/null
+++ b/hurd/interface/file_chown.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/01]]
diff --git a/hurd/interface/file_exec.mdwn b/hurd/interface/file_exec.mdwn
new file mode 100644
index 00000000..5f4b57f9
--- /dev/null
+++ b/hurd/interface/file_exec.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/00]]
diff --git a/hurd/interface/file_get_fs_options.mdwn b/hurd/interface/file_get_fs_options.mdwn
new file mode 100644
index 00000000..b04c70a3
--- /dev/null
+++ b/hurd/interface/file_get_fs_options.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/30]]
diff --git a/hurd/interface/file_get_storage_info.mdwn b/hurd/interface/file_get_storage_info.mdwn
new file mode 100644
index 00000000..87166c90
--- /dev/null
+++ b/hurd/interface/file_get_storage_info.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/15]]
diff --git a/hurd/interface/file_get_translator.mdwn b/hurd/interface/file_get_translator.mdwn
new file mode 100644
index 00000000..6c8565f4
--- /dev/null
+++ b/hurd/interface/file_get_translator.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/28]]
diff --git a/hurd/interface/file_get_translator_cntl.mdwn b/hurd/interface/file_get_translator_cntl.mdwn
new file mode 100644
index 00000000..befbf1a3
--- /dev/null
+++ b/hurd/interface/file_get_translator_cntl.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/29]]
diff --git a/hurd/interface/file_getcontrol.mdwn b/hurd/interface/file_getcontrol.mdwn
new file mode 100644
index 00000000..94503b23
--- /dev/null
+++ b/hurd/interface/file_getcontrol.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/11]]
diff --git a/hurd/interface/file_getfh.mdwn b/hurd/interface/file_getfh.mdwn
new file mode 100644
index 00000000..369afb17
--- /dev/null
+++ b/hurd/interface/file_getfh.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/17]]
diff --git a/hurd/interface/file_getlinknode.mdwn b/hurd/interface/file_getlinknode.mdwn
new file mode 100644
index 00000000..64efb810
--- /dev/null
+++ b/hurd/interface/file_getlinknode.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/16]]
diff --git a/hurd/interface/file_lock.mdwn b/hurd/interface/file_lock.mdwn
new file mode 100644
index 00000000..8860d24b
--- /dev/null
+++ b/hurd/interface/file_lock.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/07]]
diff --git a/hurd/interface/file_lock_stat.mdwn b/hurd/interface/file_lock_stat.mdwn
new file mode 100644
index 00000000..78abebb5
--- /dev/null
+++ b/hurd/interface/file_lock_stat.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/08]]
diff --git a/hurd/interface/file_notice_changes.mdwn b/hurd/interface/file_notice_changes.mdwn
new file mode 100644
index 00000000..f6646410
--- /dev/null
+++ b/hurd/interface/file_notice_changes.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/10]]
diff --git a/hurd/interface/file_reparent.mdwn b/hurd/interface/file_reparent.mdwn
new file mode 100644
index 00000000..80cd174e
--- /dev/null
+++ b/hurd/interface/file_reparent.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/31]]
diff --git a/hurd/interface/file_set_size.mdwn b/hurd/interface/file_set_size.mdwn
new file mode 100644
index 00000000..cf1e376c
--- /dev/null
+++ b/hurd/interface/file_set_size.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/06]]
diff --git a/hurd/interface/file_set_translator.mdwn b/hurd/interface/file_set_translator.mdwn
new file mode 100644
index 00000000..4a43bdad
--- /dev/null
+++ b/hurd/interface/file_set_translator.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/27]]
diff --git a/hurd/interface/file_statfs.mdwn b/hurd/interface/file_statfs.mdwn
new file mode 100644
index 00000000..f5086d34
--- /dev/null
+++ b/hurd/interface/file_statfs.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/12]]
diff --git a/hurd/interface/file_sync.mdwn b/hurd/interface/file_sync.mdwn
new file mode 100644
index 00000000..160c86ca
--- /dev/null
+++ b/hurd/interface/file_sync.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/13]]
diff --git a/hurd/interface/file_syncfs.mdwn b/hurd/interface/file_syncfs.mdwn
new file mode 100644
index 00000000..a52e92b0
--- /dev/null
+++ b/hurd/interface/file_syncfs.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/14]]
diff --git a/hurd/interface/file_utimes.mdwn b/hurd/interface/file_utimes.mdwn
new file mode 100644
index 00000000..ab09a58b
--- /dev/null
+++ b/hurd/interface/file_utimes.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fs/05]]
diff --git a/hurd/interface/fs.mdwn b/hurd/interface/fs.mdwn
new file mode 100644
index 00000000..4f217c5a
--- /dev/null
+++ b/hurd/interface/fs.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="fs: Filesystem"]]
+
+All these objects also implement the generic IO facilities.
+
+To get or set the translator currently running on a file, use
+[[`file_set_translator`|file_set_translator]],
+[[`file_get_translator`|file_get_translator]], or
+[[`file_get_translator_cntl`|file_get_translator_cntl]] on a port gotten with
+the `FS_LOOKUP_NOTRANS` flag to [[`dir_lookup`|dir_lookup]]. You can send
+these [[RPC]]s to a port to a translated node (looked up without
+`FS_LOOKUP_NOTRANS`) to stack a new translator on top of the existing one.
+
+[[!map pages="hurd/interface/fs/* and !hurd/interface/fs/*/*"
+show=title]]
diff --git a/hurd/interface/fs/00.mdwn b/hurd/interface/fs/00.mdwn
new file mode 100644
index 00000000..29b93731
--- /dev/null
+++ b/hurd/interface/fs/00.mdwn
@@ -0,0 +1,30 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="file_exec"]]
+
+ routine file_exec (
+ exec_file: file_t;
+ RPT
+ exec_task: task_t;
+ flags: int;
+ argv: data_t SCP;
+ envp: data_t SCP;
+ fdarray: portarray_t SCP;
+ portarray: portarray_t SCP;
+ intarray: intarray_t SCP;
+ deallocnames: mach_port_name_array_t SCP;
+ destroynames: mach_port_name_array_t SCP);
+
+Overlay a task with a file. Necessary initialization, including authentication
+changes associated with set[ug]id execution must be handled by the filesystem.
+Filesystems normally implement this by using [[`exec_newtask`|exec_newtask]] or
+[[`exec_loadtask`|exec_loadtask]] as appropriate.
diff --git a/hurd/interface/fs/01.mdwn b/hurd/interface/fs/01.mdwn
new file mode 100644
index 00000000..7b9c7a31
--- /dev/null
+++ b/hurd/interface/fs/01.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="file_chown"]]
+
+ routine file_chown (
+ chown_file: file_t;
+ RPT
+ new_owner: uid_t;
+ new_group: gid_t);
+
+Change owner and/or group.
diff --git a/hurd/interface/fs/02.mdwn b/hurd/interface/fs/02.mdwn
new file mode 100644
index 00000000..3158d2c6
--- /dev/null
+++ b/hurd/interface/fs/02.mdwn
@@ -0,0 +1,36 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="file_chauthor"]]
+
+ routine file_chauthor (
+ chauth_file: file_t;
+ RPT
+ new_author: uid_t);
+
+ Whan that Aprill with hith thoureth thoote
+ The droghte of March hath perthed to the roote,
+ And bathed every veyne in thwith licour,
+ Of which vertu engendred is the flour;
+ Whan Zephiruth eek with hith thweete breeth
+ Inthpired hath in every holt and heeth
+ The tender croppeth, and the yonge thonne
+ Hath in the Ram his halve courth yronne,
+ And thmale foweleth maken melodye,
+ That thlepen all the nyght with open ye
+ (Tho Priketh hem Nature in hir corageth),
+ Thanne longen folk to goon on pligrimageth,
+ And palmereth for to theken thtraunge thtrondeth,
+ To ferne halweth, kowthe in thondry londeth:
+ And thpethially, from every thireth ende
+ Of Engelond to Cantebury they wende,
+ The hooly blithful martyr for to theke,
+ That hem hath holpen whan that they were theeke.
diff --git a/hurd/interface/fs/03.mdwn b/hurd/interface/fs/03.mdwn
new file mode 100644
index 00000000..d697ec90
--- /dev/null
+++ b/hurd/interface/fs/03.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="file_chmod"]]
+
+ routine file_chmod (
+ chmod_file: file_t;
+ RPT
+ new_mode: mode_t);
+
+Change mode bits.
diff --git a/hurd/interface/fs/04.mdwn b/hurd/interface/fs/04.mdwn
new file mode 100644
index 00000000..d0386eab
--- /dev/null
+++ b/hurd/interface/fs/04.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="file_chflags"]]
+
+ routine file_chflags (
+ chflags_file: file_t;
+ RPT
+ new_flags: int);
+
+Change file flags.
diff --git a/hurd/interface/fs/05.mdwn b/hurd/interface/fs/05.mdwn
new file mode 100644
index 00000000..184e2ffd
--- /dev/null
+++ b/hurd/interface/fs/05.mdwn
@@ -0,0 +1,23 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="file_utimes"]]
+
+ routine file_utimes (
+ utimes_file: file_t;
+ RPT
+ new_atime: time_value_t;
+ new_mtime: time_value_t);
+
+Change access and modify times.
+
+If the microseconds value is -1 (all bits on) then the time should be set to
+the current time and the remainder of the `time_value_t` ignored.
diff --git a/hurd/interface/fs/06.mdwn b/hurd/interface/fs/06.mdwn
new file mode 100644
index 00000000..393f1a9b
--- /dev/null
+++ b/hurd/interface/fs/06.mdwn
@@ -0,0 +1,21 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="file_set_size"]]
+
+ routine file_set_size (
+ trunc_file: file_t;
+ RPT
+ new_size: loff_t);
+
+Change the size of the file. If the size increases, new blocks are
+zero-filled. After successful return, it is safe to reference mapped areas of
+the file up to `new_size`.
diff --git a/hurd/interface/fs/07.mdwn b/hurd/interface/fs/07.mdwn
new file mode 100644
index 00000000..d6408763
--- /dev/null
+++ b/hurd/interface/fs/07.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="file_lock"]]
+
+ routine file_lock (
+ lock_file: file_t;
+ RPT
+ flags: int);
+
+Apply/manipulate advisory lock.
diff --git a/hurd/interface/fs/08.mdwn b/hurd/interface/fs/08.mdwn
new file mode 100644
index 00000000..fbb3d53b
--- /dev/null
+++ b/hurd/interface/fs/08.mdwn
@@ -0,0 +1,21 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="file_lock_stat"]]
+
+ routine file_lock_stat (
+ lock_file: file_t;
+ RPT
+ out mystatus: int;
+ out otherstatus: int);
+
+Return current lock status. `mystatus` tells what kind of lock the caller has;
+`otherstatus` tells what kind of lock anyone has (including the caller).
diff --git a/hurd/interface/fs/09.mdwn b/hurd/interface/fs/09.mdwn
new file mode 100644
index 00000000..02c778c2
--- /dev/null
+++ b/hurd/interface/fs/09.mdwn
@@ -0,0 +1,24 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="file_check_access"]]
+
+ routine file_check_access (
+ file: file_t;
+ RPT
+ out allowed: int);
+
+Find out what kind of access this file permits the current user (regardless of
+the current open modes for this port). `allowed` is a bitwise *or* of
+`O_READ`, `O_WRITE`, and `O_EXEC`. This is not necessarily the same as what an
+`open` or `exec` would allow; `O_EXEC` is set for *root* even if no executable
+bits are on (in which case [[`file_exec`|file_exec]] should fail) and `O_WRITE`
+is set a directory can be modified, even though it can't be written directly.
diff --git a/hurd/interface/fs/10.mdwn b/hurd/interface/fs/10.mdwn
new file mode 100644
index 00000000..56ce204f
--- /dev/null
+++ b/hurd/interface/fs/10.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="file_notice_changes"]]
+
+ routine file_notice_changes (
+ file: file_t;
+ RPT
+ port: mach_port_send_t);
+
+Notice changes to file `file`. Send notification messages (see
+[[`fs_notify.defs`|fs_notify]]) to `port` as they occur.
diff --git a/hurd/interface/fs/11.mdwn b/hurd/interface/fs/11.mdwn
new file mode 100644
index 00000000..94aa4ee0
--- /dev/null
+++ b/hurd/interface/fs/11.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="file_getcontrol"]]
+
+ routine file_getcontrol (
+ file: file_t;
+ RPT
+ out control: mach_port_send_t);
+
+Return control port for this filesystem.
diff --git a/hurd/interface/fs/12.mdwn b/hurd/interface/fs/12.mdwn
new file mode 100644
index 00000000..b69b591b
--- /dev/null
+++ b/hurd/interface/fs/12.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="file_statfs"]]
+
+ routine file_statfs (
+ file: file_t;
+ RPT
+ out info: fsys_statfsbuf_t);
+
+Return filesystem status.
diff --git a/hurd/interface/fs/13.mdwn b/hurd/interface/fs/13.mdwn
new file mode 100644
index 00000000..2e06e0c4
--- /dev/null
+++ b/hurd/interface/fs/13.mdwn
@@ -0,0 +1,60 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="file_sync"]]
+
+ routine file_sync (
+ file: file_t;
+ RPT
+ wait: int;
+ omit_metadata: int);
+
+Sync the individual file. If `omit_metadata` is set, then it is only necessary
+for the server to updated the actual contents of the file, not any associated
+metadata.
+
+# Implementation Examples
+
+Servers that either don't keep any unsynchronized state (or don't have a
+backing store at all) can simply `return 0`. Examples: [[translator/nfs]].
+
+## [[libtrivfs]]
+
+Pass the call through to the underlying node.
+
+### [[storeio]] / [[streamio]]
+
+Instead of to the underlying node, pass the call through to the backend
+(device).
+
+## [[libnetfs]]
+
+Invoke `netfs_attempt_sync`.
+
+## [[libdiskfs]]
+
+Invoke `diskfs_file_update`.
+
+# Usage Examples
+
+## [[glibc]]
+
+ * `fdatasync`
+
+ `file_syncfs (FD, true, true)` -- invoke it on the passed file descriptor,
+ do wait for completion, do allow omitting to update the associated
+ metadata.
+
+ * `fsync`
+
+ `file_syncfs (FD, true, false)` -- invoke it on the passed file descriptor,
+ do wait for completion, don't allow omitting to update the associated
+ metadata.
diff --git a/hurd/interface/fs/14.mdwn b/hurd/interface/fs/14.mdwn
new file mode 100644
index 00000000..a13c0bd8
--- /dev/null
+++ b/hurd/interface/fs/14.mdwn
@@ -0,0 +1,67 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="file_syncfs"]]
+
+ routine file_syncfs (
+ file: file_t;
+ RPT
+ wait: int;
+ do_children: int);
+
+Synchronize the entire filesystem.
+
+This function has a companion in [[`fsys_syncfs`|fsys_syncfs]], which is
+invoked on the server's control port instead of an arbitrary node. Both of
+them are usually implemented in equivalent ways.
+
+# Implementation Examples
+
+Servers that either don't keep any unsynchronized state (or don't have a
+backing store at all) can simply `return 0`. Examples: [[translator/nfs]].
+
+The implementation typically doesn't care on which specific node (as exported
+by the implementing server) [[`file_syncfs`|file_syncfs]] is being invoked on.
+
+## [[libtrivfs]]
+
+Invoke [[`file_sync`|file_sync]] on the underlying node. Rationale: the
+underlying node represents this filesystem's backend, and once this node is
+synchronized, the whole [[libtrivfs]]-based filesystem is to be considered
+synchronized.
+
+### [[storeio]] / [[streamio]]
+
+Instead of the to underlying node, pass the call through to the backend
+(device).
+
+## [[libnetfs]]
+
+Invoke `netfs_attempt_syncfs`.
+
+## [[libdiskfs]]
+
+Invoke [[`fsys_syncfs`|fsys_syncfs]] on all active children, and invoke
+`diskfs_sync_everything` and `diskfs_set_hypermetadata`.
+
+# Usage Examples
+
+## [[glibc]]
+
+ * `sync`
+
+ `file_syncfs ("/", false, true)` -- invoke it on the process' root directory
+ (`INIT_PORT_CRDIR`), don't wait for completion, do synchronize child
+ filesystems.
+
+## [[Hurd]]
+
+ * [[`syncfs`|syncfs]]
diff --git a/hurd/interface/fs/15.mdwn b/hurd/interface/fs/15.mdwn
new file mode 100644
index 00000000..50dcce1b
--- /dev/null
+++ b/hurd/interface/fs/15.mdwn
@@ -0,0 +1,23 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="file_get_storage_info"]]
+
+ routine file_get_storage_info (
+ file: file_t;
+ RPT
+ out ports: portarray_t, dealloc;
+ out ints: intarray_t, dealloc;
+ out offsets: off_array_t, dealloc;
+ out data: data_t, dealloc);
+
+Return information on the storage used to hold this file. See the comment for
+`enum file_storage_class` in `<hurd/hurd_types.h>` the details.
diff --git a/hurd/interface/fs/16.mdwn b/hurd/interface/fs/16.mdwn
new file mode 100644
index 00000000..8ba776c1
--- /dev/null
+++ b/hurd/interface/fs/16.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="file_getlinknode"]]
+
+ routine file_getlinknode (
+ file: file_t;
+ RPT
+ out linknode: mach_port_send_t);
+
+Return the node for hard links to this potentially translated file. This
+returns a potentially unauthenticated node.
diff --git a/hurd/interface/fs/17.mdwn b/hurd/interface/fs/17.mdwn
new file mode 100644
index 00000000..8895434a
--- /dev/null
+++ b/hurd/interface/fs/17.mdwn
@@ -0,0 +1,41 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="file_getfh"]]
+
+ routine file_getfh (
+ file: file_t;
+ RPT
+ out filehandle: data_t, dealloc);
+
+Return a file handle for this file. This can be used by NFS and such. It is
+not guaranteed that this call will work; if it doesn't, then this filesystem
+cannot be NFS mounted.
+
+Currently file handles are only used by `nfsd` with the purpose of
+having some stable representation of nodes (TODO: Add references).
+The only translator library that implements `file_getfh` and the
+complementary [[`fsys_getfile`|fsys_getfile]] is `libdiskfs`, so if
+you are linking against a different library you should expect that the
+filesystem exported by your translator will not be supported by `nfsd`
+by default.
+
+If you would like your non-`libdiskfs` translator to be supported by
+`nfsd`, you should implement these two RPCs on your own. The idea is
+that to each node exported by your translator you should put in
+correspondence a unique file handle. A file handle is a 28-byte
+value. The first 4 bytes are not used. Then comes a 4-byte number
+which should identify your node somehow (`libdiskfs` uses the index
+into the internally maintained node cache). After it there comes a
+4-byte number which should bear a similar function to the `st_gen`
+field of a `stat` structure. Following this specification, you should
+be able to implement `file_getfh` and `fsys_getfile` in a proper way
+to get `nfsd` support.
diff --git a/hurd/interface/fs/18.mdwn b/hurd/interface/fs/18.mdwn
new file mode 100644
index 00000000..dbe606f3
--- /dev/null
+++ b/hurd/interface/fs/18.mdwn
@@ -0,0 +1,34 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="dir_lookup"]]
+
+ routine dir_lookup (
+ start_dir: file_t;
+ RPT
+ file_name: string_t;
+ flags: int;
+ mode: mode_t;
+ out do_retry: retry_type;
+ out retry_name: string_t;
+ out result: mach_port_send_t);
+
+Translate a file name, following all symlinks. Upon return, if `do_retry` is
+`FS_RETRY_MAGICAL` then `retry_name` specifies what to do, the list of
+possibilities is documented in `<hurd/hurd_types.h>`; if `FS_RETRY_REAUTH`,
+then `result` should be reauthenticated before being used. If `retry_name` is
+the empty string and the retry type is `FS_RETRY_NORMAL`, then no further
+[[`dir_lookup`|dir_lookup]] calls are required; `result` is the port to use.
+Otherwise the [[`dir_lookup`|dir_lookup]] call should be repeated, sent to
+`result` (or the reauthenticated port) with `retry_name` passed for
+`file_name`. This call is required to be supported by all files (even
+non-directories) if the filename is null, and should function in that case as a
+re-open of the file.
diff --git a/hurd/interface/fs/19.mdwn b/hurd/interface/fs/19.mdwn
new file mode 100644
index 00000000..86625d44
--- /dev/null
+++ b/hurd/interface/fs/19.mdwn
@@ -0,0 +1,29 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="dir_readdir"]]
+
+ routine dir_readdir (
+ dir: file_t;
+ RPT
+ out data: data_t, dealloc[];
+ entry: int;
+ nentries: int;
+ bufsiz: vm_size_t;
+ out amount: int);
+
+Read entries from the directory. Each entry is identified by an index number
+starting at 0 and running through the file. This call fetches `nentries` (or
+any convenient number if `nentries` is -1) entries starting at `entry`,
+returning an array of struct directs in `data`. The number of entries
+successfully read is returned in `amount`. If `entry` is bigger than the index
+of the last entry, then 0 is returned in `amount`. If `bufsize` is nonzero,
+never return more than `bufsize` bytes of data regardless.
diff --git a/hurd/interface/fs/20.mdwn b/hurd/interface/fs/20.mdwn
new file mode 100644
index 00000000..da57f0b5
--- /dev/null
+++ b/hurd/interface/fs/20.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="dir_mkdir"]]
+
+ routine dir_mkdir (
+ directory: file_t;
+ RPT
+ name: string_t;
+ mode: mode_t);
+
+Create directory.
diff --git a/hurd/interface/fs/21.mdwn b/hurd/interface/fs/21.mdwn
new file mode 100644
index 00000000..c562333a
--- /dev/null
+++ b/hurd/interface/fs/21.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="dir_rmdir"]]
+
+ routine dir_rmdir (
+ directory: file_t;
+ RPT
+ name: string_t);
+
+Remove directory.
diff --git a/hurd/interface/fs/22.mdwn b/hurd/interface/fs/22.mdwn
new file mode 100644
index 00000000..24fcdd9e
--- /dev/null
+++ b/hurd/interface/fs/22.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="dir_unlink"]]
+
+ routine dir_unlink (
+ directory: file_t;
+ RPT
+ name: string_t);
+
+Remove non-directory.
diff --git a/hurd/interface/fs/23.mdwn b/hurd/interface/fs/23.mdwn
new file mode 100644
index 00000000..44621d37
--- /dev/null
+++ b/hurd/interface/fs/23.mdwn
@@ -0,0 +1,27 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="dir_link"]]
+
+ routine dir_link (
+ dir: file_t;
+ RPT
+ file: file_t;
+ name: string_t;
+ excl: int);
+
+Create a hard link.
+
+If `dir` and `file` are not implemented by the same filesystem, `EXDEV` should
+be returned. If the two filesystems, however can inter-operate and guarantee
+the appropriate POSIX semantics, they can communicate by a private protocol and
+allow hard links between them. If `excl` is set, then fail if `name` already
+exists in `dir`.
diff --git a/hurd/interface/fs/24.mdwn b/hurd/interface/fs/24.mdwn
new file mode 100644
index 00000000..aac2df60
--- /dev/null
+++ b/hurd/interface/fs/24.mdwn
@@ -0,0 +1,24 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="dir_rename"]]
+
+ routine dir_rename (
+ olddirectory: file_t;
+ RPT
+ oldname: string_t;
+ newdirectory: file_t;
+ newname: string_t;
+ excl: int);
+
+Rename file -- comments similar to those for [[`dir_link`|dir_link]] apply here
+about `EXDEV`. If `excl` is set, then fail if `newname` already exists in
+`newdirectory`.
diff --git a/hurd/interface/fs/25.mdwn b/hurd/interface/fs/25.mdwn
new file mode 100644
index 00000000..9b08d54f
--- /dev/null
+++ b/hurd/interface/fs/25.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="dir_mkfile"]]
+
+ routine dir_mkfile (
+ directory: file_t;
+ RPT
+ flags: int;
+ mode: mode_t;
+ out newnode: mach_port_send_t);
+
+Create a new file without linking it into the filesystem. You still must have
+write permission on the specified directory, even though it will not actually
+be written. Return in `newnode` a port to the file. `flags` are the same as
+for [[`dir_lookup`|dir_lookup]], but `O_CREAT` and `O_TRUNC` are assumed even
+if not specified.
diff --git a/hurd/interface/fs/26.mdwn b/hurd/interface/fs/26.mdwn
new file mode 100644
index 00000000..82a7bca1
--- /dev/null
+++ b/hurd/interface/fs/26.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="dir_notice_changes"]]
+
+ routine dir_notice_changes (
+ directory: file_t;
+ RPT
+ port: mach_port_send_t);
+
+Notice changes to directory `dir`. Send directory change notifications (see
+[[`fs_notify.defs`|fs_notify]]) to `port` as they occur.
diff --git a/hurd/interface/fs/27.mdwn b/hurd/interface/fs/27.mdwn
new file mode 100644
index 00000000..9a7bd13f
--- /dev/null
+++ b/hurd/interface/fs/27.mdwn
@@ -0,0 +1,29 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="file_set_translator"]]
+
+ routine file_set_translator (
+ file: file_t;
+ RPT
+ passive_flags: int;
+ active_flags: int;
+ oldtrans_flags: int;
+ passive: data_t SCP;
+ active: mach_port_send_t);
+
+Set a translator for future lookups to a file.
+
+`passive` is the passive translator; `active` is the active translator.
+
+The `flags` are `FS_TRANS_*`, defined in `<hurd/hurd_types.h>`. `oldflags` are
+sent in an [[`fsys_goaway`|fsys_goaway]] to an existing active translator if
+there is one and it is to be killed.
diff --git a/hurd/interface/fs/28.mdwn b/hurd/interface/fs/28.mdwn
new file mode 100644
index 00000000..13ac4b7a
--- /dev/null
+++ b/hurd/interface/fs/28.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="file_get_translator"]]
+
+ routine file_get_translator (
+ file: file_t;
+ RPT
+ out translator: data_t, dealloc);
+
+Return the stored permanent translator for this file.
diff --git a/hurd/interface/fs/29.mdwn b/hurd/interface/fs/29.mdwn
new file mode 100644
index 00000000..1cc3950a
--- /dev/null
+++ b/hurd/interface/fs/29.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="file_get_translator_cntl"]]
+
+ routine file_get_translator_cntl (
+ file: file_t;
+ RPT
+ out translator_cntl: mach_port_send_t);
+
+Return the translator control port to the active translator (if any) for this
+file.
diff --git a/hurd/interface/fs/30.mdwn b/hurd/interface/fs/30.mdwn
new file mode 100644
index 00000000..653af42f
--- /dev/null
+++ b/hurd/interface/fs/30.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="file_get_fs_options"]]
+
+ routine file_get_fs_options (
+ file: file_t;
+ RPT
+ out options: data_t, dealloc);
+
+Return the options describing the way the receiving filesystem is running.
+(Suitable as an arg for [[`fsys_set_options`|fsys_set_options]]).
diff --git a/hurd/interface/fs/31.mdwn b/hurd/interface/fs/31.mdwn
new file mode 100644
index 00000000..32e7efda
--- /dev/null
+++ b/hurd/interface/fs/31.mdwn
@@ -0,0 +1,21 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 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]]."]]"""]]
+
+[[!meta title="file_reparent"]]
+
+ routine file_reparent (
+ file: file_t;
+ RPT
+ parent: mach_port_t;
+ out new_file: mach_port_send_t);
+
+Return a new file, `new_file`, with the same semantics as `file`, but with
+lookups of `..` (if `file` is a directory) redirected to `parent`.
diff --git a/hurd/interface/fsys.mdwn b/hurd/interface/fsys.mdwn
new file mode 100644
index 00000000..cea10d30
--- /dev/null
+++ b/hurd/interface/fsys.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 1992, 1993, 1994, 1995, 1996, 1997, 2002, 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]]."]]"""]]
+
+[[!meta title="fsys: Filesystem Control"]]
+
+[[!map pages="hurd/interface/fsys/* and !hurd/interface/fsys/*/*"
+show=title]]
diff --git a/hurd/interface/fsys/00.mdwn b/hurd/interface/fsys/00.mdwn
new file mode 100644
index 00000000..68e0479e
--- /dev/null
+++ b/hurd/interface/fsys/00.mdwn
@@ -0,0 +1,23 @@
+[[!meta copyright="Copyright © 1992, 1993, 1994, 1995, 1996, 1997, 2002, 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]]."]]"""]]
+
+[[!meta title="fsys_startup"]]
+
+ routine fsys_startup (
+ bootstrap: mach_port_t;
+ RPT
+ openflags: int;
+ control_port: mach_port_send_t;
+ out realnode: mach_port_send_t);
+
+Sent by filesystem on its bootstrap port upon startup. `realnode` is the node
+this filesystem is the translator for, opened with flags `flags` (`O_NOTRANS`
+is assumed even if not provided).
diff --git a/hurd/interface/fsys/01.mdwn b/hurd/interface/fsys/01.mdwn
new file mode 100644
index 00000000..9cb95de5
--- /dev/null
+++ b/hurd/interface/fsys/01.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 1992, 1993, 1994, 1995, 1996, 1997, 2002, 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]]."]]"""]]
+
+[[!meta title="fsys_goaway"]]
+
+ routine fsys_goaway (
+ fsys: fsys_t;
+ RPT
+ flags: int);
+
+Filesystem should go away. Bye.
diff --git a/hurd/interface/fsys/02.mdwn b/hurd/interface/fsys/02.mdwn
new file mode 100644
index 00000000..63b84c48
--- /dev/null
+++ b/hurd/interface/fsys/02.mdwn
@@ -0,0 +1,33 @@
+[[!meta copyright="Copyright © 1992, 1993, 1994, 1995, 1996, 1997, 2002, 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]]."]]"""]]
+
+[[!meta title="fsys_getroot"]]
+
+ routine fsys_getroot(
+ fsys: fsys_t;
+ RPT
+ #ifdef FSYS_GETROOT_UREPLY
+ ureplyport ureply: mig_reply_port_t;
+ #endif
+ dotdot_node: mach_port_send_t;
+ gen_uids: idarray_t;
+ gen_gids: idarray_t;
+ flags: int;
+ out do_retry: retry_type;
+ out retry_name: string_t;
+ out file: mach_port_send_t);
+
+Return a file to the root of the filesystem. `flags` are as for
+[[`dir_lookup`|dir_lookup]] (but `O_CREAT` and `O_EXCL` are not meaningful).
+`do_retry`, `retry_name`, and `result` are as for [[`dir_lookup`|dir_lookup]].
+The port should be authenticated with `gen_uids` and `gen_gids` (except, of
+course, for `FS_RETRY_REAUTH` and `FS_RETRY_MAGICAL). `dotdot_node` is an
+unauthenticated port for the directory in which this root is located.
diff --git a/hurd/interface/fsys/03.mdwn b/hurd/interface/fsys/03.mdwn
new file mode 100644
index 00000000..b0c033c2
--- /dev/null
+++ b/hurd/interface/fsys/03.mdwn
@@ -0,0 +1,22 @@
+[[!meta copyright="Copyright © 1992, 1993, 1994, 1995, 1996, 1997, 2002, 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]]."]]"""]]
+
+[[!meta title="fsys_getfile"]]
+
+ routine fsys_getfile (
+ fsys: fsys_t;
+ RPT
+ gen_uids: idarray_t;
+ gen_gids: idarray_t;
+ filehandle: data_t;
+ out file: mach_port_send_t);
+
+Get a file given a file handle (see [[`file_getfh`|file_getfh]]).
diff --git a/hurd/interface/fsys/04.mdwn b/hurd/interface/fsys/04.mdwn
new file mode 100644
index 00000000..7b370d2b
--- /dev/null
+++ b/hurd/interface/fsys/04.mdwn
@@ -0,0 +1,58 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="fsys_syncfs"]]
+
+ routine fsys_syncfs (
+ fsys: fsys_t;
+ RPT
+ wait: int;
+ do_children: int);
+
+Synchronize the entire filesystem.
+
+This function has a companion in [[`file_syncfs`|file_syncfs]], which is
+invoked on an arbitrary node instead of the server's control port. Both of
+them are usually implemented in equivalent ways.
+
+# Implementation Examples
+
+Servers that either don't keep any unsynchronized state (or don't have a
+backing store at all) can simply `return 0`. Examples: [[translator/symlink]],
+[[translator/nfs]].
+
+## [[libtrivfs]]
+
+Invoke [[`file_sync`|file_sync]] on the underlying node. Rationale: the
+underlying node represents this filesystem's backend, and once this node is
+synchronized, the whole [[libtrivfs]]-based filesystem is to be considered
+synchronized.
+
+### [[storeio]] / [[streamio]]
+
+Instead of to the underlying node, pass the call through to the backend
+(device).
+
+## [[libnetfs]]
+
+Invoke `netfs_attempt_syncfs`.
+
+## [[libdiskfs]]
+
+Invoke [[`fsys_syncfs`|fsys_syncfs]] on all active children, and invoke
+`diskfs_sync_everything` and `diskfs_set_hypermetadata`.
+
+# Usage Examples
+
+## [[libdiskfs]]
+
+In the implementations of both [[`file_syncfs`|file_syncfs]] and
+[[`fsys_syncfs`|fsys_syncfs]], [[`fsys_syncfs`|fsys_syncfs]] is invoked on all
+active children.
diff --git a/hurd/interface/fsys/05.mdwn b/hurd/interface/fsys/05.mdwn
new file mode 100644
index 00000000..5caf6b17
--- /dev/null
+++ b/hurd/interface/fsys/05.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="fsys_set_options"]]
+
+ routine fsys_set_options (
+ fsys: fsys_t;
+ RPT
+ options: data_t;
+ do_children: int);
+
+Pass a server-specific options string. This usually includes flags similar to
+command line options, e.g., `--readonly`, or `--sync=30`.
diff --git a/hurd/interface/fsys/06.mdwn b/hurd/interface/fsys/06.mdwn
new file mode 100644
index 00000000..c8ccbed8
--- /dev/null
+++ b/hurd/interface/fsys/06.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="fsys_getpriv"]]
+
+ routine fsys_getpriv (
+ fsys: fsys_t;
+ RPT
+ out host_priv: mach_port_send_t;
+ out device_master: mach_port_send_t;
+ out fstask: mach_port_send_t);
+
+This is only implemented by bootstrap filesystems.
diff --git a/hurd/interface/fsys/07.mdwn b/hurd/interface/fsys/07.mdwn
new file mode 100644
index 00000000..4700416d
--- /dev/null
+++ b/hurd/interface/fsys/07.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="fsys_init"]]
+
+ routine fsys_init (
+ fsys: fsys_t;
+ sreplyport reply_port: sreply_port_t;
+ proc_server: mach_port_send_t;
+ auth_handle: auth_t);
+
+This is only implemented by bootstrap filesystems.
diff --git a/hurd/interface/fsys/08.mdwn b/hurd/interface/fsys/08.mdwn
new file mode 100644
index 00000000..42ac277d
--- /dev/null
+++ b/hurd/interface/fsys/08.mdwn
@@ -0,0 +1,23 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="fsys_forward"]]
+
+ routine fsys_forward (
+ server: mach_port_t;
+ RPT
+ requestor: mach_port_send_t;
+ argv: data_t);
+
+Ask `server` to provide [[`fsys`|fsys]] translation service for us.
+`requestor` is the bootstrap port supplied to the original translator, and
+`argv` are the command line arguments. If the recipient accepts the request,
+he (or some delegate) should send [[`fsys_startup`|fsys_startup]] to
+`requestor` to start the filesystem up.
diff --git a/hurd/interface/fsys/09.mdwn b/hurd/interface/fsys/09.mdwn
new file mode 100644
index 00000000..fa5c4117
--- /dev/null
+++ b/hurd/interface/fsys/09.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="fsys_get_options"]]
+
+ routine fsys_get_options (
+ server: fsys_t;
+ RPT
+ out options: data_t, dealloc);
+
+Return the options describing the operation of the receiving filesystem
+(sutiable for [[`fsys_set_options`|fsys_set_options]]).
diff --git a/hurd/interface/fsys_forward.mdwn b/hurd/interface/fsys_forward.mdwn
new file mode 100644
index 00000000..1ab16003
--- /dev/null
+++ b/hurd/interface/fsys_forward.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fsys/08]]
diff --git a/hurd/interface/fsys_get_options.mdwn b/hurd/interface/fsys_get_options.mdwn
new file mode 100644
index 00000000..5a48d24d
--- /dev/null
+++ b/hurd/interface/fsys_get_options.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fsys/09]]
diff --git a/hurd/interface/fsys_getfile.mdwn b/hurd/interface/fsys_getfile.mdwn
new file mode 100644
index 00000000..d292f265
--- /dev/null
+++ b/hurd/interface/fsys_getfile.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fsys/03]]
diff --git a/hurd/interface/fsys_getpriv.mdwn b/hurd/interface/fsys_getpriv.mdwn
new file mode 100644
index 00000000..6c4332ba
--- /dev/null
+++ b/hurd/interface/fsys_getpriv.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fsys/06]]
diff --git a/hurd/interface/fsys_getroot.mdwn b/hurd/interface/fsys_getroot.mdwn
new file mode 100644
index 00000000..ff03c482
--- /dev/null
+++ b/hurd/interface/fsys_getroot.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fsys/02]]
diff --git a/hurd/interface/fsys_goaway.mdwn b/hurd/interface/fsys_goaway.mdwn
new file mode 100644
index 00000000..bf431a08
--- /dev/null
+++ b/hurd/interface/fsys_goaway.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fsys/01]]
diff --git a/hurd/interface/fsys_init.mdwn b/hurd/interface/fsys_init.mdwn
new file mode 100644
index 00000000..2be8dfb9
--- /dev/null
+++ b/hurd/interface/fsys_init.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fsys/07]]
diff --git a/hurd/interface/fsys_set_options.mdwn b/hurd/interface/fsys_set_options.mdwn
new file mode 100644
index 00000000..7f977c20
--- /dev/null
+++ b/hurd/interface/fsys_set_options.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fsys/05]]
diff --git a/hurd/interface/fsys_startup.mdwn b/hurd/interface/fsys_startup.mdwn
new file mode 100644
index 00000000..21cbdee3
--- /dev/null
+++ b/hurd/interface/fsys_startup.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fsys/00]]
diff --git a/hurd/interface/fsys_syncfs.mdwn b/hurd/interface/fsys_syncfs.mdwn
new file mode 100644
index 00000000..88955524
--- /dev/null
+++ b/hurd/interface/fsys_syncfs.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=fsys/04]]
diff --git a/hurd/io_path.mdwn b/hurd/io_path.mdwn
index b55dc20f..492edffe 100644
--- a/hurd/io_path.mdwn
+++ b/hurd/io_path.mdwn
@@ -1,14 +1,23 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2010, 2011 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-# read
+[[!meta title="I/O Path"]]
+
+[[!tag open_issue_documentation]] <!-- Someone still needs to make a pass over
+this text. -->
+
+[[!toc]]
+
+
+# `read`, [[libtrivfs]]
[[glibc]]'s `read` is in `glibc/sysdeps/mach/hurd/read.c:__libc_read`.
@@ -29,7 +38,7 @@ call `hurd/trans/hello.c:trivfs_S_io_read`.
A 2048 byte buffer is provided.
-> `trivfs_S_io_read`. Depending on the internatl state, either a new memory
+> `trivfs_S_io_read`. Depending on the internal state, either a new memory
> region is set-up (and returned as out-of-line data), or the desired amount of
> data is returned in-line.
@@ -59,9 +68,7 @@ Leave server-side RPC stub `_Xio_read`.
> Back in `__libc_read`.
----
-
-Samuel:
+# `read`, [[hurd/translator/ext2fs]]/[[hurd/libdiskfs]]
(For example) [[translator/ext2fs]] server, enter server-side RPC stub
`hurd.obj/libdiskfs/ioServer.c:_Xio_read`. Process stuff, call
@@ -88,3 +95,15 @@ A 2048 byte buffer is provided.
`hurd/libstore/rdwr.c:store_read`, which eventually calls `device_read`,
which is an [[RPC]], i.e., that actually gets into the kernel calling
`gnumach/linux/dev/glue/block.c:device_read`.
+
+ * ext2fs eventually finishes the data_request() function, the kernel installs
+ the page into the process that got a fault.
+
+
+# Documentation
+
+ * In [*Linux kernel design patterns - part
+ 3*](http://lwn.net/Articles/336262/) (2009-06-22), Neil Brown gives a
+ nice overview of the related layering inside the Linux kernel,
+ including the VFS layer, page cache and directory entry cache
+ (dcache).
diff --git a/hurd/libchannel.mdwn b/hurd/libchannel.mdwn
index d3dff162..3e19fb18 100644
--- a/hurd/libchannel.mdwn
+++ b/hurd/libchannel.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2010 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
# libchannel
@@ -60,3 +60,9 @@ library to implement specialized channel libraries, e.g. *libaudio*
and *libnetwork* or similar.
So work on *libchannel* will continue, in one form or another.
+
+
+# Related
+
+ * [*Van Jacobson's network channels*](http://lwn.net/Articles/169961/)
+ (2006-01-31) by Jonathan Corbet.
diff --git a/hurd/libfshelp.mdwn b/hurd/libfshelp.mdwn
new file mode 100644
index 00000000..4eda91b6
--- /dev/null
+++ b/hurd/libfshelp.mdwn
@@ -0,0 +1,29 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+TODO.
+
+
+# Open Issues
+
+[[!tag open_issue_hurd]]
+
+ * IRC, unknown channel, unknown date
+
+ <flavioc> antrik, i had some problems with CLISP. it goes into an infinite loop when there's no stdin or stdout (fshelp closes them when a translator starts). At first I tried to patch it but CLISP has very intricate dependencies on them, so I just created a wraper program (run-lisp-trans) that opens /dev/null as stdin and stdout and then exec's clisp
+ <marcus> flavioc, antrik: I would suggest to modify libfshelp to start translators with stdin/stdout mapped to /dev/null.
+ <marcus> or is there a good reason not to?
+ <flavioc> marcus, the problem is in clisp :-), it should not expect that stdin/stdout are always open
+ <marcus> flavioc: I agree, but there is really no point in making it hard. many programs will fail if stdin, stdout or stderr are not occupied. historically, they expect them to be there, so IMO libfshelp should be changed
+ <marcus> flavioc: it's a simple solution, works everywhere and shouldn't do any harm :)
+ <flavioc> marcus, I see. should I propose that on the mailing list? :-)
+ <marcus> flavioc: it might be simpler to just crack the svn server and sneak it in :)
+ <marcus> if you submit a patch I will look at it and check it in if it is ok
+ <marcus> and see if Roland is still watching ... :D
diff --git a/hurd/libhello_example.mdwn b/hurd/libhello_example.mdwn
index 9b4640e7..2c5490e2 100644
--- a/hurd/libhello_example.mdwn
+++ b/hurd/libhello_example.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
## Howto write a Hurd library
diff --git a/hurd/libihash.mdwn b/hurd/libihash.mdwn
new file mode 100644
index 00000000..03ebae82
--- /dev/null
+++ b/hurd/libihash.mdwn
@@ -0,0 +1,57 @@
+[[!meta copyright="Copyright © 2009, 2010, 2011 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_hurd]]
+
+ * Hurd libihash
+
+ * old
+
+ * new
+
+ * hurd-l4 libhurd-ihash
+
+ * [[viengoos libhurd-ihash|microkernel/viengoos/projects/new_hash_function]]
+
+ IRC, unknown channel, unknown date
+
+ <neal> so, we need a new ihash implementation
+ <neal> marcusb: When 80% full, the collision rate is very high.
+ <neal> marcusb: I tested using 512mb / 4096 entries
+ <neal> marcusb: Changing the load factor to 30% resulted in my program running more than an order of magnitude faster.
+ <marcusb> yeah, it shouldn't get so full
+ <marcusb> don't we do an exponential back-off in the array size?
+ <marcusb> of course it's clear we can do much better
+ <marcusb> the ihash algo is very simple
+ <marcusb> I'm not even sure it makes much sense to have a generic library
+
+
+# Alternatives?
+
+ * glibc
+
+ * include/inline-hashtab.h
+
+ * locale/programs/simple-hash.h
+
+ * misc/hsearch_r.c
+
+ * NNS; cf. f46f0abfee5a2b34451708f2462a1c3b1701facd
+
+ * libstdc++: `unordered_map`, `tr1/unordered_map`, `ext/hash_map`
+
+ * <http://cmph.sourceforge.net/>
+
+ * <http://libhashish.sourceforge.net/>
+
+ * <http://www.azillionmonkeys.com/qed/hash.html>
+
+ * CCAN's htable, idtree
diff --git a/hurd/libnetfs.mdwn b/hurd/libnetfs.mdwn
new file mode 100644
index 00000000..8625f8bc
--- /dev/null
+++ b/hurd/libnetfs.mdwn
@@ -0,0 +1,298 @@
+[[!meta copyright="Copyright © 2007, 2008, 2010 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]]."]]"""]]
+
+#libnetfs
+
+##What This Is
+
+This document is an attempt at a short overview of the main concepts
+used in the process of development of translators using
+*libnetfs*. You will **not** find here a detailed description of the
+required callbacks (for this take a look at
+<http://www.debian.org/ports/hurd/reference-manual/hurd.html>). You
+will **not** find a complete example of code either (usually,
+*unionfs* is suggested as an example)
+
+##What libnetfs Is
+
+*libnetfs* is a Hurd library used in writing translators providing
+some virtual directory structures. For example, if you would like to
+create a translator which shows a *.tar* archive in a unpacked way,
+you will definitely want to use *libnetfs*. However, it is important
+to understand one thing: real filesystem servers (like *ext3* and
+such) do **not** use *libnetfs*, instead, they rely on *libdiskfs*,
+which is, generally speaking, seriously different from *libnetfs*.
+
+All in all, *libnetfs* is the library you would choose when you want
+to write a translator which will show a file (or a directory) in a
+modified way (for example, if you'd like to show only *.sh* files or
+make an archive look unpacked). As different from *[[libtrivfs]]*, using
+*libnetfs*, you can show to your clients not just a single file, but a
+whole directory tree.
+
+##How It Works: Short Description
+
+With the aid of *libnetfs* a translator (supposedly) publishes a
+directory tree. All lookups in this directory tree are directed to the
+translator and the latter is free to provide whatever (consistent)
+information as the result of the lookup. Of course, all other usual
+requests like reading, writing, setting a translator, etc. are
+directed to the translator, too. The translator has either to
+implement the required functionality in the corresponding callback or
+just return an appropriate error code (for example, EOPNOTSUPP), if
+the callback is compulsory.
+
+##The Main Concepts: Nodes
+
+The most fundamental thing to understand about *libnetfs* is the
+notion of a **node**. Nearly always there are two types of nodes in a
+*libnetfs*-based translator:
+
+* Generic **node**, defined in *&lt;hurd/netfs.h&gt;*. This node contains
+ information read and written by the programmer (like field
+ *nn_stat*), as well as some internal information (like fields
+ *references* and *transbox*). Of course, the programmer is free to
+ use these fields at will, but they should know what they are doing.
+
+* Custom **netnode**, defined by the programmer and containing only
+ the information valuable for the programmer, but not for *libnetfs*.
+
+The generic node is probably the most important primitive introduced
+by *libnetfs*. Callbacks receive the nodes they should work with as
+parameters; some of them return nodes as the result of their
+operation. To some extent of certainty, a *libnetfs* node can be
+perceived similarly to a filesystem node -- the building-brick out of
+which everything is composed.
+
+As it can be seen from the definition in *&lt;hurd/netfs.h&gt;*, a reference
+to a netnode is stored in each generic node. In a way, a netnode can
+be perceived as the custom attachment to the information contained in
+a generic node. The link between these is quite strong. At first this
+might not look like a very important thing, but let's analyze a simple
+example: you would like to show the contents of a directory in a
+filtered way. As a filtering criterion you would like to use the
+result of the execution of a command specified as a command line
+argument to the translator. If a client looks up a 'file' in the
+directory tree provided by the translator, the latter should feed the
+name of the file to the filtering command and decide whether to hide
+this file or not upon receiving the result.
+
+To avoid trouble, the translator had better use the *absolute* name of
+'file'. Obviously, the translator would like to organize all of the
+nodes in a hierarchy. To make things work more or less fast, it is a
+reasonable decision to construct the absolute path to a node at
+creation and store it inside the netnode (which, in turn, is inside
+the node). However, such an approach is not a good one when using
+*libnetfs*. Generally speaking, a *new* generic node is created at
+each lookup, and, together with it, a new netnode is constructed. The
+conclusion is that a *libnetfs* node is a rather transient phenomenon,
+and when we want to store some information which is relatively
+expensive to obtain, we need something more than a generic node +
+netnode. At this moment most of the translators (like *unionfs*,
+*ftpfs*, etc.) introduce the concept of a **light node**.
+
+A **light node** is a user-defined node which contains some
+information expensive to obtain, which had better not be stored
+directly in a netnode. All netnodes, contained in generic nodes which
+resulted in lookups of the same file, share references (pointers,
+actually) to a single light node. Light nodes are created when the
+first attempt to lookup a file is done, and they are destroyed when no
+netnodes reference them. It is very important to understand that
+*libnetfs* does **not** enforce the programmer to define light
+nodes. Everything can be stored within netnodes inside generic
+nodes. Light nodes are just a matter of organizing data in an
+efficient way.
+
+Probably, you are already thinking ``Why cannot *netnodes* be shared?
+Why do we need yet another notion?''. The answer is that the link
+between a netnode and a *libnetfs* node should be one-to-one, because
+netnodes usually store information specific of *only one* node, whilst
+light nodes contain information common to several nodes. If one chose
+to share netnodes, one would not be able to store additional
+information per a *libnetfs* node, and this is quite a serious problem
+in most practical problems.
+
+##Why a libnetfs Node Is Not Quit a Filesystem Node
+
+The most demonstrative argument in this case is the definition of
+*struct node* in *&lt;hurd/netfs.h&gt;*. If you try to find in this
+definition some reference to other generic node called *parent*, or an
+array of references called *children* (which would be quite classical
+for a member of a hierarchy), you will fail. There are fields *next*
+and *prevp*, but these are for internal use and only include the node
+in an internally maintained *list*, not a tree. Surprisingly enough,
+*libnetfs* does **not** manage the tree-like structure for you. You
+have to do that *on you own*. This is another moment when light nodes
+come triumphantly to light. Most *libnetfs*-based translators organize
+their light nodes in the tree-like structure reflecting the directory
+tree shown to the user. When a lookup is performed, a light node is
+either created or reused (if it has already been created in a previous
+lookup). The result of the lookup is a *libnetfs* node created basing
+on the information contained in the found light node.
+
+From the point of view of a *libnetfs* programmer, light nodes are the
+conceptual filesystem nodes. A translator knows who is the parent of
+who *only* from studying the links between light nodes. And a light
+node does contain a reference to its parent and an array of references
+to children. When a translator is asked to fetch a file, it finds this
+file in the tree of light nodes firstly, creates a *libnetfs* node
+based on the found light node, and returns the latter as the
+result. Therefore, it is not quite right to perceive *libnetfs* nodes
+as filesystem nodes. Instead, the focus of attention should stay upon
+light nodes.
+
+##How It Works: A More Verbose Description
+
+At first let us see how the a *libnetfs*-based translator responds to
+lookup requests. At the beginning the *netfs_attempt_lookup* callback
+is called. It knows the generic *libnetfs* node corresponding to the
+directory under which the lookup shall take place, the name it has to
+lookup, and the information about the user requesting the lookup. This
+callback is supposed to create a new *libnetfs* node corresponding to
+the requested file or return an error. As it has been said before,
+usually translators browse their hierarchy of light nodes to know
+whether a file exists within a directory or not. Note that
+*netfs_attempt_lookup* does not know the flags with which a
+*file_name_lookup* call is done, what it has to do is just to provide
+a new node or return an error.
+
+Then *netfs_validate_stat* callback is called and a node and
+information about the user is passed inside. This callback is a rather
+simple one: it has to assure that the *nn_stat* field of the supplied
+node is valid and up to date. Translators which mirror parts of real
+filesystem, like *unionfs*, usually treat the node corresponding to the
+root of their node hierarchy in a specific way. The reason is that the
+root node is not a mirror of a real file -- it is almost always a
+directory in translators of this kind.
+
+The third stage is an invocation of
+*netfs_check_open_permissions*. This callback is, probably, one of the
+simplest in most cases. It knows some information about the user
+requesting the open, about the node that is about to be returned to
+the user, and about the flags supplied by the user in the call to
+*file_name_lookup*. Besides that, this callback is provided with the
+information whether the requested lookup ended in creating a new file
+or whether the requested file already
+existed. *netfs_check_open_permissions* has to decide if the user has
+the right to access the resulting file under the permissions specified
+in flags. It has to return either 0 or the corresponding error.
+
+These are the most basic steps of the lookup. Note that if the file
+was requested with O_CREAT flag and *netfs_attempt_lookup* could not
+locate this file, *netfs_attempt_create_file* is called. In many ways
+a typical implementation of this callback might be similar to the
+implementation of *netfs_attempt_lookup*. However,
+*netfs_attempt_create_file* will most probably have to do less checks.
+
+Let's move to listing the contents of a directory. The corresponding
+callback, *netfs_get_dirents* is triggered when a user invokes
+*dir_readdir* upon a directory provided by the translator. The
+parameters of *netfs_get_dirents* are therefore very similar to the
+parameters of *dir_readdir*. Actually, translator *fakeroot* only
+calls *dir_readdir* in this callback and nothing more. In translators
+which need more complex handling (like filtering the contents) the
+code of this is more sophisticated. Sometimes the listing of directory
+entries happens in several stages: *netfs_get_dirents* may call
+something like *node_entries_get*, and the latter may invoke
+*dir_entries_get*. The latter function calls *dir_readdir* and
+converts the result to an array of *struct dirent*
+'s. *node_entries_get* converts the array of *struct dirent* 's to a
+linked list and decides whether a specific file shall be included in
+the result or not. Finally, *netfs_get_dirents* converts the linked
+list provided by *node_entries_get* to the format of the result of
+*dir_readdir* and returns the converted data to the user. The
+described stages are the stages of listing directory entries in
+*unionfs*, for instance.
+
+Other callbacks are, generally speaking, less sophisticated. For
+example, when the client wants to read (write) from a node provided
+by *netfs_attempt_lookup*, the callback *netfs_attempt_read*
+(*netfs_attempt_write*) is triggered. Both callbacks have sets of
+parameters to the corresponding *io_read* and *io_write* functions.
+
+While browsing the code of very many *libnetfs*-based translators, you
+might notice that they define callbacks starting with
+*netfs&#95;S&#95;*. Usually a name similar to that of one of the file
+management function follows (like netfs&#95;S&#95;*dir_lookup*). These
+callbacks are triggered when the corresponding functions are called on
+files shown by the translator. Such translators override parts of the
+core functionality provided by *libnetfs* to achieve better
+performance or to solve specific problems.
+
+##Synchronization is Crucial
+
+A *libnetfs* programmer shall always keep in mind that, as different
+from *[[libtrivfs]]*-based translators, *libnetfs*-based translators are
+always multithreaded. To guard data against damage each node
+incorporates a lock. Moreover, each light node usually contains a
+lock, too. This happens because *libnetfs* nodes and light nodes are
+loosely coupled and are often processed separately.
+
+##Node Cache
+
+Most of *libnetfs* translators organize a *node cache*. However, this
+structure is not a real cache. The idea is to hold some control over
+life and death of *libnetfs* nodes. The cache is usually a
+doubly-linked list: each netnode contains a reference to the previous
+node in the cache and a reference to the next one. When a new node is
+created (for example, as a result of invocation of
+*netfs_attempt_lookup*), it is registered in the cache and its number
+of references is increased. It means that, by putting the node in the
+cache, the translators gets hold of an extra reference to the
+node. When in subsequent lookups the same nodes will be requested, the
+translator can just reuse an already existing node.
+
+Of course, the cache is limited in size. When the cache gets
+overgrown, the nodes located at the tail of the list are removed from
+the cache and the references to them are dropped. This triggers their
+destruction (undertaken by *libnetfs*).
+
+##What Files Are Usually Created
+
+If you take into a look at the sources *ftpfs* or *unionfs* you will
+notice files with names similar to the following:
+
+* cache.{c,h} -- here the node implementation of the node cache
+ resides.
+
+* lib.{c,h}, dir.{c,h}, fs.{c,h} -- these contain the implementation
+ of some internals. For example, the function *dir_entriesget*
+ mentioned in the description of the process of listing directory
+ entries, will most probably reside in one of these files.
+
+* options.{c,h} -- here the option parsing mechanism is usually
+ placed. Argp parsers are implemented here.
+
+* &lt;*translator_name*&gt;.{c,h}, netfs.c -- the implementation of *netfs_\**
+ callbacks will most probably lie in these files.
+
+##What Netnodes and Light Nodes Usually Contain
+
+A **netnode** usually contains a reference to a light node, some flags
+describing the state of the associated generic *libnetfs* node, and
+the references to the previous and the next elements in the node
+cache.
+
+A **light node** usually contains the name of the file associated with
+this light node, the length of this name, some flags describing the
+state of this light node. To make a light node fully usable in a
+multithreaded program, a lock and a reference counter are almost
+always incorporated in it. Since light nodes are organized in a
+hierarchical way, they contain a reference to their parent, a
+reference to their first child, and references to their siblings
+(usually not very descriptively called *next* and *prevp*).
+
+##The End
+
+I very much hope this piece of text was at least a little
+helpful. Here I tried to explain the things which I understood least
+when I started learning *libnetfs* and which confused me most. Feel
+free to complete this introduction :-)
diff --git a/hurd/libpager.mdwn b/hurd/libpager.mdwn
index 91beddfc..99f28f2a 100644
--- a/hurd/libpager.mdwn
+++ b/hurd/libpager.mdwn
@@ -1,12 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Mach's [[microkernel/mach/external_pager_mechanism]].
@@ -14,3 +15,7 @@ Mach [[microkernel/mach/IPC]]'s [[microkernel/mach/ipc/sequence_numbering]].
[GNU Hurd Reference Manual: 4.2 Pager
Library](http://www.gnu.org/software/hurd/doc/hurd_5.html#SEC32).
+
+# Open Issues
+
+ * [[open_issues/linux_vmsig]]
diff --git a/hurd/libports.mdwn b/hurd/libports.mdwn
new file mode 100644
index 00000000..28274338
--- /dev/null
+++ b/hurd/libports.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+*libports* is a convenience library for easier handling of [[Mach
+ports|microkernel/mach/port]]. It is documented in the [[Reference_Manual]].
+
+*libports* is not (at least, not for now) a generalization / abstraction of
+Mach ports to the functionality the Hurd needs, that is, it is not meant to
+provide an interface independently of the underlying [[microkernel]].
+
+*libports* does not itself depend on *[[libthreads]]*, but the appropriate
+threading hooks are used if present, that is if *[[libthreads]]* is used by
+another component.
diff --git a/hurd/libstore.mdwn b/hurd/libstore.mdwn
index ab649ebc..8eac39fe 100644
--- a/hurd/libstore.mdwn
+++ b/hurd/libstore.mdwn
@@ -1,33 +1,36 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+`libstore` is used to provide a generic interface to access data (read/write)
+on backing stores.
+
+It more than just a thin layer between [[GNU Mach|microkernel/mach/gnumach]]
+devices (`hd0` for example) and the device node below `/dev/`...
-`libstore` is more than just a thin layer between
-[[GNU_Mach|microkernel/mach/gnumach]] devices (`hd0` for example) and the
-device node below `/dev`...
# Available Stores
-* `device`: raw device access, used for access to `hd0`, etc.
-* `file`: use a common file as some kind of block device.
-* `zero`: kind of an empty block device.
-* `task`: mach task store backend. TODO: what's this?
-* `ileave`: interleave store (striping).
-* `concat`: concatenate stuff.
-* `remap`: remap stuff.
-* `query`: TODO: what's this?
-* `copy`: TODO: what's this good for?
-* `gunzip`: `gunzip` data on the fly.
-* `bunzip2`: `bunzip2` data on the fly.
-* `nbd`: network block device (Linux-compatible).
-* `url`: typed store with URL syntax.
-* `typed`: typed store (chainable stores thingy).
+[[!map pages="*_store and !*/discussion"
+show=title]]
At <http://www.kataplop.net/pub/info/projets> you can find some effort to make
some crypto store.
+
+At <http://www.trek.eu.org/devel/hurd/crypt-trans-0.0.3.tgz>, another package
+can be found.
+
+
+# Examples
+
+[[!inline
+pages="hurd/libstore/examples/* and !*/discussion"
+show=0
+feeds=no]]
diff --git a/hurd/libstore/bunzip2_store.mdwn b/hurd/libstore/bunzip2_store.mdwn
new file mode 100644
index 00000000..bd5fc914
--- /dev/null
+++ b/hurd/libstore/bunzip2_store.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2007, 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]]."]]"""]]
+
+[[!meta title="bunzip2 store: bunzip2 data on the fly"]]
diff --git a/hurd/libstore/concat_store.mdwn b/hurd/libstore/concat_store.mdwn
new file mode 100644
index 00000000..1d3a895a
--- /dev/null
+++ b/hurd/libstore/concat_store.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2007, 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]]."]]"""]]
+
+[[!meta title="concat store: concatenate"]]
diff --git a/hurd/libstore/copy_store.mdwn b/hurd/libstore/copy_store.mdwn
new file mode 100644
index 00000000..5df5d220
--- /dev/null
+++ b/hurd/libstore/copy_store.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 2000, 2007, 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]]."]]"""]]
+
+[[!meta title="copy store: copy-on-write; discard changes on termination"]]
+
+A *copy* store is meaningful only with respect to a child store. What a *copy*
+store does is to read the child store's entire contents into memory at startup
+time and then use that buffer as the contents of the store thereafter. (The
+code for this is in `libstore/copy.c`.)
+
+Because of how the interfaces are specified, reading the entire contents of a
+[[*zero* store|zero store]] in fact means just `vm_allocate`ing fresh memory.
+So, a *copy* store based on a [[*zero* store|zero store]] is just what you'd
+get from `vm_allocate`ing some memory and passing it into
+`store_buffer_create`.
+
+See a [[ramdisk example|examples/ramdisk]].
diff --git a/hurd/libstore/device_store.mdwn b/hurd/libstore/device_store.mdwn
new file mode 100644
index 00000000..4b97f8cc
--- /dev/null
+++ b/hurd/libstore/device_store.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2007, 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]]."]]"""]]
+
+[[!meta title="device store: Mach device access"]]
diff --git a/hurd/libstore/examples/ramdisk.mdwn b/hurd/libstore/examples/ramdisk.mdwn
new file mode 100644
index 00000000..33d33601
--- /dev/null
+++ b/hurd/libstore/examples/ramdisk.mdwn
@@ -0,0 +1,32 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+ $ settrans --create --active ramdisk0 /hurd/storeio -T copy zero:32M
+ $ mkfs.ext2 -F -b 4096 ramdisk0
+ [...]
+ $ settrans --active --orphan ramdisk0 /hurd/ext2fs.static ramdisk0
+ $ df -h ramdisk0/
+ df: Warning: cannot read table of mounted file systems
+ Filesystem Size Used Avail Use% Mounted on
+ - 32M 1.1M 30M 4% /media/data/home/tschwinge/ramdisk0
+
+This uses [[settrans]] and [[storeio]] to create a ramdisk of 32 MiB by routing
+a thusly sized [[zero store]] through the [[copy store]], connecting
+that to the `ramdisk0` node, create a `ext2` filesystem on it, and replace the
+translator running on the `ramdisk0` node with a instance of the [[`ext2fs`
+translator|translator/ext2fs]] running on the same node ([[translator
+stacking|translator/stacking]]).
+
+It is a [[!taglink open_issue_hurd]] why this does only work with
+`ext2fs.static`, but not the dynamically linked `ext2fs` (`settrans:
+/hurd/ext2fs: Translator died`).
+
+A (better) alternative would be using the [[`tmpfs`
+translator|translator/tmpfs]], but that one is broken at the moment.
diff --git a/hurd/libstore/file_store.mdwn b/hurd/libstore/file_store.mdwn
new file mode 100644
index 00000000..5e9f6822
--- /dev/null
+++ b/hurd/libstore/file_store.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2007, 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]]."]]"""]]
+
+[[!meta title="file store: use a file as a kind of block device"]]
diff --git a/hurd/libstore/gunzip_store.mdwn b/hurd/libstore/gunzip_store.mdwn
new file mode 100644
index 00000000..25fca4bf
--- /dev/null
+++ b/hurd/libstore/gunzip_store.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2007, 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]]."]]"""]]
+
+[[!meta title="gunzip store: gunzip data on the fly"]]
diff --git a/hurd/libstore/ileave_store.mdwn b/hurd/libstore/ileave_store.mdwn
new file mode 100644
index 00000000..29b51b72
--- /dev/null
+++ b/hurd/libstore/ileave_store.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2007, 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]]."]]"""]]
+
+[[!meta title="ileave store: interleave store (striping)"]]
diff --git a/hurd/libstore/nbd_store.mdwn b/hurd/libstore/nbd_store.mdwn
new file mode 100644
index 00000000..5874b162
--- /dev/null
+++ b/hurd/libstore/nbd_store.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2007, 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]]."]]"""]]
+
+[[!meta title="nbd store: Linux-compatible network block device"]]
diff --git a/hurd/libstore/part.mdwn b/hurd/libstore/part.mdwn
new file mode 100644
index 00000000..5d727ad8
--- /dev/null
+++ b/hurd/libstore/part.mdwn
@@ -0,0 +1,26 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="part store"]]
+
+`part.c`
+
+Written by Neal in 2001, 2002.
+
+Useful if the microkernel / [[DDE]] / [[microkernel/mach/gnumach/ports/Xen]]
+doesn't export *partition devices*, but only *raw* devices.
+
+Neal:
+
+> The motivation was to be able to evict the partitioning logic from Mach.
+
+---
+
+TODO: How to use, etc.
diff --git a/hurd/libstore/query_store.mdwn b/hurd/libstore/query_store.mdwn
new file mode 100644
index 00000000..9ebf8e47
--- /dev/null
+++ b/hurd/libstore/query_store.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2007, 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]]."]]"""]]
+
+[[!meta title="query store"]]
diff --git a/hurd/libstore/remap_store.mdwn b/hurd/libstore/remap_store.mdwn
new file mode 100644
index 00000000..158ffe95
--- /dev/null
+++ b/hurd/libstore/remap_store.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2007, 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]]."]]"""]]
+
+[[!meta title="remap store"]]
diff --git a/hurd/libstore/task_store.mdwn b/hurd/libstore/task_store.mdwn
new file mode 100644
index 00000000..e4426639
--- /dev/null
+++ b/hurd/libstore/task_store.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2007, 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]]."]]"""]]
+
+[[!meta title="task store: Mach task store backend"]]
diff --git a/hurd/libstore/typed_store.mdwn b/hurd/libstore/typed_store.mdwn
new file mode 100644
index 00000000..e71ff67f
--- /dev/null
+++ b/hurd/libstore/typed_store.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2007, 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]]."]]"""]]
+
+[[!meta title="typed store: chainable stores"]]
diff --git a/hurd/libstore/url_store.mdwn b/hurd/libstore/url_store.mdwn
new file mode 100644
index 00000000..17a24e97
--- /dev/null
+++ b/hurd/libstore/url_store.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2007, 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]]."]]"""]]
+
+[[!meta title="url store: typed store with URL syntax"]]
diff --git a/hurd/libstore/zero_store.mdwn b/hurd/libstore/zero_store.mdwn
new file mode 100644
index 00000000..4c53ab56
--- /dev/null
+++ b/hurd/libstore/zero_store.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 2000, 2007, 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]]."]]"""]]
+
+[[!meta title="zero store: empty block device"]]
+
+A *zero* store is what `/dev/zero` is (always reads zeros), the setting on
+`/dev/zero` gives no name (i.e. size) and the default size is the maximum
+possible. The only meaning of the size of a *zero* is what `st_size` will
+report and what offsets it will let you try to read or write from--there is
+never any data associated with a *zero* store. (The code for this is in
+`libstore/zero.c`.)
diff --git a/hurd/libtrivfs.mdwn b/hurd/libtrivfs.mdwn
new file mode 100644
index 00000000..b15aeabe
--- /dev/null
+++ b/hurd/libtrivfs.mdwn
@@ -0,0 +1,31 @@
+[[!meta copyright="Copyright © 1994, 1996, 1998, 1999, 2000, 2001, 2002, 2003,
+2004, 2005, 2007, 2008, 2009, 2010 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]]."]]"""]]
+
+Certain [[translator]]s do not need to be very complex, because they represent
+a single file rather than an entire directory hierarchy. The *trivfs library*,
+which is declared in `<hurd/trivfs.h>`, does most of the work of implementing
+this kind of translator. This library requires the [[iohelp|libiohelp]] and
+[[ports|libports]] libraries.
+
+Using `libtrivfs` is not the only way to implement such a single-file
+translator, but is a convenient abstraction: the library hides a lot of
+low-level stuff and you just have to provide a number of call-back functions
+and symbols in order to get a functioning (for file I/O, etc.) node in the file
+system.
+
+
+# Further Reading
+
+ * In the *[[The_GNU_Hurd_Reference_Manual|reference_manual]]*:
+ <http://www.gnu.org/software/hurd/doc/hurd_6.html#SEC48>.
+
+ * In the *[[Hurd_Hacking_Guide]]*:
+ <http://www.gnu.org/software/hurd/hacking-guide/hhg.html#An-Example-using-trivfs>.
diff --git a/hurd/logo.mdwn b/hurd/logo.mdwn
index b1030e50..467e6ba8 100644
--- a/hurd/logo.mdwn
+++ b/hurd/logo.mdwn
@@ -1,25 +1,11 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2010 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-The famous *Hurd Boxes* logo is available at
-<http://www.gnu.org/graphics/hurd_mf.html>.
-
-
-On some lonely Wednesday, Colin Leitner and [[Thomas_Schwinge|tschwinge]]
-converted these four boxes from the [original METAFONT
-sources](http://www.gnu.org/graphics/hurd.mf) to
-[[hand-written_SVG_code|boxes-redrawn.svg]].
-
-[[img boxes-redrawn.png]]
-
-
-This symbol is also being used as a favicon for this whole wiki.
-
-[[img /favicon.ico]]
+[[!meta redir=/logo]]
diff --git a/hurd/logo.png b/hurd/logo.png
deleted file mode 100644
index a892b47d..00000000
--- a/hurd/logo.png
+++ /dev/null
Binary files differ
diff --git a/hurd/neighborhurd.mdwn b/hurd/neighborhurd.mdwn
index 3298e07a..5a66f992 100644
--- a/hurd/neighborhurd.mdwn
+++ b/hurd/neighborhurd.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
It is possible to run multiple instances of the Hurd
in parallel, on a single instance of Mach. Other than
diff --git a/hurd/network.mdwn b/hurd/network.mdwn
deleted file mode 100644
index 5786b01c..00000000
--- a/hurd/network.mdwn
+++ /dev/null
@@ -1,43 +0,0 @@
-How to setup networking in the Hurd.
-
-First, make sure that Mach recognizes your hardware. <!-- If it doesn't, you can
-to recompile it in most cases. [ADD LINK TO INFO ON THIS] -->
-
-# The `pfinet` Translator
-
-To configure the network, the `pfinet` (*Protocol Family Internet*) translator
-must be configured. This is done using the `settrans` command to attach a
-translator to a given file system node. When programs access the node by, for
-example, sending an RPC, the Hurd will transparently start the server to handle
-the request.
-
- # settrans -fgap /servers/socket/2 /hurd/pfinet -i eth0 \
- -a 192.168.0.50 -g 192.168.0.1 -m 255.255.255.0
-
-Here, `settrans` is passed several options:
-
-* `fg`, force any existing translator to go away.
-* `ap`, make both active and passive translators.
-
-The active translator means that the operating system both starts the
-translator immediately and passinve means that the settings are saved in the
-file system node. The former also means that any error messages are sent to
-`stderr`.
-
-The argument `/server/socket/2` is the node that the translator is to be
-attached to. This is followed by the translator program to run and any
-arguments to give it.
-
-`-a`, `-g` and `-m` are, quite obviously, the IP address, the gateway and
-netmask.
-
-Help on settrans can be obtained by passing it the `--help` option. Help on a
-specific translator can be gotten by invoking it from the command line with the
-same argument, e.g.:
-
- # /hurd/pfinet --help
-
-As there can be a lot of output, consider piping this through a pager.
-
-Finally copy over your `/etc/resolv.conf` from GNU/Linux to allow your DNS to
-resolve correctly.
diff --git a/hurd/networking.mdwn b/hurd/networking.mdwn
new file mode 100644
index 00000000..bdf9def2
--- /dev/null
+++ b/hurd/networking.mdwn
@@ -0,0 +1,33 @@
+[[!meta copyright="Copyright © 2000, 2008, 2010 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]]."]]"""]]
+
+For each supported `PF_*` protocol family, there is a file `/servers/socket/N`
+where `N` is the numberic value fo the `PF_*` symbol. Right now
+[[`PF_LOCAL`|translator/pflocal]] (a.k.a. `PF_UNIX`) and
+[[`PF_INET`|translator/pfinet]] (together with
+[[`PF_INET6`|translator/pfinet/ipv6]]) are supported.
+
+User programs open those files, and use the `socket_create` [[RPC]] to make a
+new socket. With that socket, they can use the other `socket_*` RPCs and also
+the `io_*` RPCs. The `socket_*` RPCs are essentially clones of the [[Unix]]
+[[system call]]s in question.
+
+The only exception is `sockaddrs`, which are implemented as [[ports|libports]]
+instead of the opaque data arrays they are in the system calls. You manipulate
+`sockaddr` ports with the `socket_create_address`, `socket_fabricate_address`,
+and `socket_whatis_address` calls. The `sockaddr` port is then used in socket
+calls like `socket_connect` and `socket_accept`.
+
+`PF_INET` `sockaddr` ports are manipulated with `socket_create_address` from
+the usual `struct sockaddr_in`. `PF_LOCAL` `sockaddr` ports are stored by
+`S_IFSOCK` filesystem nodes; you find the address associated with a node with
+`ifsock_getsockaddr`. The [[file_system_server|translator]] will get a
+`sockaddr` to return with `socket_fabricate_address`.
diff --git a/hurd/ng.mdwn b/hurd/ng.mdwn
index 22613f54..fbebb137 100644
--- a/hurd/ng.mdwn
+++ b/hurd/ng.mdwn
@@ -10,72 +10,71 @@ These pages try to summarize the major discussions and ideas.
This section explains the motivations behind the new design:
- * [[Issues_with_Mach]]
* [[Issues_with_L4_Pistachio]]
* [[Limitations_of_the_original_Hurd_design]]
- * [[History]]
+ * History of the [[history/port_to_another_microkernel]]
# Work already done
+A [[critique]] of the original Hurd is available.
+
A [[position_paper]] by Marcus Brinkmann and Neal H. Walfield can be found.
A draft specification of the Hurd-NG interfaces has been, but is no longer,
available.
-A [[critique]] of the original Hurd is available.
# Subjects
## Design processus
-* [[DesignGoals]]
-* [[RequirementsForUser]]
-* [[DesignPrinciples]]
+* [[Design Goals|DesignGoals]]
+* [[Requirements For User|RequirementsForUser]]
+* [[Design Principles|DesignPrinciples]]
* [[Philosophy]]
## Concepts
-* [[security]]
-* [[CapabilityBasedMicrokernel]]
-* [[FirstClassReceiveBuffer]]
+* [[Security]]
+* [[Capability Based Microkernel|CapabilityBasedMicrokernel]]
+* [[First-class Receive Buffer|FirstClassReceiveBuffer]]
* [[PowerBox]]
-* [[WhatIsACapability]]
-* [[WhatIsAConstructor]]
-* [[WhatIsASpacebank]]
-* [[TrivialConfinementVsConstructorVsFork]]
-* [[CopyVsRevocableCopyVsMap]]
-* [[SetuidVsConstructor]]
-* [[HurdishApplicationsForPersistence]]
-* [[WhatsInAGroup]]
-* [[ThePolycastInterface]]
-* [[PermissionBits]]
-* [[CancellationForwarding]]
+* [[What is a Capability|WhatIsACapability]]
+* [[What is a Constructor|WhatIsAConstructor]]
+* [[What is a Spacebank|WhatIsASpacebank]]
+* [[Trivial Confinement vs. Constructor vs. Fork|TrivialConfinementVsConstructorVsFork]]
+* [[Copy vs. Revocable Copy vs. Map|CopyVsRevocableCopyVsMap]]
+* [[Setuid vs. Constructor|SetuidVsConstructor]]
+* [[Hurdish Applications for Persistence|HurdishApplicationsForPersistence]]
+* [[What's in a Group|WhatsInAGroup]]
+* [[The Polycast Interface|ThePolycastInterface]]
+* [[Permission Bits|PermissionBits]]
+* [[Cancellation Forwarding|CancellationForwarding]]
## Problems to solve
-* [[HowMuchConfinementDoWeWant]]
-* [[SharedLibraries]]
-* [[PathMax]]
+* [[How Much Confinement Do We Want|HowMuchConfinementDoWeWant]]
+* [[Shared Libraries|SharedLibraries]]
+* [[Path Max|PathMax]]
## Implementation
-* [[ChoiceOfMicrokernel]]
-* [[HurdInterafaces]]
-* [[PosixLayer]]
-* [[SystemStructure]]
+* [[Hurd Interafaces|HurdInterafaces]]
+* [[Posix Layer|PosixLayer]]
+* [[System Structure|SystemStructure]]
## Use Cases
_please move me somewhere better! [[SamMason]]_
-* [[UseCaseUserFileSystem]]
-* [[UseCasePrivateKeys]]
+* [[Use Case User Filesystem|UseCaseUserFileSystem]]
+* [[Use Case Private Keys|UseCasePrivateKeys]]
## Organization
diff --git a/hurd/ng/choiceofmicrokernel.mdwn b/hurd/ng/choiceofmicrokernel.mdwn
deleted file mode 100644
index 20ee6f05..00000000
--- a/hurd/ng/choiceofmicrokernel.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-TBD
-
-* [[MicrokernelL4]]
-* [[MicrokernelCoyotos]]
diff --git a/hurd/ng/discussion.mdwn b/hurd/ng/discussion.mdwn
new file mode 100644
index 00000000..d4632bd5
--- /dev/null
+++ b/hurd/ng/discussion.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+To go beyond research project Hurd have to support thousands of various programs running on GNU/Linux nowadays.
+It looks like ExoKernel approach http://pdos.csail.mit.edu/exo.html might be useful here.
+Does somebody tried to look into something like Hurd exokernel + liblinux?
diff --git a/hurd/ng/history.mdwn b/hurd/ng/history.mdwn
deleted file mode 100644
index 652bccf3..00000000
--- a/hurd/ng/history.mdwn
+++ /dev/null
@@ -1,50 +0,0 @@
-[[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]]."]]"""]]
-
-The idea of using [[microkernel/L4]] as a [[microkernel]] for a
-[[Hurd_system|hurd]] was initially voiced in the [[Hurd_community|community]]
-by Okuji Yoshinori. He created the [[mailing_lists/l4-hurd]] mailing list in
-November 2000. It does not appear that he got any further than simply
-suggesting it as an alternative to [[microkernel/Mach]] and doing some reading.
-
-Neal Walfield started the original Hurd/L4 port while at Karlsruhe in 2002.
-He explains:
-
-> My intention was to adapt the Hurd to exploit L4's concepts and intended
-> [[design_pattern]]s; it was not to simply provide a Mach
-> [[compatibility_layer]] on top of L4. When I left Karlsruhe, I no longer had
-> access to [[microkernel/l4/Pistachio]] as I was unwilling to sign an NDA.
-> Although the specification was available, the Karlsruhe group only [released
-> their code in May
-> 2003](https://lists.ira.uni-karlsruhe.de/pipermail/l4ka/2003-May/000345.html).
-> Around this time, Marcus began hacking on Pistachio. He created a relatively
-> complete run-time. I didn't really become involved again until the second
-> half of 2004, after I complete by Bachelors degree.
-
-> Before Marcus and I considered [[microkernel/Coyotos]], we had already
-> rejected some parts of the Hurd's design. The [[resource_management_problems]]
-> were what prompted me to look at L4. Also, some of the problems with
-> [[translator]]s were already well-known to us. (For a more detailed
-> description of the problems we have identified, see our [[critique]] in the
-> 2007 July's SIGOPS OSR. We have also written a forward-looking
-> [[position_paper]].)
-
-> We visited Jonathan Shapiro at Hopkins in January 2006. This resulted in a
-> number of discussions, some quite influential, and not always in a way which
-> aligned our position with that of Jonathan's. This was particularly true of
-> a number of security issues.
-
-A lange number of discussion threads can be found in the archives of the
-[[mailing_lists/l4-hurd]] mailing list.
-
-> Hurd-NG, as we originally called it, was an attempt to articulate the system
-> that we had come to envision in terms of interfaces and description of the
-> system's structure. The new name was selected, if I recall correctly, as it
-> clearly wasn't the Hurd nor the Hurd based on L4.
diff --git a/hurd/ng/issues_with_mach.mdwn b/hurd/ng/issues_with_mach.mdwn
deleted file mode 100644
index cb4de906..00000000
--- a/hurd/ng/issues_with_mach.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-[[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]]."]]"""]]
-
- * [[Resource_management_problems]]
- * [[Critique]]
diff --git a/hurd/ng/limitations_of_the_original_hurd_design.mdwn b/hurd/ng/limitations_of_the_original_hurd_design.mdwn
index 25f03372..96d8912b 100644
--- a/hurd/ng/limitations_of_the_original_hurd_design.mdwn
+++ b/hurd/ng/limitations_of_the_original_hurd_design.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
* [[Critique]]
diff --git a/hurd/ng/microkernelcoyotos.mdwn b/hurd/ng/microkernelcoyotos.mdwn
deleted file mode 100644
index 40fd6e9d..00000000
--- a/hurd/ng/microkernelcoyotos.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-# <a name="The_Coyotos_microkernel"> The Coyotos microkernel </a>
-
-[Coyotos](http://www.coyotos.org/index.html) is a microkernel and OS and the successor of EROS, that itself is the successor of KeyKOS. A more complete history can be found [here](http://www.coyotos.org/history.html). It's main objectives are to correcte some shortcomings of EROS, demonstrate that an atomic kernel design scales well and to completely formally verify both the kernel and critical system components by writing them in a new language called bitc.
-
-Coyotos is an orthogonally persistent pure capability system. It uses continuation based unbuffered asynchronous IPC (actually it's synchronous IPC whith asynchronous syscalls).
-
-TODO: explain these terms and (more important) their consequences on system design.
-
-The coyotos microkernel specification can be found [here](http://www.coyotos.org/docs/ukernel/spec.html)
diff --git a/hurd/ng/part2systemstructure.mdwn b/hurd/ng/part2systemstructure.mdwn
index 4ce8026f..0f94ff2a 100644
--- a/hurd/ng/part2systemstructure.mdwn
+++ b/hurd/ng/part2systemstructure.mdwn
@@ -38,7 +38,12 @@ It is clear from this description that the child's existance is completely deter
## <a name="Canonical_Process_Destruction"> Canonical Process Destruction </a>
-Process destruction can be done either cooperatively, or forcibly. The difference corresponds approximately to the difference between SIGTERM and SIGKILL in Unix. To destroy a process cooperatively, a request message is sent to a special capability implemented by the child process. The child can then begin to tear down the program, and at some time send a request back to the parent process to ask for forced process destruction.
+Process destruction can be done either cooperatively, or forcibly. The
+difference corresponds approximately to the difference between SIGTERM and
+SIGKILL in [[Unix]]. To destroy a process cooperatively, a request message is
+sent to a special capability implemented by the child process. The child can
+then begin to tear down the program, and at some time send a request back to
+the parent process to ask for forced process destruction.
Forced process destruction can be done by the parent process without any cooperation by the child process. The parent process simply destroys the primary container of the child (this means that the parent process should retain the primary container capability).
@@ -84,7 +89,13 @@ I will now describe some common applications that need to be supported, and how
## <a name="System_Services"> System Services </a>
-Unix-style suid applications have been proposed as one application for alternative process construction mechanisms. However, suid applications in Unix are, from the perspective of the parent, not confined, only isolated. Thus, they are readily replaced by a system service that is created by the system software, and that runs as a sibling to any user process. Only the ability to invoke the system service needs to be given to the user, not the ability to instantiate it.
+[[Unix]]-style suid applications have been proposed as one application for
+alternative process construction mechanisms. However, suid applications in
+Unix are, from the perspective of the parent, not confined, only isolated.
+Thus, they are readily replaced by a system service that is created by the
+system software, and that runs as a sibling to any user process. Only the
+ability to invoke the system service needs to be given to the user, not the
+ability to instantiate it.
In fact, no gain can derived from letting the user instantiate system services. In Unix, system services run on durable resources, which the user can not revoke. Thus, the system service needs to acquire its resources from a container that is not derived from the user's primary container.
diff --git a/hurd/ng/position_paper.mdwn b/hurd/ng/position_paper.mdwn
index 3240a41d..abc781da 100644
--- a/hurd/ng/position_paper.mdwn
+++ b/hurd/ng/position_paper.mdwn
@@ -1,14 +1,15 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[NealWalfield]] and [[MarcusBrinkmann]] wrote a paper titled [*Improving
-Usability via Access Decomposition and Policy
-Refinement*](http://walfield.org/papers/20070104-walfield-access-decomposition-policy-refinement.pdf).
-This is sometimes referred to as *the position paper*.
+Neal Walfield and Marcus Brinkmann wrote a paper titled [*Improving Usability
+via Access Decomposition and Policy
+Refinement*](http://walfield.org/papers/20070104-walfield-access-decomposition-policy-refinement.pdf)
+where they give an overview about how a future, subsequent system may be
+architected. This is sometimes referred to as *the position paper*.
diff --git a/hurd/ng/resource_management_problems.mdwn b/hurd/ng/resource_management_problems.mdwn
deleted file mode 100644
index 856afb1a..00000000
--- a/hurd/ng/resource_management_problems.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-[[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]]."]]"""]]
-
-[[microkernel/Mach]] interfaces do not allow for proper resource accounting,
-when a server allocates resources on behalf of a client.
-
-Mach can't do a good job at resource management, as it doesn't have enough
-information how resources are used: which data is important and which is
-discardable, for example.
-
-These issues are what Neal Walfield is working on with his new kernel
-[[microkernel/viengoos]].
diff --git a/hurd/ng/trivialconfinementvsconstructorvsfork.mdwn b/hurd/ng/trivialconfinementvsconstructorvsfork.mdwn
index 4eeef6ee..949895e7 100644
--- a/hurd/ng/trivialconfinementvsconstructorvsfork.mdwn
+++ b/hurd/ng/trivialconfinementvsconstructorvsfork.mdwn
@@ -6,10 +6,11 @@ This comparison is about a simple situation: there is a parent process P, which
# <a name="Trivial_Confinement"> Trivial Confinement </a>
-For trivial confinement, there is a system call to create a process from some memory pages. P performs the following steps:
+For trivial confinement, there is a [[system call]] to create a process from
+some memory pages. P performs the following steps:
* Allocate some memory and put the code image of the child into that memory. This can be done by P, or for example by the file system which then gives the resulting memory (space bank) to P.
-* Perform the system call on that memory. The result is a capability to C.
+* Perform the [[system call]] on that memory. The result is a capability to C.
* Send A to C using the returned capability.
Note that it is up to the implementation of the system what happens with P's access to the memory which holds the child. For example, it is probably a good idea if it is at least unmapped, so it cannot accidentily write things in it. It could even be revoked, so that it can't write things in it, even if it wants to.
@@ -32,7 +33,16 @@ This mechanism is targeted at a specific use pattern, namely that a process is c
# <a name="POSIX_Fork"> </a> POSIX Fork
-POSIX fork, or rather fork+exec, is how things are done on many current systems. It may be insightful to see it included in the comparison, especially for people who are new to the subject. There are two system calls, fork and exec. Fork will create a clone of the current process, including all the capabilities (that is, file descriptors) of the parent (except the ones which have explicitly been excluded). Exec is a system call which really goes to the filesystem, not the kernel (although on systems which use it, the filesystem usually resides in the kernel), and asks it to spawn a new process from the contents of a certain path in place of the caller. This passes all capabilities to the new process. The procedure is:
+POSIX fork, or rather fork+exec, is how things are done on many current
+systems. It may be insightful to see it included in the comparison, especially
+for people who are new to the subject. There are two [[system call]]s, fork
+and exec. Fork will create a clone of the current process, including all the
+capabilities (that is, [[unix/file_descriptor]]s) of the parent (except the
+ones which have explicitly been excluded). Exec is a [[system call]] which
+really goes to the filesystem, not the kernel (although on systems which use
+it, the filesystem usually resides in the kernel), and asks it to spawn a new
+process from the contents of a certain path in place of the caller. This
+passes all capabilities to the new process. The procedure is:
* P calls fork(), creating P'.
* P' drops B.
@@ -52,7 +62,11 @@ In contrast, the other two options don't pass anything by default. If there is a
The problem of fork+exec can be solved. It is if the default would be to not pass capabilities to the new process, but specify a list of capabilities that it should keep, or (like in the other cases) pass them over a new channel which is implicitly created during the fork. However, in that case the only difference with trivial confinement is that P' dies in the process (and thus must be created to prevent P from dying). Almost any use of exec is in practice preceded by a fork for this purpose. It would be easier to make trivial confinement the default operation and let P die directly after it in the rare case that it should.
-The only reason for continuing to use fork+exec would be that it is what existing programs do. However, they break anyway if they need to specify which file descriptors to pass. So they need to be adapted. Therefore, it's better to make the usual spawning method the primitive one, and emulate the other.
+The only reason for continuing to use fork+exec would be that it is what
+existing programs do. However, they break anyway if they need to specify which
+[[unix/file_descriptor]]s to pass. So they need to be adapted. Therefore, it's
+better to make the usual spawning method the primitive one, and emulate the
+other.
# <a name="Trivial_Confinement_vs_Construct"> Trivial Confinement vs Constructor </a>
@@ -67,7 +81,7 @@ Except for the control, there is really only one other difference, and that's ad
What it doesn't do is protect the code image against bugs in P. In the constructor the trusted and well-tested constructor code is handling the image, for trivial confinement the (very possibly) buggy program P. In particular, when starting a program from a file system, with trivial confinement the operation is:
* Ask the file system for the code, receive a capability to a space bank with a copy (on write) of it.
-* Make the system call to turn it into a program.
+* Make the [[system call]] to turn it into a program.
Now this isn't much more complicated than the constructor which does:
diff --git a/hurd/ng/usecaseprivatekeys.mdwn b/hurd/ng/usecaseprivatekeys.mdwn
index 612a8f25..3cb65af2 100644
--- a/hurd/ng/usecaseprivatekeys.mdwn
+++ b/hurd/ng/usecaseprivatekeys.mdwn
@@ -1,6 +1,10 @@
_Private Keys_ as used by SSH servers, clients and generally by any cryptographic software need to be stored and manipulated securely. These may get replaced with smartcards soon, but in the mean time it appears to be an interesting use case.
-All Unix systems that I am aware of do not allow secrets to be protected in a manner that I would feel is appropiate. A users compromised web browser could either read your private key file or talk to the very popular ssh-agent program and get your secrets out (not sure how popular distributions are configured, but it can be done).
+All [[Unix]] systems that I am aware of do not allow secrets to be protected in
+a manner that I would feel is appropiate. A users compromised web browser
+could either read your private key file or talk to the very popular ssh-agent
+program and get your secrets out (not sure how popular distributions are
+configured, but it can be done).
The requirements so far are:
diff --git a/hurd/ng/usecaseuserfilesystem.mdwn b/hurd/ng/usecaseuserfilesystem.mdwn
index 6dce5670..4e4fdf35 100644
--- a/hurd/ng/usecaseuserfilesystem.mdwn
+++ b/hurd/ng/usecaseuserfilesystem.mdwn
@@ -3,7 +3,7 @@
These appear as _translators_ in the current Hurd and something similar needs to appear in the next hurd.
* The user should be able to dynamically add and remove translators
-* For some reason it seems appropiate to have seperate namespaces (VFS's) for each user (this is quite a departure from Unix. [[SamMason]])
+* For some reason it seems appropiate to have seperate namespaces (VFS's) for each user (this is quite a departure from [[Unix]]. [[SamMason]])
* translators can be used to expose the structure of an archive file
* translators can be provide access to remote file systems
diff --git a/hurd/porting.mdwn b/hurd/porting.mdwn
new file mode 100644
index 00000000..c94572a4
--- /dev/null
+++ b/hurd/porting.mdwn
@@ -0,0 +1,14 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+ * [[Guidelines]]
+ * [[System_API_Limitations]]
+
+ * Debian: [[running/debian/Porting]]
diff --git a/hurd/porting/guidelines.mdwn b/hurd/porting/guidelines.mdwn
new file mode 100644
index 00000000..efc8982a
--- /dev/null
+++ b/hurd/porting/guidelines.mdwn
@@ -0,0 +1,356 @@
+[[!meta copyright="Copyright © 2002, 2003, 2005, 2007, 2008, 2009, 2010, 2011
+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]]."]]"""]]
+
+This is a compilation of common porting problems and their solutions.
+
+
+Additionally to this page, also see the section *General Porting Issues* of
+<http://www.debian.org/ports/hurd/hurd-devel-debian><!-- TODO: merge these two
+pages. -->, as well as further Debian-specific [[running/debian/porting]]
+information.
+
+There is a separate page about [[System_API_Limitations]].
+
+You may ask on the [[mailing lists/bug-hurd]] mailing list for details or
+questions about fixing bugs.
+
+## <a name="GNU build system"> GNU build system </a>
+
+For a good overview of the components in the GNU build system, see
+<http://en.wikipedia.org/wiki/GNU_build_system> and
+<http://www.gnu.org/s/hello/manual/autoconf/index.html>.
+
+The GNU build system distinguishes between 'build', 'host' and 'target' machines.
+The 'build' machine is where compilers are run, the 'host' machine where the package
+being built will run, and for cross compiling the 'target' machine, on which the compiler
+built will generate code for.
+
+When using GNU autotools to configure a package config.guess and config.sub from autotools-dev
+are used to find out the build machine identity: CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM.
+For GNU/Hurd config.guess gives 'i686-unknown-gnu0.3'. Sometimes a quadruple is used
+adding KERNEL, e.g. for Linux on an amd64: 'x86_64-unknown-linux-gnu'. This
+is however actually a triple, it just happens that the operating system part
+unfortunately contains a '-'. config.sub is used to
+canonicalize on these triplets, e.g. config.sub i686-gnu gives 'i686-pc-gnu'.
+
+On Debian systems the build Makefile is debian/rules and some Debian packages will set $host to
+'i486-pc-gnu'. This is accomplished with the 'dpkg-architecture -qDEB_HOST_GNU_TYPE' construct
+forwarded to configure in debian/rules, e.g. configure --host=$DEB_HOST_GNU_TYPE.
+Another way to set $build, $host etc is via the Debian dh_auto_configure script from the debhelper
+package which uses the Perl code autoconf.pm to find out these variables.
+
+## <a name="autoconf"> Fixing configure.{ac,in} </a>
+
+The GNU/Hurd (and GNU/kFreeBSD) toolchain is extremely close to the GNU/Linux toolchain.
+configure.ac thus very often just needs to be fixed by using the same cases as Linux, that is, turn
+
+ switch "$host_os" in
+ case linux*)
+
+into
+
+ switch "$host_os" in
+ case linux*|k*bsd-gnu*|gnu*)
+
+for a host_os case statement, or
+
+ switch "$host" in
+ case *-linux*)
+
+into
+
+ switch "$host" in
+ case *-linux*|*-k*bsd-gnu*|*-gnu*)
+
+If separate case is needed, make sure to put *-gnu* *after* *-linux*:
+
+ switch "$host" in
+ case *-linux*|*-k*bsd-gnu*)
+ something;;
+
+ case *-gnu*)
+ something else;;
+
+because else *-gnu* would catch i386-pc-linux-gnu for instance...
+
+Note: some of such statements are not from the source package itself, but from aclocal.m4 which is actually from libtool. In such case, the package simply needs to be re-libtoolize-d.
+
+## <a name="Undefined_bits_confname_h_tt_mac"> Undefined `bits/confname.h` macros (`PIPE_BUF`, ...) </a>
+
+If macro `XXX` is undefined, but macro `_SC_XXX` or `_PC_XXX` is defined in `bits/confname.h`, you probably need to use `sysconf`, `pathconf` or `fpathconf` to obtain it dynamicaly.
+
+The following macros have been found in this offending situation (add more if you find them): `PIPE_BUF`
+
+An example with `sysconf`: (when you find a `sysconf` offending macro, put a better example)
+
+ #ifndef XXX
+ #define XXX sysconf(_SC_XXX)
+ #endif
+ /* offending code using XXX follows */
+
+An example with `fpathconf`:
+
+ #ifdef PIPE_BUF
+ read(fd, buff, PIPE_BUF - 1);
+ #else
+ read(fd, buff, fpathconf(fd, _PC_PIPE_BUF) - 1);
+ #endif
+ /* note we can't #define PIPE_BUF, because it depends
+ on the "fd" variable */
+
+## <a name="Bad_File_Descriptor"> Bad File Descriptor </a>
+
+If you get Bad File Descriptor error when trying to read from a file (or accessing it at all), check the `open()` invocation. The second argument is the access method. If it is a hard coded number instead of a symbol defined in the standard header files, the code is screwed and should be fixed to either use `O_RDONLY`, `O_WRONLY` or `O_RDWR`. This bug was observed in the `fortunes` and `mtools` packages for example.
+
+## <a name="PATH_MAX_tt_MAX_PATH_tt_MAXPATHL">`PATH_MAX`, `MAX_PATH`, `MAXPATHLEN`, `_POSIX_PATH_MAX`</a>
+
+Every unconditionalized use of `PATH_MAX`, `MAX_PATH` or `MAXPATHLEN` is a POSIX incompatibility. If there is no upper limit on the length of a path (as its the case for GNU), this symbol is not defined in any header file. Instead, you need to either use a different implementation that does not rely on the length of a string or use `sysconf()` to query the length at runtime. If `sysconf()` returns -1, you have to use `realloc()` to allocate the needed memory dynamically. Usually it is thus simpler to just use dynamic allocation. Sometimes the amount is actually known. Else, a geometrically growing loop can be used: for instance, see [Alioth patch](http://alioth.debian.org/tracker/download.php/30628/410472/303735/1575/cpulimit-path-max-fix.patch) or [Pulseaudio patch](http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=5;filename=patch-pulse;att=1;bug=522100). Note that in some cases there are GNU extensions that just work fine: when the `__GLIBC__` macro is defined, `getcwd()` calls can be just replaced by `get_current_dir_name()` calls.
+
+Note: constants such as `_POSIX_PATH_MAX` are only the minimum required value
+for a potential corresponding `PATH_MAX` macro. They are not a replacement for
+`PATH_MAX`, just the minimum value that one can assume.
+
+Note 2: Yes, some POSIX functions such as `realpath()` actually assume that
+`PATH_MAX` is defined. This is a bug of the POSIX standard, which got fixed in
+the latest revisions, in which one can simply pass `NULL` to get a dynamically
+allocated buffer.
+
+## <a name="ARG_MAX"> `ARG_MAX` </a>
+
+Same rationale as `PATH_MAX`. There is no limit on the number of arguments.
+
+## <a name="IOV_MAX"> `IOV_MAX` </a>
+
+Same rationale as `PATH_MAX`. There is no limit on the number of iovec items.
+
+## <a name="MAXHOSTNAMELEN_tt_"> `MAXHOSTNAMELEN` </a>
+
+Same as `PATH_MAX`. When you find a `gethostname()` function, which acts on a static buffer, you can replace it with Neal's [xgethostname function](http://walfield.org/pub/people/neal/xgethostname/) which returns the hostname as a dynamic buffer. For example:
+
+Buggy code:
+
+ char localhost[MAXHOSTNAMELEN];
+ ...
+ gethostname(localhost, sizeof(localhost));
+
+Fixed code:
+
+ #include "xgethostname.h"
+ ...
+ char *localhost;
+ ...
+ localhost = xgethostname();
+ if (! localhost)
+ {
+ perror ("xgethostname");
+ return ERROR;
+ }
+ ...
+ /* use LOCALHOST. */
+ free (localhost);
+
+## <a name="NOFILE_tt_"> `NOFILE` </a>
+
+Replace with `getrlimit(RLIMIT_NOFILE,...)`
+
+## <a name="GNU_specific_define_tt_"> </a> GNU specific `#define`
+
+If you need to include specific code for GNU/Hurd using `#if` ... `#endif`, then you can use the `__GNU__` symbol to do so. But think (at least) thrice! before doing so. In most situations, this is completely unnecessary and will create more problems than it may solve. Better ask on the mailing list how to do it right if you can't think of a better solution.
+
+## <a name="sys_errlist_tt_vs_strerror_tt_"> `sys_errlist[]` vs. `strerror()` </a>
+
+If a program has only support for `sys_errlist[]` you will have to do some work to make it compile on GNU, which has dropped support for it and does only provide `strerror()`. Steinar Hamre writes about `strerror()`:
+
+`strerror()` should be used because:
+
+* It is the modern, POSIX way.
+* It is localized.
+* It handles invalid signals/numbers out of range. (better errorhandling and not a buffer-overflow-candidate/security risk)
+
+`strerror()` should always be used if it is available. Unfortunaly there are still some old non-POSIX systems that do not have `strerror()`, only `sys_errlist[]`.
+
+Today, only supporting `strerror()` is far better than only supporting `sys_errlist[]`. The best (from a portability viewpoint), however is supporting both. For configure.in, you will need:
+
+ AC_CHECK_FUNCS(strerror)
+
+To `config.h.in`, you need to add:
+
+ #undef HAVE_STRERROR
+
+Then something like:
+
+ #ifndef HAVE_STRERROR
+ static char *
+ private_strerror (errnum)
+ int errnum;
+ {
+ extern char *sys_errlist[];
+ extern int sys_nerr;
+
+ if (errnum > 0 && errnum <= sys_nerr)
+ return sys_errlist[errnum];
+
+ return "Unknown system error";
+ }
+ #define strerror private_strerror
+ #endif /* HAVE_STRERROR */
+
+You can for example look in the latest coreutils (the above is a simplified version of what I found there.) Patches should of course be sent to upstream maintainers, this is very useful even for systems with a working `sys_errlist[]`.
+
+Of course, if you don't care about broken systems (like MS-DOG) not supporting `strerror()` you can just replace `sys_errlist[]` directly (upstream might not accept your patch, but debian should have no problem)
+
+## <a name="C++_error_t"> C++, `error_t` and `E*` </a>
+
+On the Hurd, `error_t` is an enumeration of the `E*` constants. However, C++
+does not like `E*` integer macros being directly assigned to that enumeration. In short, replace
+
+ error_t err = EINTR;
+
+by
+
+ error_t err = error_t(EINTR);
+
+## <a name="Missing_termio_h_tt_"> Missing `termio.h` </a>
+
+Change it to use `termios.h` (check for it properly with autoconf `HAVE_TERMIOS_H` or the `__GLIBC__` macro)
+
+Also, change calls to `ioctl(fd, TCGETS, ...)` and `ioctl(fd, TCSETS, ...)` with `tcgetattr(fd, ...)` and `tcsetattr(fd, ...)`.
+
+## <a name="AC_HEADER_TERMIO_tt_"> `AC_HEADER_TERMIO` </a>
+
+The autoconf check for `AC_HEADER_TERMIO` tryes to check for termios, but it's only really checking for termio in `termios.h`. It is better to use `AC_CHECK_HEADERS(termio.h termios.h)`
+
+## <a name="_IOT"> missing `_IOT` </a>
+
+This comes from ioctls. Fixing this is easy if the structure members can be expressed by using the _IOT() macro, else it's simply impossible... See `bits/termios.h` for an instance:
+
+`#define _IOT_termios /* Hurd ioctl type field. */ \
+ _IOT (_IOTS (tcflag_t), 4, _IOTS (cc_t), NCCS, _IOTS (speed_t), 2)`
+
+The rationale behind is that on the Hurd ioctl numbers actually encode how the
+data should be transferred via RPC: here `struct termios` holds 4 members of
+type `tcflag_ts`, then `NCCS` members of type `cc_tsi` and finaly 2 members of
+type `speed_ts`, so the RPC mecanism will know how to transfer them.
+
+As you can see, this limits the number of contiguous kinds of members to 3, and
+in addition to that (see the bitfield described in `ioctls.h`), the third kind
+of member is limited to 3 members. This is a design limitation, there is no way
+to overcome it at the moment.
+
+Note: if a field member is a pointer, then the ioctl can't be expressed
+this way, and that makes sense, since the server you're talking to
+doesn't have direct access to your memory. Ways other than ioctls must
+then be found.
+
+## <a name="SA_SIGINFO"> `SA_SIGINFO` </a>
+
+Implemented by Jeremie Koenig, pending upload in Debian eglibc 2.13-19.
+
+## <a name="SA_NOCLDWAIT"> `SA_NOCLDWAIT` </a>
+
+Not implemented yet.
+
+## <a name="SOL_IP"> `SOL_IP` </a>
+
+Not implemented yet.
+
+## <a name="HZ"> `HZ` </a>
+
+Linuxish and doesn't even make sense since the value may vary according to the running kernel. Should use `sysconf(_SC_CLK_TCK)` or `CLK_TCK` instead.
+
+## <a name="SIOCDEVPRIVATE"> `SIOCDEVPRIVATE` </a>
+
+Oh, we should probably provide it.
+
+## <a name="MAP_NORESERVE"> `MAP_NORESERVE` </a>
+
+Not POSIX, but we could implement it.
+
+## <a name="O_DIRECT"> `O_DIRECT` </a>
+
+Long story to implement.
+
+## <a name="PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP"> `PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP` </a>
+
+We could easily provide it;
+
+## <a name="PTHREAD_STACK_MIN"> `PTHREAD_STACK_MIN` </a>
+
+We should actually provide it.
+
+## <a name="types"> `linux/types.h` or `asm/types.h` </a>
+
+These are not POSIX, `sys/types.h` and `stdint.h` should be used instead.
+
+## <a name="iopl"> `iopl` </a>
+
+Not supported and actually very dangerous (permits userland to completely disable interruptions...). Replace with `ioperm(0, 65536, 1)`.
+
+## <a name="iopl"> `semget`, `sem_open` </a>
+
+Not implemented, will always fail. Use `sem_init()` instead if possible.
+
+## <a name="net/..."> `net/if_arp.h`, `net/ethernet.h`, etc. </a>
+
+Not implemented, not POSIX. Try to disable the feature in the package.
+
+## <a name="parport"> <linux/parport.h> <linux/ppdev.h> </a>
+
+There is no programming interface for the parallel port on GNU/Hurd yet.
+
+## <a name="errno"> `errno` values </a>
+
+When dealing with `errno`, you should always use the predefined error codes defined with the `E*` constants, instead of manually comparing/assigning/etc with their values.
+
+For example (C/C++):
+
+ /* check whether it does not exist */
+ if (errno == 2)
+ ...
+
+or Python:
+
+ # check whether it does not exist
+ try:
+ ...
+ except OSError, err:
+ err.errno == 2:
+ ...
+
+This is wrong, as [the actual values of the `E*` are unspecified (per POSIX)](http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_03.html#tag_02_03). You must always use the predefined constants for the possible errors.
+
+For example (C/C++):
+
+ /* check whether it does not exist */
+ if (errno == ENOENT)
+ ...
+
+With Python, you can use the [`errno` module](http://docs.python.org/library/errno.html) for the various constants:
+
+ # check whether it does not exist
+ try:
+ ...
+ except OSError, err:
+ import errno
+ err.errno == errno.ENOENT:
+ ...
+
+## <a name="libdl"> undefined reference to `dlopen`, `dlsym`, `dlclose` </a>
+
+Configure script often hardcode the library that contains dlopen & such (`-ldl'), and only for Linux. Simply add the other GNU OS cases: replace `linux*' with `linux*|gnu*|k*bsd*-gnu`
+
+## <a name="linux_headers"> Missing `linux/types.h`, `asm/types.h`, `linux/limits.h`, `asm/byteorder.h`, `sys/endian.h`, `asm/ioctl.h`, `asm/ioctls.h`, `linux/soundcard.h` </a>
+
+These are often used (from lame rgrep results) instead of their standard equivalents: `sys/types.h` (or `stdint.h` for fixed-size types), `limits.h`, `endian.h`, `sys/ioctl.h`, `sys/soundcard.h`
+
+## <a name="linux_features"> Missing `sys/*.h`, `linux/*.h`</a>
+
+These are linuxish things, they may not have Hurd equivalents yet, better disable the code.
diff --git a/hurd/porting/system_api_limitations.mdwn b/hurd/porting/system_api_limitations.mdwn
new file mode 100644
index 00000000..1615ccc0
--- /dev/null
+++ b/hurd/porting/system_api_limitations.mdwn
@@ -0,0 +1,29 @@
+[[!meta copyright="Copyright © 2003, 2004, 2005, 2009, 2010, 2011 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 building or running a program will fail due to bugs in the system API
+implementation (in [[glibc]] and the [[Hurd]]). Make sure you check this list
+and know them before porting, otherwise you'll end up debugging something just
+to find out its an already known bug.
+
+Taken from the bug lists in [[running/Debian]] BTS. If you find more of them
+(and it is clear in the bug log that it is a bug), please add them to the list
+below.
+
+These are the known system API limits that have porting implications.
+
+**_[\#47998](http://bugs.debian.org/47998): `msgget` IPC not implemented_**
+
+**_[[nice() doesn't work|open_issues/nice_vs_mach_thread_priorities]]_**.
+
+**_[\#187391](http://bugs.debian.org/187391): libc0.3-dev: `sockaddr_un.sun_path` can't be assigned a `const char *` when compiling with g++_**<br />**breaks:** fam, gail<br />**status:** maybe this should be in [[PortingIssues]] (see _long_ bug log)
+
+**_[\#190367](http://bugs.debian.org/190367): libc0.3-dev: `fcntl` `F_GETLK` not implemented (`ENOSYS`)_**<br />**breaks:** gnome-session (and others) from running<br />**error:** misc lock-related errors
diff --git a/hurd/reference_manual.mdwn b/hurd/reference_manual.mdwn
new file mode 100644
index 00000000..9337b784
--- /dev/null
+++ b/hurd/reference_manual.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 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]]."]]"""]]
+
+*The GNU Hurd Reference Manual* documents the architecture, the usage and the
+programming of the GNU Hurd. At the moment, the manual is quite incomplete.
+
+ * [HTML version](http://www.gnu.org/software/hurd/doc/hurd_toc.html) for
+ browsing online,
+ * [PostScript version](http://www.gnu.org/software/hurd/doc/hurd.ps)
+ [1020KiB, 91 pages].
diff --git a/hurd/running.mdwn b/hurd/running.mdwn
index 162bc9ea..a96a78c4 100644
--- a/hurd/running.mdwn
+++ b/hurd/running.mdwn
@@ -1,18 +1,25 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009, 2011 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!tag stable_URL]]
+
+There are several different ways to run a GNU/Hurd system:
* [[Distrib]] - Distributions based on the Hurd
* [[microkernel/mach/gnumach/ports/Xen]] - In Xen
* [[Live_CD]]
* [[QEMU]] - In QEMU
+* [[VirtualBox]] - In VirtualBox
* [[vmware]] (**non-free!**)
-* [[FlashHurd]] - From a flash stick
+
+* [[FAQ]]
* [[Public_hurd_boxen]]
diff --git a/hurd/running/arch_hurd.mdwn b/hurd/running/arch_hurd.mdwn
new file mode 100644
index 00000000..0e6075bb
--- /dev/null
+++ b/hurd/running/arch_hurd.mdwn
@@ -0,0 +1,21 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="Arch Hurd"]]
+
+Arch Hurd is a port of Arch Linux to the GNU Hurd, founded on 2010-01-04 by Michael Walker (Barrucadu) and, with input from a variety of people including Allan McRae (allan), Matthias Lanzinger (melpo), and Alexander Preisinger (giselher), the project has made excellent process. There is a livecd available on the Arch Hurd website, with which you can try or install Arch Hurd.
+
+### Links
+
+* Official Website: <http://www.archhurd.org>
+* Installation Guide: <http://wiki.archhurd.org/wiki/Installation_Guide>
+* Mailing Lists: <http://lists.archhurd.org>
+* Forum: <http://bbs.archhurd.org>
+* IRC: #archhurd on irc.freenode.net
diff --git a/hurd/running/debian.mdwn b/hurd/running/debian.mdwn
index e972f59c..fcd4d49b 100644
--- a/hurd/running/debian.mdwn
+++ b/hurd/running/debian.mdwn
@@ -1,16 +1,24 @@
-[[meta title="Debian GNU/Hurd"]]
+[[!meta title="Debian GNU/Hurd"]]
-[[img logo.png]]
+# Debian Resources
+- Official page about the Debian GNU/Hurd port: [Debian GNU/Hurd](http://www.debian.org/ports/hurd/)
+- Debian [[FAQ]] — Frequently Asked Questions
-- Debian [[FAQ]] -- Frequently Asked Questions
-- [[After_install]] -- Do this to get networking, new console and X
-- [Presentation](http://people.debian.org/~mbanck/talks/hurd_lt2004/html/)
- *Debian GNU/Hurd* by [[MichaelBanck]], LinuxTag 2004 Karlsruhe
-- [[Status]]
-- [[Patch_submission]] -- How to submit patches for build failures
+## QEMU Image
+[[!inline pages=hurd/running/debian/qemu_image raw=yes feeds=no]]
-- Official page about the Debian GNU/Hurd port: [Debian GNU/Hurd](http://www.debian.org/ports/hurd/)
+# Installing
- [Installation Instructions](http://www.debian.org/ports/hurd/hurd-install)
- - [Upgrading K11 or K14 based systems to
- unstable](http://lists.debian.org/debian-hurd/2007/09/msg00007.html)
+ - [Upgrading K11 or K14 based systems to unstable](http://lists.debian.org/debian-hurd/2007/09/msg00007.html)
+- [[After_install]] — Do this to get networking, new console and X
+
+# Contributing
+- [[Porting]] — Helping with porting packages
+ * [[Patch_submission]] — How to submit patches for build failures
+- [[Creating_image_tarball]]
+
+# Additional Information
+- [Presentation](http://people.debian.org/~mbanck/talks/hurd_lt2004/html/)
+ *Debian GNU/Hurd*, [[MichaelBanck]], LinuxTag 2004 Karlsruhe
+- [[Status]]
- [Archive Qualification](http://wiki.debian.org/ArchiveQualification/hurd-i386)
diff --git a/hurd/running/debian/BtsFiling.mdwn b/hurd/running/debian/BtsFiling.mdwn
deleted file mode 100644
index 90f451a8..00000000
--- a/hurd/running/debian/BtsFiling.mdwn
+++ /dev/null
@@ -1,52 +0,0 @@
-When you encounter any GNU/Hurd related bugs in a Debian package you can fix, please use the Debian BTS (Bug Tracking System) to report them.
-
-Managing Debian packages and using the BTS is quite simple. If you're new to Debian, here's a short guide:
-
-* first of all, check [http://bugs.debian.org/&lt;package&gt;](http://bugs.debian.org) to ensure the problem is not in the BTS already. This is possible for packages and bug numbers. [[TWiki/InterWikis]] is a shorthand way of linking to bugs and packages from this site. i.e. [[DebianBug]]:hurd [[DebianPackage]]:oskit
-* you can fetch package sources with:
-
- apt-get source <package>
-
-note: this should unpack already
-
-* and unpack with:
-
- dpkg-source -x <package>x-y_z.dsc
-
-* then get all dependencies:
-
- apt-get -y build-dep <package>
-
-note: if some dependencies are missing, it most probably means you have to port them first. follow this instructions recursively until done
-
- :)
-
-* Debian packages have a makefile in debian/rules, with (at least) the following targets: <dl>
- <dt> build</dt>
- <dd> Yup, to build </dd>
- <dt> binary</dt>
- <dd> Generates deb files in <code>../</code></dd>
- <dt> clean</dt>
- <dd> Full clean </dd>
-</dl>
-
-* when you have a patch, send it to the BTS using the reportbug utility (or manually as explained in <http://bugs.debian.org/)>. The following parameters should be used:
-
- Severity: important (when the package is unbuildable or uninstallable, lower otherwise.)
- Tags: sid, patch
-
-* be nice to the maintainers. most are friendly and cooperative, and a few could annoy you for months before applying. Be patient.
-
-Read <http://bugs.debian.org/> for extensive documentation on the BTS.
-
--- [[Main/RobertMillan]] - 10 Jun 2002
-
-----
-
-Wikification &amp; small changes.
-
--- [[Main/JoachimNilsson]] - 24 Jun 2002
-
-Updates with the new [[TWiki/InterWikis]] rules.
-
--- [[Main/GrantBow]] - 15 Jan 2003
diff --git a/hurd/running/debian/CrossInstall.mdwn b/hurd/running/debian/CrossInstall.mdwn
index 9a07424e..1cde150c 100644
--- a/hurd/running/debian/CrossInstall.mdwn
+++ b/hurd/running/debian/CrossInstall.mdwn
@@ -34,7 +34,7 @@ Now the program starts retrieving all the necessary base packages.
### <a name="Preparing_to_reboot"> Preparing to reboot </a>
-When all packages have been extracted we must prepare [[GrubNotes]] for the Hurd when we reboot. Add the below entry to your `/boot/grub/menu.lst` file to boot the Hurd in single user mode (-s). Single user mode is needed only for the two reboots when running the Native Install.
+When all packages have been extracted we must prepare [[GRUB]] for the Hurd when we reboot. Add the below entry to your `/boot/grub/menu.lst` file to boot the Hurd in single user mode (-s). Single user mode is needed only for the two reboots when running the Native Install.
title GNU (kernel GNUmach 1.3)
root (hd0,2)
diff --git a/hurd/running/debian/DebianAptOffline.mdwn b/hurd/running/debian/DebianAptOffline.mdwn
index b8dc3cac..9596040d 100644
--- a/hurd/running/debian/DebianAptOffline.mdwn
+++ b/hurd/running/debian/DebianAptOffline.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2005, 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2005, 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
# How to Installing Packages without a Network Connection from your Hurd Installation
diff --git a/hurd/running/debian/GnuDebianRelationship.mdwn b/hurd/running/debian/GnuDebianRelationship.mdwn
index ede808c8..94fd6265 100644
--- a/hurd/running/debian/GnuDebianRelationship.mdwn
+++ b/hurd/running/debian/GnuDebianRelationship.mdwn
@@ -2,11 +2,11 @@ I have hesitated in starting this page due to the sensitive nature of this relat
This is a work in progress. Please email me directly if you have comments or suggestions.
-* Debian Advantages of Hurd [[Distrib/PortingIssues]] Efforts
+* Debian Advantages of Hurd [[porting/guidelines]] Efforts
* One of the first ports to non-Linux system along with \*BSD and win32.
* Official GNU system distribution.
-* Debian Disadvantages of Hurd [[Distrib/PortingIssues]] Efforts
+* Debian Disadvantages of Hurd [porting/guidelines]] Efforts
* Perceived zealous GNU and FSF promotion.
* Hurd Port Advantages of Debian
diff --git a/hurd/running/debian/MediaPressKitDiscuss.mdwn b/hurd/running/debian/MediaPressKitDiscuss.mdwn
index e8b1cfff..2bd97290 100644
--- a/hurd/running/debian/MediaPressKitDiscuss.mdwn
+++ b/hurd/running/debian/MediaPressKitDiscuss.mdwn
@@ -1,5 +1,3 @@
-%TOC%
-
# <a name="Media_Press_Kit"> Media / Press Kit </a>
## <a name="Problem"> Problem </a>
diff --git a/hurd/running/debian/after_install.mdwn b/hurd/running/debian/after_install.mdwn
index 33a70349..36c37281 100644
--- a/hurd/running/debian/after_install.mdwn
+++ b/hurd/running/debian/after_install.mdwn
@@ -5,7 +5,7 @@ mode?
Time to get to work.
-[[toc ]]
+[[!toc]]
### Get Networking Running
@@ -29,21 +29,23 @@ If the NIC was detected:
# settrans -fgap /servers/socket/2 /hurd/pfinet -i eth0 -a 192.168.1.3 -g 192.168.1.1 -m 255.255.255.0
+Or read about how to configure [[DHCP]].
+
# Setup GRUB
You surely want grub to have a nice menu entry able to boot GNU, instead of
typing a boring arcane. There are Debian-specific scripts that may help
-you. See the [[GrubNotes]] for this.
+you. See [[GRUB]]'s page for this.
# Setup `apt-get`
Sometimes getting `apt-get` to work is not straightforward. Good mirrors to
-put in `/etc/apt/sources.list` are (as of Jan 2007):
+put in `/etc/apt/sources.list` are:
- deb http://mirrors.kernel.org/debian unstable main contrib
- deb-src http://mirrors.kernel.org/debian unstable main contrib
+ deb http://ftp.debian.org/debian unstable main contrib
+ deb-src http://ftp.debian.org/debian unstable main contrib
deb http://ftp.debian-ports.org/debian unreleased main
deb-src http://ftp.debian-ports.org/debian unreleased main
@@ -54,26 +56,12 @@ If when doing your first `apt-get`, `dpkg` complains of missing programs, get ro
Installing packages without having a network connection is described
[[Distrib/DebianAptOffline]].
-
# [[translator/Random]]
-You often need `scp` and `ssh`. Sadly the Debian GNU/Hurd does not yet come
-with any default random translator package installed. See
-[[translator/random]] for details, the following is just a quick recap.
-
- cd && mkdir tmp && cd tmp
- wget http://kilobug.free.fr/hurd/random-64.tar.gz
- tar xvfz random-64.tar.gz
- cp random /hurd/
-
- settrans -c /dev/random /hurd/random \
- --seed-file /var/run/random-seed --secure
- settrans -c /dev/urandom /hurd/random \
- --seed-file /var/run/urandom-seed --fast
- chmod 0644 /dev/random /dev/urandom
-
- apt-get install ssh
+You often need `scp` and `ssh`. There is now a `random-egd` package available which uses
+a random translator by Ryan Hunter and the entropy gathering daemon as entropy source.
+See [[Translator/random]] for more information.
# [[Console]]
@@ -87,41 +75,11 @@ You can also call the Hurd console manually with the proper arguments:
console -d vga -d pc_kbd --repeat=kbd -d pc_mouse --repeat=mouse \
-d generic_speaker -c /dev/vcs
- cd /dev
- ln -s cons/kbd .
- ln -s cons/mouse .
-
# [[Hurd/DebianXorg]]
You first must have setup the virtual console. See above.
-Assuming you've installed WindowMaker and have tried running `startx` already:
-
- [/etc/X11/XF86Config-4]
-
- Section "Module"
- # Load "dri"
- # Load "speedo"
- .
- .
- .
- EndSection
-
- Section "InputDevice"
- Identifier "Configured Mouse"
- Driver "mouse"
- Option "CorePointer"
- Option "Device" "/dev/mouse"
- Option "Protocol" "osmouse"
- EndSection
-
-Make sure not to have the `Emulate3Buttons` and `ZAxisMapping` settings set, as
-they lead to problems with e.g. dragging windows around.
-
- [/etc/profile]
- LD_LIBRARY_PATH=/X11R6/lib:$LD_LIBRARY_PATH
-
# What about package XYZ?
See if you can find a useful tip in [[package_troubleshooting]].
diff --git a/hurd/running/debian/creating_image_tarball.mdwn b/hurd/running/debian/creating_image_tarball.mdwn
new file mode 100644
index 00000000..ac91dab4
--- /dev/null
+++ b/hurd/running/debian/creating_image_tarball.mdwn
@@ -0,0 +1,21 @@
+[[!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]]."]]"""]]
+
+The following [[anonftpsync-ports]] is used to create a local Debian GNU/Hurd
+repo. You will need atleast 12G of disk space. Change the
+"TO=/home/foo/rsync-debian-ports" to your desired target directory.
+
+Run it using:
+
+ sudo sh anonftpsync-ports
+
+In /home/foo/rsync-debian-ports, you will find the following directories:
+
+ base dists indices pool pool-hurd-i386 project
diff --git a/hurd/running/debian/creating_image_tarball/anonftpsync-ports b/hurd/running/debian/creating_image_tarball/anonftpsync-ports
new file mode 100644
index 00000000..0988dbde
--- /dev/null
+++ b/hurd/running/debian/creating_image_tarball/anonftpsync-ports
@@ -0,0 +1,180 @@
+#! /bin/sh
+set -e
+
+# This script originates from http://www.debian.org/mirror/anonftpsync
+# modified by Martin Zobel-Helas <zobel@debian.org>, 2005-01-16
+# these modifications are published under the terms of the GNU GPL
+# Modifications:
+# + some more documentation about variables
+# + added ARCH_EXCLUDE
+# + mirror in a safe way, first /pool, then /dists and the rest
+# modified by Aurelien Jarno <aurel32@debian.org>, 2007-12-02
+# these modifications are published under the terms of the GNU GPL
+# + modifications to mirror debia,-ports.org
+# Version: $Id: anonftpsync,v 1.18 2005/10/28 15:25:54 aba Exp $
+
+
+# Note: You MUST have rsync 2.0.16-1 or newer, which is available in slink
+# and all newer Debian releases, or at http://rsync.samba.org/
+
+# Set the variables below to fit your site. You can then use cron to have
+# this script run daily to automatically update your copy of the archive.
+
+# Don't forget:
+# chmod 744 anonftpsync
+
+# TO is the destination for the base of the Debian mirror directory
+# (the dir that holds dists/ and ls-lR).
+# (mandatory)
+
+TO=/home/foo/rsync-debian-ports
+
+# RSYNC_HOST is the site you have chosen from the mirrors file.
+# (http://www.debian-ports.org/mirrors)
+# (mandatory)
+
+RSYNC_HOST=rsync.debian-ports.org
+
+# RSYNC_DIR is the directory given in the "Packages over rsync:" line of
+# the mirrors file for the site you have chosen to mirror.
+# (mandatory)
+
+RSYNC_DIR=debian/
+
+# LOGDIR is the directory where the logs will be written to
+# (mandatory)
+
+LOGDIR=/var/log/rsync-debian-ports
+
+# ARCH_EXCLUDE can be used to exclude a complete architecture from
+# mirrorring. Please use as space seperated list.
+# Possible values are:
+# armel hurd-i386 kfreebsd-amd64 kfreebsd-i386
+#
+# There is one special value: source
+# This is not an architecture but will exclude all source code in /pool
+#
+# eg.
+# ARCH_EXCLUDE="hurd-i386"
+#
+# With a blank ARCH_EXCLUDE you will mirror all availible architectures
+# (optional)
+
+ARCH_EXCLUDE="armel kfreebsd-amd64 kfreebsd-i386 m68k"
+
+# EXCLUDE is a list of parameters listing patterns that rsync will exclude.
+# The following example would exclude mostly everything:
+#EXCLUDE="\
+# --exclude binary-hurd-i386/ --exclude binary-kfreebsd-i386/
+# --exclude *_hurd-i386.deb --exclude *_knetbsd-i386.deb \
+# --exclude stable/ --exclude testing/ --exclude unstable/ \
+# --exclude source/ \
+# --exclude *.orig.tar.gz --exclude *.diff.gz --exclude *.dsc \
+# --exclude /base/ --exclude /bochs/ --exclude /obsolete/ \
+# "
+
+# With a blank EXCLUDE you will mirror the entire archive.
+# (optional)
+
+EXCLUDE="--exclude binary-kfreebsd-i386/ --exclude *_knetbsd-i386.deb \
+ --exclude source/ --exclude *.orig.tar.gz --exclude *.diff.gz \
+ --exclude /bochs/ --exclude /obsolete/ \
+ --exclude *kfreebsd* --exclude *m68* --exclude *sh* \
+ "
+
+# MAILTO is the address to send logfiles to;
+# if it is not defined, no mail will be sent
+# (optional)
+
+MAILTO=
+
+# There should be no need to edit anything below this point, unless there
+# are problems.
+
+#-----------------------------------------------------------------------------#
+
+# Check for some environment variables
+if [ -z $TO ] || [ -z $RSYNC_HOST ] || [ -z $RSYNC_DIR ] || [ -z $LOGDIR ]; then
+ echo "One of the following variables seems to be empty:"
+ echo "TO, RSYNC_HOST, RSYNC_DIR or LOGDIR"
+ exit 2
+fi
+
+if ! [ -d ${TO}/project/trace/ ]; then
+ # we are running mirror script for the first time
+ mkdir -p ${TO}/project/trace
+fi
+
+# Note: on some non-Debian systems, hostname doesn't accept -f option.
+# If that's the case on your system, make sure hostname prints the full
+# hostname, and remove the -f option. If there's no hostname command,
+# explicitly replace `hostname -f` with the hostname.
+HOSTNAME=`hostname -f`
+
+LOCK="${TO}/Archive-Update-in-Progress-${HOSTNAME}"
+
+# Exclude architectures defined in $ARCH_EXCLUDE
+for ARCH in $ARCH_EXCLUDE; do
+ EXCLUDE=$EXCLUDE"\
+ --exclude binary-$ARCH/ \
+ --exclude disks-$ARCH/ \
+ --exclude installer-$ARCH/ \
+ --exclude Contents-$ARCH \
+ --exclude Contents-$ARCH.gz \
+ --exclude *_$ARCH.deb \
+ --exclude *_$ARCH.udeb \
+ --exclude pool-$ARCH/"
+ if [ "$ARCH" == "source" ]; then
+ SOURCE_EXCLUDE="\
+ --exclude *.tar.gz \
+ --exclude *.diff.gz \
+ --exclude *.dsc "
+ fi
+done
+
+# Logfile
+LOGFILE=$LOGDIR/debian-mirror-ports.log
+
+# Get in the right directory and set the umask to be group writable
+#
+cd $HOME
+umask 002
+
+# Check to see if another sync is in progress
+if lockfile -! -l 10800 -r 0 "$LOCK"; then
+ echo ${HOSTNAME} is unable to start rsync, lock file exists
+ exit 1
+fi
+# Note: on some non-Debian systems, trap doesn't accept "exit" as signal
+# specification. If that's the case on your system, try using "0".
+trap "rm -f $LOCK > /dev/null 2>&1" exit
+
+set +e
+
+# First sync /pool-*
+rsync --recursive --links --hard-links --times --verbose \
+ $EXCLUDE $SOURCE_EXCLUDE \
+ $RSYNC_HOST::$RSYNC_DIR/pool-* $TO >> $LOGFILE 2>&1
+result=$?
+
+if [ 0 = $result ]; then
+ # Now sync the remaining stuff
+ rsync --recursive --links --hard-links --times --verbose --delete-after \
+ --exclude "Archive-Update-in-Progress-${HOSTNAME}" \
+ --exclude "project/trace/" \
+ --exclude "/pool-*/" \
+ $EXCLUDE \
+ $RSYNC_HOST::$RSYNC_DIR $TO >> $LOGFILE 2>&1
+
+ date -u > "${TO}/project/trace/${HOSTNAME}"
+else
+ echo "ERROR: Help, something weird happened" | tee -a $LOGFILE
+ echo "mirroring /pool-* exited with exitcode" $result | tee -a $LOGFILE
+fi
+
+
+if ! [ -z $MAILTO ]; then
+ mail -s "debian ports archive synced" $MAILTO < $LOGFILE
+fi
+
+savelog $LOGFILE
diff --git a/hurd/running/debian/dhcp.mdwn b/hurd/running/debian/dhcp.mdwn
new file mode 100644
index 00000000..8d351aae
--- /dev/null
+++ b/hurd/running/debian/dhcp.mdwn
@@ -0,0 +1,31 @@
+[[!meta copyright="Copyright © 2011 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]]
+
+In order to use DHCP, you need to install the `ifup` and `isc-dhcp-client`
+packages, and manually create the following two symbolic links:
+
+ # ln -s ../rcS.d/S06ifupdown-clean ../rcS.d/S11networking /etc/rc.boot/
+
+During execution at boot time, the `S11networking` script will emit some error
+messages while trying to configure the loopback interface. These are not
+fatal.
+
+Debian GNU/Hurd doesn't currently execute's Debian standard `/etc/rcS.d/*` boot
+scripts, but has its own `/libexec/rc` script -- which integrates scripts from
+`/etc/rc.boot/` instead.
+
+
+# Open Issues
+
+ * [[!debbug 616290]]
+
+ * [[Proper Hurdy DHCP support|hurd/translator/pfinet/dhcp]]
diff --git a/hurd/running/debian/faq.mdwn b/hurd/running/debian/faq.mdwn
index f4b607bf..8aaadf9c 100644
--- a/hurd/running/debian/faq.mdwn
+++ b/hurd/running/debian/faq.mdwn
@@ -1,19 +1,21 @@
-[[meta copyright="Copyright © 2007 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2009, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="Debian GNU/Hurd FAQ"]]
+[[!meta title="Debian GNU/Hurd FAQ"]]
-See also the [[Hurd_FAQ|hurd/FAQ]] and [[after_install]].
+See also [[after_install]] instructions, and other [[/FAQ]].
-[[inline
+[[!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/2_gib_partition_limit.mdwn b/hurd/running/debian/faq/2_gib_partition_limit.mdwn
index aed47445..195191cb 100644
--- a/hurd/running/debian/faq/2_gib_partition_limit.mdwn
+++ b/hurd/running/debian/faq/2_gib_partition_limit.mdwn
@@ -1,13 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="2 GiB Partition Limit"]]
+[[!meta title="2 GiB Partition Limit"]]
The 2 GiB limit has been removed in Debian GNU/Hurd.
diff --git a/hurd/running/debian/faq/512_mib_ram_limit.mdwn b/hurd/running/debian/faq/512_mib_ram_limit.mdwn
index 462ba73d..f89a5c01 100644
--- a/hurd/running/debian/faq/512_mib_ram_limit.mdwn
+++ b/hurd/running/debian/faq/512_mib_ram_limit.mdwn
@@ -1,18 +1,21 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="512 MiB RAM Limit"]]
+[[!meta title="512 MiB RAM Limit"]]
-GNU Mach does not cope well with lots of memory. Newer versions of the Debian
-`gnumach` package will limit themselves to around 1 GiB of memory. If you have
-an older version, or still experience problems with `vmstat` (see above)
-reported much less memory than you have, the best is to limit the memory it can
-see via GRUB's `upppermem` feature. Add `uppermem 786432` to GRUB's Hurd entry
-in `menu.lst`.
+Just like any 32bit OS without bad tricks, GNU Mach does not cope well with lots
+of memory. Newer versions of the Debian `gnumach` package will limit themselves
+to around 1 GiB of memory. If you want more, you can twiddle the VM_MAX_ADDRESS
+limit between kernelland and userland in i386/include/mach/i386/vm_param.h.
+
+If you have an older version, or still experience problems with `vmstat` (see
+above) reported much less memory than you have, the best is to limit the memory
+it can see via GRUB's `upppermem` feature. Add `uppermem 786432` to GRUB's Hurd
+entry in `menu.lst`.
diff --git a/hurd/running/debian/faq/apt_umount.mdwn b/hurd/running/debian/faq/apt_umount.mdwn
index 4a3b2dd2..db0dbfd1 100644
--- a/hurd/running/debian/faq/apt_umount.mdwn
+++ b/hurd/running/debian/faq/apt_umount.mdwn
@@ -1,14 +1,14 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="apt: unmount cdroms"]]
+[[!meta title="apt: unmount cdroms"]]
You can add a shell script umount so that apt can automatically unmount cdroms.
@@ -22,4 +22,4 @@ Give executable permission to the script.
# chmod +x /usr/bin/umount
In `/etc/fstab` add a trailing `/` after cdrom like `/cdrom/` since apt uses a
-traing `/`.
+trailing `/`.
diff --git a/hurd/running/debian/faq/bad_hypermeta_data.mdwn b/hurd/running/debian/faq/bad_hypermeta_data.mdwn
index eedb461d..bc960e30 100644
--- a/hurd/running/debian/faq/bad_hypermeta_data.mdwn
+++ b/hurd/running/debian/faq/bad_hypermeta_data.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
If you get the error `bad hypermeta data` when trying to mount an ext3
partition from GNU/Linux, that is usually because the file system has not been
diff --git a/hurd/running/debian/faq/debugging_inside_glibc.mdwn b/hurd/running/debian/faq/debugging_inside_glibc.mdwn
index d28eccd7..91b71d64 100644
--- a/hurd/running/debian/faq/debugging_inside_glibc.mdwn
+++ b/hurd/running/debian/faq/debugging_inside_glibc.mdwn
@@ -1,20 +1,19 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
To get [[debugging]] information for glibc, you need to install the
`libc0.3-dbg` package. At the place [[debugging/GDB]] looks for debugging
symbols by default (`/usr/lib/debug/lib/`), Debian's `libc0.3-dbg` stores only
-frame unwind information. If you want to step into glibc while debugging, you
-need to add `LD_LIBRARY_PATH=/usr/lib/debug` to GDB's environment. If that
-still does not work, try `LD_PRELOAD=/usr/lib/debug/libc.so.0.3` instead. You
-can add to GDB's environment via `set env FOO bar` from the GDB command line.
-
-It seems that this is no longer needed with the Debian glibc 2.5 packages, but
-I may as well be wrong. Have to check that again.
+the frame unwind information used for backtracing. If you want to step into
+glibc while debugging, you need to add `LD_LIBRARY_PATH=/usr/lib/debug` to
+debugged program's environment (`set env VAR value` from the GDB command line).
+If that still does not work, try `LD_PRELOAD=/usr/lib/debug/libc.so.0.3`
+instead.
diff --git a/hurd/running/debian/faq/debugging_translators.mdwn b/hurd/running/debian/faq/debugging_translators.mdwn
index e87513c4..b55484e1 100644
--- a/hurd/running/debian/faq/debugging_translators.mdwn
+++ b/hurd/running/debian/faq/debugging_translators.mdwn
@@ -1,17 +1,15 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
In order to [[debug|debugging]] translators and being able to step into glibc
-during it, you need the `hurd-dbg` and `libc0.3-dbg` packages installed. Then
+during it, you need the `hurd-dbg` and `libc0.3-dbg` packages installed. If you need to debug the initialization of the translator,
start the translator like `settrans -P /foo /usr/bin/env
LD\_LIBRARY\_PATH=/usr/lib/debug /hurd/foofs`. The `-P` option will make it
pause and you will be able to attach [[debugging/GDB]] to the process.
-
-Is starting the translator like this really needed?
diff --git a/hurd/running/debian/faq/dev_random.mdwn b/hurd/running/debian/faq/dev_random.mdwn
index 0043699e..3b5fdffe 100644
--- a/hurd/running/debian/faq/dev_random.mdwn
+++ b/hurd/running/debian/faq/dev_random.mdwn
@@ -1,15 +1,17 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="/dev/random"]]
+[[!meta title="/dev/random"]]
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/faq/df.mdwn b/hurd/running/debian/faq/df.mdwn
index be0df444..bbd3a7b9 100644
--- a/hurd/running/debian/faq/df.mdwn
+++ b/hurd/running/debian/faq/df.mdwn
@@ -1,13 +1,19 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-There is no `/etc/mtab`, so just running `df` will yield an error. Pass `df` a
-path like `df /` or `df ./` to see the disk usage of that particular file
-system.
+There is no `/etc/mtab` (due to dynamic translator startup, its content is hard
+to define actually, see
+[[the mtab GSoC project idea|community/gsoc/project_ideas/mtab]]),
+so just running `df` will yield the following error.
+
+ df: cannot read table of mounted file systems
+
+Pass `df` a path like `df /` or `df ./` to see the disk usage of that particular
+file system.
diff --git a/hurd/running/debian/faq/eata.mdwn b/hurd/running/debian/faq/eata.mdwn
new file mode 100644
index 00000000..fa7dbdec
--- /dev/null
+++ b/hurd/running/debian/faq/eata.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+In some virtual machines (e.g. VirtualBox), "probing eata on XXX" may be
+quite long. This is apparently due to poor efficiency of the virtualizer, not
+Mach. There is no such issue on real hardware or using qemu/kvm.
diff --git a/hurd/running/debian/faq/free_memory.mdwn b/hurd/running/debian/faq/free_memory.mdwn
index c5c28d2d..c1c0a83c 100644
--- a/hurd/running/debian/faq/free_memory.mdwn
+++ b/hurd/running/debian/faq/free_memory.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Run `vmstat` to see memory and swap usage.
diff --git a/hurd/running/debian/faq/hurd_console.mdwn b/hurd/running/debian/faq/hurd_console.mdwn
index 3d5a6035..c4a619a1 100644
--- a/hurd/running/debian/faq/hurd_console.mdwn
+++ b/hurd/running/debian/faq/hurd_console.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Edit `/etc/default/hurd-console` to configure the Hurd console and enable it on
bootup. See [[console]] for further information about the Hurd console.
diff --git a/hurd/running/debian/faq/kernel_logs.mdwn b/hurd/running/debian/faq/kernel_logs.mdwn
index 0962f3aa..ff14ce5f 100644
--- a/hurd/running/debian/faq/kernel_logs.mdwn
+++ b/hurd/running/debian/faq/kernel_logs.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
The kernel logs are written to `/dev/klog`. Run `cat /dev/klog > foo` as root
and hit `ctrl+c` after a few seconds to catch the logs. You can do this only
diff --git a/hurd/running/debian/faq/other_repositories.mdwn b/hurd/running/debian/faq/other_repositories.mdwn
index d824f779..88781d46 100644
--- a/hurd/running/debian/faq/other_repositories.mdwn
+++ b/hurd/running/debian/faq/other_repositories.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
If you want to use the `apt-get source` facility, make sure that
`/etc/apt/sources.list` contains a line like
diff --git a/hurd/running/debian/faq/ps_hangs.mdwn b/hurd/running/debian/faq/ps_hangs.mdwn
index d2ffefeb..febfeb59 100644
--- a/hurd/running/debian/faq/ps_hangs.mdwn
+++ b/hurd/running/debian/faq/ps_hangs.mdwn
@@ -1,11 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-If `ps` hangs, try `ps -M` which might still work.
+If `ps` hangs, try `ps -M` which might still work by not getting detailed
+information from processes.
diff --git a/hurd/running/debian/faq/reporting_bugs.mdwn b/hurd/running/debian/faq/reporting_bugs.mdwn
index 5abac5ce..40781ab0 100644
--- a/hurd/running/debian/faq/reporting_bugs.mdwn
+++ b/hurd/running/debian/faq/reporting_bugs.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Please try to reproduce bugs which are not obviously Hurd-specific on Debian
GNU/Linux and then file them there.
diff --git a/hurd/running/debian/faq/sata_disk_drives.mdwn b/hurd/running/debian/faq/sata_disk_drives.mdwn
index 929c08f0..dad10cb9 100644
--- a/hurd/running/debian/faq/sata_disk_drives.mdwn
+++ b/hurd/running/debian/faq/sata_disk_drives.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
GNU Mach does not support SATA disk drives (/dev/sda etc. in GNU/Linux) natively, so using device:sd0s1 will not work, sd* devices are for SCSI drives only. The only way to get those drives to work is to put them into compatibility mode in the BIOS, if such an option exists. GNU Mach will then recognize them as hda etc.
diff --git a/hurd/running/debian/faq/sshd.mdwn b/hurd/running/debian/faq/sshd.mdwn
deleted file mode 100644
index 4ae689bf..00000000
--- a/hurd/running/debian/faq/sshd.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-[[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]]."]]"""]]
-
-You need to disable `PrivilegeSeparation` in `/etc/ssh/sshd_options`. Also
-make sure you have `/dev/random`, see below.
diff --git a/hurd/running/debian/faq/sshd_only_works_for_root_logins.mdwn b/hurd/running/debian/faq/sshd_only_works_for_root_logins.mdwn
new file mode 100644
index 00000000..1a3c46e1
--- /dev/null
+++ b/hurd/running/debian/faq/sshd_only_works_for_root_logins.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 2007, 2008, 2010 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]]."]]"""]]
+
+This isssue has been fixed in the Debian hurd / libc0.3 packages as of 2010-11.
+Retire this item sometime after 2011.
+
+---
+
+Privilege seperation does not work with Hurd currently. You need to explicitely
+set `PrivilegeSeparation` to `no` in `/etc/ssh/sshd_options`, just commenting out
+the entry will not work as it is on by default. Also make sure you have
+`/dev/random`, see below.
diff --git a/hurd/running/debian/faq/xserver-common.mdwn b/hurd/running/debian/faq/xserver-common.mdwn
index 5cf0ec11..09fbc902 100644
--- a/hurd/running/debian/faq/xserver-common.mdwn
+++ b/hurd/running/debian/faq/xserver-common.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
You need to run `dpkg-reconfigure xserver-common` and select `Anybody` for
starting X as there is no way to detect console users currently.
diff --git a/hurd/running/debian/logo.png b/hurd/running/debian/logo.png
deleted file mode 100644
index 068d9584..00000000
--- a/hurd/running/debian/logo.png
+++ /dev/null
Binary files differ
diff --git a/hurd/running/debian/package_troubleshooting.mdwn b/hurd/running/debian/package_troubleshooting.mdwn
index 829af8e3..c6236c2f 100644
--- a/hurd/running/debian/package_troubleshooting.mdwn
+++ b/hurd/running/debian/package_troubleshooting.mdwn
@@ -1,9 +1,5 @@
This page reports known Hurd-specific bugs, quirks and corresponding solutions and workarounds with Debian GNU/Hurd package installation and working.
-## <a name="Table_of_Contents"> Table of Contents </a>
-
-%TOC%
-
## <a name="Dpkg_wants_external_programs_"> Dpkg wants external programs? </a>
It may be that dpkg wants external GNU/Linux-specific programs that it can't found or that just don't exist on the Hurd. You can trick dpkg by copying and running this script as root:
@@ -21,7 +17,8 @@ You must set up the [[translator/random]] device first.
## <a name="An_X_package_hangs_at_startup_wi"> An X package hangs at startup without error messages </a>
-Observed with GTK programs like xchat, synaptic, inkscape. It is an issue with libpthread that (as of 04 Feb 2007) is still unresolved. Sorry.
+Observed with GTK programs like xchat, synaptic, inkscape. It is an issue with
+[[libpthread]] that (as of 04 Feb 2007) is still unresolved. Sorry.
## <a name="Borked_fonts_on_GTK_app"> </a> Borked fonts on GTK app
diff --git a/hurd/running/debian/patch_submission.mdwn b/hurd/running/debian/patch_submission.mdwn
index 0fd73b7b..1dd8a4db 100644
--- a/hurd/running/debian/patch_submission.mdwn
+++ b/hurd/running/debian/patch_submission.mdwn
@@ -1,36 +1,66 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2011 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-If you fixed a Debian package which FTBFS (fails to build from source), you should submit the patch so that all users can profit from your work.
+If you fixed a Debian package which *FTBFS* (fails to build from source), you
+should submit the patch so that all users can profit from your work.
-If it is not a Debian-specific patch, you should strongly consider submitting the patch upstream for inclusion. This applies even more so if it is a GNU package, or otherwise frequently used package, or you know upstream anyway.
+If it is not a Debian-specific patch, you should strongly consider submitting
+the patch upstream for inclusion. This applies even more so if it is a GNU
+package, or otherwise frequently used package, or you know upstream anyway.
-If you had to change the code considerably and are not 100% sure you did not introduce a regression, or are not very experienced with these kinds of code changes, you should first submit your patch for review to the [Debian alioth patch tracker](http://alioth.debian.org/tracker/?atid=410472&group_id=30628&func=browse).
+If you had to change the code considerably and are not 100% sure you did not
+introduce a regression, or are not very experienced with these kinds of code
+changes, you should first submit your patch for review to the [Debian alioth
+patch
+tracker](http://alioth.debian.org/tracker/?atid=410472&group_id=30628&func=browse).
-If the patch is trivial, or one of the Debian porters approved your patch for submission, submit the patch to the Debian BTS (bug tracking system). You can either use the reportbug tool, or just simple mail. In any case, you should follow these guidelines:
+If the patch is trivial, or one of the Debian porters approved your patch for
+submission, submit the patch to the Debian BTS (bug tracking system). You can
+either use the reportbug tool, or just simple mail. In any case, you should
+follow these guidelines:
-
- * The submission address is <submit@bugs.debian.org>
- * Subject/Bug title should be "(source-package): FTBFS on hurd-i386: (reason)"
- * "Severity:" should be "important", **not "serious"**
- * "Version:" should be the version of the source package in unstable
- * Add "Tags: patch"
- * Add "User: debian-hurd@lists.debian.org"
- * Add "Usertags: hurd"
+ * The submission address is <submit@bugs.debian.org>.
-In the bug description, mention that the package fails to build on hurd-i386 and (if possible) quote the failure. If possible, point to the failing build log from <http://buildd.debian-ports.org/build.php>.
+ * The mail's subject (which will become the bug's title) should be
+ `SOURCE-PACKAGE: FTBFS on hurd-i386: REASON`.
-Then, explain the failure (Debian maintainers usually do not know much about Hurd-specific failures), and attach the patch.
+ * The first lines of the mail's body (the so-called *pseudo-header*):
+
+ Package: PACKAGE
+ Severity: important -- not *serious*
+ Version: VERSION -- the version of the source package in unstable.
+ Tags: patch -- if you include a ready-to-be-applied patch.
+ User: debian-hurd@lists.debian.org
+ Usertags: hurd
+ X-Debbugs-CC: debian-hurd@lists.debian.org
+
+The last three lines are used to to change the current *User* to the specified
+value (the default is the email sender/from address), specify *Usertags* to add
+the specified tags for the current user, and *X-Debbugs-CC* so that the
+[[mailing list|mailing_lists/debian-hurd]] knows about your report.
+
+In the bug description, mention that the package fails to build on hurd-i386
+and (if possible) quote the failure. If possible, point to the failing build
+log from <http://buildd.debian-ports.org/build.php> or elsewhere.
+
+Then, explain the failure (Debian maintainers usually do not know much about
+Hurd-specific failures), and attach the patch.
The patch should be in unidiff form.
-If the package uses a patch system, it is preferable to submit the patch in a ready to use form (e.g. as a dpatch), but this is not required. Also, try to keep the patch small, e.g. do not submit a 100k autotools diff for a one-line change in configure.in or a Makefile.am, but in this case mention that autotools need to be rerun and let the maintainer choose (you can suggest you would file a complete diff if the maintainer prefers)
+If the package uses a patch system, it is preferable to submit the patch in a
+ready-to-use form (e.g. as a *dpatch*), but this is not required. Also, try to
+keep the patch small, e.g., do not submit a 100 KiB autotools diff for a
+one-line change in `configure.in` or a `Makefile.am`, but in this case mention
+that autotools need to be rerun and let the maintainer choose (you can suggest
+you would file a complete diff if the maintainer prefers).
Last but not least, try to be courteous.
diff --git a/hurd/running/debian/porting.mdwn b/hurd/running/debian/porting.mdwn
new file mode 100644
index 00000000..b57b295e
--- /dev/null
+++ b/hurd/running/debian/porting.mdwn
@@ -0,0 +1,56 @@
+[[!meta copyright="Copyright © 2007, 2008, 2009, 2010, 2011 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]]."]]"""]]
+
+[[!meta title="Debian packages that need porting"]]
+
+[[!tag stable_URL]]
+
+More than half of the Debian archive has been compiled successfully on the
+Hurd, however, many programs fail to build for various reasons.
+
+A [list of build failures including error
+messages](http://unstable.buildd.net/buildd/hurd-i386_Failed.html) can be
+found, as well as a [preliminary
+analysis](http://lists.debian.org/debian-hurd/2007/07/msg00000.html) of them and [solutions](http://lists.debian.org/debian-hurd/2007/07/msg00001.html), and some more details in [[hurd/porting/guidelines]]. [Graphs and statistics](http://people.debian.org/~sthibault/) about the consequence in terms of build dependencies are available.
+
+There is a mailing list,
+[debian-hurd-build-logs](http://lists.alioth.debian.org/mailman/listinfo/debian-hurd-build-logs),
+where *builds logs from the Debian GNU/Hurd autobuilders* are posted. It is a
+high-traffic and high-volume list, and for that reason *not* archived, so you
+have to subscribe to see the messages.
+
+It might be a good idea to record your intention to port something either in
+the list below or in the [Alioth task
+tracker](http://alioth.debian.org/pm/task.php?group_project_id=34&group_id=30628&func=browse)
+so other people do not do duplicated work.
+
+Also, the [[community/HurdFr]] guys maintain their own [liste des travaux de
+packaging](http://wiki.hurdfr.org/index.php/Liste_des_travaux_de_packaging).
+
+Aside from the Alioth task tracker, here is a list of some packages (the
+important ones, as they're, e.g., blocking other packages from being built)
+that need someone to work on them.
+
+When you have a patch to submit, please adhere to the [[patch_submission]]
+guidelines.
+
+There is also further information available about [[hurd/porting]].
+
+[[!map
+pages="tagged(open_issue_porting) and !tagged(fixed_in_debian) and !*/discussion"
+show=title]]
+
+[[!inline
+pages="tagged(open_issue_porting) and !tagged(fixed_in_debian) and !*/discussion"
+show=0
+feeds=no
+actions=yes
+rootpage="open_issues" postformtext="Add a new item titled:"]]
diff --git a/hurd/running/debian/qemu_image.mdwn b/hurd/running/debian/qemu_image.mdwn
new file mode 100644
index 00000000..9f828556
--- /dev/null
+++ b/hurd/running/debian/qemu_image.mdwn
@@ -0,0 +1,23 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+There is a QEMU image with [[Debian GNU/Hurd|debian]] pre-installed available
+as <http://people.debian.org/~sthibault/hurd-i386/debian-hurd.img.tar.gz>.
+
+Usage:
+
+ $ wget http://people.debian.org/~sthibault/hurd-i386/debian-hurd.img.tar.gz
+ $ tar -xz < debian-hurd.img.tar.gz
+ $ qemu -net nic,model=rtl8139 -net user debian-hurd-*.img
+
+Just in case you were wondering: the *root* password is *root*.
+
+[[!if test="destpage(hurd/running/qemu)" then="" else="For more detailed
+instructions, please see the [[hurd/running/QEMU]] page."]]
diff --git a/hurd/running/distrib.mdwn b/hurd/running/distrib.mdwn
index fc42e862..90211e34 100644
--- a/hurd/running/distrib.mdwn
+++ b/hurd/running/distrib.mdwn
@@ -1,13 +1,21 @@
+Working distributions of GNU/Hurd:
+
* [[Debian]]
+
+GNU/Hurd distributions in early stages of development:
+
+* [[Arch|arch_hurd]] (features a LiveCD)
* [[Gentoo]]
-* [[Bee]]
* [[GNU]]
+<!-- Bee GNU/Hurd doesn't seem to exist anymore.
+* [[Bee]]
+-->
# Issues
<dt>[[SoftwareLicensing]]</dt>
-<dd> The copyright and license information for software that is distributed with the Hurd software is important. Debian has it's DFSG guidelines. Other distributions will need to address these same issues. </dd>
+<dd> The copyright and license information for software that is distributed with the Hurd software is important. Debian has its DFSG guidelines. Other distributions will need to address these same issues. </dd>
[[GnuDebianRelationship]]
@@ -30,8 +38,8 @@
</dl>
<dl>
- <dt>[[GrubNotes]]</dt>
- <dd> A quick reference and explanation. There's also a topic for the new [[GrubConf]]. </dd>
+ <dt>[[GRUB]]</dt>
+ <dd> A quick reference and explanation. </dd>
</dl>
<dl>
@@ -64,11 +72,11 @@ about getting applications to work (if possible).
<dl>
<dt>[[SavannahProjects]]</dt>
- <dd> Savannah is a CVS &amp;amp; Bug system evolved from a free version of the code that powers <a href="http://sf.net" target="_top">sourceforge.net</a>. It has forked and been slightly modified for use by FSF, GNU and non-GNU projects. Actual Development takes place here. There is also a <a href="http://savannah.gnu.org/people/?group=hurd" target="_top">help wanted</a> list. </dd>
+ <dd> Savannah is a CVS &amp; Bug system evolved from a free version of the code that powers <a href="http://sf.net" target="_top">sourceforge.net</a>. It has forked and been slightly modified for use by FSF, GNU and non-GNU projects. Actual Development takes place here. There is also a <a href="http://savannah.gnu.org/people/?group=hurd" target="_top">help wanted</a> list. </dd>
</dl>
<dl>
- <dt>[[PortingIssues]] FAQ</dt>
+ <dt>[[porting/guidelines]] FAQ</dt>
<dd> What does it take to move a piece of Debian packaged software to the GNU/Hurd port? </dd>
</dl>
@@ -78,8 +86,8 @@ about getting applications to work (if possible).
</dl>
<dl>
- <dt> Debain Infrastructure</dt>
- <dd> Testing is critical in helping the development effort. Bugs (defect reports) can be filed against the Debian software package in which they are found. [[BtsFiling]] tells how to file a Debian bug report. [[DebianPackages]] has some information about how Debian splits the software into packages and some references. There is a buildd autobuilder compiling the Debian Sid archive software for the GNU/Hurd port. [[BuilddStatus]] includes information on the buildd &amp;amp; turtle efforts. </dd>
+ <dt> Debian Infrastructure</dt>
+ <dd> Testing is critical in helping the development effort. Bugs (defect reports) can be filed against the Debian software package in which they are found. [[debian/patch_submission]] tells how to file a Debian bug report. [[DebianPackages]] has some information about how Debian splits the software into packages and some references. There is a buildd autobuilder compiling the Debian Sid archive software for the GNU/Hurd port. [[BuilddStatus]] includes information on the buildd &amp; turtle efforts. </dd>
</dl>
<dl>
@@ -94,8 +102,8 @@ about getting applications to work (if possible).
* GNU [Coding Standards](http://www.gnu.org/prep/standards.html)
* [[TestSuites]] - Posix, Perl, results feedback, etc.
-* [docs and papers](http://www.gnu.org/software/hurd/docs.html)
-* [[SystemAPILimits]]
+* [[Documentation]]
+* [[System_API_Limitations]]
* [[CodeAnnouncements]] - Recent coding projects related to the Hurd
<dl>
diff --git a/hurd/running/faq.mdwn b/hurd/running/faq.mdwn
new file mode 100644
index 00000000..2746a20a
--- /dev/null
+++ b/hurd/running/faq.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 2009, 2010 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]]."]]"""]]
+
+[[!meta title="General FAQ About Running GNU/Hurd"]]
+
+See also other [[/FAQ]].
+
+[[!inline
+pages="hurd/running/faq/* and !*/discussion"
+show=0
+feeds=no
+actions=yes
+rootpage="hurd/running/faq" postformtext="Add a new item titled:"]]
diff --git a/hurd/running/faq/native-install_doesnt_finish.mdwn b/hurd/running/faq/native-install_doesnt_finish.mdwn
new file mode 100644
index 00000000..a852e1dd
--- /dev/null
+++ b/hurd/running/faq/native-install_doesnt_finish.mdwn
@@ -0,0 +1,24 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+Copying baseGNU to the virtual disk works. Even booting got through but when I
+try to run native-install it never gets to the very end. First time it froze on
+*sed* package, the other time on *sysv-rc*.
+
+> How much memory did you configure for the [[QEMU]] system? It may simply be
+> -- I've seen this myself -- that the system runs out of memory, as at the
+> native-install stage (I think at least) swap is not yet configured and
+> enabled. What I've been doing is: boot (with -s), MAKEDEV hdWHATEVER in
+> /dev/ for the swap device, run /hurd/mach-defpager, followed by swapon
+> /dev/hdWHATEVER. Does this help?
+
+>> Thank You very much, more memory solved the freezing.
+
+[[!tag open_issue_hurd]]
diff --git a/hurd/running/gentoo.mdwn b/hurd/running/gentoo.mdwn
index b49e5bcc..ef72bfad 100644
--- a/hurd/running/gentoo.mdwn
+++ b/hurd/running/gentoo.mdwn
@@ -1,8 +1,34 @@
-[Gentoo-Hurd](http://hurd.rustedhalo.net/)
+* [Archived try at a Gentoo GNU/Hurd](http://www.mundurat.net/ggh/)
Unofficial port to Gentoo and the portage system. It was
[announced](http://forums.gentoo.org/viewtopic.php?t=41939&amp;postdays=0&amp;postorder=asc&amp;start=0)
-March 17, 2003 in the Gentoo forums. There's a #gentoo-irc channel similar to
-[[IRC]]. At present (May 2005), there's no activity and Eric Olinger has not
-the time to maintain this distri.
+March 17, 2003 in the Gentoo forums. There's a #gentoo and a #gentoo-hurd IRC channel similar to
+[[IRC]].
+### State of the GGH, 2009-05
+
+> *Did you work a bit more on the Gentoo GNU/Hurd?*
+
+I tried to resume my work 3-4 months ago but I found some problems with
+portage and python functions not implemented on Hurd so I stopped. I think
+that back in 2006 with portage 2.0.54 those functiones weren't necessary.
+
+> *And do you have some information which might help others advance what you began?*
+
+I just have all the ebuilds and binary packages I merged online on
+[http://www.mundurat.net/ggh/portage](http://www.mundurat.net/ggh/portage).
+
+To continue my work just take a Debian/Hurd and install portage by hand.
+
+Once there take the profile and start bootstraping portage and all the
+ebuild it needs (patch, python, bzip2...).
+
+The major problems are:
+
+- combine the perfect gcc/binutils/glibc/gnumach/hurd and to be able to boot
+- lack of development on gnumach/hurd and current 'degraded' status.
+
+I don't think I can help much right now, but if you have any other
+question just write me.
+
+MiKeL
diff --git a/hurd/running/gnu.mdwn b/hurd/running/gnu.mdwn
index 322597ec..94012ef5 100644
--- a/hurd/running/gnu.mdwn
+++ b/hurd/running/gnu.mdwn
@@ -1,8 +1,11 @@
-[[img logo.png]]
-
# <a name="The_GNU_Operating_System"> </a> The GNU Operating System
-The GNU Operating System, or GNU System as it is more commonly known, will be a complete Unix-like operating system composed entirely of [free software](http://www.gnu.org/philosophy/free-sw.html). The creation of the GNU System is one of the goals of the [GNU Project](http://www.gnu.org/), which was [launched in 1983](http://www.gnu.org/gnu/initial-announcement.html) by [Richard Stallman](http://www.stallman.org/).
+The GNU Operating System, or GNU System as it is more commonly known, will be a
+complete [[Unix]]-like operating system composed entirely of [free
+software](http://www.gnu.org/philosophy/free-sw.html). The creation of the GNU
+System is one of the goals of the [GNU Project](http://www.gnu.org/), which was
+[launched in 1983](http://www.gnu.org/gnu/initial-announcement.html) by
+[Richard Stallman](http://www.stallman.org/).
@@ -12,32 +15,32 @@ It is our wish and goal to establish a new direction for the GNU system distribu
This is not intended to detract from Debian GNU/Hurd and we should help them where we can.
-I really want this to be more of a community driven effort in the spirit of say Ubuntu. We all have different motivations and skill levels but we need a common goal to get this system going.
+I really want this to be more of a community driven effort in the spirit of say, Ubuntu. We all have different motivations and skill levels but we need a common goal to get this system going.
-These are just some quick notes I am making late at night. Lets clean this up.
+These are just some quick notes I am making late at night. Let's clean this up.
## <a name="Motivations"> Motivations </a>
1. There is a possibility that Debian drops support for GNU/Hurd.
2. Other GNU/Linux distributions do not support the Hurd infrastructure well.
-3. Benefitting from the Hurd design and using a microkernel.
+3. Benefiting from the Hurd design and using a microkernel.
4. Freedom.
## <a name="Community"> Community </a>
-1. Lets establish some ground rules.
+1. Let's establish some ground rules.
2. We need infrastructure
* Wiki for community documentation
* Mailing lists like gnu-system-discuss exists for mostly technical items
* IRC channels like #hug and ##hurd
* Perhaps less formal and less intimidating channels and mailing lists would involve broader parts of the community
3. We need a community vision and direction.
- * Lets work together for a common goal
- * Lets establish goals and priorities and get resources on them. (More later)
+ * Let's work together for a common goal
+ * Let's establish goals and priorities and get resources on them. (More later)
* Major goal to create a system making full use of Hurd features?
* We should never hesitate to throw away existing stuff whenever it hinders us to make good use of Hurd features
* However, we should try to reuse existing stuff (from Debian for example) as long as it doesn't limit our possibilities or impose considerable overhead
- * Lets have fun. It's GNU and it's important but let's enjoy ourselves.
+ * Let's have fun. It's GNU and it's important but let's enjoy ourselves.
## Download
diff --git a/hurd/running/gnu/create_an_image.mdwn b/hurd/running/gnu/create_an_image.mdwn
index 42379f45..c7a97a4e 100644
--- a/hurd/running/gnu/create_an_image.mdwn
+++ b/hurd/running/gnu/create_an_image.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Creating a bootable qemu image from a root filesystem and bootloader
@@ -27,7 +27,7 @@ Creating a bootable qemu image from a root filesystem and bootloader
create the necessary partitions (root and swap partitions boot, home ... if
required)
-4. Create a file syatem for the root partiotion
+4. Create a file system for the root partition
mke2fs /dev/hda1
@@ -39,7 +39,7 @@ Creating a bootable qemu image from a root filesystem and bootloader
6. Copy the file system from the host machine to the mounted directory (use a
compressed file system to make the copying faster)
- Grab the GNU spapshot from ams' site
+ Grab the GNU snapshot from ams' site
<http://www.update.uu.se/~ams/home/slask/GNU/>
scp <user>@<host>:<path to the compressed file system> disk
@@ -58,7 +58,7 @@ Creating a bootable qemu image from a root filesystem and bootloader
poweroff
-10. To make the file syatem bootable download a grub floppy image
+10. To make the file system bootable download a grub floppy image
<http://hurd.in/pub/Hurd/HurdOnVMware/grub.img>
diff --git a/hurd/running/gnu/discussion.mdwn b/hurd/running/gnu/discussion.mdwn
deleted file mode 100644
index 7a96803b..00000000
--- a/hurd/running/gnu/discussion.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-## <a name="GNU_Web_Meta_Discussion"> </a> GNU Web Meta Discussion
-
-Where did you get that logo? Maybe it's the color but it looks very elegant compared to <http://www.gnu.org>
-
--- [[Main/GrantBow]] - 23 Oct 2002
-
-I did it myself. Somewhat inspired by another GNU artwork, but completely hand made in the Gimp.
-
-I'm working on a cool Mach logo as well. Inspiration is the old Atari arcade game M.A.C.H. 3. :-)
-
--- [[Main/JoachimNilsson]] - 29 Oct 2002
-
-What do you feel about the new copyright notice at the bottom of this web?
-
-I'm afraid that I will have to add another page to the edit process to actually enforce this stuff. Perhaps I can combine the old Preview with this copyright assignment, what do you think?
-
-Oh, btw. It seems RMS is right. At least according to Swedish law (as far as I've checked) transfer/assignment of copyright can be made the way he describes. The user has to select a checkbox or press a button to accept the copyright assignment each time. But as long as that is done we don't have to have any other form of "legal contract" between the users and the FSF.
-
--- [[Main/JoachimNilsson]] - 29 Oct 2002
diff --git a/hurd/running/gnu/gnu.mdwn b/hurd/running/gnu/gnu.mdwn
index 22bb5161..3ee5f657 100644
--- a/hurd/running/gnu/gnu.mdwn
+++ b/hurd/running/gnu/gnu.mdwn
@@ -1,8 +1,11 @@
-[[img logo.png]]
-
## <a name="GNU_FSF_amp_RMS"> </a> GNU, FSF &amp; RMS
-GNU stands for GNU's Not Unix. It is a project announced in 1983 by [[RichardStallman]] (RMS). The Free Software Foundation ([FSF](http://www.fsf.org/fsf/fsf.html)) was founded in 1985 to act as a parent organization for GNU and many other projects. GNU and some non-GNU projects are now hosted on the [Savannah](http://savannah.gnu.org) platform similar to SourceForge.net.
+GNU stands for GNU's Not [[Unix]]. It is a project announced in 1983 by
+[[RichardStallman]] (RMS). The Free Software Foundation
+([FSF](http://www.fsf.org/fsf/fsf.html)) was founded in 1985 to act as a parent
+organization for GNU and many other projects. GNU and some non-GNU projects
+are now hosted on the [Savannah](http://savannah.gnu.org) platform similar to
+SourceForge.net.
<dl>
<dt>[[History]]</dt>
diff --git a/hurd/running/gnu/logo.png b/hurd/running/gnu/logo.png
deleted file mode 100644
index 50c392cf..00000000
--- a/hurd/running/gnu/logo.png
+++ /dev/null
Binary files differ
diff --git a/hurd/running/gnu/names.mdwn b/hurd/running/gnu/names.mdwn
index d470a632..fcab6a11 100644
--- a/hurd/running/gnu/names.mdwn
+++ b/hurd/running/gnu/names.mdwn
@@ -1,4 +1,4 @@
-The GNU stands for GNU's Not Unix. It is a project as described in [[GNU]].
+The GNU stands for GNU's Not [[Unix]]. It is a project as described in [[GNU]].
What can be confusing is the usage. GNU can stand for:
diff --git a/hurd/running/gnu/setup.mdwn b/hurd/running/gnu/setup.mdwn
index 6ff32630..2fb30c7b 100644
--- a/hurd/running/gnu/setup.mdwn
+++ b/hurd/running/gnu/setup.mdwn
@@ -1,14 +1,14 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-Setup is very easy (You need a GNU/Linux system to install GNU, we are developing an installer for GNU and if you want to help us join us on [[http://lists.gnu.org/mailman/listinfo/gnu-system-discuss][gnu-system-discuss]]), just follow these steps ...
+Setup is very easy (You need a GNU/Linux system to install GNU, we are developing an installer for GNU and if you want to help us join us on [gnu-system-discuss](http://lists.gnu.org/mailman/listinfo/gnu-system-discuss)), just follow these steps ...
## Step 1: Find a home for GNU
diff --git a/hurd/running/gnu/universal_package_manager.mdwn b/hurd/running/gnu/universal_package_manager.mdwn
index 009b26bf..58841b02 100644
--- a/hurd/running/gnu/universal_package_manager.mdwn
+++ b/hurd/running/gnu/universal_package_manager.mdwn
@@ -1,12 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
## Mission
@@ -19,10 +20,10 @@ Basically all package management schemes follow similar approach, it will have a
There can be both aproaches
- * Re-implement rpm, dpkg... to recognise stow as backend instead of its own data store. In that case we will have to re implement, apt-rpm, yum ...
- * Implement a translator which reads stow and show it as an rpm data store for yum, deb data store for apt-get ...
+ * Re-implement rpm, dpkg... to recognise stow as backend instead of its own data store. In that case we will have to re-implement, apt-rpm, yum ...
+ * Implement a translator which reads stow and show it as an rpm data store for yum, deb data store for apt-get ...
-One goal is obviously choice of packaging and hence availability of more packages. Also this gives maintainers a chioce to continue builing packages for GNU in the format they are already familiar with. The second goal is to demonstrate the flexibility GNU offers in implementing functionality in filesystems (open/read/write interface).
+One goal is obviously choice of packaging and hence availability of more packages. Also this gives maintainers a choice to continue building packages for GNU in the format they are already familiar with. The second goal is to demonstrate the flexibility GNU offers in implementing functionality in filesystems (open/read/write interface).
## Why?
@@ -39,7 +40,7 @@ With the increased flexibility in implementing filesystems as per the requiremen
## How?
- * Installtion of a package is just drag the pacakage (be it a tgz, rpm, deb or an exe) and drop it to the package manager.
+ * Installation of a package is just drag the package (be it a tgz, rpm, deb or an exe) and drop it to the package manager.
* apt-cache search vim --> ls -al /packages/meta/ |grep vim
* apt-get install vim --> install vim
@@ -76,12 +77,12 @@ just writing the new translator.
## Initial idea
-A bit complex than the earlier scheme but it is more exciting and we can look at this schem seriously once we have the simple scheme working.
+A bit more complex than the earlier scheme but it is more exciting and we can look at this scheme seriously once we have the simple scheme working.
All packages are installed at
`/packages/binary/<packagename>/<packageversion>`.
-For eaxmple vim 6.4 version can be installed from source like
+For example vim 6.4 version can be installed from source like
# cd vim64
# ./configure --prefix=/packages/binary/vim/6.4
@@ -98,7 +99,7 @@ Now if you have another vim version, say 7.0 then just follow the steps
# make
# make install
-You have 2 versions of vim and how can you sepcify which one is the current version? You can symlink the current version to select the version you would like to see as default
+You have 2 versions of vim and how can you specify which one is the current version? You can symlink the current version to select the version you would like to see as default
# ln -s /packages/binary/vim/7.0 /packages/vim/current
@@ -127,7 +128,7 @@ OK. I will give you steps.
i. Install a GNU System by folowing [[these_instructions|setup]]
-ii. Read about GNU Design <http://www.gnu.org/software/hurd/hurd-paper.html>
+ii. Read about GNU Design: [[Towards_a_New_Strategy_of_OS_Design|hurd-paper]]
iii. Read about translators <http://www.debian.org/ports/hurd/hurd-doc-translator>
@@ -140,7 +141,7 @@ v. Add your name below and give a shout in the list.
Add your comments here
-## Interesting?
+## Interested?
To join the project just list your name below.
@@ -151,3 +152,6 @@ To join the project just list your name below.
5. Nidhin Raghavan
6. Ajish.B
7. Ambili.B
+ 8. Abhradip Mukherjee
+ 9. Ermenegildo Fiorito
+ 10. Oltion Doda
diff --git a/hurd/running/live_cd.mdwn b/hurd/running/live_cd.mdwn
index f8727118..c9360594 100644
--- a/hurd/running/live_cd.mdwn
+++ b/hurd/running/live_cd.mdwn
@@ -1,4 +1,6 @@
-You can download a gzipped iso of a Hurd Live CD at
+[[Arch Hurd|hurd/running/arch_hurd/]] offers Hurd LiveCDs at <http://www.archhurd.org/gethurd.php>.
+
+Also you can download a gzipped iso of a Hurd Live CD at
<http://www.superunprivileged.org/hurd/live-cd/>.
The Superunpriveleged crew also offers a tiny Hurd Live CD that is under 10
@@ -8,11 +10,18 @@ Use it like this:
$ qemu -cdrom hurd-tiny-cd-20060722.iso
-These [[wikipedia LiveCD]]s should be useful for those who want to try out the
+A more recent Live CD can be found at <http://teythoon.cryptobitch.de/hurd/livecd/hurd-live-install-1273300101.iso.xz>.
+
+It can be run with qemu via
+
+ $ wget http://teythoon.cryptobitch.de/hurd/livecd/hurd-live-install-1273300101.iso.xz
+ $ xz -d hurd-live-install-1273300101.iso.xz
+ $ qemu -cdrom hurd-live-install-1273300101.iso
+
+These [[!wikipedia LiveCD]]s should be useful for those who want to try out the
Hurd before they commit to installing it on their hard disks. In addition to
that, the bootable Hurd CDs should enable us to have a native installer instead
of relying on Linux.
-
* [[RequirementsForLiveCD]]
* [[BuildingHurdLiveCD]]
diff --git a/hurd/running/qemu.mdwn b/hurd/running/qemu.mdwn
index eab49b08..b2812750 100644
--- a/hurd/running/qemu.mdwn
+++ b/hurd/running/qemu.mdwn
@@ -1,46 +1,202 @@
-This page discusses things for Unix systems, there is a separate page for
+[[!meta copyright="Copyright © 2005, 2006, 2007, 2008, 2009, 2010, 2011 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]]."]]"""]]
+
+This page discusses things for [[Unix]] systems, there is a separate page for
[[Microsoft_Windows]] systems.
-
# Readily Available Images
-[Official Debian GNU/Hurd QEMU
-image](http://ftp.debian-ports.org/debian-cd/K16/debian-hurd-k16-qemu.img.tar.gz)
+You can use the following images to give the GNU/Hurd a try.
+
+## Debian GNU/Hurd
+
+[[!inline pages=hurd/running/debian/qemu_image raw=yes feeds=no]]
-(!) Note that the following are unofficial images: they have been prepared by
+## Unofficial Images
+
+Note that the following images are unofficial ones: they have been prepared by
volunteers and may not have been tested extensively.
-* [Disk image](http://www.numenor.art.pl/balrog/hurd/) with an installation of
- [[Debian_GNU/Hurd|running/debian]].
-<!--* [Announcement](http://lists.debian.org/debian-hurd/2007/09/msg00000.html) of another image. - The link in the email doesn't work anymore, too old. //-->
+* [Disk image](http://draketo.de/dateien/hurd/bab-hurd-qemu-2008-10-29.img.tar.bz2)
+ with a short intro on translators. Just start it with 'qemu *disk_image.img*'.
+ It should work without any of the configuration below. If you want to know what you can do
+ with it, please have a look at [[its_wikipage|hurd/running/qemu/babhurd_image]]. And when
+ you use it, please [tell me your experience with it](http://draketo.de/contact)! - [[community/weblogs/ArneBab]]
+
+# Arch Hurd Live CD
+Also you can use QEMU to easily try one of the
+[[Hurd_LiveCDs|hurd/running/live_cd/]].
-# What is Needed
-1. First thing is to install [[QEMU]].
-2. A [grub](http://www.gnu.org/software/grub/) boot disk for the floppy disk image needed for booting. The [0\.97 version](ftp://alpha.gnu.org/gnu/grub/grub-0.97-i386-pc.ext2fs) works fine. I downloaded it an renamed to `floppy.img`. Alternatively, the Debian grub-disk package (up till version 0.97-28) is fine as well.
+# What is Needed to create a QEMU image
+
+## Debian Installer
+
+Instructions for creating a qemu image from the install CDs from debian installer can be found in the README alongside the d-i Hurd images: <http://people.debian.org/~sthibault/hurd-i386/installer/cdimage/>
+
+## Old method
+
+1. First thing is to install [[/QEMU]].
+2. A [[grub]] boot disk for the floppy disk image needed for booting. The [0\.97 version](ftp://alpha.gnu.org/gnu/grub/grub-0.97-i386-pc.ext2fs) works fine. I downloaded it and renamed to `floppy.img`. Alternatively, the Debian grub-disk package (up till version 0.97-28) is fine as well.
3. You will need a [Debian/Hurd installation CD](http://www.debian.org/ports/hurd/hurd-cd). K16 works fine.
+# KVM acceleration
+
+Check if your CPU supports kvm:
+
+ $ egrep '^flags.*(vmx|svm)' /proc/cpuinfo
+
+#### If you don't have hardware support (slow):
+ $ apt-get install qemu
+
+Do not enable kernel-kqemu, as that assumes some particular behavior from the guest kernel, which we are reluctant to artificially add to gnumach.
+
+If QEMU with KVM is not available, [[Virtualbox]] reportedly has better
+performance.
+
+#### If you have hardware support (recommended):
+ $ apt-get install qemu-kvm
+ $ modprobe kvm
+
+Intel VTx/VTd: Enable Intel kvm in the BIOS
+
+On a HP xw4600 Workstation: F10, Security->System Security; Enable VTx and VTd
+
+Check that the kvm module is loaded:
+
+ $ lsmod|grep kvm
+ kvm_intel 38050 0
+ kvm 213800 1 kvm_intel
+
+ $ ls -l /dev/kvm
+ crw-rw----+ 1 root kvm 10, 232 Mar 14 15:02 /dev/kvm
+
+Add yourself to the kvm group:
+
+ $ adduser your_user kvm; logout; login
+
+AMD SVM (AMD-V): Enable AMD-V in the BIOS if not enabled.
+
+Check that the kvm module is loaded:
+
+ $ lsmod|grep kvm
+ kvm_amd 31862 0
+ kvm 214088 1 kvm_amd
+
+More info on kvm at: http://www.linux-kvm.org/page/FAQ
+
+If your machine supports hardware acceleration, you should really use the kvm variant of qemu, as it speeds things quite a lot. Note however that kvm tends to make assumptions when accelerating things in the linux kernel, you may need some -no-kvm-something option. At the moment in Debian you need to pass
+
+ -no-kvm-irqchip
+
+to the command line, see below, if you are running Linux kernels 2.6.37 or 2.6.38 else IRQs may hang sooner or later. The kvm irq problems will be solved in kernel 2.6.39.
+
+/!\ Note that there are known performance issues with KVM on Linux 2.6.39
+kernels, compared to 2.6.32: [[!debbug 634149]]. We're preparing on a change
+on our side to work around this.
+
+
+# HAP/EPT/NPT acceleration
+
+Performance will be yet better if HAP (EPT or NPT) is available:
+
+ $ grep ept /proc/cpuinfo
+ $ grep npt /proc/cpuinfo
+
+# Installing Debian/Hurd with QEMU using the Debian installer
+
+Note: If you have hardware support, replace the qemu commands below with kvm, e.g. qemu-ing -> kvm-img.
+
+First off you will need to create a disk image using `qemu-img`. I have set mine to 4 GiB, although you should be able to get away with less.
-# Installing Debian/Hurd with QEMU
+ $ qemu-img create hd0.img 4G
-First off you will need to create a disk image using `qemu-img`. I have set mine to 2 gigabytes, although you should be able to get away with less(Currently, the maximum disk image size one can create with QEMU is 4.5G).
+Next you will want to start up QEMU and begin the installation process.
- $ qemu-img create hd0.img 2G
+ $ qemu -m 512 -hda hd0.img -cdrom mini.iso -net nic,model=rtl8139 -net user
-Next you will want to start up QEMU and begin the installation process. The first time you run it you will want to use the `-boot d` option to boot off the cdrom.
+Now at his point do the regular install using `hd0` as your harddrive. Partition it and install the base system.
- $ qemu -hda hd0.img -cdrom debian-K16-hurd-i386-CD1.iso -fda floppy.img -boot d
+In the installer make your choice of install option: Default install (or your choice)
-Now at his point do the regular install using `hd0` as your harddrive. Partition it and install the base system. Once you have finished installing the base system select the reboot option as this will ensure the disk is properly un-mounted. When the Debian CD menu comes up again simply close QEMU.
+ Language: English
+ Country, territory or area: your_choice
+ Locale: your_choice
-Now run your image with floppy booting (`-boot a`) and finish the install (`./native-install` .. etc).
+Note that even if you can set the country and locale, your local keyboard is not yet supported.
-**Important:** Older versions on gnumach needed that the `-M isapc` was passed to qemu. This is not needed anymore.
+In case of problems with timezone or locale settings do the following after the installation is completed
+
+ To get the correct timezone:
+ $ dpkg-reconfigure tzdata
+ To get your locale setting:
+ $ nano /etc/locale.gen
+ $ locale-gen
+
+Network: Now configured automatically with dhcp
+
+ IP address: 10.0.2.15
+ Netmask: 255.255.0.0
+ Gateway: 10.0.2.2
+ Nameserver: 10.0.2.3
+
+ Qemu network setup:
+ QEMU VLAN <------> Firewall/DHCP server <-----> Internet
+ | (10.0.2.2)
+ |
+ ----> DNS server (10.0.2.3)
+ |
+ ----> SMB server (10.0.2.4)
+
+Partitioning method: Guided (or your choice)
+
+Partitioning `/dev/hd0`: All files in one partition.
+
+**Important**: Since partman does not yet mount other partitions than / automatically at reboot, it is crucial that you choose this option for now.
+
+Once you have finished installing the base system (might take some time) the system is rebooted and next boot will be from the hard disk. Now you are able to log in to your newly installed GNU/Hurd system.
Also see another text about how to [[gnu/create_an_image]] for the
[[GNU_system|gnu]].
+## Running the installed system
+
+Starting qemu/qemu-kvm:
+
+ $ kvm -m 512 -net nic,model=rtl8139 -net user,hostfwd=tcp::5555-:22 -hda hd0.img -vga vmware
+ vmsvga_value_write: guest runs Linux.
+
+Note: See below on port forwarding in the networking section.
+
+Note: Using the vmware vga driver is useful for setting up X windows, see [Debian GNU/Hurd](http://www.debian.org/ports/hurd/hurd-install)
+
+If you have problems with grub hanging during boot with the vmware vga driver: Disable the graphic boot
+
+ $ nano /etc/default/grub
+ uncomment GRUB_TERMINAL=console
+ $ /usr/sbin/update-grub
+
+### A few words about the qemu console
+
+During the graphical emulation, you can use the following keys:
+
+ <Ctrl><Alt>-f Toggle full screen
+ <Ctrl><Alt>-u Restore the screen's un-scaled dimensions
+ <Ctrl><Alt>-n Switch to virtual console 'n'. Standard console mappings are:
+ 1 Target system display
+ 2 Monitor
+ 3 Serial port
+ <Ctrl><Alt> Toggle mouse and keyboard grab.
+
# Transferring Files
@@ -57,13 +213,13 @@ You may wish to mount your disk image on your host system to transfer files. To
hd0.img1 * 63 3515903 1757920+ 83 Linux
hd0.img2 3515904 4193279 338688 82 Linux swap / Solaris
-Now take the number of sectors for the beginning of the partition and multiply it by the sector size. My partition starts at sector 63 and I have a sector size of 512 therefor my offset is 32256.
+Now take the number of sectors for the beginning of the partition and multiply it by the sector size. My partition starts at sector 63 and I have a sector size of 512 therefore my offset is 32256. For a start at 2048 the ofsset is 1048576.
# mount -o loop,offset=32256 hd0.img /mnt/diskimage
## Having QEMU create *virtual FAT disk images*
-[Manual](http://fabrice.bellard.free.fr/qemu/qemu-doc.html#SEC24).
+[Link to the manual](http://www.nongnu.org/qemu/qemu-doc.html#SEC25).
QEMU has a facility to create FAT file systems on-the-fly:
@@ -73,6 +229,9 @@ The Hurd [[`fatfs`_translator|translator/fatfs]] currently is read-only, but
for testing executables (etc.) that is enough. And it is much easier than
loop-mounting the file systems images. (Also you don't need `root' rights.)
+However, note that there is a bug in [[translator/fatfs]]: [[!GNU_Savannah_bug
+25961]].
+
# Networking in QEMU
@@ -86,12 +245,55 @@ If you just want to access the internet from within QEMU, you can setup pfinet f
# settrans -afgp /servers/socket/2 /hurd/pfinet -i eth0 -a 10.0.2.15 -g 10.0.2.2 -m 255.255.255.0
# echo "nameserver 10.0.2.3" > /etc/resolv.conf
-(See also <http://fabrice.bellard.free.fr/qemu/qemu-doc.html#SEC30>.)
+If you are on [[Debian GNU/Hurd|debian]], you can even use [[debian/DHCP]].
+
+To get ssh working:
+
+ # apt-get install random-egd openssh-server (Similarly for telnet if preferred)
+
+(See also <http://www.nongnu.org/qemu/qemu-doc.html#SEC32>.)
Outgoing internet connections should just work then.
+Testing it can be difficult with a minimal installation,
+but `apt-get update` should work after you have filled out
+`/etc/apt/sources.list`.
+After that you should be able to install other network packages,
+but note that `ping` doesn't work with QEMU's user-networking stack.
+
+If you want to connect from the host system to the Hurd system running in QEMU, you can use port forwarding in QEMU or to setup something more advanced, like bridged networking.
+
+## Port Forwarding in QEMU
+(In the following we assume we use kvm!)
+
+#### Logging in to Hurd from a terminal in your host system
+This is the recommended way to work with a Command Line Interface (CLI) since all your keyboard and locale settings are preserved.
+
+a) with ssh (assuming you have installed openssh-server)
+
+ $ kvm -m 1024 -net nic,model=rtl8139 -net user,hostfwd=tcp::5555-:22 -hda hd0.img &
+
+Logging in to the running Hurd:
-If you want to connect from the host system to the Hurd system running in QEMU, you need to setup something more advanced, like bridged networking.
+ $ ssh -p5555 localhost
+Copying files:
+
+ 1) On your host
+ To Hurd: scp -p -P5555 file localhost:
+ From Hurd: scp -p -P5555 localhost:file .
+ 2) On Hurd
+ To host: scp -p file {10.0.2.2,your_host_ip}: .
+ From host: scp -p {10.0.2.2,your_host_ip}:file .
+
+b) with telnet (assuming you have installed a telnet server, like telnetd)
+
+ $ kvm -m 1024 -net nic,model=rtl8139 -net user,hostfwd=tcp::5556-:23 -hda hurd-install.qemu &
+
+Logging in to the running Hurd:
+
+ $ telnet localhost 5556
+
+c) With the tap interface, see below.
## Bridged Networking
@@ -145,31 +347,3 @@ system after installation.
[[Image_for_L4]] -- a QEMU image for the Hurd/L4 project.
<http://eyeside.net/hurd/Hurd-on-QEMU.html>
-
-
-# TODO
-
-[[IRC]], #hurd, 2007-07-04.
-
- <azeem-uni> so, is there a way to use a Debian GNU/Hurd partition (/dev/hda6) with qemu directly?
- <tschwinge> Don't dare to do that, please.
- <tschwinge> It will lead to inconsistencies.
- <tschwinge> Because the Linux kernel thinks that it has complete control over the disk, or something.
- <tschwinge> In theory you could run something like ``-hda /dev/hda'', having GRUB installed on there to offer you to boot your Hurd system from hda6 and that will even work, but then don't get the idea to stop qemu, mount that partition on your Linux system and restart qemu. That's where I got lots of inconsistencies then, afterwards.
- <azeem-uni> it's probably the same problem as having that partition mounted, suspending to disk, booting into it in the Hurd, and resume Linux
- <neal> right
- <tschwinge> That's a different problem.
- <tschwinge> Then the partitoon is still mounted.
- <neal> no, I think it is basically the same problem
- <tschwinge> The file system stuff is cached in the kernel.
- <neal> you have data that has not been written to disk yet
- <tschwinge> Right.
- <neal> and neither is prepared for the resource to be shared
- <tschwinge> In the azeem-uni scenarion the data is on the file system layer and in my scenarion it's some disk block caching inside the Linux kernel, I guess.
- <azeem-uni> anyway, do you guys think if I use -hda /dev/hda and tell Grub to boot off /dev/hda6, that the rest of hda should be fine, right?
- <azeem-uni> maybe adding -snapshot makes it totally safe
- <neal> azeem: Should be fine.
- <tschwinge> Yes.
-
-The problem is actually that the linux block cache doesn't make any consistency between /dev/hda and /dev/hda6, so if you give /dev/hda to qemu, qemu writings won't be consistent with mounting /dev/hda6 in linux. You can give /dev/hda6 directly to qemu and it will be fine.
-
diff --git a/hurd/running/qemu/babhurd_image.mdwn b/hurd/running/qemu/babhurd_image.mdwn
new file mode 100644
index 00000000..c0952fcf
--- /dev/null
+++ b/hurd/running/qemu/babhurd_image.mdwn
@@ -0,0 +1,67 @@
+What this little Hurd image can do
+----------------------------------
+
+### About this text
+
+This is the README file accompanying a
+[disk\_image](http://draketo.de/dateien/hurd/bab-hurd-qemu-2008-10-29.img.tar.bz2) for
+[[running_the_GNU/Hurd_via_qemu|hurd/running/qemu]]. To run the disk image, just use *'qemu
+disk_image.img'*.
+
+You can find the custom *.bashrc* used to tell the user about it as well as this text itself
+in the Mercurial repository [hurd_intro](http://bitbucket.org/ArneBab/hurd_intro).
+
+### Intro
+
+The Hurd has some unique capabilities, and we created this simple image
+to enable you to easily try two of them:
+
+* The simplest of translators: Hello World!
+* Transparent FTP
+
+### Hello World
+
+To try out the simplest of translators, you can go the following simple steps:
+
+ $ cat hello
+ $ setrans hello /hurd/hello
+ $ cat hello
+ "Hello World!"
+ $ settrans -g hello
+ $ cat hello
+
+What you do with these steps is first verifying that the file "hello" is empty.
+
+Then you setup the translator /hurd/hello in the file/node hello.
+
+After that you check the contents of the file, and the translator returns "Hello World!".
+
+To finish it, you tell the translator to go away from the file "hello" via "settrans -g hello" and verify that now the file is empty again.
+
+### Transparent FTP
+
+We already setup a a transparent FTP translator for you at /ftp:
+
+With it you can easily access public FTP via the file system, for example the one from the GNU project:
+
+ $ ls /ftp://ftp.gnu.org/
+
+But you can also do this very easily yourself:
+
+ $ # Setup the translator on the node ftp:
+ $ settrans -c ftp: /hurd/hostmux /hurd/ftpfs /
+
+and you can access FTP sites via the pseudo-directory ftp:, for example with
+
+ $ ls ftp://ftp.gnu.org/
+
+What you do here is setting up the translator /hurd/hostmux on ftp: and passing it the translator /hurd/ftpfs to use for resolving accesses as well as / as additional path component.
+
+
+These were only two basic usages of translators on the Hurd. We're sure you'll quickly see many other ways to use this.
+
+As a last comment: You can setup a translator on any node you have access to, so you can for example mount any filesystems as normal user.
+
+You might currently be logged in as root, but you could just as well do the same as normal user.
+
+Why don't you try it out?
diff --git a/hurd/running/qemu/discussion.mdwn b/hurd/running/qemu/discussion.mdwn
new file mode 100644
index 00000000..1ce14b01
--- /dev/null
+++ b/hurd/running/qemu/discussion.mdwn
@@ -0,0 +1,144 @@
+[[!meta copyright="Copyright © 2005, 2006, 2007, 2008, 2009, 2010, 2011 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_documentation]]
+
+# Using Partitions
+
+[[IRC]], #hurd, 2007-07-04.
+
+ <azeem-uni> so, is there a way to use a Debian GNU/Hurd partition
+ (/dev/hda6) with qemu directly?
+ <tschwinge> Don't dare to do that, please.
+ <tschwinge> It will lead to inconsistencies.
+ <tschwinge> Because the Linux kernel thinks that it has complete control
+ over the disk, or something.
+ <tschwinge> In theory you could run something like ``-hda /dev/hda'',
+ having GRUB installed on there to offer you to boot your Hurd system from
+ hda6 and that will even work, but then don't get the idea to stop qemu,
+ mount that partition on your Linux system and restart qemu. That's where
+ I got lots of inconsistencies then, afterwards.
+ <azeem-uni> it's probably the same problem as having that partition
+ mounted, suspending to disk, booting into it in the Hurd, and resume
+ Linux
+ <neal> right
+ <tschwinge> That's a different problem.
+ <tschwinge> Then the partitoon is still mounted.
+ <neal> no, I think it is basically the same problem
+ <tschwinge> The file system stuff is cached in the kernel.
+ <neal> you have data that has not been written to disk yet
+ <tschwinge> Right.
+ <neal> and neither is prepared for the resource to be shared
+ <tschwinge> In the azeem-uni scenarion the data is on the file system layer
+ and in my scenarion it's some disk block caching inside the Linux kernel,
+ I guess.
+ <azeem-uni> anyway, do you guys think if I use -hda /dev/hda and tell Grub
+ to boot off /dev/hda6, that the rest of hda should be fine, right?
+ <azeem-uni> maybe adding -snapshot makes it totally safe
+ <neal> azeem: Should be fine.
+ <tschwinge> Yes.
+
+The problem is actually that the linux block cache doesn't make any consistency
+between /dev/hda and /dev/hda6, so if you give /dev/hda to qemu, qemu writings
+won't be consistent with mounting /dev/hda6 in linux. You can give /dev/hda6
+directly to qemu and it will be fine.
+
+
+# Host-side Writeback Caching
+
+IRC, freenode, #hurd, 2011-06-07
+
+ <braunr> hm, i guess i should have used cache=writeback with kvm before
+ starting the debian installer :/
+ <braunr> ah yes, much better
+ <braunr> this shows how poor the state of our I/O drivers and subsystem is
+ :/
+ <antrik> indeed... still no clustered pageout :-(
+ <braunr> and no I/O scheduler either
+ <braunr> although an I/O scheduler has limited value without clustered
+ pageouts
+ <braunr> since one of its goals is to pack related I/O requests together eh
+ <braunr> i wonder if the wiki mentions using cache=writeback to speed up
+ qemu performances
+ <braunr> it would help those unable to use kvm a lot
+ <braunr> and even those running kvm too
+ <braunr> kvm -m $RAM \ -monitor stdio \ -drive
+ cache=writeback,index=0,media=disk,file=hd0.img \
+ <braunr> etc..
+ <braunr> the idea is that qemu doesn't open its disk file synchronously
+ <braunr> changes are queued in the host page cache before being flushed to
+ the disk image
+ <braunr> but if you brutally close your qemu instance, you're likely to
+ loose file system consistency
+ <braunr> ext2fs will think it has committed its metadata to the disk, but
+ the disk image won't be updated synchronously
+ <braunr> on my machine (which is quite fast), my kvm has installed debian
+ like 10 times faster than without the option
+ <antrik> braunr: I don't think killing qemu should hurt in this
+ case... probably only matters when the host machine dies
+ <braunr> antrik: ah yes, right
+ <braunr> it really makes everything faster, even downloading, since I/O
+ requests aren't interleaved between networking RPCs
+ <antrik> regarding I/O sheduler... this discussion came up before, but I
+ don't remember the outcome -- doesn't the glued Linux driver actually
+ come with one?
+ <braunr> i don't remember either
+ <antrik> braunr: err... I don't think interleaving has anything to do with
+ it... I guess it's simply the fact that downloading writes the result to
+ disk, which suffers from lacking clustered pageout like everything else
+ <antrik> (my internet connection is too slow though to notice :-) )
+ <braunr> well, if there is no I/O during downloading, downloading is faster
+ :)
+
+IRC, freenode, #hurd, 2011-06-08
+
+ <braunr> youpi: does xen provide disk caching options ?
+ <youpi> through a blktap, probably
+ <braunr> ok
+
+([[microkernel/mach/gnumach/ports/Xen]], *Host-side Writeback Caching*.)
+
+ <braunr> we should find the pages mentioning qemu on the wiki and add the
+ options to enable disk image caching
+ <braunr> it really makes the hurd run a lot faster
+ <braunr> as a workaround for emulators until I/O is reworked, ofc
+
+IRC, freenode, #hurd, 2011-06-09
+
+ <gnu_srs> braunr recommends to use writeback caching with kvm. Is this
+ really recommended with the frequent crashes I experience?
+ <youpi> provided that you terminate your kvm normaly (i.e. quitting it, not
+ killing it), there should be no difference
+ <jkoenig> I think the host's stability is what matters
+ <jkoenig> the data presumably sits in linux's cache even if qemu dies
+ violently
+ <gnu_srs> But the freezes I see force me to kill kvm :-(
+ <youpi> maybe kvm doesn't even do caching indeed, I don't know
+ <youpi> gnu_srs: you can quit even when frozen
+ <youpi> use the console
+ <youpi> (the kvm console)
+ <jkoenig> gnu_srs, "Writeback caching will report data writes as completed
+ as soon as the data is present in the host page cache. This is safe as
+ long as you trust your host. If your host crashes or loses power, then
+ the guest may experience data corruption." (from the qemu manpage)
+
+IRC, freenode, #hurd, 2011-06-11
+
+ <gnu_srs> braunr: If you are online. For me setting the parameters -drive
+ cache=writeback,index=0,media=disk,file=hd0.img does not show any speed
+ improvement at all compared to the default.
+ <braunr> gnu_srs: what's your complete qemu command line ?
+ <gnu_srs> kvm -m 1024 -net nic,model=rtl8139 -net
+ user,hostfwd=tcp::5556-:22 -drive
+ cache=writeback,index=0,media=disk,file=hd0.img -cdrom netinst.iso
+ <braunr> what qemu version ?
+ <gnu_srs> qemu-kvm 0.14.1+dfsg-1: Sorry, I cannot be online until
+ tomorrow again.
diff --git a/hurd/running/qemu/microsoft_windows.mdwn b/hurd/running/qemu/microsoft_windows.mdwn
index 736adf62..832b4bef 100644
--- a/hurd/running/qemu/microsoft_windows.mdwn
+++ b/hurd/running/qemu/microsoft_windows.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Welcome, This document is for getting you started in a few minutes.
diff --git a/hurd/running/qemu/networking.mdwn b/hurd/running/qemu/networking.mdwn
index 8014e303..71daa576 100644
--- a/hurd/running/qemu/networking.mdwn
+++ b/hurd/running/qemu/networking.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
## User mode network
diff --git a/hurd/running/qemu/networking/sharing_files.mdwn b/hurd/running/qemu/networking/sharing_files.mdwn
index c0bd99e2..5bdec5f1 100644
--- a/hurd/running/qemu/networking/sharing_files.mdwn
+++ b/hurd/running/qemu/networking/sharing_files.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
# SCP
diff --git a/hurd/running/virtualbox.mdwn b/hurd/running/virtualbox.mdwn
new file mode 100644
index 00000000..0731b8d6
--- /dev/null
+++ b/hurd/running/virtualbox.mdwn
@@ -0,0 +1,28 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta title="VirtualBox"]]
+
+<http://www.virtualbox.org/>
+
+
+# Installation
+
+The disk controller has to be configured as IDE. Neither SATA nor SCSI are
+supported.
+
+The network controller should be configured as PCnet-PCI II or PCNet-FAST III
+for instance. INTEL PRO or Paravirtualized Network do not work.
+
+
+# Performance
+
+If [[QEMU with KVM|qemu]] is not available, VirtualBox reportedly has better
+performance.
diff --git a/hurd/running/vmware.mdwn b/hurd/running/vmware.mdwn
index 0f15939e..1f99e247 100644
--- a/hurd/running/vmware.mdwn
+++ b/hurd/running/vmware.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
## Installation
diff --git a/hurd/running/vmware/discussion.mdwn b/hurd/running/vmware/discussion.mdwn
deleted file mode 100644
index 65179cec..00000000
--- a/hurd/running/vmware/discussion.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-[[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]]."]]"""]]
-
-I find that this is all quite quick to try and that I can run through the
-./native-install and reboot cycle twice OK. However, at that point the
-installed Hurd boots up but fails to display a login prompt. This is the case
-for both K10 and K14 using VMware Workstation 5.0.0 under Windows XP. Maybe
-I'm doing something wrong but it is hard to see what. I'd be interested to
-know more precisely what other people find does work.
-
---IanMiller - 01 Apr 2007
diff --git a/hurd/settrans.mdwn b/hurd/settrans.mdwn
new file mode 100644
index 00000000..5b381090
--- /dev/null
+++ b/hurd/settrans.mdwn
@@ -0,0 +1,37 @@
+[[!meta copyright="Copyright © 2002, 2004, 2005, 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]]."]]"""]]
+
+The `settrans` command is used to attach a [[translator]] (server) to a given
+[[file_system_node|virtual_file_system]].
+
+`settrans` is commonly used like this:
+
+ $ settrans -fgap *NODE* *TRANSLATOR SETTING*
+
+ * `fg`, **f**orce any existing translator to **g**o away from that node.
+ * `ap`, start an ***a**ctive translator*, and also establish a ***p**assive
+ translator* setting.
+
+*Active translator* means that the operating system starts the translator
+immediately and *passive translator* in turn means that the settings are
+instead saved in the file system node, and then, when programs access the node
+by, for example, sending an [[RPC]], the Hurd will transparently start the
+server to handle the request.
+
+
+Help on settrans can be obtained by passing it the `--help` option.
+
+Likewise, help on a specific translator can be gotten by invoking it from the
+command line with the same argument, e.g.:
+
+ $ /hurd/pfinet --help
+
+As there can be a lot of output, consider piping this through a pager.
diff --git a/hurd/settrans/discussion.mdwn b/hurd/settrans/discussion.mdwn
new file mode 100644
index 00000000..c9ec4d34
--- /dev/null
+++ b/hurd/settrans/discussion.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 2011 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_documentation open_issue_hurd]]
+
+
+# IRC, freenode, #hurd, 2011-06-01
+
+ <antrik> ugh... I just realized why settrans -a without -f doesn't
+ generally work on filesystem translators
+ <antrik> obviously, it needs -R too!
diff --git a/hurd/status.mdwn b/hurd/status.mdwn
index a84d7c45..447f3ae4 100644
--- a/hurd/status.mdwn
+++ b/hurd/status.mdwn
@@ -1,26 +1,64 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2001, 2002, 2007, 2008, 2009, 2010, 2011 Free
+Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-The Hurd team doesn't create hurd-only releases, but instead relies
-on a distribution done by folks from **Debian**.
+[[!tag stable_URL]]
+
+The Hurd, together with the GNU Mach microkernel, the GNU C Library
+and the other GNU and non-GNU programs in the GNU system, provide a
+rather complete and usable operating system today. It may not be ready
+for production use, as there are still many bugs and missing features.
+However, it should be a good base for further development and
+non-critical application usage.
+
+[[!img hurd-fvwm-screenshot-2009-11-12.png size=300x
+alt="FVWM and Gnumeric running on GNU/Hurd"
+title="FVWM and Gnumeric running on GNU/Hurd"
+align="right"
+
+]] The GNU system (also called GNU/Hurd) is completely self-contained
+(you can compile all parts of it using GNU itself). You can run
+several instances of the Hurd in parallel, and debug even critical
+servers in one Hurd instance with gdb running on another Hurd
+instance. You can run the X window system, applications that use it,
+and advanced server applications like the Apache webserver.
+
+
+On the negative side, the support for character devices (like sound
+cards) and other hardware is mostly missing. Although the [[POSIX
+interface|faq/posix_compatibility]] is provided, some additional interfaces
+like POSIX shared
+memory or semaphores are still under development.
+
+All this applies to the current development version, and not to the
+last release (0.2). We encourage everybody who is interested to try
+out the latest development version, and send feedback to the Hurd
+developers.
+
+
+The Hurd team doesn't create Hurd-only releases, but instead relies on
+a distribution done by folks from *Debian* and since 2010 also *Arch*.
That Debian version closely tracks the progress of the Hurd
(and often includes many new features),
so little would be gained by creating an official pure Hurd release.
-The Debian GNU/Hurd [[distribution|running/debian]] offers **livecds and qemu images**
+The Debian GNU/Hurd [[distribution|running/debian]] offers *LiveCDs and QEMU images*
to test-drive the Hurd in a real life system with access to about
-50% of the Debian software archive.
+68% of the Debian software archive.
The most recent version of the Debian port at the time of writing
-is **Debian GNU/Hurd K16**.
+was published on 2011 July 1st.
+
+[[Arch_Hurd|hurd/running/arch_hurd]] offers *LiveCDs* for testing and
+install.
That said, the last official release of the Hurd
@@ -34,3 +72,43 @@ already expect delays; to disappoint them in this way as
well would be unfortunate. Moreover, it would lessen the
possibility that they would want to try the Hurd again in the future.
+
+## Usability Reports
+
+### Olaf Buddenhagen, 2009-06-09
+
+> I have been using the Hurd for most of my everyday work for some two
+> years now. Most of the time it's pretty OK, but occasionally programs
+> crash, or the screen session dies, or even the whole system. Also,
+> various programs simply don't work at all, or don't work in certain
+> situations.
+>
+> While I have learned to work around many of these issues, I don't
+> believe I would be able to use it as my primary system, without having a
+> GNU/Linux system running in parallel, as a fallback for all the stuff
+> that doesn't work on the Hurd.
+>
+> My everyday work includes reading/writing email and other texts, preparing and giving
+> presentations, text-mode web browsing, viewing pictures, IRC, reading
+> PDF documents, programming, and various other random stuff...
+>
+> [...]
+>
+> One particular problem for desktop use is the fact that while X does
+> work, it works very poorly -- it's not only slow and jerky all the time,
+> but also tends to lock up completely. (At least with the local socket
+> transport... Haven't tried whether forcing TCP works better.)
+>
+> Note that while many of the stability problems are simply bugs to fix,
+> the system will still be very fragile in the absence of these -- a
+> simple port leak is sufficient to kill it within seconds. This is
+> something that can't be easily solved. Properly fixing this will require
+> a sound resource accounting framework, i.e. very fundamental changes to
+> the system... Though I tend to believe that it could be improved at
+> least partially, at the expense of flexibility, by enforcing certain
+> fixed limits on users, processes etc. like other UNIX systems do.
+>
+> [...]
+>
+> [But] unlike a few years back [...] the system is stable enough under
+> load nowadays [...].
diff --git a/hurd/status/hurd-fvwm-screenshot-2009-11-12.png b/hurd/status/hurd-fvwm-screenshot-2009-11-12.png
new file mode 100644
index 00000000..445abf32
--- /dev/null
+++ b/hurd/status/hurd-fvwm-screenshot-2009-11-12.png
Binary files differ
diff --git a/hurd/subhurd.mdwn b/hurd/subhurd.mdwn
index 8816e312..b8e595d3 100644
--- a/hurd/subhurd.mdwn
+++ b/hurd/subhurd.mdwn
@@ -1,12 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2010, 2011 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
A sub-Hurd is like a [[neighbor_Hurd|neighborhurd]], however, makes use of some
resources provided by another Hurd. For instance, backing store and the
@@ -17,7 +18,10 @@ attach to them with gdb from the parent
([[debugging_via_subhurds|debugging/subhurd]]). This avoids deadlock, e.g.,
when the instance of gdb stops the server but requires its use. (Note: it is
possible to use [[debugging/gdb/noninvasive_debugging]], but this is less
-flexible.)
+flexible.) Vice versa, it is also possible to use a subhurd to debug the
+*main* Hurd system, for example, the latter's root file system.
+
+[[!toc levels=2]]
# Howto
@@ -105,9 +109,9 @@ inside the subhurd, or to `ssh` directly into the subhurd.
If you want to access the subhurd processes from the outside, e.g. for
[[debugging_purposes|debugging/subhurd]] (or to get rid of a subhurd that
-didn't exit cleanly...), you need to find out how main Hurd PIDs correspond to
+didn't exit cleanly...), you need to find out how main Hurd [[PID]]s correspond to
subhurd processes: the subhurd processes appear in the main Hurd (e.g. if doing
-`ps -e`) as unknown processes, and vice versa, but the PIDs are different! To
+`ps -e`) as unknown processes, and vice versa, but the [[PID]]s are different! To
find out which process is which, you can simply compare the order -- while the
numbers are different, the order should usually match. Often it also helps to
look at the number of threads (e.g. using `ps -l`), as many servers have very
@@ -118,5 +122,66 @@ characteristic thread counts.
Read about using a subhurd for [[debugging_purposes|debugging/subhurd]].
-Roland's [tutorial](http://www.gnu.org/software/hurd/howto/subhurd.html) on
-setting up sub-hurds.
+Roland's tutorial about [[running_a_subhurd]].
+
+
+# Use Cases
+
+<a name="debugging_main_hurd_system"></a>
+## Debugging the *Main* Hurd System
+
+A subhurd can be used for debugging the *main* Hurd system. This works as long
+as the subhurd doesn't use any services provided by the main Hurd. For
+example, if you already have a subhurd running at the time it happens, you can
+use that one to debug a deadlocked [[translator/ext2fs]] root file system in
+the *main* Hurd.
+
+For this, you need to get a handle to the main Hurd's [[ext2fs
+translator|translator/ext2fs]]'s [[PID]], but this is no problem, as currently
+[[PID]]s are visible across subhurd boundaries. (It is a [[!taglink
+open_issue_hurd]] whether this is the right thing to do in
+[[open_issues/virtualization]] contexts, but that's how it currently is.)
+
+
+<a name="unit_testing"></a>
+## Unit Testing
+
+freenode, #hurd channel, 2011-03-06:
+
+From [[open_issues/unit_testing]].
+
+ <youpi> it could be interesting to have scripts that automatically start a
+ sub-hurd to do the tests
+ <youpi> though that'd catch sub-hurd issues :)
+ <foocraft> so a sub-hurd is a hurd that I can run on something that I know
+ works(like linux)?
+ <foocraft> Virtual machine I would think
+ <foocraft> and over a network connection it would submit results back to
+ the host :p
+ * foocraft brain damage
+ <youpi> sub-hurd is a bit like chroot
+ <youpi> except that it's more complete
+ <foocraft> oh okay
+ <youpi> i.e. almost everything gets replaced with what you want, except the
+ micro-kernel
+ <youpi> that way you can even test the exec server for instance, without
+ risks of damaging the host OS
+ <foocraft> and we know the micro-kernel works correctly, right youpi?
+ <youpi> well, at least it's small enough that most bugs are not there
+ <foocraft> 1) all tests run in subhurd 2) output results in a place in the
+ subhurd 3) tester in the host checks the result and pretty-prints it 4)
+ rinse & repeat
+ <youpi> the output can actually be redirected iirc
+ <youpi> since you give the sub-hurd a "console"
+ <foocraft> youpi, yup yeah, so now it's more like chroot if that's the case
+ <youpi> it really looks like chroot, yes
+ <foocraft> but again, there's this subset of tests that we need to have
+ that ensures that even the tester running on the subhurd is valid, and it
+ didn't break because of a bug in the subhurd
+ <tschwinge> As long as you do in-system testing, you'll always (have to)
+ rely on some functionality provided by the host system.
+ <foocraft> the worst thing that could happen with unit testing is false
+ results that lead someone to try to fix something that isn't broken :p
+ <tschwinge> Yes.
+ <youpi> usually one tries to repeat the test by hand in a normal
+ environment
diff --git a/hurd/subhurd/discussion.mdwn b/hurd/subhurd/discussion.mdwn
new file mode 100644
index 00000000..3449edcd
--- /dev/null
+++ b/hurd/subhurd/discussion.mdwn
@@ -0,0 +1,69 @@
+[[!meta copyright="Copyright © 2011 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_documentation]]
+
+IRC, freenode, #hurd, 2011-08-10
+
+ < braunr> youpi: aren't sub-hurds actually called "neighbor hurds" ?
+ < youpi> no idea
+ < braunr> i also don't understand the recursive property
+ < youpi> a user can run a subhurd
+ < neal> braunr: What don't you understand?
+ < youpi> a user in a subhurd can run a subhurd
+ < youpi> etc
+ < braunr> i'm not sure it's really recursive
+ < neal> youpi: At some point it was observed that you don't strictly
+ require any resources from the "parent" Hurd.
+ < neal> youpi: i.e., you could have two Hurds running "directly" on Mach
+ < youpi> sure
+ < neal> youpi: Hence neighbor rather than sub
+ < youpi> but you need to be root for that
+ < youpi> or else your subhurd can't do much
+ < neal> you need to have been authorized to use the required resouces
+ < youpi> which is about the same :)
+ < neal> depends how they are delegated
+ < youpi> that's still asking root for something
+ < neal> if you say so
+ < youpi> which is most probably not the default
+ < braunr> well, either you depend on the parent to do things on your
+ behalf, or you directly have some privileged ports
+ < braunr> i'd agree with youpi that it's pretty much having root access at
+ some point
+ < youpi> and usually you don't have privileged ports by default :)
+ < braunr> but we don't need to restrict the presentation to user only sub
+ hurds
+ < braunr> people don't mind switching to root on their desktops
+ < braunr> which is one of the reasons they ask "what does the hurd really
+ bring me today ?"
+ < braunr> but being able to run truely separate hurds or recursive hurds is
+ something nice most OSes can't do easily
+ < youpi> switching to root becomes a *pain* when you have to do it 1 every
+ two commands
+ < braunr> yes sure, but some people might just say you're clumsy :x
+ < neal> The question is: can I start a sub-hurd from within another hurd
+ that survives the parent's hurd exiting? The answer is yes. The reason
+ is that the sub-hurd can be constructed in such a way that it does not
+ rely on the parent. In this case, the parent does not necessarily
+ subjugate the sub-hurd. Hence the name.
+ < braunr> but that's out of the scope of the discussion
+ < antrik> using the traditional, root only mechanism, neighbour-hurd is
+ indeed a more appropriate term. apart from the initial terminal being
+ proxied to the parent system by the boot program, they are really equal
+ < antrik> with zhengda's work on non-root subhurds, you rely on various
+ proxies in the parent system to access privileged resources; so subhurd
+ is indeed a more appropriate term in this case
+ < antrik> (not only non-root subhurds in fact... when using any of the
+ proxies, such as the network multiplexer -- even if still running as
+ root...)
+ < youpi> antrik: you could still give a com0 port as terminal
+ < antrik> I don't think that's actually supported in the boot
+ program... but it doesn't really matter, as you don't really need the
+ terminal anyways -- you can always log in through the network
diff --git a/hurd/subhurd/running_a_subhurd.mdwn b/hurd/subhurd/running_a_subhurd.mdwn
new file mode 100644
index 00000000..f337108e
--- /dev/null
+++ b/hurd/subhurd/running_a_subhurd.mdwn
@@ -0,0 +1,42 @@
+[[!meta copyright="Copyright © 1998, 1999, 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]]."]]"""]]
+
+[[!meta title="Running a Subhurd"]]
+
+By Roland McGrath.
+
+The most useful thing you can do when trying to troubleshoot the boot
+sequence of the Hurd is try to run your the system in a
+sub-hurd, while watching it using ps and gdb from the working hurd. Since
+the sub-hurd is never going to make it all the way up, you don't even
+really need to make a separate filesystem for it; you can just boot the
+sub-hurd read-only on your main root filesystem if you like.
+
+The way to boot the sub-hurd is with `boot`. I would suggest something
+like this:
+
+ boot -d -I -Tdevice /boot/servers.boot hd0s6
+
+The -d says to pause before the start-up of each server and wait for you to
+hit return, which gives you time to go attach gdb to the task before it
+starts running. The -I says to leave the terminal signals normal, so
+hitting C-z will suspend boot rather than sending a C-z to the virtual
+console device of the sub-hurd. (Note that suspending boot does not
+suspend the sub-hurd, just boot itself; boot acts as the server for device
+access from the sub-hurd, so the sub-hurd's attempts to write to its
+console or open devices block while boot is suspended.)
+
+When you do `ps -A` on the main hurd, the sub-hurd tasks will appear as
+unknown processes. You can figure out which is which just by looking at
+the order of unknown processes that appear with higher PIDs than the boot
+process. They appear in the order you see in the "bootstrap: ..."
+messages, i.e. the first unknown after boot will be ext2fs.static, the
+second exec, then init, then proc.
diff --git a/hurd/syncfs.mdwn b/hurd/syncfs.mdwn
new file mode 100644
index 00000000..9f329b4b
--- /dev/null
+++ b/hurd/syncfs.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2009, 2011 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]]."]]"""]]
+
+`syncfs` is a tiny wrapper around the [[`file_syncfs`
+RPC|interface/file_syncfs]].
+
+Its functionality should me merged into GNU coreutils' `sync` program, see
+[[!GNU_Savannah_task 6614]][[!tag open_issue_hurd open_issue_porting]].
+
+There is a [[!FF_project 270]][[!tag bounty]] on this task.
diff --git a/hurd/toolchain.mdwn b/hurd/toolchain.mdwn
index e94029ba..91d49b2c 100644
--- a/hurd/toolchain.mdwn
+++ b/hurd/toolchain.mdwn
@@ -1,18 +1,11 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2010 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-* [[binutils]]
-* [[GCC]]
-* [[glibc]]
-
-Before beginning to work on the inner parts of the GNU/Hurd toolchain, it's
-always profitable to also know how things are done on other systems. Compare,
-for example, how things are done differently for GNU/Hurd than they are done
-for GNU/Linux.
+[[!meta redir=/toolchain]]
diff --git a/hurd/translator.mdwn b/hurd/translator.mdwn
index 3f763013..bf7af3ce 100644
--- a/hurd/translator.mdwn
+++ b/hurd/translator.mdwn
@@ -1,12 +1,20 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009, 2010, 2011 Free Software
+Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!tag stable_URL]]
+
+[[!toc]]
+
+
+# General Information
A translator is simply a normal program acting as
an object server and participating in the Hurd's
@@ -17,18 +25,38 @@ and [[pfinet]]) and thus translates object invocations
into calls appropriate for the backing store
(e.g., ext2 file system, nfs server, etc.).
+Another way of putting it is that it translates from one representation of a
+data structure into another representation, for example from the on-disk
+[[ext2|ext2fs]] data layout to a traditional file system hierarchy, or from a
+XML file to a virtual hierarchical manifestation. This translation can be a
+bidirectional process, but it need not be.
+
+A translator is usually registered with a specific file system node by using
+the [[`settrans`|settrans]] command.
+
Translators do not require any special privilege
to run. The privilege they require is simply
that to access the indiviudal resources they use.
This is primarily the [[backing_store]] and the node
they attach to. Typically, a translator can
only be attached to a node by the node's owner.
-On Unix this is not possible because file systems
+On [[Unix]] this is not possible because file systems
and the virtual file system are implemented in the
kernel and thus have absolute access to the machine.
As the protocols do not require any special privilege
to implement, this is not an issue on the Hurd.
+In Mach parlance, a *translator* is what they name a *server*: a process that
+participates in [[RPC]] interactions. In the Hurd, a translator is a server
+that is additionally attached to a filesystem node. Thus, it is quite common,
+even in the Hurd context, to speak about *server*s if you're stressing the RPC
+part, and on the other hand about *translator*s if you're stressing the
+filesystem part: a translator implements the [[interface/fs]] and
+[[interface/io]] interfaces. For example: *the [[pfinet]] server implements
+the socket API calls (which are mapped by [[glibc]] to equivalent RPC calls)*,
+compared to *a [[libdiskfs]]-based translator implements a filesystem, based on
+a backing store*.
+
To learn how to write a translator, read the code!
It is well documented, in particular, the header files.
The [[Hurd_Hacking_Guide]] also has a tutorial.
@@ -37,18 +65,32 @@ Also there is an [[writing/example]] about how to write a simple translator.
See some [[examples]] about how to use translators.
+There is a [[documentation/translator_primer]].
+
+Marcus Brinkmann has written a document about [[documentation/translators]].
+
+Here are some [[hints_about_debugging_translators|debugging/translator]]
+available.
+
+Read about translator [[short-circuiting]].
+
+The [[concept|concepts]] of translators creates its own problems, too:
+[[open_issues/translators_set_up_by_untrusted_users]].
+
# Existing Translators
+* [[auth]]
+* [[exec]]
* [[pfinet]]
+* [[pflocal]]
* [[hostmux]]
* [[storeio]]
* [[ext2fs]]
* [[fatfs]]
* [[magic]]
-* [[mboxfs]]
* [[unionfs]]
-* [[xmlfs]]
+* [[nfs]]
* ...
@@ -59,124 +101,63 @@ See some [[examples]] about how to use translators.
* [[cvsfs]]
* [[tmpfs]]
* [[procfs]]
+* [[nsmux]]
+* [[netio]]
+* [[tarfs]]
+* [[gopherfs]]
* ...
+# Translators (only) in Hurdextras
+
+*These Translators are available in the [hurdextras repository](http://savannah.nongnu.org/cvs/?group=hurdextras) but not yet described on this website. They are in varying stages of Development.*
+
+* [jfs](http://www.nongnu.org/hurdextras/#jfs)
+* [httpfs](http://www.nongnu.org/hurdextras/#httpfs)
+* [gopherfs](http://www.nongnu.org/hurdextras/#cvsfs)
+* [memfs](http://www.nongnu.org/hurdextras/#gopherfs)
+* [notice](http://www.nongnu.org/hurdextras/#notice)
+* [pith](http://www.nongnu.org/hurdextras/#pith)
+* [pptop](http://www.nongnu.org/hurdextras/#pptop)
+* [run](http://www.nongnu.org/hurdextras/#run)
+* [smbfs](http://www.nongnu.org/hurdextras/#smbfs)
+* [xmlfs](http://www.nongnu.org/hurdextras/#xmlfs)
+* [mboxfs](http://www.nongnu.org/hurdextras/#mboxfs)
+
+
+# Translator Wishlists
+
+ * [[wishlist_1]]
+ * [[wishlist_2]]
+ * [[open_issues/network_file_system_by_just_forwarding_RPCs]]
+ * [[libguestfs]]
+
+
+# Internally
+
+## `*_demuxer` Functions
+
+ * IRC, unknown channel, unknown date
+
+ <jim-crow> what is a main idea of _demuxer functions in translators?
+ <neal> jim-crow: Think of a web server.
+ <neal> jim-crow: A typical web server must process many different requests.
+ <neal> jim-crow: There are different types of requests.
+ <neal> jim-crow: For instance, static pages and dynamically gnereated content.
+ <neal> the static pages are processed by one function
+ <neal> and the dynamic pages by another
+ <neal> the thing that makes the decision which of these functions to pass the request to is the demuxer.
+ <jim-crow> neal: ok, I see
+ <jim-crow> but what is actually it doing in trivfs_demuxer?
+ <neal> it looks at the message id and calls the right server stub
+ <jim-crow> for example it calls trivfs_io_server function, but I can't find its implementation
+ <jim-crow> that's my main question :-)
+ <neal> look at the files mig generates
+ <jim-crow> neal: ok, thanks
+ <jim-crow> neal: is this functions where actually stubs are called?
+ <neal> I think so.
+
+
+# Bounties
-# Translator wishlist
-
-* FUSE(fuse.sourceforge.net/) compatilbility library. : just modify FUSE apps a and compile little to work as translator :-)
-
-* File Finder. (uses find, grep, a combination or a custom command (htdig, mp3 info)
- * Files found will be available under one directory and then can be used like a normal directory
- * usefull to generate Albums, Share only resulting files over the et, etc..
- * The filefinder can be scheduled or can be connected over some ipc like dbus to the VFS system if any to keep a watch for new files.
-
-* GNOKII, BitPim and openobex as translators
- * grep through your SMSs!
- * share your addressbook!
- * "Attach" that funny SMS/MMS to your email.
- * "svn commit" your joke collection :-D
-
-* Real Language Translator [[br]]
- * cat /usr/translator/de-en/usr/share/doc/something.txt should take /usr/share/doc/something.txt , submit it to google's website and bring back results.
-
-* Mozilla Bookmarks = del.ici.ous
- * Need more explanation ? ;-)
-
-* <http://hnb.sf.net>
- * having a directory structure for a file can allow to "svn commit" the hnb document in a more "node-safe" manner, thus allowing multiple people to work on the same hnb document.
- * This must be fairly easy as HNB can already export to XML and XMLfs already exists.
-
-* DavFS
- * Just setup a 'WebDav share' as a directory. The implimentation of the protocol is already available in nautilus and konqueror.
-
-* Compiled form of your project
- * you have your project in /somedir/project with source in /somedir/project/src .. /somedir/project/bin should always have the compiled version.. is it possible?
- * The source has to have a MakeFile.
- * creating /somedir/project/bin-somearch should aotomatically crosscompile
- * Seems feasible for a small project.
-
-* Report generation FrameWork - an idea to be hugged by app developers..not kernel developers.
- * You have financial data in some Spreadsheet like format in /yourFinance directory
- * You add report templates to /yourFinance/repTemplates
- * Once you save data in /yourFinance the next cat /yourFinance/reports/areportname will give you an uptodate report.
- * This will be usefull for any purpose including serving by static page web servers, sharing over samba/nfs/ftp etc.!
- * The advantage is any save to the spreadsheet will update the report.. not just from one software.
-
-* SVN (Subversion suite)
- * like [[cvsfs]]. /svndir/version/version-no should automatically have subversion
- * I think it is nice to write a generalised version control system framework library which will help in writing version control translators and other tools easily.
-
-* Flexi-acls
- * First of all - Can this be done? : A translator bound to a directory must be able to access the contents of the directory which would have been accessible in the absence of the translator..
- * This will enable to wirte translators that can implement custom "Access Control Lists". Just imagine having advanced ACLs even if underlying FileSystem is dumb! Imagine changing the type of ACLs implemented with Just two commands - one to unattach previous translator and the next to attach a different ACL translator! The ACLs themselves may be stored in a different directory
-
-* The translator manager!
- * Some translators will need to be inserted automatically - like for eg: hardware drivers ..
- * Each hardware translator will pubish its capabilities.
- * The "top" translator will query the capabilities of different hardware and match capabilities with the "slave" translators. That is it's only Job.
- * The control is then handed over to the slave translator.
- * The ranking not only looks who can handle the "most" capabilites of the hardware. If it finds that multiple translators can handle the same hardware, It will use other parameters to choose between them.. like may be the size in memory? The revision date? Stability (inferred from version number)? And to go to the extreme, the profiling data of the driver ;-P
- * Advantage : The best driver wins!
-
-* An eg. Skip it if you understood the above :-):
- * You have a driver that can handle VGA + SVGA + Super3d acceleration + Particle graphics + Works for nvidea card.
- * You have a driver that can handle SVGA + VGA .
- * You have a driver that can handle VGA.
- * Case 1: Your card: A VGA card with some extra fonts..
- * First the VGA driver will be quireied .. ok can handle essential capability.
- * Next SVGA driver: can handle but has extra module.. unnecassary weight .
- * The Nvidia driver: can handle , but again unnecassary weight : ruled out.
- * Winner : VGA driver:
- * Case 2: Your card An SVGA card:
- * First the VGA driver will be quireied .. ok can handle one essential capability.
- * Next SVGA driver: can handle essential and one extra capability no extra weight..
- * The Nvidia driver: can handle , but unnecassary weight : ruled out.
- * Winner : SVGA driver..
- * Case 3 : You have an VGA .. but no VGA driver .. then the SVGA driver would win.
-
-* Sound Server
- * /ahsa - stands for Advanced HURD sound architecture :-) Just a temporary name .. for fun.
- * /ahsa/out - directory wich will hold "plug"s where apllications come and join the server .. see below.
- * /ahsa/out/mixer - main mixer
- * /ahsa/out/nextfree - the file when "cat"ed gives the number of the next free plug
- * /ahsa/plugins/ - info about available plugins
- * /ahsa/out/[1..n]/ - dynamically generated directories for applications to plug on..
- * /ahsa/out/[1..n]/data this is where you should do a "cat somerawsoundfile>/ahsa/out/`cat /ahsa/nextfree`/data"
- * /ahsa/out/[1..n]/plugins - the plugin stack .. volume is also a plugin..
- * /ahsa/out/[1..n]/plugins/[1..m]/ - echo "plugin param1 param2 param3" > /ahsa/out/[1..n]/plugins/`cat /ahsa/out/[1..n]/plugins/nextfree`/add
- * /ahsa/out/[1..n]/plugins/[1..m]/params/{param1.. paramn}
- * /ahsa/out/[1..n]/data.out - can be catted to get data processed through the server
- * /ahsa/in - similar to /ahsa/out .. with except for an extra file to choose input devices.
- * /ahsa/devs/{1..n} - devices detected .. can be dynamic .. there are usb soundcards and and midi devices.
- * /ahsa/out/[1..n]/plugins/[1..m]/0/params/dev
- * Dont get tempted for :/ahsa/out/[1..n]/params/{rate, channels, and other stuff}
- * that goes into /ahsa/out/[1..n]/plugins/0/params if /ahsa/out/[1..n]/plugins/0/detected == "headerless audio"
- * There are a lot more things I can continue about the "sound server" .. The Ideas simply dont seem to exhaust..
- * Some features/advantages
- * set output's translator plugin as ordinary text -- have text to speech conversion done by sound server!
- * Create and apply plugin presets by simply copying directories!
- * Me getting dizzy thinking of the zillion more advantages.
- * If you are really doing some ordinary output , all you need to do is "cat" data into next free "plug" and everything will be autodetected including the format of the data and sent to the final sound "merge"r
- * Dizzy ...
-
-* /usr/share/menu !!!! extension for package management idea ..
- * cat mymenuitem.menu >> /usr/share/menu/menu
- * cat /usr/share/menu/debian/kde ... :-)
-
-* Spam/Malware Control
- * /usr/antimalware/ - put your mail here.. it will automatically be scanned. when finished it will vanish from here ..
- * /usr/antimalware/clean - ... and pop out from here
- * /usr/antimalware/malware - or here.
-
-* NetDevice
- * !JustImagine(tm)... settrans -ac /netdevices /hurd/netdevfs - [ host | net ]
- * One can access device files remotely
- * This could be acheived by allowing translators talk to one another over a network
- * This will need translators to catch and handle ioctls (if there is such a thing in HURD).
- * The device server which will listen to requests from the translators can be run even on a Linux machine!!!
- * !JustImagine(tm)... accessing the crwriter/webcam on that GNU/Linux machine on the network using cdrecord of your local hurd machine!
- * !JustImagine(tm)... running GNU/HURD on a minimalistic GNU/Linux(but with all the drivers) through a specially modified and optimised Qemu. The device server runs on the host machine, and the client translators access over the virtual network created by Qemu. You got most of the drivers for free!
-
-* Emacs File VFS
- * I came to know from my Emacs loving friend that there are lots of VFS handlers in Emacs.. I was wondering if there can be translator which can tap into these Emacs VFS handlers.
+There is a [[!FF_project 280]][[!tag bounty]] on some translator improvement
+tasks.
diff --git a/hurd/translator/auth.mdwn b/hurd/translator/auth.mdwn
new file mode 100644
index 00000000..d9e70ec2
--- /dev/null
+++ b/hurd/translator/auth.mdwn
@@ -0,0 +1,13 @@
+[[!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]]."]]"""]]
+
+[[*The_Authentication_Server*|documentation/auth]], the transcript of a talk
+about the details of the authentication mechanisms in the Hurd by Wolfgang
+Jährling.
diff --git a/hurd/translator/cvsfs.mdwn b/hurd/translator/cvsfs.mdwn
index 0dd682bf..f5f1a9e0 100644
--- a/hurd/translator/cvsfs.mdwn
+++ b/hurd/translator/cvsfs.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
## Setting up cvsfs on GNU/Hurd - A step by step process
diff --git a/hurd/translator/devfs.mdwn b/hurd/translator/devfs.mdwn
new file mode 100644
index 00000000..27df23aa
--- /dev/null
+++ b/hurd/translator/devfs.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+`devfs` is a translator sitting on `/dev` and providing what is to be provided
+in there in a dynamic fashion -- as compared to static passive translator
+settings as they're used now.
+
+`devfs` has not yet been written.
+
+---
+
+If applicable, it has to be taken care that all code concerning the page-in
+path is resident at all times.
diff --git a/hurd/translator/discussion.mdwn b/hurd/translator/discussion.mdwn
new file mode 100644
index 00000000..e038ba84
--- /dev/null
+++ b/hurd/translator/discussion.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 2011 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_documentation open_issue_hurd]]
+
+IRC, freenode, #hurd, 2011-08-25:
+
+ < frhodes> how can I replace an existing running server with a new one
+ without rebooting?
+ < antrik> frhodes: depends. if other critical things depend on it, you
+ can't. there is no mechanism to serialize and pass on the open sessions
+ < antrik> in some situations, you can orphan the old translator while
+ starting a new one, so the previous clients will stay with the old one
+ while new one will get the new one
+ < antrik> obviously that only works for things that aren't exclusive by
+ nature
+ < antrik> in some cases, you might even be able simply to remove the old
+ translator... but obviously only for non-critical stuff :-)
diff --git a/hurd/translator/emailfs.mdwn b/hurd/translator/emailfs.mdwn
index 04b58f33..80e2b150 100644
--- a/hurd/translator/emailfs.mdwn
+++ b/hurd/translator/emailfs.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
# How cool it would be if the email becomes similar to snail mail?
diff --git a/hurd/translator/examples.mdwn b/hurd/translator/examples.mdwn
index b9f145e3..ee766fbf 100644
--- a/hurd/translator/examples.mdwn
+++ b/hurd/translator/examples.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
## Setting up translators - HowTo
@@ -36,9 +36,9 @@ or
ftp$ cd ftp.fr.debian.org
ftp/ftp.fr.debian.org $ ls
-* tarfs translator
+* tarfs translator (needs uatime fix, 2010-08-25 → [git repo](http://github.com/giselher/tarfs))
-You can use tarfs to mount (almost) any tar file:
+You can use tarfs to mount (almost) any tar file (currently broken, 2010-08-25):
$ settrans -ca a /hurd/tarfs -z myfile.tar.gz
$ settrans -ca b /hurd/tarfs -y myfile.tar.bz2
@@ -50,7 +50,7 @@ You can even use it to create new tar files:
$ cp -r all my files new/
$ syncfs new
-This is not as fast as `tar czvf newfile.tar.gz all my files` but at least, it's more original. ;)
+This is not as fast as `tar czvf newfile.tar.gz all my files`, but at least it's more original. ;)
* cvsfs translator
diff --git a/hurd/translator/exec.mdwn b/hurd/translator/exec.mdwn
new file mode 100644
index 00000000..d5b6bfbc
--- /dev/null
+++ b/hurd/translator/exec.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+The *exec* server, listening on `/servers/exec`, is responsible for
+preparing the execution of processes.
diff --git a/hurd/translator/ext2fs.mdwn b/hurd/translator/ext2fs.mdwn
index cfa8c997..fff2e74b 100644
--- a/hurd/translator/ext2fs.mdwn
+++ b/hurd/translator/ext2fs.mdwn
@@ -1,18 +1,45 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2010, 2011 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+# Implementation
+
+ * [[filetype]] option
+
+
+## Large Stores
The `ext2fs` translator from the upstream Hurd code base can only handle file
systems with sizes of less than roughly 2 GiB.
-A patch exists to lift this limitation (and is being used in the
+[[!tag open_issue_hurd]]
+
+
+### Ognyan's Work
+
+ * Ognyan Kulev, [[*Supporting Large ext2 File Systems in the
+ Hurd*|ogi-fosdem2005.mgp]], 2005, at FOSDEM
+
+ * Ognyan Kulev, [[large_stores]]
+
+ * <http://kerneltrap.org/node/4429>
+
+Ognyan's patch lifts this limitation (and is being used in the
[[Debian_GNU/Hurd_distribution|running/debian]]), but it introduces another
incompatibility: `ext2fs` then only supports block sizes of 4096 bytes.
Smaller block sizes are commonly automatically selected by `mke2fs` when using
small backend stores, like floppy devices.
+
+
+# Documentation
+
+ * <http://e2fsprogs.sourceforge.net/ext2.html>
+
+ * <http://www.nongnu.org/ext2-doc/>
diff --git a/hurd/translator/ext2fs/filetype.mdwn b/hurd/translator/ext2fs/filetype.mdwn
new file mode 100644
index 00000000..5d85bac9
--- /dev/null
+++ b/hurd/translator/ext2fs/filetype.mdwn
@@ -0,0 +1,33 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+The *ext2fs* translator doesn't support the ext2 format's *filetype* option.
+
+According to *mke2fs(8)*:
+
+> **filetype**: Store file type information in directory entries.
+
+By setting directory listings' informational `d_type` field (`readdir`, etc.),
+this may avoid the need for subsequent `stat` calls.
+
+Not all file systems can support this option.
+
+In `[hurd]/ext2fs/dir.c` the `EXT2_FEATURE_INCOMPAT_FILETYPE` is generally
+masked out (is not even considered) when adding a node to a directory in
+`diskfs_direnter_hard` and when reading in `diskfs_get_directs`. The Hurd's
+ext2fs unconditionally sets this field to 0 (`EXT2_FT_UNKNOWN`).
+
+
+# `e2fsck`
+
+Running `e2fsck` on a file system with the *filetype* option, will correct the
+*filetype* for a lot of files (all `EXT2_FT_UNKNOWN`?) to either 1 (regular
+file, `EXT2_FT_REG_FILE`), or 2 (directory, `EXT2_FT_DIR`), and likely others.
+The Hurd's ext2fs will again ignore these fields, of course.
diff --git a/hurd/translator/ext2fs/large_stores.txt b/hurd/translator/ext2fs/large_stores.txt
new file mode 100644
index 00000000..6e7ffc6f
--- /dev/null
+++ b/hurd/translator/ext2fs/large_stores.txt
@@ -0,0 +1,520 @@
+[[!meta copyright="Copyright © 2005, 2010 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]]."]]"""]]
+
+This is -*- mode: outline -*-
+
+* Introduction
+
+Here is a try to describe the ext2fs patch for the Hurd. This patch
+allows using partitions/stores larger that approximately 1.5G by not
+memory mapping the whole store to address space.
+
+As a guideline, the changelog of RC1 (Release Candidate 1) is
+followed, so I hope nothing is missed. During writing of this text,
+some questions arised and they are marked with XXX. An effort will be
+made to fix all these for RC2.
+
+ Ognyan Kulev <ogi@fmi.uni-sofia.bg>
+
+* The block layer and its purpose
+
+The basic unit of ext2 filesystem is "block". All filesystem
+operation work on blocks which are read, and sometimes modified and
+written back. Possible block sizes are 1K, 2K and 4K, but current
+implementation works reliably only on 4K blocks (= page size of i386).
+
+So the two basic operations on blocks are "reading" block and
+"writing" block.
+
+* Current implementation
+
+** Reading
+
+Currently, the whole store is memory mapped into address space of
+ext2fs process. The is called "disk image", although "store image"
+would be more accurate. The address of the start of the disk image is
+stored in pager.c:disk_image. So "reading" block is easy: just
+calculate byte offset of block and add it to disk_image. The resulting
+address points to the start of the desired block.
+
+The macro ext2fs.h:bptr has exactly this purpose: given block number,
+it returns pointer to block. Sometimes we have pointer somewhere in
+the block, and we want the block number. This is calculated by
+ext2fs.h:bptr_block.
+
+There is another set of macros that use byte offsets instead of block
+numbers. These are boffs_ptr (store offset -> memory pointer) and
+bptr_offs (memory pointer -> store offset).
+
+Converting between store offset and block number is easy with macros
+boffs (block -> offset) and boffs_block (offset -> block). Other
+useful macros are trunc_block and round_block.
+
+** Writing
+
+Modifying block and saving it is not that straight-forward as
+reading. For writing, you need to use "pokel" ("poked elements").
+Pokel interface is in ext2fs.h. Implementation is in pokel.c.
+
+The problem is that generally multiple blocks are modified and we want
+all these changes to hit disk at relatively same time. So we can't
+just change block and leave decision when it's going to be written to
+the microkernel.
+
+So there is a pokel for each set of changes and each change should be
+reported to the pokel by calling pokel_add. When this set of changes
+is completed, pokel_sync of pokel_flush is called. (The latter is
+used to ignore changes.)
+
+In practice, there is one indir_pokel for each ext2fs.h:disknode,
+which is used for indirect blocks of ext2fs. The only other pokel
+used is ext2fs.h:global_pokel, where all other changes to metadata are
+registered.
+
+* Proposed implementation
+
+First one must realize that the idea of mapping the whole store is to
+be thrown away. So only parts of the store should be mapped. These
+currently mapped parts of store are collectively called "cache".
+
+In the proposed implementation, the cache has fixed size of
+ext2fs.h:DISK_CACHE_BLOCKS. In RC1, it's 100, but this is only to
+easily catch bugs. In practice, it can be, for example, 512M, or
+(512*1024/4) blocks of 4K. pager.c:disk_cache_size and
+pager.c:disk_cache_blocks are additional variables about that
+information.
+
+The cached blocks are mapped in ext2fs.h:disk_cache and span
+disk_cache_size bytes (= disk_cache_blocks blocks). As in the
+original implementation, this part of address space is handled by
+custom pager.
+
+** Data structures
+
+Blocks in cache aren't consecutive, so we need data structure to hold
+which part of address space represents what block. This is the
+purpose of pager.c:disk_cache_info. Index in this array is "cached
+block index". But this array doesn't help in finding if specific
+block is mapped, and where. This is the purpose of the
+pager.c:disk_cache_bptr ihash which finds cached block index from
+given block number. Both data structures are guarded by
+pager.c:disk_cache_lock.
+
+** Public interface
+
+"Public" interface to the cache are functions disk_cache_block_ref,
+disk_cache_block_ref_ptr, disk_cache_block_deref,
+disk_cache_block_is_ref. disk_cache_block_ref takes block number and
+return pointer to block content. Reference count of this cached block
+is incremented. After finishing work with block,
+disk_cache_block_deref should be called.
+
+In converting original ext2fs code to use this functions, usually call
+to bptr is turned into call to disk_cache_block_ref. In addition,
+after pointer to block content is not used anymore,
+disk_cache_block_deref is called. This simple scheme is only for
+reading from block. For modifying block, see about pokels below.
+
+disk_cache_block_ref_ptr just increments reference count of specified
+block. It's used when we give pointer to block content to somebody
+else that will dereference it (e.g. pokel) and we want to continue to
+use this content.
+
+disk_cache_block_is_ref checks if specified block has reference count
+greater than zero. It's used in assert:s.
+
+*** bptr* and boffs* macros
+
+These macros continue to work as before, but they don't deal with
+reference counting and this should be taken into consideration. In
+addition, bptr_index returns cached block index from given pointer to
+block content. (This function is used internally.)
+
+*** Pokels
+
+When pokel_add is called with pointer to block content, this
+"consumes" reference of block. It's not consumed (decremented by 1)
+immediately, but when pokel_sync or pokel_flush is called. (Reference
+is consumed immediately if the block is already in the pokel. The
+important thing is that you always lose one reference of the block.)
+
+So we have the following code when we read from block:
+
+ char *bh = disk_cache_block_ref (block);
+ ...
+ disk_cache_block_deref (bh);
+
+And the following code when we modify block:
+
+ char *bh = disk_cache_block_ref (block);
+ ...
+ pokel_add (pokel, bh, block_size);
+
+**** Indirect calls to pokel_add
+
+Some functions indirectly call pokel_add, so this should be taken into
+consideration. These are:
+
+ * record_global_poke
+ * record_indir_poke
+
+So these functions should be treated in the same scheme as pokel_add.
+For example:
+
+ char *bh = disk_cache_block_ref (block);
+ ...
+ record_indir_poke (node, bh);
+
+**** Modifying SBLOCK in diskfs_set_hypermetadata
+
+SBLOCK is global variable that points to superblock content. There is
+one reference count for superblock, so before we call
+record_global_poke (which consumes reference),
+disk_cache_block_ref_ptr is called.
+
+**** Modifying GDP
+
+When group descriptor is wanted, usuall group_desc is called and
+result is stored in local variable GDP. After modifying GDP,
+record_global_poke is called. But because record_global_poke is used,
+we need call to disk_cache_block_ref_ptr:
+
+ gdp = group_desc (i);
+ ...
+ disk_cache_block_ref_ptr (gdp);
+ record_global_poke (gdp);
+
+*** More complex use of pointer to block content
+
+In ext2_new_block and ext2_alloc_inode functions, we have local
+pointer variable BH that sometimes points to block content and
+sometimes points to nothing. In order to reduce possible errors, when
+BH points to nothing it's always 0. In some points (goto labels),
+there is assertion if BH is what's expected (pointer to nothing or
+pointer to something).
+
+*** dino
+
+dino function return pointer to struct ext2_inode for given ino_t.
+This uses reference, so corresponding disk_cache_block_deref should be
+called after finishing work with ext2_inode. For convenience, dino is
+renamed to dino_ref, and dino_deref just calls disk_cache_block_deref.
+
+ struct ext2_inode *di = dino_ref (np->cache_id);
+ ...
+ dino_deref (di);
+
+Or
+
+ struct ext2_inode *di = dino_ref (np->cache_id);
+ ...
+ sync_global_ptr (di, 1);
+ dino_deref (di);
+
+Or
+
+ struct ext2_inode *di = dino_ref (np->cache_id);
+ ...
+ record_global_poke (di);
+
+* Internals of the proposed implementation
+
+As said earlier, instead of mapping the whole store of filesystem to
+address space, only part of it is mapped. This part is called "cache"
+or "disk cache" (although "store cache" would be more appropriate).
+Currently, the cache is contiguous area in address space that starts
+at disk_cache. Its size is disk_cache_size which is disk_cache_blocks
+number of blocks of size block_size.
+
+Mapped blocks in disk cache are not fixed -- each block in the cache
+can be replaced at any time with another block. So we need to know
+which blocks are cached currently and where. Information about each
+cached block is stored in disk_cache_info[]. Index is from 0 to
+disk_cache_blocks-1. In this information the block number is stored
+(among some other things, discussed later). The reverse direction,
+getting the index of cached block from block number, is achieved by
+using disk_cache_bptr ihash. Both these data structures are guarded
+by disk_cache_lock.
+
+** Requesting a block
+
+When ext2 code requests block, it calls disk_cache_block_ref. First,
+this block is search with disk_cache_bptr. If its there, the
+reference count is incremented and pointer to block content is
+returned. In this case, there is a call to disk_cache_wait_remapping,
+which is explained a bit later.
+
+It's more interesting when block is not found in disk_cache_bptr. In
+this case, disk_cache_map is called. Again, disk_cache_bptr is
+consulted, because in the meantime another could already have mapped
+this block. If this is the case, the code is essentially the same as
+those in disk_cache_block_ref.
+
+When it's assured that block is not in the cache, we have no choice
+but throw away an already mapped/cached block and put our block in its
+place. Such block has to meet the following conditions:
+
+- Its reference count being 0
+- Not in the core
+- Not being remapped (explained later)
+- Not being forbidden to be remapped ("fixed", explained later)
+
+The last three conditions are actually flags in disk_cache_info:
+DC_INCORE, DC_REMAPPING and DC_FIXED. DC_DONT_REUSE collectively
+gives the condition in which block is not suitable for
+reusing/remapping.
+
+Searching suitable place in cache is linear. As an optimisation, this
+search doesn't start from the beginning, but starts from where last
+time it has ended. This last index is stored in disk_cache_hint. So
+new candidate blocks for replacement are searched "circular".
+
+If suitable place is found, the old mapping is removed, and the new
+mapping is initialized. But we are still not ready to return pointer
+to block content, because this content is not available yet. We mark
+the block as DC_REMAPPING, which makes disk_cache_block_ref for that
+block in other threads to wait until page is completely remapped.
+
+In both cases, when we have found place and when suitable place is not
+found, disk_cache_hint is updated so that next disk_cache_map
+continues searching from where we ended.
+
+When not suitable place is found, we have to use force. First all
+pages in disk cache are touched. This is workaround because of some
+bug in GNU Mach. The patch relies on "precious page" features of
+Mach. Marking a page as precious instructs Mach to always inform us
+about evicting this page. If page is modified, it seems that we are
+always informed. But if page is unmodified and page is evicted,
+sometimes Mach forgets to tell us. It's true that with large disk
+cache, e.g. 512M, this potentially will re-read the whole cache from
+disk. But if we reach this point, the microkernel is telling us that
+all is already read :-)
+
+This is preparation for following calls to pager_return_some. This
+libpager function is called only on cached blocks that has reference
+count of 0. These are the potential candidates for replacement --
+there is no sense in calling pager_return_some when reference count is
+1 or more. One final case is when there is no cached block that has
+reference count of 0. This is bad and we can't do anything about it.
+In this case, we just wait one second hoping that some other thread
+will drop reference count of block to 0. (XXX Currently (in RC1)
+sleep(1) is always executed. It should be executed only when disk
+cache is starving. There is some rationale behind calling sleep(1) even when
+disk cache is not starving. Although pager_return_some(,,,1)
+guarantees that upon return of this function the page is returned, I'm
+not sure that it's guaranteed that pager_notify_pageout is called.
+This is because pager_return_some and
+libpager/data-return.c:_pager_do_write_request are executed in
+different threads and pager_return_some is confirmed before calling
+pager_notify_pageout. This issue is open.)
+
+So, after forcibly evicting all pages (blocks) that can potentially be
+reused, disk_cache_map is called again.
+
+In the case when suitable place is found and all data structures
+(disk_cache_info and disk_cache_bptr) are changed accordingly,
+pager_return_some(,,,1) is called and we wait for pager_read_page to
+clear DC_REMAPPING. The purpose of this flag (DC_REMAPPING) is solely
+this: to forbid any use of this block until we are absolutely sure
+that this page contains exactly the wanted block. If NDEBUG is not
+defined (so we include debug code), flags of the blocks are checked if
+DC_REMAPPING is really cleared.
+
+Is DC_REMAPPING really needed? Is there possibility that between last
+"mutex_unlock (&disk_cache_lock)" and "return bptr" something could go
+wrong? Actually, disk cache just follows protocol set by
+pager_notify_pageout: that between pager_return_some and changing
+internal structures for the remapping no thread may touch the page.
+This is achieved by marking the page as DC_REMAPPING. For
+convenience, function disk_cache_wait_remapping is defined which waits
+for cached block while it's marked as DC_REMAPPING.
+
+XXX XXX: Actually, the sequence used in RC1 is: remap block and
+pager_return_some. The latter seems redundant, as only blocks that
+are evicted are candidates for remapping. I'll try to fix that for
+RC2.
+
+** Modifying blocks and pokels
+
+After block is modified, it should be registered with pokel_add to
+some pokel. Pokel contains list of ranges of cached blocks. All this
+blocks should have reference count at least 1. In pokel_flush and
+pokel_sync, this reference is consumed.
+
+So in pokel_add if added blocks are already in the pokel, their
+references are consumed, because only 1 reference is consumed in
+pokel_{sync,flush}. It's checked if pokel is for disk_cache, because
+pokels are used in file access too, where disk cache layer is not
+used.
+
+pokel_{flush,sync} both use _pokel_exec, so this is the place where
+block references are consumed. (XXX: In RC1, they are consumed
+always, but it's better to check if these pages are in disk_cache.
+Although calling disk_cache_block_deref on non-disk_cache page does no
+harm.)
+
+*** Indirect use of pokel_add
+
+record_global_poke and record_indir_poke use indirectly pokel_add.
+These functions are slightly changed to use public interface of
+disk_cache. Only new precondition is added for them: caller should
+supply "reference" that will be consumed later by pokel_{flush,sync}.
+
+*** Modifying block without using pokels
+
+sync_global_ptr synchronizes given block immediately. No reference is
+consumed. (XXX: This should be changed in RC2 to consuming reference.
+This will make the function similar in use to
+record_{global,indir}_poke and will make the code more nice-looking.)
+
+** Initialization
+
+*** The superblock
+
+To create disk cache, we need the block size of the filesystem. This
+information is in superblock, so we need to read superblock without
+using disk cache. For this purpose get_hypermetadata is changed to
+read the superblock with store_read instead of old bptr. New function
+map_hypermetadata is created that sets sblock global variable to point
+to the already mapped superblock. So to get behavior of old
+get_hypermetadata, first new get_hypermetadata should be called, and
+then map_hypermetadata.
+
+In ext2fs.c:main, instead of calling get_hypermetadata,
+map_hypermetadata is called. The call to get_hypermetadata is in
+pager.c:create_disk_pager.
+
+In ext2fs.c:diskfs_reload_global_state, along with get_hypermetada,
+map_hypermetadata is called.
+
+*** disk_cache
+
+Disk cache data structures are initialized in
+pager.c:create_disk_pager called from ext2fs.c:main. Disk pager is
+still initialized with diskfs_start_disk_pager, but due to block_size
+variable we call get_hypermetadata. Basic parameters of disk cache
+like disk_cache_blocks and disk_cache_size are initialized here. The
+rest of the initialization process is delegated to disk_cache_init.
+
+disk_cache_init initializes the rest of disk cache data structures:
+disk_cache_lock, disk_cache_remapping, disk_cache_bptr,
+disk_cache_info and disk_cache_hint. After that superblock and group
+descriptors are mapped into the cached and are marked as DC_FIXED.
+This forbids reusing those blocks, because Hurd's ext2 code relies on
+these blocks being mapped into fixed location in address space.
+
+** Pager callbacks
+
+disk_pager_read_page and disk_pager_write_page just use disk cache
+data structures to get the right pointers to blocks.
+disk_pager_read_page requests notification of page-out and updates
+DC_INCORE and DC_REMAPPING too. DC_INCORE is set and DC_REMAPPING is
+cleared (because reading the new block finishes its remapping).
+
+disk_pager_notify_pageout just clears DC_INCORE, making that page
+available for remapping.
+
+* libpager changes
+
+Here memory_object_data_ prefix is shorten to m_o_d_. And when it's
+talked about m_o_d_function Mach function, usually its libpager
+handler is meant.
+
+** Notification on eviction
+
+The most important change that is wanted from libpager is supporting
+notification when page is evicted. Mach already has partial support
+for notification on eviction by argument "kcopy" of m_o_d_return. If
+kcopy is 0, then Mach doesn't have copy of this page anymore, so the
+page is "evicted". The problem is that m_o_d_return is usually called
+only when page is modified, and if it's not modified, it's silently
+dropped.
+
+The solutions is marking page as "precious". This has the exact
+semantics we need: when page is evicted, m_o_d_return callback is
+always called with kcopy=0.
+
+*** Implementation details
+
+New argument is added to user callback pager_read_page:
+notify_on_pageout. If it's non-zero and the page is evicted, user
+callback pager_notify_pageout(pager,page) is called. This change ABI
+requires all libpager clients in the Hurd to be changed according to
+the new API.
+
+m_o_d_request stores notify_on_pageout as flag PM_NOTIFY_PAGEOUT.
+
+m_o_d_return no longer just skips non-dirty pages. Local array
+notified[] is build and at the end of the function,
+pager_notify_pageout is called for all pages that are evicted
+(kcopy=0).
+
+** Avoiding libpager optimization
+
+Unfortunately, there is one more problem, this time specific to
+libpager, not Mach. There is an optimization in m_o_d_request when
+page is being paged out. In the beginning of m_o_d_return, all pages
+being return are marked as PM_PAGINGOUT. This mark is cleared after
+m_o_d_supply (which supplies page content to Mach) is called. If
+m_o_d_request is called on page that is marked as PM_PAGINGOUT, this
+page is marked with PM_PAGEINWAIT, and m_o_d_supply inside
+m_o_d_return is not called for this page. This is possible because
+neither of these functions hold pager->interlock during the whole
+execution of function. This lock is temporarily unlocked during call
+to user callbacks pager_read_page and pager_write_page.
+
+So what is the implication of this optimization to our page eviction
+notification? When page is paged out, we get notified and we can
+decide to reuse it. After arranging disk_cache_info, etc, page is
+touched, but if this happens fast enough, the optimization is
+triggered and we get the old content! Reading the page is "optimized"
+and pager_read_page is not called, but instead the content of old
+block is used.
+
+This is solved by marking flushed and synced pages (via
+pager_{flush,sync}{,_some} with PM_FORCEREAD. (These functions call
+lock-object.c:_pager_lock_object which marks pages with PM_FORCEREAD
+if they are already marked with PM_NOTIFY_PAGEOUT.) In handling
+m_o_d_request, pages marked as PM_FORCEREAD are not optimized in this
+way. XXX: Currently, this fine-grained logic is disabled (with #if),
+as it needs more testing. Probably RC2 will use it. For now, all
+pages are considered PM_FORCEREAD and this particular optimization
+never happens.
+
+*** Technical details
+
+As said above, we need guarantee that after pager_{sync,flush}*,
+pager_read_page callback is called. The most convenient place to mark
+these pages as being forced to re-read is
+lock-object.c:_pager_lock_object, because this function is used by all
+pager_{sync,flush}* functions. So there we just mark page as
+PM_FORCEREAD if it's already marked as PM_NOTIFY_PAGEOUT.
+
+First, this mark influences behaviour of m_o_d_request. If page is
+marked with PM_FORCEREAD and PM_PAGINGOUT, then we set PM_PAGEINWAIT
+and wait until related m_o_d_return finishes (unmarks PM_PAGEINWAIT).
+Then we continue with pager_read_page, etc. If page is not marked
+with PM_FORCEREAD and is marked with PM_PAGINGOUT, then old logic is
+used and pager_read_page is not called (because m_o_d_return handler
+will call m_o_d_supply instead of us). (XXX: Again, this logic is
+inside #if 0. Currently, all pages are considered as marked with
+PM_FORCEREAD.)
+
+The other place where PM_FORCEREAD is taken into consideration is
+handler of m_o_d_return. The original code checks if page is marked
+with PM_PAGEINWAIT, and if it is, m_o_d_supply is called for the just
+written page. PM_PAGEINWAIT is used as "delegator" of the
+m_o_d_supply call to Mach.
+
+In patched libpager, there is one more condition for when to call
+m_o_d_supply. It's called when page is marked as PM_PAGEINWAIT and
+not marked as PM_FORCEREAD. If it's marked as PM_FORCEREAD, then we
+leave m_o_d_supply to m_o_d_request handler which gets notified by
+condition pager->wakeup.
diff --git a/hurd/translator/ext2fs/ogi-fosdem2005.mgp b/hurd/translator/ext2fs/ogi-fosdem2005.mgp
new file mode 100644
index 00000000..27b5077c
--- /dev/null
+++ b/hurd/translator/ext2fs/ogi-fosdem2005.mgp
@@ -0,0 +1,165 @@
+# "Supporting Larger ext2 File Systems in the Hurd"
+# Written by Ognyan Kulev for presentation at FOSDEM 2005.
+# Content of this file is in public domain.
+%include "default.mgp"
+%page
+%nodefault
+%center, font "thick", size 5
+
+
+
+
+Supporting Larger ext2 File Systems in the Hurd
+
+
+
+%font "standard", size 4
+Ognyan Kulev
+%size 3
+<ogi@fmi.uni-sofia.bg>
+
+
+%size 4
+FOSDEM 2005
+
+%page
+
+Need for supporting larger file systems
+
+ Active development during 1995-1997
+
+ Hurd 0.2 was released in 1997 and it was very buggy
+
+ Many bugs are fixed since then
+
+ The 2G limit for ext2 file systems becomes more and more annoying
+
+%page
+
+Timeline
+
+ 2002: Time for graduating, fixing the 2G limit in Hurd's ext2fs and implementing ext3fs were chosen for MSc thesis
+
+ 2003: First alfa quality patch
+
+ 2004: Graduation, ext2fs patch in Debian, but ext3fs is unstable
+
+%page
+
+User pager in GNU Mach
+
+ Address space
+ memory_object_data_supply
+ memory_object_data_return
+ Memory object (Mach concept)
+ pager_read_page
+ pager_write_page
+ User-supplied backstore (libpager concept)
+
+%page
+
+Current ext2fs
+
+ Memory mapping of the whole store
+
+ Applies only for metadata!
+
+ bptr (block -> data pointer)
+ = image pointer + block * block_size
+
+ Inode and group descriptor tables are used as if they are continous in memory
+
+%page
+
+Patched ext2fs, part one
+
+ Address space region
+ mapping
+ Array of buffers
+ association
+ Store
+
+ Association of buffers changes (reassocation)
+
+ It's important reassociation to occur on buffers that are not in core
+
+%page
+
+Patched ext2fs, part two
+
+ Always use buffer guarded by
+ disk_cache_block_ref (block -> buffer)
+ disk_cache_block_deref (release buffer)
+
+ Buffer = data + reference count + flags (e.g. INCORE)
+
+ Calling some functions implies releasing buffer:
+ pokel_add (pokels are list of dirty buffers)
+ record_global_poke (use pokel_add)
+ sync_global_ptr (sync immediately)
+ record_indir_poke (use pokel_add)
+
+ Use ihash for mapping block to buffer
+
+%page
+
+When unassociated block is requested
+
+
+%font "typewriter", size 4, cont
+retry:
+ i = hint;
+ while (buffers[i] is referenced or in core) {
+ i = (i + 1) % nbuffers;
+ if (i == hint) {
+ return_unreferenced_buffers ();
+ goto retry;
+ }
+ }
+ hint = i + 1;
+
+ deassociate (buffers[i]);
+ associate (buffers[i], block);
+
+ return buffers[i];
+
+%page
+
+Notification for evicted pages
+
+ Notification is essential for optimal reassociation
+
+ Precious pages in Mach
+
+ Slight change to API and ABI of libpager is required
+
+ Mach sometimes doesn't notify!
+
+%page
+
+Pager optimization
+
+1. Mach returns page to pager without leaving it in core
+
+2. Pager becomes unlocked because of calling callback pager_write_page
+
+3. User task touches the page
+
+4. Mach requests the same page from pager
+
+5. XXX Pager supplies the page that was returned by Mach, instead of calling callback pager_read_page
+
+%page
+
+Future directions
+
+ Committing in the Hurd :-)
+ Block sizes of 1K and 2K
+ Run-time option for buffer array size (?)
+ Compile-time option for memory-mapping the whole store
+ Upgrade of UFS
+ Extended attributes (EAs) and Access control lists (ACLs)
+
+# Local Variables:
+# mgp-options: "-g 640x480"
+# End:
diff --git a/hurd/translator/fatfs.mdwn b/hurd/translator/fatfs.mdwn
index b534b97e..006fac0b 100644
--- a/hurd/translator/fatfs.mdwn
+++ b/hurd/translator/fatfs.mdwn
@@ -1,11 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-The current `fatfs` translator is read-only.
+The current `fatfs` translator is read-only, and it has a severe bug:
+[[!GNU_Savannah_bug 25961]].
diff --git a/hurd/translator/gopherfs.mdwn b/hurd/translator/gopherfs.mdwn
new file mode 100644
index 00000000..6c32430f
--- /dev/null
+++ b/hurd/translator/gopherfs.mdwn
@@ -0,0 +1,16 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+`gopherfs` is a virtual filesystem allowing you to access Gopher sites.
+
+
+# Source
+
+incubator, gopherfs/master
diff --git a/hurd/translator/libguestfs.mdwn b/hurd/translator/libguestfs.mdwn
new file mode 100644
index 00000000..649b31f5
--- /dev/null
+++ b/hurd/translator/libguestfs.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2010 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_hurd]]
+
+[libguestfs](http://libguestfs.org/) is said to be able to access a lot
+of different filesystem types -- can we use it to build GNU Hurd
+[[translator]]s? (There is a [[FUSE]] module, too.)
diff --git a/hurd/translator/magic.mdwn b/hurd/translator/magic.mdwn
index f6d0494b..84bacdfb 100644
--- a/hurd/translator/magic.mdwn
+++ b/hurd/translator/magic.mdwn
@@ -1,20 +1,21 @@
-[[meta copyright="Copyright © 2006, 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2006, 2007, 2008, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
The magic translator provides `/dev/fd`.
$ showtrans /dev/fd
/hurd/magic --directory fd
-The `/dev/fd` directory holds the open file descriptors for your current
-process. You can't see them with `ls -l /dev/fd/` but you can see them
+The `/dev/fd` directory holds the open [[unix/file_descriptor]]s for your
+current process. You can't see them with `ls -l /dev/fd/` but you can see them
individually like this:
$ ls -l /dev/fd/0
diff --git a/hurd/translator/mboxfs.mdwn b/hurd/translator/mboxfs.mdwn
index be959d0b..e357294f 100644
--- a/hurd/translator/mboxfs.mdwn
+++ b/hurd/translator/mboxfs.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
<http://www.nongnu.org/hurdextras/#mboxfs>
diff --git a/hurd/translator/netio.mdwn b/hurd/translator/netio.mdwn
new file mode 100644
index 00000000..aca9cd69
--- /dev/null
+++ b/hurd/translator/netio.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+`netio` is a translator designed for creating socket ports through the
+filesystem.
+
+
+# Source
+
+incubator, netio/master
diff --git a/hurd/translator/nsmux.mdwn b/hurd/translator/nsmux.mdwn
new file mode 100644
index 00000000..d156772b
--- /dev/null
+++ b/hurd/translator/nsmux.mdwn
@@ -0,0 +1,121 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+# nsmux
+
+`nsmux` implements the simplest use-case of namespace-based translator
+selection (see below).
+
+To use `nsmux` do the following:
+
+ $ settrans -a <node> nsmux <directory>
+
+After this operation `<node>` will be a mirror of `<directory>` with
+namespace-based translator selection functionality enabled.
+
+Please note that due to some details `nsmux` may complain a lot when
+run as a normal user. This matter is the most urgent on the TODO
+list.
+
+## Source
+
+`nsmux` translator can be obtained with the following series of
+commands:
+
+ $ git clone git://git.sv.gnu.org/hurd/incubator.git nsmux
+ $ cd nsmux/
+ $ git checkout -b nsmux origin/nsmux
+
+`filter` translator can be obtained with the following series of
+commands:
+
+ $ git clone git://git.sv.gnu.org/hurd/incubator.git filter
+ $ cd filter/
+ $ git checkout -b filter origin/filter
+
+The filter is not yet working.
+
+## Namespace-based Translator Selection
+
+Namespace-based translator selection is the special technique of using
+"magic" filenames for both accessing the file and setting translators
+on it.
+
+A "magic" filename is a filename which contains an unescaped sequence
+of two commas: ",,". This sequence can be escaped by adding another
+comma: ",,,". In the magic filename the part up to the first double
+commas is interpreted as the filename itself; the remaining segments
+into which the string is split by occurrences of ",," are treated as
+names of translators located under `/hurd/`.
+
+The simplest advantage before traditional way of setting
+translators is shown in the following examples. Compare this
+
+ $ settrans -a file translator1
+ $ settrans -a file translator2
+ $ cat file
+
+to this:
+
+ $ cat file,,translator1,,translator2
+
+One simple command versus three more lengthy ones is an obvious
+improvement. However, this advantage is not the only one and,
+probably, not even the most important.
+
+What is a good candidate for the most important advantage is that
+translators requested via "magic" filenames are session-bound. In
+other words, by running `cat file,,translator` we set a translator
+visible *only* to `cat`, while the original file remains untranslated.
+Such session-specific translators are called **dynamic** and there is
+no (theoretical) way for a client to get a port to a dynamic
+translator requested by another client.
+
+Obviously, dynamic translators can be stacked, similarly to static
+translators. Also, dynamic translator stacks may reside on top of
+static translator stacks.
+
+An important operation of namespace-based translator selection is
+*filtering*. Filtering basically consists in looking up a translator
+by name in the stack and ignoring translators located on top of it.
+Note that filtering does not mean dropping some translators: in the
+current implementation a filter is expected to be a normal dynamic
+translator, included in the dynamic translator stack similarly to
+other translators.
+
+An important detail is that filtering is not limited to dynamic
+translator stacks: a filter should be able to descend into static
+translator stacks as well.
+
+Although the concept of filtering may seem purely abstract in the
+simplest use-case of setting dynamic translators on top of files, the
+situation changes greatly when dynamic translator stacks on top of
+directories are considered. In this case, the implementation of
+namespace-based translator selection is expected to be able to
+propagate the dynamic translators associated with the directory down
+the directory structure. That is, all files located under a directory
+opened with magic syntax, are expected to be translated by the same
+set of translators. In this case having the possibility to
+specifically discard some of the translators set up on top of certain
+files is very useful.
+
+Note that the implementation of propagation of dynamic translators
+down directories is not fully conceived at the moment. The
+fundamental problem is distinguishing between situations when the
+dynamic translators are to be set on the underlying files of the
+directory or on the directory itself.
+
+## Currently Implemented
+
+Currently there a working (though not heavily tested) implementation
+of the simplest use-case of namespace-based translator selection in
+the form of translator `nsmux`. The filter is partially implemented
+and this is the immediate goal. Propagating translators down
+directories is the next objective.
diff --git a/hurd/translator/pfinet.mdwn b/hurd/translator/pfinet.mdwn
index acd7b855..f6f69ea4 100644
--- a/hurd/translator/pfinet.mdwn
+++ b/hurd/translator/pfinet.mdwn
@@ -1,11 +1,38 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2002, 2004, 2005, 2007, 2008, 2011 Free Software
+Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-Notes about [[IPv6]].
+To configure Internet connectivity, the `pfinet` (*Protocol Family Internet*)
+[[translator]] must be configured. This is done using the
+[[`settrans`|settrans]] command, for example like this:
+
+ # settrans -fgap /servers/socket/2 /hurd/pfinet ↩
+ -i eth0 -a 192.168.0.50 -g 192.168.0.1 -m 255.255.255.0
+
+The argument `/server/socket/2` is the node that the translator is to be
+attached to. This is followed by the translator program to run and any
+arguments to give it.
+
+There, `-i`, `-a`, `-g` and `-m` are, quite obviously, the (Mach) device to
+use, the IP address, the gateway and netmask.
+
+---
+
+To make DNS lookups work, you'll also have to properly configure the
+`/etc/resolv.conf` file, for example by copying it over from your GNU/Linux
+installation.
+
+---
+
+ * [[DHCP]].
+
+ * [[Implementation]].
+
+ * [[IPv6]].
diff --git a/Hurd/DhcpClient.mdwn b/hurd/translator/pfinet/dhcp.mdwn
index 442f4781..456d0c84 100644
--- a/Hurd/DhcpClient.mdwn
+++ b/hurd/translator/pfinet/dhcp.mdwn
@@ -1,4 +1,20 @@
-# <a name="DHCP_and_the_Hurd"> </a> DHCP and the Hurd
+[[!meta copyright="Copyright © 2002, 2003, 2005, 2011 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_hurd]]
+
+[[Debian GNU/Hurd|running/debian]] has some script hackery to get
+[[running/debian/DHCP]] going.
+
+---
According to the following thread, no port should be needed since all the patches that have been applied, including the one concerning the thread. In fact, the thread finishes without concluding whether the patch has been applied or not. You can grab it in the thread, anyway.
@@ -6,22 +22,12 @@ According to the following thread, no port should be needed since all the patche
The thread starts at Jan 4th 2005 until Jan 6th and is only retaken at April 14th in [this thread](http://lists.gnu.org/archive/html/bug-hurd/2005-01/msg00025.html).
--- [[Main/ThadeuCascardo]] - 29 Sep 2005
-
-No DHCP client has been ported to the Hurd yet.
-
[This](http://mail.gnu.org/archive/html/help-hurd/2003-10/msg00016.html) thread on help-hurd has a little more info on what's still needed for DHCP.
--- [[Main/GregBuchholz]] - 09 Oct 2003
-
Found this [message](http://mail.gnu.org/archive/html/bug-hurd/2003-08/msg00045.html) about DHCP capabilities in the Hurd encouraging.
--- [[Main/GregBuchholz]] - 03 Sep 2003
-
* Tom Hart began a [discussion ](http://mail.gnu.org/pipermail/help-hurd/2002-October/006643.html) of 14 posts in Oct 2002.
--- [[Main/GrantBow]] - 20 Oct 2002
-
The beginnings of a DHCP translator is available in the Hurd sources on Savannah: [hurd/trans/pump.c](http://savannah.gnu.org/cgi-bin/viewcvs/hurd/hurd/trans/pump.c?rev=1.3&content-type=text/vnd.viewcvs-markup)
Unfortunately our current TCP/IP stack, the pfinet translator, lacks support for the AF\_PACKET interface as well as sending packets with an IP address of 0.0.0.0.
@@ -38,5 +44,3 @@ Neal Walfield on bug-hurd replies:
> Anyone else know the status of getting these compiled and functional?
We need to be able to send to the DHCP server with ip address 0.0.0.0.
-
--- [[Main/JoachimNilsson]] - 12 Nov 2002
diff --git a/hurd/translator/pfinet/implementation.mdwn b/hurd/translator/pfinet/implementation.mdwn
new file mode 100644
index 00000000..50b5dfc2
--- /dev/null
+++ b/hurd/translator/pfinet/implementation.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 2000, 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]]."]]"""]]
+
+The `pfinet` server is a hacked Linux internet implementation with a glue layer
+translating between the Hurd [[RPC]]s and the middle layer of the Linux
+implementation.
diff --git a/hurd/translator/pfinet/ipv6.mdwn b/hurd/translator/pfinet/ipv6.mdwn
index 37fabcb7..5afee0c6 100644
--- a/hurd/translator/pfinet/ipv6.mdwn
+++ b/hurd/translator/pfinet/ipv6.mdwn
@@ -1,12 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
[[Stefan_Siegl|stesie]] has added IPv6 support to the pfinet [[translator]].
This was [Savannah task #5470](http://savannah.gnu.org/task/?5470).
@@ -51,10 +52,6 @@ Quite the same, but with static IPv6 address assignment:
-A 2001:4b88:10e4:0:216:3eff:feff:4223/64 -G 2001:4b88:10e4::1
-# Binaries
+# Missing Functionality
-For your convenience -- this work is not yet available in the Debian packages
--- binaries of a patched (multicast reception) GNU Mach kernel (including
-default driver set and debugging support) and a stripped pfinet translator
-(named `pfinet6` here) are being provided at
-<http://brokenpipe.de/GnuHurd/pfinet6/>
+Amongst other things, support for [[IOCTL]]s is missing.
diff --git a/hurd/translator/pflocal.mdwn b/hurd/translator/pflocal.mdwn
new file mode 100644
index 00000000..dc2434dc
--- /dev/null
+++ b/hurd/translator/pflocal.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 2000, 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]]."]]"""]]
+
+The implementation of the `pflocal` server is in the `pflocal` directory, and
+uses [[`libpipe`|libpipe]] (shared code with the [[named_pipe|fifo]]
+implementation).
diff --git a/hurd/translator/procfs.mdwn b/hurd/translator/procfs.mdwn
index eb07a8f6..70448e94 100644
--- a/hurd/translator/procfs.mdwn
+++ b/hurd/translator/procfs.mdwn
@@ -1,19 +1,35 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2009, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+Although there is no standard (POSIX or other) for the layout of the `/proc`
+pseudo-filesystem, it turned out a very useful facility in GNU/Linux and other
+systems, and many tools concerned with process management use it. (`ps`, `top`,
+`htop`, `gtop`, `killall`, `pkill`, ...)
+
+Instead of porting all these tools to use [[libps]] (Hurd's official method for
+accessing process information), they could be made to run out of the box, by
+implementing a Linux-compatible `/proc` filesystem for the Hurd.
+
+The goal is to implement all `/proc` functionality needed for the various process
+management tools to work. (On Linux, the `/proc` filesystem is used also for
+debugging purposes; but this is highly system-specific anyways, so there is
+probably no point in trying to duplicate this functionality as well...)
+
+*Status*: Madhusudan.C.S has implemented a new, fully functional [[procfs|madhusudancs]] for
+[[GSoC 2008|community/gsoc/2008]].
-<http://www.nongnu.org/hurdextras/#procfs>
- * [[`ps`|procps]]
- * [[`top`|top]]
- * [[`htop`|htop]]
- * `gtop`
- * [[`killall`|killall]]
- * `pkill`
- * ...
+# [[New Implementation by Jérémie Koenig|jkoenig]]
+
+
+# Old Implementation from [[open_issues/HurdExtras]]
+
+<http://www.nongnu.org/hurdextras/#procfs>
diff --git a/hurd/translator/procfs/htop.mdwn b/hurd/translator/procfs/htop.mdwn
deleted file mode 100644
index 5228c702..00000000
--- a/hurd/translator/procfs/htop.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-[[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]]."]]"""]]
-
- open("/proc/stat", O_RDONLY) = 3
- open("/proc/meminfo", O_RDONLY) = 3
- open("/proc/stat", O_RDONLY) = 3
- open("/proc", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 3
- open("/proc/1/task", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 4
- open("/proc/1/status", O_RDONLY) = 4
- open("/proc/1/statm", O_RDONLY) = 4
- open("/proc/1/stat", O_RDONLY) = 4
- open("/proc/1/cmdline", O_RDONLY) = 4
- open("/proc/2/task", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 4
- open("/proc/2/status", O_RDONLY) = 4
- open("/proc/2/statm", O_RDONLY) = 4
- open("/proc/2/stat", O_RDONLY) = 4
- open("/proc/2/cmdline", O_RDONLY) = 4
- [...]
diff --git a/hurd/translator/procfs/jkoenig.mdwn b/hurd/translator/procfs/jkoenig.mdwn
new file mode 100644
index 00000000..9543b658
--- /dev/null
+++ b/hurd/translator/procfs/jkoenig.mdwn
@@ -0,0 +1,23 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+In August 2010, Jérémie Koenig [published another, new
+version](http://lists.gnu.org/archive/html/bug-hurd/2010-08/msg00165.html).
+This can be found in <http://git.savannah.gnu.org/cgit/hurd/procfs.git/>,
+branch *jkoenig/master*.
+
+Testing it is as simple as this:
+
+ $ git clone git://git.savannah.gnu.org/hurd/procfs.git
+ $ cd procfs/
+ $ git checkout jkoenig/master
+ $ make
+ $ settrans -ca proc procfs --compatible
+ $ ls -l proc/
diff --git a/hurd/translator/procfs/jkoenig/discussion.mdwn b/hurd/translator/procfs/jkoenig/discussion.mdwn
new file mode 100644
index 00000000..135b4a88
--- /dev/null
+++ b/hurd/translator/procfs/jkoenig/discussion.mdwn
@@ -0,0 +1,215 @@
+[[!meta copyright="Copyright © 2010, 2011 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_hurd]]
+
+[[!toc]]
+
+
+# Miscellaneous
+
+IRC, #hurd, around September 2010
+
+ <youpi> jkoenig: from a quick read, your procfs implementation seems quite
+ simple, probably much more what I was expecting from Madhusudan (who
+ probably now hates you :) )
+ <youpi> jkoenig: is it not possible to provide a /proc/self which points at
+ the client's pid?
+ <pinotree> (also, shouldn't /proc/version say something else than "Linux"?)
+ <youpi> to make linux tools work, no :/
+ <youpi> kfreebsd does that too
+ <pinotree> really?
+ <youpi> yes
+ <youpi> (kfreebsd, not freebsd)
+ <pinotree> does kbsd's one print just "Linux version x.y.z" too, or
+ something more eg in a second line?
+ <pinotree> (as curiosity)
+ <youpi> % cat /proc/version
+ <youpi> Linux version 2.6.16 (des@freebsd.org) (gcc version 4.3.5) #4 Sun
+ Dec 18 04:30:00 CET 1977
+ <pinotree> k
+ <giselher> I had some problems with killall5 to read the pid from /proc, Is
+ this now more reliable?
+ <youpi> I haven't tested with jkoenig's implementation
+ [...]
+ <pinotree> looks like he did 'self' too, see rootdir_entries[] in rootdir.c
+ <youpi> but it doesn't point at self
+ <antrik> youpi: there is no way to provide /proc/self, because the server
+ doesn't know the identity of the client
+ <youpi> :/
+ <antrik> youpi: using the existing mechanisms, we would need another magic
+ lookup type
+ <antrik> an alternative idea I discussed with cfhammer once would be for
+ the client to voluntarily provide it's identity to the server... but that
+ would be a rather fundamental change that requires careful consideration
+ <antrik> also, object migration could be used, so the implementation would
+ be provided by the server, but the execution would happen in the
+ client... but that's even more involved :-)
+ <youpi> but we've seen how much that'd help with a lot of other stuff
+ <antrik> I'm not sure whether we discussed this on the ML at some point, or
+ only on IRC
+ <youpi> it "just" needs to be commited :)
+ <antrik> in either case, it can't hurt to bring this up again :-)
+
+
+# root group
+
+IRC, #hurd, around October 2010
+
+ <pinotree> the only glitch is that files/dirs have the right user as
+ owner, but always with root group
+
+
+# `/proc/$pid/stat` being 400 and not 444, and some more
+
+IRC, freenode, #hurd, 2011-03-27
+
+ <pochu> is there a reason for /proc/$pid/stat to be 400 and not 444 like on
+ Linux?
+ <pochu> there is an option to procfs to make it 444 like Linux
+ <pochu> jkoenig: ^
+ <jkoenig> pochu, hi
+ <jkoenig> /proc/$pid/stat reveals information which is not usually
+ available on Hurd
+ <jkoenig> so I made it 400 by default to avoid leaking anything
+ <pochu> is there a security risk in providing that info?
+ <jkoenig> probably not so much, but it seemed like it's not really a
+ descision procfs should make
+ <jkoenig> I'm not sure which information we're speaking about, though, I
+ just remember the abstract reason.
+ <pochu> things like the pid, the memory, the priority, the state...
+ <pochu> sounds safe to expose
+ <jkoenig> also it's 0444 by default in "compatible" mode
+ <jkoenig> (which is necessary for the linux tools to work well)
+ <pochu> yeah I saw that :)
+ <pochu> my question is, should we change it to 0444 by default? if there
+ are no security risks and this improves compatibility, sounds like a good
+ thing to me
+ <pochu> we're already 'leaking' part of that info through e.g. ps
+ <jkoenig> I think /proc should be translated by /hurd/procfs --compatible
+ by default (I'm not sure whether it's already the case)
+ <jkoenig> also I'm not sure why hurd-ps is setuid root, rather than the
+ proc server being less paranoid, but maybe I'm missing something.
+ <pochu> jkoenig: it's not, at least not on Debian
+ <pochu> youpi: hi, what do you think about starting procfs with
+ --compatible by default?
+ <pochu> youpi: or changing /proc/$pid/stat to 0444 like on Linux
+ (--compatible does that among a few other things)
+ <youpi> I guess you need it for something?
+ <pochu> I'm porting libgtop :)
+ <youpi> k
+ <pochu> though I still think we should do this in procfs itself
+ <youpi> ymmv
+ <jkoenig> pochu, youpi, --compatible is also needed because mach's high
+ reported sysconf(_SC_CLK_TCK) makes some integers overflow (IIRC)
+ <youpi> agreed
+ <jkoenig> luckily, tools which use procfs usually try to detect the value
+ /proc uses rather than rely on CLK_TCK
+ <jkoenig> (so we can choose whatever reasonable value we want)
+
+IRC, freenode, #hurd, 2011-03-28
+
+ <antrik> jkoenig: does procfs expose any information that is not available
+ to everyone through the proc server?...
+ <antrik> also, why is --compatible not the default; or rather, why is there
+ even another mode? the whole point of procfs is compatibility...
+ <jkoenig> antrik, yes, through the <pid>/environ and (as mentionned above)
+ <pid>/stat files, but I've been careful to make these files readable only
+ to the process owner
+ <jkoenig> --compatible is not the default because it relaxes this paranoia
+ wrt. the stat file, and does not conform to the specification with regard
+ to clock tick counters
+ <antrik> what specification?
+ <jkoenig> the linux proc(5) manpage
+ <jkoenig> which says clock tick counters are in units of
+ 1/sysconf(_SC_CLK_TCK)
+ <antrik> so you are saying that there is some information that the Hurd
+ proc server doesn't expose to unprivileged processes, but linux /proc
+ does?
+ <jkoenig> yes
+ <antrik> that's odd. I wonder what the reasoning behind that could be
+ <antrik> but this information is available through Hurd ps?
+ <antrik> BTW, what exactly is _SC_CLK_TCK supposed to be?
+ <pinotree> jkoenig: hm, just tried with two random processes on linux
+ (2.6.32), and enrivon is 400
+ <pinotree> (which makes sense, as you could have sensible informations eg
+ in http_proxy or other envvars)
+ <jkoenig> antrik, CLK_TCK is similar to HZ (maybe clock resolution instead
+ of time slices ?)
+ <jkoenig> sysconf(3) says "The number of clock ticks per second."
+ <jkoenig> antrik, I don't remember precisely what information this was, but
+ ps-hurd is setuid root.
+ <jkoenig> anyway, if you run procfs --compatible as a user and try to read
+ foo/1/stat, the result is an I/O error, which is the result of the proc
+ server denying access.
+ <antrik> but Linux /proc acutally uses HZ as the unit IIRC? or is
+ _SC_CLK_TCK=HZ on Linux?...
+ <jkoenig> I expect they're equal.
+ <jkoenig> in practice procps uses heuristics to guess what value /proc uses
+ (for compatibility purposes with older kernels)
+ <jkoenig> I don't think HZ is POSIX, while _SC_CLK_TCK is specifies as the
+ unit for (at least) the values returned by times()
+ <jkoenig> s/specifies/specified/
+ <jkoenig> antrik, some the information is fetched directly from mach by
+ libps, and understandably, the proc server does not give the task port to
+ anyone who asks.
+ <antrik> well, as long as the information is exposed through ps, there is
+ no point in hiding it in procfs...
+ <antrik> and I'm aware of the crazy guessing in libproc... I was actually
+ mentoring the previous procfs implementation
+ <antrik> (though I never got around to look at his buggy code...)
+ <jkoenig> ok
+
+IRC, freenode, #hurd, 2011-07-22
+
+ <pinotree> hm, why /proc/$pid/stat is 600 instead of 644 of linux?
+ <jkoenig> pinotree, it reveals information which, while not that sensitive,
+ would not be available to users through the normal proc interface.
+ <jkoenig> (it's available through the ps command which is setuid root)
+ <jkoenig> we discussed at some point making it 644, IIRC.
+ <pinotree> hm, then why is it not a problem on eg linux?
+ <jkoenig> (btw you can change it with the -s option.)
+ <jkoenig> pinotree, it's not a problem because the information is not that
+ sensitive, but when rewriting procfs I preferred to play it self and
+ consider it's not procfs' job to decide what is sensitive or not.
+ <jkoenig> IIRC it's not sensitive but you need the task port to query it.
+ <jkoenig> like, thread times or something.
+ <pinotree> status is 644 though
+ <jkoenig> but status contains information which anyone can ask to the proc
+ server anyway, I think.
+
+
+# `/proc/mounts`, `/proc/$pid/mounts`
+
+IRC, freenode, #hurd, 2011-07-25
+
+ < pinotree> jkoenig: btw, what do you think about providing empty
+ /proc/mounts and /proc/$pid/mounts files?
+ < jkoenig> pinotree, I guess one would have to evaluate the consequences
+ wrt. existing use cases (in other words, "I have absolutely no clue
+ whatsoever about whether that would be desirable" :-)
+ < jkoenig> pinotree, the thing is, an error message like "/proc/mounts: No
+ such file or directory" is rather explicit, whereas errors which would be
+ caused by missing data in /proc/mounts would maybe be harder to track
+ < braunr> this seems reasonable though
+ < braunr> there already are many servers with e.g. grsecurity or chrooted
+ environments where mounts is empty
+ < pinotree> well, currently we also have an empty mtab
+ < braunr> pinotree: but what do you need that for ?
+ < braunr> pinotree: the init system ?
+ < pinotree> and the mnt C api already returns no entries (or it bails out,
+ i don't remember)
+ < pinotree> not a strict need
+
+
+# `/proc/[PID]/auxv`, `/proc/[PID]/exe`, `/proc/[PID]/mem`
+
+Needed by glibc's `pldd` tool (commit
+11988f8f9656042c3dfd9002ac85dff33173b9bd).
diff --git a/hurd/translator/procfs/killall.mdwn b/hurd/translator/procfs/killall.mdwn
deleted file mode 100644
index 99790a36..00000000
--- a/hurd/translator/procfs/killall.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-[[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]]."]]"""]]
-
- open("/proc/stat", O_RDONLY) = 3
- open("/proc/self/stat", O_RDONLY) = 3
- open("/proc/uptime", O_RDONLY) = 3
- open("/proc/sys/kernel/pid_max", O_RDONLY) = 4
- open("/proc/meminfo", O_RDONLY) = 4
- open("/proc", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 5
- open("/proc/1/stat", O_RDONLY) = 6
- open("/proc/1/status", O_RDONLY) = 6
- open("/proc/1/cmdline", O_RDONLY) = 6
- open("/proc/2/stat", O_RDONLY) = 6
- open("/proc/2/status", O_RDONLY) = 6
- open("/proc/2/cmdline", O_RDONLY) = 6
- [...]
diff --git a/hurd/translator/procfs/procps.mdwn b/hurd/translator/procfs/procps.mdwn
deleted file mode 100644
index 99790a36..00000000
--- a/hurd/translator/procfs/procps.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-[[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]]."]]"""]]
-
- open("/proc/stat", O_RDONLY) = 3
- open("/proc/self/stat", O_RDONLY) = 3
- open("/proc/uptime", O_RDONLY) = 3
- open("/proc/sys/kernel/pid_max", O_RDONLY) = 4
- open("/proc/meminfo", O_RDONLY) = 4
- open("/proc", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 5
- open("/proc/1/stat", O_RDONLY) = 6
- open("/proc/1/status", O_RDONLY) = 6
- open("/proc/1/cmdline", O_RDONLY) = 6
- open("/proc/2/stat", O_RDONLY) = 6
- open("/proc/2/status", O_RDONLY) = 6
- open("/proc/2/cmdline", O_RDONLY) = 6
- [...]
diff --git a/hurd/translator/procfs/top.mdwn b/hurd/translator/procfs/top.mdwn
deleted file mode 100644
index f0030d61..00000000
--- a/hurd/translator/procfs/top.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-[[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]]."]]"""]]
-
- open("/proc/stat", O_RDONLY) = 3
- open("/proc/sys/kernel/pid_max", O_RDONLY) = 3
- open("/proc", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 3
- open("/proc/1/stat", O_RDONLY) = 4
- open("/proc/1/statm", O_RDONLY) = 4
- open("/proc/2/stat", O_RDONLY) = 4
- open("/proc/2/statm", O_RDONLY) = 4
- [...]
diff --git a/hurd/translator/short-circuiting.mdwn b/hurd/translator/short-circuiting.mdwn
new file mode 100644
index 00000000..9de9f7b8
--- /dev/null
+++ b/hurd/translator/short-circuiting.mdwn
@@ -0,0 +1,88 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+In traditional [[Unix]], file systems contain special files. These are:
+symbolic links, character devices, block devices, named pipes, and
+named sockets. Naturally the Hurd also support these.
+
+However, if you take a look at `hurd/io.defs` and `hurd/fs.defs`, you'll
+find that there are no [[RPC]]s that deal specifically with these types.
+Sure, you can get the type of the file through `io_stat` (among other
+things), but there are none that e.g. lets you create a symbolic link.
+
+If you take a look at how [[glibc]] implements `symlink`, you'll notice
+that all it does is create a new file and set its passive translator to
+`/hurd/symlink DEST`. You can verify this yourself by creating a symlink
+with `ln -s foo bar` and print its passive translator setting with `showtrans
+bar`.
+
+This is how the other special files are implemented as well. The header
+`hurd/paths.h` contains a list of paths that are used to implement
+special files:
+
+ * `/hurd/symlink`
+ * `/hurd/chrdev`
+ * `/hurd/blkdev`
+ * `/hurd/fifo`
+ * `/hurd/ifsock`
+
+So all special files are implemented through special-purpose translators,
+right? Not quite, instead the translators of this list are often
+implemented in their underlying filesystem through *translator
+short-circuiting*. In fact, `chrdev` and `blkdev` aren't even implemented
+as translators at all.
+
+Translator short-circuiting is when a file system server implements the
+functionality of a passive translator itself, instead of actually starting
+it. For instance, all the [[`symlink`|symlink]] translator does is return
+a `FS_RETRY_*` reply to the caller. So instead of starting it, the file
+system server can simply continue the file name look-up internally by
+appending the target of the symbolic link to the path being looked-up.
+
+This way, we can skip starting the `symlink` translator, skip retrying
+the look-up on the newly started translator, and we might also skip a
+retry to the same file system server again, if the target of the symbolic
+link is in it.
+
+In fact, the list's translators that actually are implemented (`symlink`,
+`fifo`, `ifsock`) are only used as a default implementation if the underlying
+file system's translator does not implement the functionality itself, i.e., if
+it doesn't short-circuit it.
+
+To make sure that you use one of these translators, there by bypassing the
+short-circuiting mechanism, you can either start it as
+an active translator, or use a different path from the one in
+`hurd/path.h`, e.g. `settrans bar /hurd/./symlink foo`.
+
+The best example of how short-circuiting is implemented can be found
+in [[`libdiskfs`|libdiskfs]]. Notice how it detects if a translator to store
+is a special file in `diskfs_S_file_set_translator` and instead
+of storing a real passive translator setting on the disk, stores it as a
+symlink node (using `diskfs_create_symlink_hook` or a generic implementation).
+
+In later look-ups to the node, it checks the node's `stat` structure in
+`diskfs_S_file_get_translator`, or
+`diskfs_S_dir_lookup` and handles special file types appropriately.
+
+Doing this translator short-circuiting has disadvantages: code duplication, or
+in general adding code complexity that isn't needed for implementing the same
+functionality, but it also has advantages: using functionality that the file
+system's data structures nevertheless already provide -- storing symbolic links
+in `ext2fs`' inodes instead of storing passive translator settings -- and thus
+staying compatible with other operating systems mounting that file system.
+
+Also, this short-circuiting does preserve system resources, as it's no longer
+required to start a `symlink` translator for resolving each symbolic link, as
+well as it does reduce the [[RPC]] overhead.
+
+It can also confuse users who expect the passive translator to start.
+For instance, if a user notices that [[`symlink`|symlink]]'s code is
+lacking some functionality, but that it unexpectedly works when the user
+tries to run it.
diff --git a/hurd/translator/storeio.mdwn b/hurd/translator/storeio.mdwn
index 49d70e1b..8e26a959 100644
--- a/hurd/translator/storeio.mdwn
+++ b/hurd/translator/storeio.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
`storeio` is a *translator for devices and other stores*.
@@ -27,4 +27,4 @@ You can even `ungzip` files on the fly (`bunzip2` is available as well):
You can use the *typed store*, to create filter chains (of course this example
is kind of useless since you could use the `gunzip` store directly):
- settrans -ca node /hurd/storeio -T type gunzip:file:foo.gz
+ settrans -ca node /hurd/storeio -T typed gunzip:file:foo.gz
diff --git a/hurd/translator/stowfs.mdwn b/hurd/translator/stowfs.mdwn
index 022e3d5e..9c88f1a3 100644
--- a/hurd/translator/stowfs.mdwn
+++ b/hurd/translator/stowfs.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta redir=unionfs#stowfs]]
+[[!meta redir=unionfs#stowfs]]
diff --git a/hurd/translator/tarfs.mdwn b/hurd/translator/tarfs.mdwn
new file mode 100644
index 00000000..e25e3255
--- /dev/null
+++ b/hurd/translator/tarfs.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+`tarfs` is a translator aimed at providing access to tar files through the
+filesystem. This way you don't have to extract files from the archive to
+access them. It supports compressed archives (bzip2 and gzip) through
+[[libstore]].
+
+
+# Status
+
+Works fine on most cases, occasional corruptions when writing using bzip2/gzip
+stores.
+
+
+# Source
+
+incubator, tarfs/master
diff --git a/hurd/translator/tmpfs.mdwn b/hurd/translator/tmpfs.mdwn
index 6d10c163..626fad86 100644
--- a/hurd/translator/tmpfs.mdwn
+++ b/hurd/translator/tmpfs.mdwn
@@ -1,22 +1,24 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009, 2011 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
`tmpfs` is a file system server for temporary data storage without using a real
(permanent) [[backing_store]].
It is based on [[libdiskfs]].
-It's not working correctly at the moment.
+Even though there are other possibilities of creating a
+[[libstore/examples/ramdisk]] and running a regular, for example, [[`ext2` file
+system|ext2fs]] on it, having a real `tmpfs` is better, as it need not deal
+with the additional block-level indirection layer that `ext2` (or any other
+disk-based file system) imposes.
-[[inline
-pages="hurd/translator/tmpfs/*"
-show=0
-actions=yes
-rootpage="hurd/translator/tmpfs" postformtext="Add a new item titled:"]]
+However, `tmpfs` is not working correctly at the moment, see the [[discussion]]
+sub-pages. There is a [[!FF_project 271]][[!tag bounty]] on this task.
diff --git a/hurd/translator/tmpfs/discussion.mdwn b/hurd/translator/tmpfs/discussion.mdwn
new file mode 100644
index 00000000..d7a08491
--- /dev/null
+++ b/hurd/translator/tmpfs/discussion.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2011 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_hurd]]
+
+ * [[notes_bing]]
+
+ * [[notes_various]]
+
+ * [[tmpfs_vs_defpager]]
diff --git a/hurd/translator/tmpfs/notes_bing.mdwn b/hurd/translator/tmpfs/notes_bing.mdwn
index 2392bd61..fa3eeac2 100644
--- a/hurd/translator/tmpfs/notes_bing.mdwn
+++ b/hurd/translator/tmpfs/notes_bing.mdwn
@@ -1,12 +1,15 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+[[!tag open_issue_hurd]]
1. to run tmpfs as a regular user, /servers/default-pager must be executable by
that user. by default it seems to be set to read/write.
diff --git a/hurd/translator/tmpfs/notes_various.mdwn b/hurd/translator/tmpfs/notes_various.mdwn
index 90636b61..5e4e991c 100644
--- a/hurd/translator/tmpfs/notes_various.mdwn
+++ b/hurd/translator/tmpfs/notes_various.mdwn
@@ -1,13 +1,15 @@
-[[meta copyright="Copyright © 2005, 2006, 2007, 2008
- Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2005, 2006, 2007, 2008, 2009 Free Software
+Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+[[!tag open_issue_hurd]]
<antrik> hde: what's the status on tmpfs?
<hde> Broke
@@ -210,3 +212,7 @@ is included in the section entitled
<antrik> seems something more broke in the meantime :-(
<antrik> ah, right... but I the main problem was some other change
<antrik> (or maybe it never really worked, not sure anymore)
+
+---
+
+[[!GNU_Savannah_bug 26751]]
diff --git a/hurd/translator/tmpfs/tmpfs_vs_defpager.mdwn b/hurd/translator/tmpfs/tmpfs_vs_defpager.mdwn
new file mode 100644
index 00000000..ecebe662
--- /dev/null
+++ b/hurd/translator/tmpfs/tmpfs_vs_defpager.mdwn
@@ -0,0 +1,233 @@
+[[!meta copyright="Copyright © 2010, 2011 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_gnumach open_issue_hurd]]
+
+
+# IRC, freenode, #hurd, 2010
+
+ <slpz> humm... why does tmpfs try to use the default pager? that's a bad
+ idea, and probably will never work correctly...
+ * slpz is thinking about old issues
+ <slpz> tmpfs should create its own pagers, just like ext2fs, storeio...
+ <slpz> slopez@slp-hurd:~$ settrans -a tmp /hurd/tmpfs 10M
+ <slpz> slopez@slp-hurd:~$ echo "foo" > tmp/bar
+ <slpz> slopez@slp-hurd:~$ cat tmp/bar
+ <slpz> foo
+ <slpz> slopez@slp-hurd:~$
+ <slpz> :-)
+ <pochu> slpz: woo you fixed it?
+ <slpz> pochu: well, it's WIP, but reading/writing works...
+ <slpz> I've replaced the use of default pager for the standard pager
+ creation mechanism
+ <antrik> slpz: err... how is it supposed to use swap space if not using the
+ default pager?
+ <antrik> slpz: or do you mean that it should act as a proxy, just
+ allocating anonymous memory (backed by the default pager) itself?
+ <youpi> antrik: the kernel uses the default pager if the application pager
+ isn't responsive enough
+ <slpz> antrik: it will just create memory objects and provide zerofilled
+ pages when requested by the kernel (after a page fault)
+ <antrik> youpi: that makes sense I guess... but how is that relevant to the
+ question at hand?...
+ <slpz> antrik: memory objects will contain the data by themselves
+ <slpz> antrik: as youpi said, when memory is scarce, GNU Mach will start
+ paging out data from memory objects to the default pager
+ <slpz> antrik: that's the way in which pages will get into swap space
+ <slpz> (if needed)
+ <youpi> the thing being that the tmpfs pager has a chance to select pages
+ he doesn't care any more about
+ <antrik> slpz: well, the point is that instead of writing the pages to a
+ backing store, tmpfs will just keep them in anonymous memory, and let the
+ default pager write them out when there is pressure, right?
+ <antrik> youpi: no idea what you are talking about. apparently I still
+ don't really understand this stuff :-(
+ <youpi> ah, but tmpfs doesn't have pages he doesn't care about, does it?
+ <slpz> antrik: yes, but the term "anonymous memory" could be a bit
+ confusing.
+ <slpz> antrik: in GNU Mach, anonymous memory is backed by a memory object
+ without a pager. In tmpfs, nodes will be allocated in memory objects, and
+ the pager for those memory objects will be tmpfs itself
+ <antrik> slpz: hm... I thought anynymous memory is backed by memory objects
+ created from the default pager?
+ <antrik> yes, I understand that tmpfs is supposed to be the pager for the
+ objects it provides. they are obviously not anonymoust -- they have
+ inodes in the tmpfs name space
+ <antrik> but my understanding so far was that when Mach returns pages to
+ the pager, they end up in anonymous memory allocated to the pager
+ process; and then this pager is responsible for writing them back to the
+ actual backing store
+ <antrik> am I totally off there?...
+ <antrik> (i.e. in my understanding the returned pages do not reside in the
+ actual memory object the pager provides, but in an anonymous memory
+ object)
+ <slpz> antrik: you're right. The trick here is, when does Mach return the
+ pages?
+ <slpz> antrik: if we set the attribute "can_persist" in a memory object,
+ Mach will keep it until object cache is full or memory is scarce
+ <slpz> or we change the attributes so it can no longer persist, of course
+ <slpz> without a backing store, if Mach starts sending us pages to be
+ written, we're in trouble
+ <slpz> so we must do something about it. One option, could be creating
+ another pager and copying the contents between objects.
+ <antrik> another pager? not sure what you mean
+ <antrik> BTW, you didn't really say why we can't use the default pager for
+ tmpfs objects :-)
+ <slpz> well, there're two problems when using the default pager as backing
+ store for translators
+ <slpz> 1) Mach relies on it to do swapping tasks, so meddling with it is
+ not a good idea
+ <slpz> 2) There're problems with seqnos when trying to work with the
+ default pager from tasks other the kernel itself
+ <slpz> (probably, the latter could be fixed)
+ <slpz> antrik: pager's terminology is a bit confusing. One can also say
+ creating another memory object (though the function in libpager is
+ "pager_create")
+ <antrik> not sure why "meddling" with it would be a problem...
+ <antrik> and yeah, I was vaguely aware that there is some seqno problem
+ with tmpfs... though so far I didn't really understand what it was about
+ :-)
+ <antrik> makes sense now
+ <antrik> anyways, AIUI now you are trying to come up with a mechanism where
+ the default pager is not used for tmpfs objects directly, but without
+ making it inefficient?
+ <antrik> slpz: still don't understand what you mean by creating another
+ memory object/pager...
+ <antrik> (and yeat, the terminology is pretty mixed up even in Mach itself)
+ <slpz> antrik: I meant creating another pager, in terms of calling again to
+ libpager's pager_create
+ <antrik> slpz: well, I understand what "create another pager" means... I
+ just don't understand what this other pager would be, when you would
+ create it, and what for...
+ <slpz> antrik: oh, ok, sorry
+ <slpz> antrik: creating another pager it's just a trick to avoid losing
+ information when Mach's objects cache is full, and it decides to purge
+ one of our objects
+ <slpz> anyway, IMHO object caching mechanism is obsolete and should be
+ replaced
+ <slpz> I'm writting a comment to bug #28730 which says something about this
+ <slpz> antrik: just one more thing :-)
+ <slpz> if you look at the code, for most time of their lives, anonymous
+ memory objects don't have a pager
+ <slpz> not even the default one
+ <slpz> only the pageout thread, when the system is running really low on
+ memory, gives them a reference to the default pager by calling
+ vm_object_pager_create
+ <slpz> this is not really important, but worth noting ;-)
+
+
+# IRC, freenode, #hurd, 2011-09-28
+
+ <slpz> mcsim: "Fix tmpfs" task should be called "Fix default pager" :-)
+ <slpz> mcsim: I've been thinking about modifying tmpfs to actually have
+ it's own storeio based backend, even if a tmpfs with storage sounds a bit
+ stupid.
+ <slpz> mcsim: but I don't like the idea of having translators messing up
+ with the default pager...
+ <antrik> slpz: messing up?...
+ <slpz> antrik: in the sense of creating a number of arbitrarily sized
+ objects
+ <antrik> slpz: well, it doesn't really matter much whether a process
+ indirectly eats up arbitrary amounts of swap through tmpfs, or directly
+ through vm_allocate()...
+ <antrik> though admittedly it's harder to implement resource limits with
+ tmpfs
+ <slpz> antrik: but I've talked about having its own storeio device as
+ backend. This way Mach can pageout memory to tmpfs if it's needed.
+ <mcsim> Do I understand correctly that the goal of tmpfs task is to create
+ tmpfs in RAM?
+ <slpz> mcsim: It is. But it also needs some kind of backend, just in case
+ it's ordered to page out data to free some system's memory.
+ <slpz> mcsim: Nowadays, this backend is another translator that acts as
+ default pager for the whole system
+ <antrik> slpz: pageout memory to tmpfs? not sure what you mean
+ <slpz> antrik: I mean tmpfs acting as its own pager
+ <antrik> slpz: you mean tmpfs not using the swap partition, but some other
+ backing store?
+ <slpz> antrik: Yes.
+
+See also: [[open_issues/resource_management_problems/pagers]].
+
+ <antrik> slpz: I don't think an extra backing store for tmpfs is a good
+ idea. the whole point of tmpfs is not having a backing store... TBH, I'd
+ even like to see a single backing store for anonymous memory and named
+ files
+ <slpz> antrik: But you need a backing store, even if it's the default pager
+ :-)
+ <slpz> antrik: The question is, Should users share the same backing store
+ (swap space) or provide their own?
+ <antrik> slpz: not sure what you mean by "users" in this context :-)
+ <slpz> antrik: Real users with the ability of setting tmpfs translators
+ <antrik> essentially, I'd like to have a single partition that contains
+ both swap space and the main filesystem (at least /tmp, but probably also
+ all of /run, and possibly even /home...)
+ <antrik> but that's a bit off-topic :-)
+ <antrik> well, ideally all storage should be accounted to a user,
+ regardless whether it's swapped out anonymous storage, temporary named
+ files, or permanent files
+ <slpz> antrik: you could use a file as backend for tmpfs
+ <antrik> slpz: what's the point of using tmpfs then? :-)
+ <pinotree> (and then store the file in another tmpfs)
+ <slpz> antrik: mach-defpager could be modified to use storeio instead of
+ Mach's device_* operations, but by the way things work right now, that
+ could be dangerous, IMHO
+ <antrik> pinotree: hehe
+ <pinotree> .. recursive tmpfs'es ;)
+ <antrik> slpz: hm, sounds interesting
+ <slpz> antrik: tmpfs would try to keep data in memory always it's possible
+ (not calling m_o_lock_request would do the trick), but if memory is
+ scarce an Mach starts paging out, it would write it to that
+ file/device/whatever
+ <antrik> ideally, all storage used by system tasks for swapped out
+ anonymous memory as well as temporary named files would end up on the
+ /run partition; while all storage used by users would end up in /home/*
+ <antrik> if users share a partition, some explicit storage accounting would
+ be useful too...
+ <antrik> slpz: is that any different from what "normal" filesystems do?...
+ <antrik> (and *should* it be different?...)
+ <slpz> antrik: Yes, as most FS try to synchronize to disk at a reasonable
+ rate, to prevent data losses.
+ <slpz> antrik: tmpfs would be a FS that wouldn't synchronize until it's
+ forced to do that (which, by the way, it's what's currently happening
+ with everyone that uses the default pager).
+ <antrik> slpz: hm, good point...
+ <slpz> antrik: Also, metadata in never written to disk, only kept in memory
+ (which saves a lot of I/O, too).
+ <slpz> antrik: In fact, we would be doing the same as every other kernel
+ does, but doing it explicitly :-)
+ <antrik> I see the use in separating precious data (in permanent named
+ files) from temporary state (anonymous memory and temporary named files)
+ -- but I'm not sure whether having a completely separate FS for the
+ temporary data is the right approach for that...
+ <slpz> antrik: And giving the user the option to specify its own storage,
+ so we don't limit him to the size established for swap by the super-user.
+ <antrik> either way, that would be a rather radical change... still would
+ be good to fix tmpfs as it is first if possible
+ <antrik> as for limited swap, that's precisely why I'd prefer not to have
+ an extra swap partition at all...
+ <slpz> antrik: It's not much o fa change, it's how it works right now, with
+ the exception of replacing the default pager with its own.
+ <slpz> antrik: I think it's just a matter of 10-20 hours, as
+ much. Including testing.
+ <slpz> antrik: It could be forked with another name, though :-)
+ <antrik> slpz: I don't mean radical change in the implementation... but a
+ radical change in the way it would be used
+ <slpz> antrik: I suggest "almosttmpfs" as the name for the forked one :-P
+ <antrik> hehe
+ <antrik> how about lazyfs?
+ <slpz> antrik: That sound good to me, but probably we should use a more
+ descriptive name :-)
+
+
+## 2011-09-29
+
+ <tschwinge> slpz, antrik: There is a defpager in the Hurd code. It is not
+ currently being used, and likely incomplete. It is backed by libstore.
+ I have never looked at it.
diff --git a/hurd/translator/unionfs.mdwn b/hurd/translator/unionfs.mdwn
index 7eee5245..2b692cf9 100644
--- a/hurd/translator/unionfs.mdwn
+++ b/hurd/translator/unionfs.mdwn
@@ -1,17 +1,160 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2009, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-<http://www.nongnu.org/hurdextras/#unionfs>
+# `unionfs`
+*Unionfs allows you to simply union one directory or translator into another one, so you see the files of both of them side by side.*
+
+Source repository: <http://git.savannah.gnu.org/cgit/hurd/unionfs.git/>
+
+Right now there are some problems with syncing, so please be aware
+that it might not work as expected.
+
+<a name="unionmount"></a>
+# `unionmount`
+
+... is a special mode of `unionfs`.
+
+## Project Idea
+
+When setting a translator on Hurd -- similar to mounting a file system on UNIX
+-- the new node(s) exported by the translator are obscuring the original node
+where the translator is set, and any nodes below it in the directory tree. The
+translator itself can access the underlying node (which is a very nice feature,
+as it allows translators presenting the contents of the node in a different
+format); but it's no longer accessible from the "outside".
+
+Plan9 has a feature where a file system can be mounted in union mode: the new
+file system doesn't obscure the mount point in this case, but instead the
+contents are combined. (This feature has also been under discussion in Linux
+for a couple of years now, under the label "VFS-based union mounts".)
+
+This kind of union mounts is generally useful, as it's sometimes more
+convenient than unioning existing filesystem locations with unionfs -- it's not
+necessary to mount a file system that is to be unioned at some external
+location first: just union-mount it directly at the target location.
+
+But union mounts also allow creating passive translator hierarchies: If there
+is a passive translator on a parent node, and further passive translators on
+child nodes, the union mount allows the child nodes with the further translator
+settings still to be visible after the parent translator has started.
+
+This could be useful for device nodes for example: let's say we have an
+ethernet multiplexer at /dev/veth. Now the virtual subnodes could all be
+directly under /dev, i.e. /dev/veth0, /dev/veth1 etc., and explicitely refer to
+the main /dev/veth node in the translator command line. It would be more
+elegant however to store the virtual nodes direcly below the main multiplexer
+node -- /dev/veth/0, /dev/veth/1 etc.
+
+There are two possible approaches how union mounts could be implemented in the
+Hurd. The first one is to let the various translators handle union mounts
+internally, i.e. let them present the underlying nodes to the clients in
+addition to the actual nodes they export themselfs. This probably can be
+implemented as some kind of extension to the existing netfs and diskfs
+libraries.
+
+The other possible apporach is less efficient and probably more tricky, but
+probably also more generic: create a special unionmount translator, which
+serves as a kind of proxy: setting the union-mounted translator on some
+internal node; and at the actual mount location, presenting a union of the
+nodes exported by this translator, and the nodes from the underlying file
+system.
+
+The goal of this project is implementing union mounts using either of the
+approaches described above. (Though it might be useful initially to prototype
+both for comparision.) The ethernet multiplexer shall serve as an example use
+case -- any changes necessary to allow using it with the union mount
+functionality are also to be considered part of the task.
+
+[[Sergiu Ivanov|scolobb]] has been working on this as a [[Google Summer of Code
+2009 project|community/gsoc/2009]].
+
+## Implementation
+
+### Source
+
+Union mounts are currently implemented as two additional command line
+options of the `unionfs` translator. This implementation resides in
+the master-unionmount branch of the unionfs git repository. To
+checkout the code, do the following:
+
+ $ git clone git://git.sv.gnu.org/hurd/unionfs.git
+ $ cd unionfs
+ $ git checkout -b master-unionmount
+ $ git pull origin master-unionmount
+
+You can skip the checkout step if you don't mind that the
+`master-unionmount` branch gets merged into the `master` branch.
+
+### Short Documentation
+
+The `unionmount` project adds options "--mount" and "--no-mount" to
+`unionfs` (short versions: "-t" and "-n" correspondingly). Both
+options are used to implement union-mounting, but the first option
+will create a *transparent* union mount, while the second option will
+create a *nontransparent* union mount.
+
+One can create a transparent union mount with the following command:
+
+ $ settrans -a <node> unionfs --underlying --mount=<translator>
+
+When running
+
+ $ fsysopts <node>
+
+one will see the information about the `<translator>`, not the
+`unionfs` translator. Although this might seem the only natural way
+to do union mounts, one must keep in mind that such transparency
+deprives one of the possibility to modify the unioned virtual
+filesystem exported by `unionfs` at run-time (via `fsysopts`).
+
+One can create a nontransparent union mount with the following command:
+
+ $ settrans -a <node> unionfs --underlying --no-mount=<translator>
+
+When running
+
+ $ fsysopts <node>
+
+one will see the information about the `unionfs` translator. Although
+this way allows modifying the contents of the unioned filesystem
+exported by `unionfs` at runtime, the access to `<translator>` is
+blocked.
+
+The filesystem exported by the *mountee* (`<translator>`) is actually
+treated like a normal filesystem within `unionfs`, which means that
+one can assign priorities to the *mountee* to achieve the desired
+order of layering of the unioned directories. The following will make
+`unionfs` query the underlying filesystem first and then the
+*mountee*:
+
+ $ settrans -a <node> unionfs --priority=2 --underlying --priority=1 --mount=<translator>
+
+Note that the same functionality can also be achieved by assigning
+priority 1 to the underlying filesystem and keeping the priority of
+the *mountee* at 0.
<a name="stowfs"></a>
# `stowfs`
... is a special mode of `unionfs`.
+
+# External Links
+
+ * [*Unioning file systems for Linux*](http://valerieaurora.org/union/)
+
+ * [FUSE page about
+ `unionfs`](http://sourceforge.net/apps/mediawiki/fuse/index.php?title=UnionFileSystems)
+
+ * [Linux' overlay file system proposal,
+ 2010-09-20](http://thread.gmane.org/gmane.linux.kernel/1038413)
+
+ How is this different?
diff --git a/how_to_contribute_to_this_wiki.mdwn b/hurd/translator/unionmount.mdwn
index 89df20e5..7384afc7 100644
--- a/how_to_contribute_to_this_wiki.mdwn
+++ b/hurd/translator/unionmount.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta redir=contributing/wiki]]
+[[!meta redir=unionfs#unionmount]]
diff --git a/hurd/translator/wishlist_1.mdwn b/hurd/translator/wishlist_1.mdwn
new file mode 100644
index 00000000..36290883
--- /dev/null
+++ b/hurd/translator/wishlist_1.mdwn
@@ -0,0 +1,129 @@
+[[!meta copyright="Copyright © 2007, 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]]."]]"""]]
+
+* [[devfs]]
+
+* FUSE(fuse.sourceforge.net/) compatilbility library. : just modify FUSE apps a and compile little to work as translator :-)
+
+* File Finder. (uses find, grep, a combination or a custom command (htdig, mp3 info)
+ * Files found will be available under one directory and then can be used like a normal directory
+ * usefull to generate Albums, Share only resulting files over the et, etc..
+ * The filefinder can be scheduled or can be connected over some ipc like dbus to the VFS system if any to keep a watch for new files.
+
+* GNOKII, BitPim and openobex as translators
+ * grep through your SMSs!
+ * share your addressbook!
+ * "Attach" that funny SMS/MMS to your email.
+ * "svn commit" your joke collection :-D
+
+* Real Language Translator [[br]]
+ * cat /usr/translator/de-en/usr/share/doc/something.txt should take /usr/share/doc/something.txt , submit it to google's website and bring back results.
+
+* Mozilla Bookmarks = del.ici.ous
+ * Need more explanation ? ;-)
+
+* <http://hnb.sf.net>
+ * having a directory structure for a file can allow to "svn commit" the hnb document in a more "node-safe" manner, thus allowing multiple people to work on the same hnb document.
+ * This must be fairly easy as HNB can already export to XML and XMLfs already exists.
+
+* DavFS
+ * Just setup a 'WebDav share' as a directory. The implimentation of the protocol is already available in nautilus and konqueror.
+
+* Compiled form of your project
+ * you have your project in /somedir/project with source in /somedir/project/src .. /somedir/project/bin should always have the compiled version.. is it possible?
+ * The source has to have a MakeFile.
+ * creating /somedir/project/bin-somearch should aotomatically crosscompile
+ * Seems feasible for a small project.
+
+* Report generation FrameWork - an idea to be hugged by app developers..not kernel developers.
+ * You have financial data in some Spreadsheet like format in /yourFinance directory
+ * You add report templates to /yourFinance/repTemplates
+ * Once you save data in /yourFinance the next cat /yourFinance/reports/areportname will give you an uptodate report.
+ * This will be usefull for any purpose including serving by static page web servers, sharing over samba/nfs/ftp etc.!
+ * The advantage is any save to the spreadsheet will update the report.. not just from one software.
+
+* SVN (Subversion suite)
+ * like [[cvsfs]]. /svndir/version/version-no should automatically have subversion
+ * I think it is nice to write a generalised version control system framework library which will help in writing version control translators and other tools easily.
+
+* Flexi-acls
+ * First of all - Can this be done? : A translator bound to a directory must be able to access the contents of the directory which would have been accessible in the absence of the translator..
+ * This will enable to wirte translators that can implement custom "Access Control Lists". Just imagine having advanced ACLs even if underlying FileSystem is dumb! Imagine changing the type of ACLs implemented with Just two commands - one to unattach previous translator and the next to attach a different ACL translator! The ACLs themselves may be stored in a different directory
+
+* The translator manager!
+ * Some translators will need to be inserted automatically - like for eg: hardware drivers ..
+ * Each hardware translator will pubish its capabilities.
+ * The "top" translator will query the capabilities of different hardware and match capabilities with the "slave" translators. That is it's only Job.
+ * The control is then handed over to the slave translator.
+ * The ranking not only looks who can handle the "most" capabilites of the hardware. If it finds that multiple translators can handle the same hardware, It will use other parameters to choose between them.. like may be the size in memory? The revision date? Stability (inferred from version number)? And to go to the extreme, the profiling data of the driver ;-P
+ * Advantage : The best driver wins!
+
+* An eg. Skip it if you understood the above :-):
+ * You have a driver that can handle VGA + SVGA + Super3d acceleration + Particle graphics + Works for nvidea card.
+ * You have a driver that can handle SVGA + VGA .
+ * You have a driver that can handle VGA.
+ * Case 1: Your card: A VGA card with some extra fonts..
+ * First the VGA driver will be quireied .. ok can handle essential capability.
+ * Next SVGA driver: can handle but has extra module.. unnecassary weight .
+ * The Nvidia driver: can handle , but again unnecassary weight : ruled out.
+ * Winner : VGA driver:
+ * Case 2: Your card An SVGA card:
+ * First the VGA driver will be quireied .. ok can handle one essential capability.
+ * Next SVGA driver: can handle essential and one extra capability no extra weight..
+ * The Nvidia driver: can handle , but unnecassary weight : ruled out.
+ * Winner : SVGA driver..
+ * Case 3 : You have an VGA .. but no VGA driver .. then the SVGA driver would win.
+
+* Sound Server
+ * /ahsa - stands for Advanced HURD sound architecture :-) Just a temporary name .. for fun.
+ * /ahsa/out - directory wich will hold "plug"s where apllications come and join the server .. see below.
+ * /ahsa/out/mixer - main mixer
+ * /ahsa/out/nextfree - the file when "cat"ed gives the number of the next free plug
+ * /ahsa/plugins/ - info about available plugins
+ * /ahsa/out/[1..n]/ - dynamically generated directories for applications to plug on..
+ * /ahsa/out/[1..n]/data this is where you should do a "cat somerawsoundfile>/ahsa/out/`cat /ahsa/nextfree`/data"
+ * /ahsa/out/[1..n]/plugins - the plugin stack .. volume is also a plugin..
+ * /ahsa/out/[1..n]/plugins/[1..m]/ - echo "plugin param1 param2 param3" > /ahsa/out/[1..n]/plugins/`cat /ahsa/out/[1..n]/plugins/nextfree`/add
+ * /ahsa/out/[1..n]/plugins/[1..m]/params/{param1.. paramn}
+ * /ahsa/out/[1..n]/data.out - can be catted to get data processed through the server
+ * /ahsa/in - similar to /ahsa/out .. with except for an extra file to choose input devices.
+ * /ahsa/devs/{1..n} - devices detected .. can be dynamic .. there are usb soundcards and and midi devices.
+ * /ahsa/out/[1..n]/plugins/[1..m]/0/params/dev
+ * Dont get tempted for :/ahsa/out/[1..n]/params/{rate, channels, and other stuff}
+ * that goes into /ahsa/out/[1..n]/plugins/0/params if /ahsa/out/[1..n]/plugins/0/detected == "headerless audio"
+ * There are a lot more things I can continue about the "sound server" .. The Ideas simply dont seem to exhaust..
+ * Some features/advantages
+ * set output's translator plugin as ordinary text -- have text to speech conversion done by sound server!
+ * Create and apply plugin presets by simply copying directories!
+ * Me getting dizzy thinking of the zillion more advantages.
+ * If you are really doing some ordinary output , all you need to do is "cat" data into next free "plug" and everything will be autodetected including the format of the data and sent to the final sound "merge"r
+ * Dizzy ...
+
+* /usr/share/menu !!!! extension for package management idea ..
+ * cat mymenuitem.menu >> /usr/share/menu/menu
+ * cat /usr/share/menu/debian/kde ... :-)
+
+* Spam/Malware Control
+ * /usr/antimalware/ - put your mail here.. it will automatically be scanned. when finished it will vanish from here ..
+ * /usr/antimalware/clean - ... and pop out from here
+ * /usr/antimalware/malware - or here.
+
+* NetDevice
+ * !JustImagine(tm)... settrans -ac /netdevices /hurd/netdevfs - [ host | net ]
+ * One can access device files remotely
+ * This could be acheived by allowing translators talk to one another over a network
+ * This will need translators to catch and handle ioctls (if there is such a thing in HURD).
+ * The device server which will listen to requests from the translators can be run even on a Linux machine!!!
+ * !JustImagine(tm)... accessing the crwriter/webcam on that GNU/Linux machine on the network using cdrecord of your local hurd machine!
+ * !JustImagine(tm)... running GNU/HURD on a minimalistic GNU/Linux(but with all the drivers) through a specially modified and optimised Qemu. The device server runs on the host machine, and the client translators access over the virtual network created by Qemu. You got most of the drivers for free!
+
+* Emacs File VFS
+ * I came to know from my Emacs loving friend that there are lots of VFS handlers in Emacs.. I was wondering if there can be translator which can tap into these Emacs VFS handlers.
diff --git a/Hurd/TranslatorWishList.mdwn b/hurd/translator/wishlist_2.mdwn
index 38bd87d9..77f39644 100644
--- a/Hurd/TranslatorWishList.mdwn
+++ b/hurd/translator/wishlist_2.mdwn
@@ -70,12 +70,24 @@ Here's an [idea](http://www.circlemud.org/~jelson/software/fusd/docs/node13.html
* "One particularly interesting application of FUSD that we've found very useful is as a way to let regular user-space libraries export device file APIs. For example, imagine you had a library which factored large composite numbers. Typically, it might have a C interface--say, a function called `int *factorize(int bignum)`. With FUSD, it's possible to create a device file interface--say, a device called `/dev/factorize` to which clients can `write(2)` a big number, then `read(2)` back its factors.
-* This may sound strange, but device file APIs have at least three advantages over a typical library API. First, it becomes much more language independent--any language that can make system calls can access the factorization library. Second, the factorization code is running in a different address space; if it crashes, it won't crash or corrupt the caller. Third, and most interestingly, it is possible to use `select(2)` to wait for the factorization to complete. `select(2)` would make it easy for a client to factor a large number while remaining responsive to other events that might happen in the meantime. In other words, FUSD allows normal user-space libraries to integrate seamlessly with UNIX's existing, POSIX-standard event notification interface: `select(2)`."
+* This may sound strange, but device file APIs have at least three advantages
+ over a typical library API. First, it becomes much more language
+ independent--any language that can make [[system call]]s can access the
+ factorization library. Second, the factorization code is running in a
+ different address space; if it crashes, it won't crash or corrupt the
+ caller. Third, and most interestingly, it is possible to use `select(2)` to
+ wait for the factorization to complete. `select(2)` would make it easy for a
+ client to factor a large number while remaining responsive to other events
+ that might happen in the meantime. In other words, FUSD allows normal
+ user-space libraries to integrate seamlessly with UNIX's existing,
+ POSIX-standard event notification interface: `select(2)`."
## <a name="Mail"> Mail </a>
Am I off my rocker, or does an IMAP/POP translator sound like a good idea? It would make your remote mail servers look like local ones. Or what about a translator that makes a mbox format mail spool look like a directory. Can anyone think of a good use for an SMTP translator?
+*Definitely: Copy my email in there to send it.* -- [[ArneBab|community/weblogs/ArneBab]]
+
## <a name="UUEncode"> </a> UUEncode
How about a UUEncode translator for those places you can only store ASCII. Combine this with a NNTP translator and store your data in someone's Usenet archive. Or since, (as far as I know), there are no size limitations on file names in the Hurd, why not have a filesystem translator whose underlying store is a file name. (Now ls becomes cat).
@@ -187,7 +199,3 @@ Send an fsysopts command to a set of translators. When you have a directory full
$ settrans -ac all /hurd/fsysoptsctl '/tmp/mystuff/*'
$ fsysopts all --update
-
-----
-
--- [[Main/GregBuchholz]] - updated 17 Oct 2003
diff --git a/hurd/translator/writing/example.mdwn b/hurd/translator/writing/example.mdwn
index 170812ad..0a3be4df 100644
--- a/hurd/translator/writing/example.mdwn
+++ b/hurd/translator/writing/example.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
## Data User-Server Translator Example
diff --git a/hurd/translator/xmlfs.mdwn b/hurd/translator/xmlfs.mdwn
index cff15f59..769c43ce 100644
--- a/hurd/translator/xmlfs.mdwn
+++ b/hurd/translator/xmlfs.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
<http://www.nongnu.org/hurdextras/#xmlfs>
diff --git a/hurd/virtual_file_system.mdwn b/hurd/virtual_file_system.mdwn
index 2902a26e..b62a5e4c 100644
--- a/hurd/virtual_file_system.mdwn
+++ b/hurd/virtual_file_system.mdwn
@@ -1,19 +1,19 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Path names are resolved using a distributed protocol.
No single entity is responsible for the resolution of
path names. A file system server (a [[translator]])
attaches to translators (`fs.defs:file_set_translator`).
-When a process resolves an aboslute path, it queries
+When a process resolves an absolute path, it queries
its root file system server by invoking the `fs.defs:dir_lookup`
method in the capability in its root directory slot. The
file system server resolves as much as it knows about locally
diff --git a/hurd/virtualization.mdwn b/hurd/virtualization.mdwn
index dfd6c375..49e911c2 100644
--- a/hurd/virtualization.mdwn
+++ b/hurd/virtualization.mdwn
@@ -1,13 +1,17 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2011 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
Olaf Buddenhagen has written a text about how [[/virtualization]] is applicable
within Hurd systems:
<http://tri-ceps.blogspot.com/2007/10/advanced-lightweight-virtualization.html>
+
+We also have [[a lot of Open Issues about virtualization
+topics|open_issues/virtualization]].
diff --git a/hurd/what_is_the_gnu_hurd.mdwn b/hurd/what_is_the_gnu_hurd.mdwn
new file mode 100644
index 00000000..7a7f3d43
--- /dev/null
+++ b/hurd/what_is_the_gnu_hurd.mdwn
@@ -0,0 +1,51 @@
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+2010 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]]."]]"""]]
+
+[[!meta title="What Is the GNU Hurd?"]]
+
+The Hurd is the GNU project's replacement for [[UNIX]], a popular operating
+system [[kernel]].
+
+The Hurd is firstly a collection of protocols formalizing how different
+components may interact. The protocols are designed to reduce the mutual
+[[trust]] requirements of the actors thereby permitting a more
+[[extensible|extensibility]] system. These include interface definitions to
+manipulate files and directories and to resolve path names. This allows any
+process to implement a file system. The only requirement is that it have
+access to its backing store and that the [[principal]] that started it own the
+file system node to which it connects.
+
+The Hurd is also a set of [[servers|translator]] that implement these
+protocols. They include file systems, network protocols and authentication.
+The servers run on top of the [[microkernel/Mach]] [[microkernel]] and use
+Mach's [[microkernel/mach/IPC]] mechanism to transfer information.
+
+The Hurd provides a compatibility layer such that compiling higher level
+programs is essentially transparent; that is, by means of the [[glibc]], it
+provides the same standard interfaces known from other [[UNIX]]-like systems.
+Thus, for a typical user, the Hurd is intended to silently work in the
+background providing the services and infrastructure which the [[microkernel]]
+itself has no business implementing, but that are required for higher level
+programs and libraries to operate.
+
+The Hurd supplies the last major software component needed for a complete
+[[GNU_operating_system|running/gnu]] as originally conceived by Richard
+M. Stallman (RMS) in 1983. The GNU vision directly drove the creation and has
+guided the evolution of the [Free Software Foundation](http://fsf.org/), the
+organization that is the home of the [GNU project](http://gnu.org/gnu/).
+
+The Hurd development effort is a somewhat separate project from the
+[[Debian_GNU/Hurd|hurd/running/debian]] port.
+
+
+Read about what the GNU Hurd is [[gramatically_speaking]].
+
+Read about the [[origin_of_the_name]].
diff --git a/hurd/what_is_the_gnu_hurd/gramatically_speaking.mdwn b/hurd/what_is_the_gnu_hurd/gramatically_speaking.mdwn
new file mode 100644
index 00000000..5905a19b
--- /dev/null
+++ b/hurd/what_is_the_gnu_hurd/gramatically_speaking.mdwn
@@ -0,0 +1,54 @@
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 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]]."]]"""]]
+
+[[!meta title="Grammatically speaking..."]]
+
+> [[It's_time_to_explain|origin_of_the_name]] the meaning of *Hurd*.
+>
+> *Hurd* stands for *Hird of [[Unix]]-Replacing Daemons*.
+> And, then, *Hird* stands for *Hurd of Interfaces Representing Depth*.
+
+The Hurd has its share of linguistic debate. The subject of proper usage comes
+up quite often.
+
+Although [[Thomas_Bushnell_states|origin_of_the_name]] that the word *Hurd* is
+an acronym; we do not treat it as such, but rather as a concrete noun. We
+treat *Hurd* as a title rather than as a proper name: it requires an article,
+as in *the Hurd*. For instance: *The ext2 filesystem is provided by the Hurd,
+not by Mach.* Note that all of the following are incorrect: *Hurd*, *HURD*,
+*H.U.R.D.*, *The HURD*, and *the hurd*.
+
+Since the Hurd is part of the GNU Project, we also refer to it as *GNU Hurd*
+which is treated as a proper noun. We write *the GNU Hurd* instead of *the
+Hurd* when we want to emphasize that the Hurd is a GNU package. Once this has
+been made clear, we usually use the shorter form, without *GNU*.
+
+The whole operating system includes not only the kernel and the system servers,
+but also many more programs. This system is called *GNU*, or *the GNU
+operating system*. The GNU programs can also run on other operating system
+kernels. We say *GNU/Hurd* when we want to put emphasis on the fact that this
+is the GNU system running on top of the Hurd, and to contrast it with the
+GNU/Linux system which is GNU using Linux as the kernel.
+
+Finally, there is *Debian GNU/Hurd*. This refers to the distribution of the GNU
+system as created by the Debian developers. For example: *What do you run on
+your laptop? Debian GNU/Hurd, of course.*
+
+The French generally write *le Hurd*--that is, they treat the name as masculine
+singular, capitalized as in English.
+
+When we are referring to the microkernel, we say *Mach* and use it as a proper
+noun. For example: *Mach uses the device drivers found in version 2.0.x of
+Linux.* We sometimes say *the Mach microkernel* instead of just *Mach*.
+
+
+To pronounce the word *Hurd*, you should say the English word *herd*. This is
+pronounced as *hɚd* using the International Phonetic Alphabet.
diff --git a/hurd/what_is_the_gnu_hurd/origin_of_the_name.mdwn b/hurd/what_is_the_gnu_hurd/origin_of_the_name.mdwn
new file mode 100644
index 00000000..51857e21
--- /dev/null
+++ b/hurd/what_is_the_gnu_hurd/origin_of_the_name.mdwn
@@ -0,0 +1,50 @@
+[[!meta copyright="Copyright © 1996, 1997, 1998, 2002, 2003, 2004, 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]]."]]"""]]
+
+[[!meta title="Origin of the Name"]]
+
+[According to Thomas
+Bushnell](http://web.cecs.pdx.edu/~trent/gnu/hurd/hurd-name), the primary
+architect of the Hurd:
+
+> It's time to explain the meaning of *Hurd*.
+>
+> *Hurd* stands for *Hird of [[Unix]]-Replacing Daemons*.
+> And, then, *Hird* stands for *Hurd of Interfaces Representing Depth*.
+>
+> We have here, to my knowledge, the first software to be named by a
+> pair of mutually recursive acronyms.
+
+[Quoting](http://mail.gnu.org/archive/html/help-hurd/2002-10/msg00099.html)
+him further:
+
+> The name *Hurd* was invented by me, as an alternate spelling for the English
+> word *herd*. *Hird* is just another alternate spelling for the same word.
+> By the [[normal_rules_of_English_orthography|gramatically_speaking]], they
+> all have the same pronunciations.
+
+
+---
+
+<!-- TODO. Source? Or remove? -->
+
+In other contexts:
+
+One contributor from Norway described two other uses of Hird.
+
+ * "the kings men", a name given to the men accompanying the Norwegian kings at about
+ year 1000 and on.
+
+ This was later coined by V. Quisling when he formed a party with
+ nationalistic traits to denote a set of helpers promoting his agenda of
+ national and Nordic ideas.
+
+ * a symbol of collaboration with the (German) enemy used in World War II.
diff --git a/ibac.mdwn b/ibac.mdwn
index 5247c297..c1d46ba8 100644
--- a/ibac.mdwn
+++ b/ibac.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
IBAC stands for identity-based access control.
In this access control scheme, access to a resource
diff --git a/idl.mdwn b/idl.mdwn
index 60e3fea6..5486931d 100644
--- a/idl.mdwn
+++ b/idl.mdwn
@@ -1,15 +1,24 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2002, 2003, 2007, 2008, 2010 Free Software
+Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
-
-An IDL is an interface definition language. The most well-known is
-CORBA. An IDL compiler takes a specification and generates stubs
-that hide the transport details. In the case of [[microkernel/mach/MIG]], this
-hides the marshalling and unmarshalling of parameters according
-to [[microkernel/Mach]]'s semantics.
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="IDL"]]
+
+An *IDL* is an *interface definition language* ([[!wikipedia
+Interface_description_language desc="Wikipedia article"]]). A well-known one
+is CORBA. These are [[DSL]]s.
+
+An IDL compiler takes a specification and generates stub code that hides the
+transport details, and by this implements a [[RPC]] system.
+
+In the case of [[Mach's MIG|microkernel/mach/mig]], this hides the marshalling
+and unmarshalling of procedures' parameters to and from
+[[microkernel/mach/message]] format, according to [[microkernel/Mach]]'s
+semantics, and invoking the respective [[microkernel/mach/port]] operations.
diff --git a/ikiwiki.setup b/ikiwiki.setup
new file mode 100644
index 00000000..9ae1f669
--- /dev/null
+++ b/ikiwiki.setup
@@ -0,0 +1,387 @@
+#!/usr/bin/perl
+#
+# Setup file for ikiwiki.
+#
+# Passing this to ikiwiki --setup will make ikiwiki generate
+# wrappers and build the wiki.
+#
+# Remember to re-run ikiwiki --setup any time you edit this file.
+
+require IkiWiki::Setup::Standard;
+
+my $root = $ENV{ROOT};
+
+my $srcdir;
+my $destdir;
+my $cgi_wrapper = '';
+my $git_wrapper = '';
+my $gitorigin_branch = '';
+
+if (defined $ENV{WEB_SERVER})
+{
+ $srcdir = $root.'/hurd-web';
+ $destdir = $root.'/public_html';
+ $cgi_wrapper = $root.'/hurd-web.cgi';
+ $git_wrapper = $root.'/hurd-web.update';
+ $gitorigin_branch = 'origin';
+}
+else
+{
+ $srcdir = $root;
+ $destdir = $ENV{DESTDIR} || $srcdir.'.rendered';
+}
+
+IkiWiki::Setup::Standard->import({
+ # name of the wiki
+ wikiname => 'GNU Hurd',
+ # contact email for wiki
+ adminemail => 'tschwinge@gnu.org',
+ # users who are wiki admins
+ adminuser => [qw{tschwinge}],
+ # users who are banned from the wiki
+ banned_users => [qw{AlbertF bernhart ColetCris flamberian Jack_Dark
+ jasclaine NateNash
+ http://calvinyoung.myopenid.com/
+ http://heaton.myopenid.com/
+ http://hilarybunton.myopenid.com/}],
+ # where the source of the wiki is located
+ srcdir => $srcdir,
+ # where to build the wiki
+ destdir => $destdir,
+ # base url to the wiki
+ url => 'http://www.bddebian.com:8888/~hurd-web',
+ # url to the ikiwiki.cgi
+ cgiurl => 'http://www.bddebian.com:8888/cgi-bin/hurd-web-ikiwiki.cgi',
+ # filename of cgi wrapper to generate
+ cgi_wrapper => $cgi_wrapper,
+ # mode for cgi_wrapper (can safely be made suid)
+ cgi_wrappermode => '06755',
+ # rcs backend to use
+ rcs => 'git',
+ # plugins to add to the default configuration
+ add_plugins => [qw{goodstuff
+ cutpaste editdiff edittemplate favicon getsource
+ html rename repolist search sidebar table txt
+ field getfield ymlfront
+ copyright license texinfo}],
+ # plugins to disable
+ disable_plugins => [],
+ # additional directory to search for template files
+ templatedir => $srcdir.'/.templates',
+ # base wiki source location
+ #underlaydir => '/usr/share/ikiwiki/basewiki',
+ # display verbose messages?
+ verbose => 1,
+ # log to syslog?
+ syslog => 0,
+ # create output files named page/index.html?
+ usedirs => 1,
+ # use '!'-prefixed preprocessor directives?
+ prefix_directives => 1,
+ # use page/index.mdwn source files
+ indexpages => 0,
+ # enable Discussion pages?
+ discussion => 1,
+ # name of Discussion pages
+ discussionpage => 'Discussion',
+ # generate HTML5? (experimental)
+ html5 => 0,
+ # only send cookies over SSL connections?
+ sslcookie => 0,
+ # extension to use for new pages
+ default_pageext => 'mdwn',
+ # extension to use for html files
+ htmlext => 'html',
+ # strftime format string to display date
+ timeformat => '%F %T %Z',
+ # UTF-8 locale to use
+ locale => 'C',
+ # put user pages below specified page
+ userdir => 'user',
+ # how many backlinks to show before hiding excess (0 to show all)
+ numbacklinks => 10,
+ # attempt to hardlink source files? (optimisation for large files)
+ hardlink => 1,
+ # force ikiwiki to use a particular umask
+ #umask => 022,
+ # group for wrappers to run in
+ #wrappergroup => 'ikiwiki',
+ # extra library and plugin directory
+ libdir => $srcdir.'/.library',
+ # environment variables
+ ENV => {},
+ # regexp of normally excluded files to include
+ #include => '^\\.htaccess$',
+ # regexp of files that should be skipped
+ #exclude => '^(*\\.private|Makefile)$',
+ # specifies the characters that are allowed in source filenames
+ wiki_file_chars => '-[:alnum:]+/.:_',
+ # allow symlinks in the path leading to the srcdir (potentially insecure)
+ #allow_symlinks_before_srcdir => 0,
+
+ ######################################################################
+ # core plugins
+ # (editpage, git, htmlscrubber, inline, link, meta, parentlinks)
+ ######################################################################
+
+ # git plugin
+ # git hook to generate
+ git_wrapper => $git_wrapper,
+ # shell command for git_wrapper to run, in the background
+ #git_wrapper_background_command => 'git push github',
+ # mode for git_wrapper (can safely be made suid)
+ git_wrappermode => '0700',
+ # git pre-receive hook to generate
+ #git_test_receive_wrapper => '/git/wiki.git/hooks/pre-receive',
+ # unix users whose commits should be checked by the pre-receive hook
+ #untrusted_committers => [],
+ # gitweb url to show file history ([[file]] substituted)
+ historyurl => 'http://www.bddebian.com:8888/gitweb/?p=hurd-web;a=history;f=[[file]];hb=HEAD',
+ # gitweb url to show a diff ([[file]], [[sha1_to]], [[sha1_from]], [[sha1_commit]], and [[sha1_parent]] substituted)
+ diffurl => 'http://www.bddebian.com:8888/gitweb/?p=hurd-web;a=blobdiff;f=[[file]];h=[[sha1_to]];hp=[[sha1_from]];hb=[[sha1_commit]];hpb=[[sha1_parent]]',
+ # where to pull and push changes (set to empty string to disable)
+ gitorigin_branch => $gitorigin_branch,
+ # branch that the wiki is stored in
+ gitmaster_branch => 'master',
+
+ # htmlscrubber plugin
+ # PageSpec specifying pages not to scrub
+ #htmlscrubber_skip => '!*/Discussion',
+
+ # inline plugin
+ # enable rss feeds by default?
+ rss => 1,
+ # enable atom feeds by default?
+ atom => 1,
+ # allow rss feeds to be used?
+ #allowrss => 0,
+ # allow atom feeds to be used?
+ #allowatom => 0,
+ # urls to ping (using XML-RPC) on feed update
+ pingurl => [],
+
+ ######################################################################
+ # auth plugins
+ # (anonok, blogspam, httpauth, lockedit, moderatedcomments,
+ # opendiscussion, openid, passwordauth, signinedit)
+ ######################################################################
+
+ # anonok plugin
+ # PageSpec to limit which pages anonymous users can edit
+ #anonok_pagespec => '*/discussion',
+
+ # blogspam plugin
+ # PageSpec of pages to check for spam
+ #blogspam_pagespec => 'postcomment(*)',
+ # options to send to blogspam server
+ #blogspam_options => 'blacklist=1.2.3.4,blacklist=8.7.6.5,max-links=10',
+ # blogspam server XML-RPC url
+ #blogspam_server => '',
+
+ # httpauth plugin
+ # url to redirect to when authentication is needed
+ #cgiauthurl => 'http://example.com/wiki/auth/ikiwiki.cgi',
+ # PageSpec of pages where only httpauth will be used for authentication
+ #httpauth_pagespec => '!*/Discussion',
+
+ # lockedit plugin
+ # PageSpec controlling which pages are locked
+ #locked_pages => '!*/Discussion',
+
+ # moderatedcomments plugin
+ # PageSpec matching users or comment locations to moderate
+ #moderate_pagespec => '*',
+
+ # openid plugin
+ # url pattern of openid realm (default is cgiurl)
+ #openid_realm => '',
+ # url to ikiwiki cgi to use for openid authentication (default is cgiurl)
+ #openid_cgiurl => '',
+
+ # passwordauth plugin
+ # a password that must be entered when signing up for an account
+ #account_creation_password => 's3cr1t',
+ # cost of generating a password using Authen::Passphrase::BlowfishCrypt
+ #password_cost => 8,
+
+ ######################################################################
+ # format plugins
+ # (creole, highlight, hnb, html, mdwn, otl, rawhtml, textile, txt)
+ ######################################################################
+
+ # highlight plugin
+ # types of source files to syntax highlight
+ #tohighlight => '.c .h .cpp .pl .py Makefile:make',
+ # location of highlight's filetypes.conf
+ #filetypes_conf => '/etc/highlight/filetypes.conf',
+ # location of highlight's langDefs directory
+ #langdefdir => '/usr/share/highlight/langDefs',
+
+ # mdwn plugin
+ # enable multimarkdown features?
+ #multimarkdown => 0,
+
+ ######################################################################
+ # misc plugins
+ # (filecheck)
+ ######################################################################
+
+ ######################################################################
+ # web plugins
+ # (404, attachment, comments, editdiff, edittemplate, getsource,
+ # google, goto, mirrorlist, remove, rename, repolist, search,
+ # theme, websetup, wmd)
+ ######################################################################
+
+ # attachment plugin
+ # enhanced PageSpec specifying what attachments are allowed
+ #allowed_attachments => 'virusfree() and mimetype(image/*) and maxsize(50kb)',
+ # virus checker program (reads STDIN, returns nonzero if virus found)
+ #virus_checker => 'clamdscan -',
+
+ # comments plugin
+ # PageSpec of pages where comments are allowed
+ #comments_pagespec => 'blog/* and !*/Discussion',
+ # PageSpec of pages where posting new comments is not allowed
+ #comments_closed_pagespec => 'blog/controversial or blog/flamewar',
+ # Base name for comments, e.g. "comment_" for pages like "sandbox/comment_12"
+ #comments_pagename => '',
+ # Interpret directives in comments?
+ #comments_allowdirectives => 0,
+ # Allow anonymous commenters to set an author name?
+ #comments_allowauthor => 0,
+ # commit comments to the VCS
+ #comments_commit => 1,
+
+ # getsource plugin
+ # Mime type for returned source.
+ #getsource_mimetype => 'text/plain; charset=utf-8',
+
+ # mirrorlist plugin
+ # list of mirrors
+ #mirrorlist => {},
+
+ # repolist plugin
+ # URIs of repositories containing the wiki's source
+ repositories => [qw{git://git.savannah.gnu.org/hurd/web.git
+ http://git.savannah.gnu.org/r/hurd/web.git
+ git://flubber.bddebian.com/~hurd-web/hurd-web
+ http://www.bddebian.com:8888/git/hurd-web}],
+
+ # search plugin
+ # path to the omega cgi program
+ #omega_cgi => '/usr/lib/cgi-bin/omega/omega',
+
+ # theme plugin
+ # name of theme to enable
+ #theme => 'actiontabs',
+
+ # websetup plugin
+ # list of plugins that cannot be enabled/disabled via the web interface
+ #websetup_force_plugins => [],
+ # list of additional setup field keys to treat as unsafe
+ #websetup_unsafe => [],
+ # show unsafe settings, read-only, in web interface?
+ #websetup_show_unsafe => 1,
+
+ ######################################################################
+ # widget plugins
+ # (calendar, color, conditional, cutpaste, date, format, fortune,
+ # graphviz, haiku, img, linkmap, listdirectives, map, more,
+ # orphans, pagecount, pagestats, poll, polygen, postsparkline,
+ # progress, shortcut, sparkline, table, template, teximg, toc,
+ # toggle, version)
+ ######################################################################
+
+ # calendar plugin
+ # base of the archives hierarchy
+ #archivebase => 'archives',
+ # PageSpec of pages to include in the archives; used by ikiwiki-calendar command
+ #archive_pagespec => 'page(posts/*) and !*/Discussion',
+
+ # listdirectives plugin
+ # directory in srcdir that contains directive descriptions
+ #directive_description_dir => 'ikiwiki/directive',
+
+ # teximg plugin
+ # Should teximg use dvipng to render, or dvips and convert?
+ #teximg_dvipng => '',
+ # LaTeX prefix for teximg plugin
+ #teximg_prefix => '\\documentclass{article}
+ #\\usepackage{amsmath}
+ #\\usepackage{amsfonts}
+ #\\usepackage{amssymb}
+ #\\pagestyle{empty}
+ #\\begin{document}
+ #',
+ # LaTeX postfix for teximg plugin
+ #teximg_postfix => '\\end{document}',
+
+ ######################################################################
+ # other plugins
+ # (aggregate, autoindex, brokenlinks, camelcase, ddate, embed,
+ # favicon, field, flattr, getfield, goodstuff, htmlbalance,
+ # localstyle, pagetemplate, pingee, pinger, prettydate,
+ # recentchanges, recentchangesdiff, relativedate, rsync,
+ # sidebar, smiley, sortnaturally, tag, testpagespec, underlay,
+ # ymlfront)
+ ######################################################################
+
+ # aggregate plugin
+ # enable aggregation to internal pages?
+ #aggregateinternal => 1,
+ # allow aggregation to be triggered via the web?
+ #aggregate_webtrigger => 0,
+
+ # camelcase plugin
+ # list of words to not turn into links
+ #camelcase_ignore => [],
+
+ # field plugin
+ # simple registration of fields by plugin
+ #field_register => {meta => 'last'},
+ # allow config settings to be queried
+ #field_allow_config => 0,
+ # fields flagged as tag-fields
+ #field_tags => {BookAuthor => '/books/authors'},
+
+ # flattr plugin
+ # userid or user name to use by default for Flattr buttons
+ #flattr_userid => 'joeyh',
+
+ # pinger plugin
+ # how many seconds to try pinging before timing out
+ #pinger_timeout => 15,
+
+ # prettydate plugin
+ # format to use to display date
+ #prettydateformat => '%X, %B %o, %Y',
+
+ # recentchanges plugin
+ # name of the recentchanges page
+ recentchangespage => 'recent_changes',
+ # number of changes to track
+ recentchangesnum => 100,
+
+ # rsync plugin
+ # command to run to sync updated pages
+ #rsync_command => 'rsync -qa --delete . user@host:/path/to/docroot/',
+
+ # sidebar plugin
+ # show sidebar page on all pages?
+ #global_sidebars => 1,
+
+ # tag plugin
+ # parent page tags are located under
+ tagbase => 'tag',
+ # autocreate new tag pages?
+ #tag_autocreate => 1,
+
+ # underlay plugin
+ # extra underlay directories to add
+ #add_underlays => '',
+
+ # ymlfront plugin
+ # delimiters of YAML data
+ ymlfront_delim => [qw{--YAML-START-- --YAML-END--}],
+})
diff --git a/index.mdwn b/index.mdwn
index 47922a0a..2eb60d82 100644
--- a/index.mdwn
+++ b/index.mdwn
@@ -1,95 +1,102 @@
-[[img logo.png alt="[] HURD-Wiki"]]
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+2009, 2010, 2011 Free Software Foundation, Inc."]]
-Welcome to the **new** GNU Hurd wiki!
+[[!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]]."]]"""]]
-**There is a huge bunch of unpolished stuff on here, please help us to tidy
-things up!** Comments about how that could be tackled are best posted onto
-this page's [[discussion]] subpage.
+<div id="statements">
+<div id="what-is">
+<p class="statement-title">What is the GNU Hurd?</p>
+<p>The GNU Hurd is the GNU project's replacement for the Unix kernel.
+It is a collection of servers that run on the Mach microkernel
+to implement file systems, network protocols, file access control, and
+other features that are implemented by the Unix kernel or similar
+kernels (such as Linux).
+<em>[[More_detailed|hurd/documentation]].</em></p>
+</div>
+<div id="mission">
+<p class="statement-title">What is the mission of the GNU Hurd project?</p>
+<p>Our mission is to create a general-purpose kernel suitable
+for the GNU operating system, which is viable for everyday use,
+and gives users and programs as much control over their
+computing environment as possible.
+<em>[[Our_mission_explained|community/weblogs/antrik/hurd-mission-statement]].</em></p>
+</div>
+</div>
-----
+---
+
+[[!toc levels=2]]
-This site focuses on providing user-centric and update-able (and hopefully the
-most current) information regarding the status and development of the
-GNU project's GNU operating system. There are many areas to comment on the
-core component (the Hurd) and other very closely related but distinct projects.
-This is an all volunteer effort intended to supplement the [official Hurd
-site](http://hurd.gnu.org/).
+# News
-[[toc ]]
+[[!inline
+pages="news/* and !*/discussion"
+feedonly=yes
+feedshow=10]]
+[[!inline
+pages="news/* and !*/discussion"
+show=5
+feeds=no
+template=newsitem
+actions=yes]]
-<!-- If you're rendering this page and the output looks garbled from here on,
-then you've hit <http://bugs.debian.org/421843>. Installing the markdown
-package from Debian experimental fixed this for me. -->
+Older news entries can be found in the [[news archive|news]]. For Hurd
+developers' musings have a look at the [[shared weblog|community/weblogs]].
+The [[recent changes]] page lists the latest changes of this website.
-## Breaking News
+# Contributing
-We got 4 slots for the [[Google_Summer_of_Code|community/gsoc]]!
+So, you are interested in contributing to the GNU Hurd project? Welcome!
+Every single contribution is very much encouraged. Please read our [[detailed
+recommendations about how to contribute|contributing]].
+See our [[source_repositories]] for the source code.
-## Contributing
+## Access to a GNU/Hurd System
-Read about various ways of [[contributing]].
+We provide accounts on our [[public_Hurd_boxen]], and there are also
+[[hurd/running/QEMU]] images available.
-## Getting Help
+# Getting Help
-There are a couple of different [[Hurd_FAQs|hurd/FAQ]].
+There are a couple of different [[FAQ lists|FAQ]].
There are a number of [[IRC_channels|IRC]] and several
-different [[mailing_lists]] with searchable archives.
+different [[mailing lists]] with searchable archives.
Before asking a question on a mailing list or on IRC, first, please try to
answer your own question using a search engine and reading the introductory
information. If you have done this and you cannot find the answer to your
question, feel free to ask on a mailing list or on IRC.
-## Running the Hurd
+
+<a name="run"> </a>
+# Running the Hurd
The most functional distribution of the Hurd is the one provided by Debian.
Find more information about it at the
[Debian GNU/Hurd website](http://www.debian.org/ports/hurd/hurd-install).
-There are [[various_possibilities|hurd/running]] of running a GNU/Hurd system.
-
-And this wiki is living proof of the usability of the HURD, as it is served by a GNU/HURD system<!--which one?-->. More people using GNU: [[Hurd/WhoRunsGNU]]
-
-## What is the Hurd?
-
-The [[Hurd]] is GNU's replacement for the various UNIX and Linux kernels.
-
-The Hurd is firstly a collection of protocols formalizing how different
-components may interact. The protocols are designed to reduce the mutual
-[[trust]] requirements of the actors thereby permitting a more
-[[extensible|Extensibility]] system. These include interface definitions
-to manipulate files and directories and to resolve path names. This allows
-any process to implement a file system. The only requirement is that it
-have access to its backing store and that the principal that started it
-own the file system node to which it connects.
+Along with it there are [[various_ways|hurd/running]] to run a GNU/Hurd system.
+Three of them are
-The Hurd is also a set of servers that implement these protocols. The
-servers run on top of [[microkernel/Mach]] and use Mach's
-[[microkernel/mach/IPC]] mechanism to transfer information.
+* installing a [[GNU/Hurd_distribution|hurd/running/distrib]],
+* running it [[in_Xen|microkernel/mach/gnumach/ports/xen]] and
+* starting a [[Hurd_qemu_image|hurd/running/qemu]] or [[Hurd_LiveCD|hurd/running/live_cd/]].
-The word *Hurd* is commonly used to refer to one of the following:
+And these web pages are a living proof of the usability of the Hurd, as they
+are rendered on a [[Debian_GNU/Hurd|hurd/running/debian]] system.
- * the Hurd software that runs on top of a [[microkernel]] (most precisely)
- * a machine running the [[Debian_GNU/Hurd|hurd/running/debian]] distribution
- * the [GNU Hurd](http://hurd.gnu.org/) project including related dependent
- projects
- * HIRD of UNIX Replacing Daemons (arguably)
- * HIRD is an acronym for HURD Interfaces Representing Depth (arguably)
-The [[Hurd]] supplies the last major software component needed for a complete
-[[GNU]] operating system as originally conceived by Richard M. Stallman (RMS)
-in 1983. The GNU vision directly drove the creation and has guided the
-evolution of the [Free Software Foundation](http://www.fsf.org/), the
-organization that is the home of the [GNU project](http://www.gnu.org/gnu/).
-
-[[Hurd/HurdNames]]
-
-
-## Current Status
+# Current Status
There has not yet been an official 1.0 release. The Hurd is developed by a few
volunteers in their spare time. The project welcomes any assistance you can provide.
@@ -99,23 +106,27 @@ Functional systems are installable in a dual-boot configuration. Development
systems are currently mostly based on the [[Debian_GNU/Hurd|hurd/running/debian]] port
sponsored by the [Debian project](http://www.debian.org/).
-This wiki is living proof of a working HURD installation, as it is served by a HURD based system.
+Community resources for related projects focus around these pages,
+<http://hurd.gnu.org/>, the [[mailing lists]] and the [[IRC_channels|IRC]].
-Community resources for related projects focus around the official website
-<http://hurd.gnu.org/>, this site at <http://www.bddebian.com/~wiki/>, the
-[[mailing_lists]] and the [[IRC_channels|IRC]].
+If you want to see the current discussions in the Hurd project, please have a look at
+the [bug-hurd mailinglist archives](http://lists.gnu.org/pipermail/bug-hurd/).
+If you want to have a look at the current coding work, you can just head over to our
+[[source_repositories]].
-[[hurd/Status]]
+For more details, please read our writeup on the
+[[current_state_of_the_GNU_Hurd|hurd/status]].
-## How is this site arranged?
+## Advantages and Challenges
-The menu on the upper right corner provides a rough structuring about the
-available content. Just follow those topics and explore the wiki.
+The GNU Hurd operating system design provides [[advantages]], but uncovers new
+[[challenges]], too.
-Further information about this site and how it was created can be found in the
-[[wiki_colophon]].
----
-This wiki is powered by [ikiwiki](http://ikiwiki.info/).
+These pages are powered by [ikiwiki](http://ikiwiki.info/).
+
+Further information about this site and how it was created can be found in the
+[[colophon]].
diff --git a/index/discussion.mdwn b/index/discussion.mdwn
index aec8711d..f369ed35 100644
--- a/index/discussion.mdwn
+++ b/index/discussion.mdwn
@@ -1,20 +1,23 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
# TODO
-Please add your comments here about what you think needs to be done on the wiki.
+Please add your comments here about what you think needs to be done on these
+web pages.
## What to Add
+I would like to see the contributions page modified to include hardware needed, documentation wanted etc Much like the OpenBSD project has done http://www.openbsd.org/want.html --gregory
+
<azeem-uni> tschwinge: so, first plan: don't mention www.d.o/ports/hurd on the wiki
<azeem-uni> but transfer that information to the wiki, and keep it uptodate there
<azeem-uni> and proabably make links to that on w.d.o
diff --git a/community/self-organised_2008.mdwn b/install.mdwn
index 01b25578..1a7416de 100644
--- a/community/self-organised_2008.mdwn
+++ b/install.mdwn
@@ -1,11 +1,13 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2010 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta redir=meetings/self-organised_2008]]
+[[!tag stable_URL]]
+
+[[!meta redir=hurd/running]]
diff --git a/ipc.mdwn b/ipc.mdwn
index 0e8d674a..ff9a166c 100644
--- a/ipc.mdwn
+++ b/ipc.mdwn
@@ -1,16 +1,17 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-IPC stands for interprocess communication.
+*IPC* stands for *inter-process communication*.
-On Unix, interprocess communication can be achieved using pipes.
+On [[Unix]], inter-process communication can be achieved using pipes.
This is inefficient for large amounts of data as the data must be
copied. This is generally not a problem as most services are
provided by the Unix kernel and Unix is not designed to be
@@ -22,12 +23,14 @@ of many components. As components are separated by their respective
examine and modify the caller's state. The advantage is that if the
protocol is carefully designed, the callee cannot cause the caller
any [[destructive_interference]] thereby removing the need for the
-caller to [[trust]] the callee thus reducing the former's [[tcb]].
+caller to [[trust]] the callee thus reducing the former's [[TCB]].
When done systematically, this can increase the system's [[robustness]].
To this end, microkernels provide richer IPC semantics that include
the ability to transfer [[capabilities|capability]] and to use [[virtual_memory]]
[[mechanism]]s to copy data.
+Continue reading about [[Mach's IPC system|microkernel/mach/IPC]].
+
# See Also
diff --git a/irc.mdwn b/irc.mdwn
index 6e97c7df..66f3c4c4 100644
--- a/irc.mdwn
+++ b/irc.mdwn
@@ -1,61 +1,69 @@
-[[meta title="IRC"]]
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009,
+2010, 2011 Free Software Foundation, Inc."]]
-While all official development takes place on the mailing lists and the Savannah trackers,
-a lot of discussions are had on IRC as well. Everybody is welcome to join and follow these channels, but please
-respect the below guidelines if you want to participate.
+[[!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]]."]]"""]]
-# Asking Questions
-
-Please follow these [guidelines](http://catb.org/~esr/faqs/smart-questions.html)
-when asking your question. Namely: spend some time trying
-to solve the problem on your own (e.g., [search the web](http://www.google.com),
-use this wiki, etc.), show us that you did so when you
-ask your question, and provide as many relevant details as possible
-reproducing them as exactly as possible.
+[[!meta title="IRC"]]
-# Staying On-Topic
+There are some IRC channels where Hurd topics are discussed.
-Please try to stay on topic.
+Everybody is welcome to join and participate in the discussions, but please
+respect the below guidelines if you want to participate.
-* emacs vs. vi **is not** on topic
-* If it is appropriate for a **slashdot comment**, it's **not appropriate**
- here
-* why GNU sucks is **off-topic**
-* when the next release of the Hurd will be **is inappropriate**
-* you should not advocate your favorite **GNU/Linux** ditribution
+Please try to stay on topic. We're not interested in Emacs vs. vi discussions,
+we don't want to hear why you think that the GNU project sucks, or what your
+favorite GNU/Linux distribution is.
-# Pasting Logs
+[[!inline pages=asking_questions raw=yes feeds=no]]
Sometimes providing a log or some other excerpt of text can
-help solve a problem or answer a question. **Do not** paste
-the log in the channel itself. Instead use a
+help solve a problem or answer a question. Do not paste
+the log in the channel itself if it's more than a few lines. Instead use a
[paste bin](http://paste.debian.net).
-# Rich Text
-
-Don't use it. Don't use colors. Don't use bold. Don't use emphasis.
+<a name="regular_meetings"></a>
+# Regular Meetings
-# Greeting
+Starting in early 2008, there have been regular IRC meetings held between the
+(now former) [[Google Summer of Code|community/gsoc]] students and their
+mentors. These meetings turned out to considerably help student-mentor
+interactions, and other developers regularely took part, too.
+For this reason, we decided to continue having these meetings, even if it's not
+currently Google Summer of Code time.
+Currently, the meetings take place in the **`#hurd` channel every
+Wednesday at 19:00 UTC** and are open to any interested party. So,
+everyone, take your chance to chat with GNU Hurd developers!
-If you never contribute to the discussion, there is no need
-to always greet the channel when you enter and before leave.
# Channels
-All Hurd IRC channels are hosted on [Freenode.net](http://freenode.net/).
+## Freenode
+
+`irc.freenode.net`, <http://freenode.net/>
+
+ * `#hurd`, the official GNU Hurd IRC channel. Some of the Hurd developers
+ and users hang out there. [Logs](http://richtlijn.be/~larstiq/hurd/).
+
+ * `#hurdfr`, the French chapter.
+
+ * `#archhurd`, [[hurd/running/Arch_Hurd]].
+ [Logs](http://files.archhurd.org/irclogs).
+
+
+## OFTC
-* #hurd - The official Hurd IRC channel. Some of the Hurd developers and users hang out there, and discussions about GNU Hurd, GNU/Hurd and
-Debian GNU/Hurd are had there.
+`irc.oftc.net`, <http://www.oftc.net/>
-Local user channels include:
+ * `#debian-hurd`, [[Debian GNU/Hurd|hurd/running/debian]].
-* #hurd-it - Italian
-* #hurd-es - Spanish
-* #hurdfr - French
-* #hurd-de - German
-* #hurd.in - Indian regional languages(but primarily English)
-# Channel logs
+# Related
-* [#hurd logs](http://richtlijn.be/~larstiq/hurd/)
+ * [[Contact_us]].
diff --git a/isolation.mdwn b/isolation.mdwn
index f43ae3d6..638085e6 100644
--- a/isolation.mdwn
+++ b/isolation.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
When two [[principal]]s cannot affect each other, they are said to
be isolated from one another. Strictly speaking, if two principals
diff --git a/kernel.mdwn b/kernel.mdwn
new file mode 100644
index 00000000..8190660e
--- /dev/null
+++ b/kernel.mdwn
@@ -0,0 +1,21 @@
+[[!meta copyright="Copyright © 2004, 2006, 2007, 2008, 2010 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]]."]]"""]]
+
+The kernel of an operating system is a fundamental program which provides
+essential resources from the hardware of the computer to other programs.
+
+A kernel typically runs all the time and remains resident in main memory.
+
+The amount of functionality and resources which it provides vary tremendously.
+
+ * [[microkernel]]
+
+ * [[UNIX]]
diff --git a/libpthread.mdwn b/libpthread.mdwn
new file mode 100644
index 00000000..b31876b3
--- /dev/null
+++ b/libpthread.mdwn
@@ -0,0 +1,30 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="POSIX Threading Library"]]
+
+
+# Sources
+
+<http://git.savannah.gnu.org/cgit/hurd/libpthread.git/>
+
+
+# Specifics
+
+Porting libpthread to a specific architecture is non-trivial.
+
+Our libpthread is currently used by / ported to the [[Hurd]] on [[GNU
+Mach|microkernel/mach/gnumach]], some [[microkernel/L4]] variants, and
+[[microkernel/Viengoos]].
+
+
+# Open Issues
+
+[[!inline pages=tag/open_issue_libpthread raw=yes feeds=no]]
diff --git a/license.html b/license.html
deleted file mode 100644
index 9b2ddd4f..00000000
--- a/license.html
+++ /dev/null
@@ -1,5 +0,0 @@
-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]].
diff --git a/license.mdwn b/license.mdwn
new file mode 100644
index 00000000..0f7bf9bd
--- /dev/null
+++ b/license.mdwn
@@ -0,0 +1,6 @@
+[[!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]]."]]
diff --git a/liedtke.mdwn b/liedtke.mdwn
index ca55eaf3..8a204a32 100644
--- a/liedtke.mdwn
+++ b/liedtke.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Liedtke is the father of [[microkernel/L4]].
diff --git a/local.css b/local.css
index d38aec12..297a1e78 100644
--- a/local.css
+++ b/local.css
@@ -1,6 +1,6 @@
/* ikiwiki local style sheet
- Copyright © 2007, 2008 Free Software Foundation, Inc.
+ Copyright © 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
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
@@ -24,72 +24,120 @@
copyright assignment notice, buttons and footer are visible at once, without
having to scroll. This means that the text editing box should be resized in
height as needed (within limits, of course). --tschwinge
-
- (2) `.pagecopyright' and `.pagelicense' should get the spacing between them
- removed and should get some margins.
*/
+body
+{
+ font-family: "Bitstream Vera Sans", sans-serif;
+ padding: 0.5em;
+}
+
+p
+{
+ clear: left;
+}
hr
{
height: 1px;
border-style: none;
background-color: black;
- /* No idea, if this is ``just'' a Firefox bug (looks fine without the
- * following statement in konqueror), but it for sure inhibits the `hr's from
- * being shifted to the right. */
- margin-left: 0px;
+ margin-left: 0;
}
pre
{
margin-left: 3em;
- background-color: #e5e5e5;
+ font-weight: bold;
+ padding: 0.5em;
}
-/* Only have these colored blocks be as wide as they need be. */
-pre
+a
{
- float: left;
- padding: 0.5em;
- margin-bottom: 1.5em;
- margin-top: 0;
+ text-decoration: none;
}
-h1, h2, h3, h4, h5, h6, table, p, ol, ul, li, div, pre, hr
+a:hover
{
- clear: left;
+ border-bottom: 1px dotted blue;
}
-/* Format these elements table-like with the background of the upper element
- shinig through between the cells. TODO. This is currently achieved with
- ``border: white''. */
+/* Put these elements side by side. */
.pagedate,
.pagecopyright,
.pagelicense
{
display: table-cell;
- border-left: solid 7px white;
- border-right: solid 7px white;
+ padding: 0.15em;
}
-
-/* Nullify the paragraph tag following ``License:''. */
+.pagecopyright p,
.pagelicense p
{
display: inline;
}
+/* But add some spacing between them. */
+.pagedate + .pagecopyright,
+.pagedate + .pagelicense,
+.pagecopyright + .pagelicense,
+.pagecopyright + .pagedate,
+.pagelicense + .pagedate
+{
+ padding-left: 1em;
+}
.header
{
+ padding: 0.5em;
background-color: #f0f0f0;
}
-.actions
+.pageheader .actions
+{
+ background-color: #e7e7e7;
+ padding: 0em 0.5em 0.3em 0.5em;
+ border-top: 1px solid #999999;
+}
+
+.pageheader .actions .global
+{
+ max-width: 50%;
+ float: left;
+ margin-right: 3em;
+}
+
+.pageheader .actions .per_page ul:before
+{
+ font-style: oblique;
+ content: "This page:";
+}
+
+.pageheader .actions ul
+{
+ border: none;
+ padding-top: 0.7em;
+}
+
+.pageheader .actions li
+{
+ padding: 0.7em 0.7em 0.4em 0.7em;
+ border: 1px solid #e7e7e7;
+ border-top: 1px solid #999999;
+}
+.pageheader .actions li:hover
{
background-color: #f0f0f0;
+ border: 1px solid #999999;
+ border-top: 1px solid #f0f0f0;
+ -moz-border-radius-bottomleft: 0.8em;
+ -moz-border-radius-bottomright: 0.8em;
+}
+
+#content
+{
+ padding: 0.5em;
}
-#sidebar
+.sidebar
{
background-color: #f0f0f0;
}
@@ -110,30 +158,76 @@ h1, h2, h3, h4, h5, h6, table, p, ol, ul, li, div, pre, hr
}
-/* Variable width. */
-#sidebar
+/* Placement. */
+.sidebar
{
- width: auto;
- /* ikiwiki's default for `width'. */
- min-width: 20ex;
+ margin-left: 20px;
}
/* Less indentation for list items. */
-#sidebar ul
+.sidebar ul
{
padding-left: 2ex;
}
-#sidebar ul ul
+.sidebar ul ul
{
padding-left: 2.5ex;
}
/* Make the logo appear centered */
-#sidebar img {
+.sidebar img {
display: block;
margin-left: auto;
margin-right: auto;
}
+/* News items on the front page. */
+#feedlink,
+.newsitem
+{
+ margin-bottom: 0.2em;
+}
+
+.newsitem
+{
+ border: 1px solid grey;
+ overflow: auto;
+}
+.newsitem .newsitemheader .header
+{
+ max-width: 30%;
+ float: left;
+ margin-right: 1em;
+ border-bottom: 1px solid grey;
+ border-right: 1px solid grey;
+}
+.newsitem .header,
+.newsitem .author
+{
+ font-size: small;
+ font-style: italic;
+}
+.newsitem .actions
+{
+ font-size: small;
+}
+.newsitem .actions ul
+{
+ border-bottom-style: none;
+ padding: 0.5em 0em;
+ line-height: 1;
+}
+.newsitemcontent
+{
+ padding-left: 0.2em;
+ padding-top: 0.1em;
+
+}
+.newsitemcontent p
+{
+ margin: 0.3em;
+}
+
+
.table_style_1
{
text-align: left;
@@ -160,3 +254,33 @@ h1, h2, h3, h4, h5, h6, table, p, ol, ul, li, div, pre, hr
border-width: thin;
border-style: dotted;
}
+
+#statements
+{
+ display: table;
+}
+.statement-title
+{
+ text-align: center;
+ font-weight: bold;
+}
+#what-is
+{
+ display: table-cell;
+ width: 50%;
+ vertical-align: top;
+ text-align: justify;
+ padding-right: 1ex;
+ padding-top: 0.3em;
+ padding-bottom: 0.3em;
+}
+
+#mission
+{
+ display: table-cell;
+ vertical-align: top;
+ text-align: justify;
+ padding-left: 1em;
+ padding-top: 0.3em;
+ padding-bottom: 0.3em;
+}
diff --git a/logo.mdwn b/logo.mdwn
new file mode 100644
index 00000000..aae80561
--- /dev/null
+++ b/logo.mdwn
@@ -0,0 +1,25 @@
+[[!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]]."]]"""]]
+
+The famous *Hurd Boxes* logo is available at
+<http://www.gnu.org/graphics/hurd_mf.html>.
+
+
+On some lonely Wednesday, Colin Leitner and [[Thomas_Schwinge|tschwinge]]
+converted these four boxes from the [original METAFONT
+sources](http://www.gnu.org/graphics/hurd.mf) to
+[[hand-written_SVG_code|boxes-redrawn.svg]].
+
+[[!img boxes-redrawn.png]]
+
+
+This symbol is also being used as a favicon for this web site.
+
+[[!img /favicon.ico]]
diff --git a/logo.png b/logo.png
deleted file mode 100644
index 2090f9db..00000000
--- a/logo.png
+++ /dev/null
Binary files differ
diff --git a/hurd/logo/boxes-redrawn.png b/logo/boxes-redrawn.png
index fd26a87e..fd26a87e 100644
--- a/hurd/logo/boxes-redrawn.png
+++ b/logo/boxes-redrawn.png
Binary files differ
diff --git a/hurd/logo/boxes-redrawn.svg b/logo/boxes-redrawn.svg
index c0a7e460..c0a7e460 100644
--- a/hurd/logo/boxes-redrawn.svg
+++ b/logo/boxes-redrawn.svg
diff --git a/lttng.mdwn b/lttng.mdwn
new file mode 100644
index 00000000..840312c4
--- /dev/null
+++ b/lttng.mdwn
@@ -0,0 +1,35 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta title="Linux Trace Toolkit Next Generation (LTTng)"]]
+
+[[!tag open_issue_hurd open_issue_gnumach]]
+
+# Overview
+
+ * {{$toupin_lttng_2011}}
+
+
+# Related
+
+ * [[community/gsoc/project_ideas/dtrace]]
+
+ * [[SystemTap]]
+
+
+[[!ymlfront data="""
+
+toupin_lttng_2011:
+
+ Dominique Toupin's article [*Using Tracing to Diagnose or Monitor
+ Systems*](http://www.computer.org/cms/Computer.org/ComputingNow/homepage/2011/0111/rW_SW_UsingTracing.pdf)
+ (IEEE Software, January / February 2011)
+
+"""]]
diff --git a/mailing_lists.mdwn b/mailing_lists.mdwn
index 66ae1f58..ff4dab9f 100644
--- a/mailing_lists.mdwn
+++ b/mailing_lists.mdwn
@@ -1,10 +1,18 @@
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+2011 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]]."]]"""]]
+
+
# On Posting
-Before asking a question on a list, first make an effort to find the answer
-to your question. When you ask your question, (1) be details, and (2) demonstrate
-that you have made an effort, e.g., "I am having trouble frobbing the foo. I
-searched the web and only found information regarding how to frob a bar, but
-that seems unrelated."
+[[!inline pages=asking_questions raw=yes feeds=no]]
List etiquette is to cc the sender and anyone **actively** involved in the
discussion. Some people don't like this and they set their reply-to header
@@ -14,29 +22,29 @@ It is rarely appropriate to cc multiple lists. Sometimes it is. In that case,
do so. If in doubt, don't; just choose the single most appropriate list.
When replying to others, please don't top-post and trim the existing text to
-quote only the sections you're actually replying to. See [[wikipedia
-Posting_style]] for further reading, especially [[wikipedia
-Posting_style#Inline_replying]].
+quote only the sections you're actually replying to. See [[!wikipedia
+Posting_style]] for further reading, especially [[!wikipedia
+Posting_style#Interleaved_style]].
Also see these general notes about [[community/communication]].
# Main Lists
-The lists are [[unmoderated]] and most of them are hosted on
-<http://lists.gnu.org/>. Try to post to the appropriate mailing list.
+Most of these lists are [[unmoderated]], and most of them are hosted on
+<http://lists.gnu.org/>.
Some of the Hurd user groups listed on [[community]] also host additional
mailing lists.
-<!-- TODO. Need some real ikiwiki way of adding such anchors. -->
-
<a name="bug-hurd"></a>
## bug-hurd
+<bug-hurd@gnu.org>
<http://lists.gnu.org/mailman/listinfo/bug-hurd>
-Technical discussion and bug reports; main development list.
+Technical discussion and bug reports; main development list. If you want to
+[[*contribute*|contributing]], please meet us here.
<a name="hurd-devel"></a>
## hurd-devel
@@ -51,26 +59,30 @@ Subscribe to [[hurd-devel-readers]] instead.
<http://lists.gnu.org/mailman/listinfo/hurd-devel-readers>
-This list is a read-only mirror of [[hurd-devel]]. In contrast to subscribing
-to the latter, everyone is free to subscribe to this read-only list.
+This list is a read-only mirror of [[hurd-devel]]. In contrast to the former,
+everyone is free to subscribe to this read-only list.
<a name="help-hurd"></a>
## help-hurd
+<help-hurd@gnu.org>
<http://lists.gnu.org/mailman/listinfo/help-hurd>
-Hurd-specific questions; for users of the Hurd.
+Hurd-specific questions, for users of the Hurd. If you need help with [[*using
+the Hurd*|hurd/running]], please ask on this list.
<a name="web-hurd"></a>
## web-hurd
+<web-hurd@gnu.org>
<http://lists.gnu.org/mailman/listinfo/web-hurd>
-Discussion of the <http://hurd.gnu.org/> website and this wiki.
+Discussion of the <http://hurd.gnu.org/> web site.
<a name="l4-hurd"></a>
## l4-hurd
+<l4-hurd@gnu.org>
<http://lists.gnu.org/mailman/listinfo/l4-hurd>
Discussion regarding a possible [[design_successor|hurd/ng]] to the Hurd.
@@ -78,6 +90,7 @@ Discussion regarding a possible [[design_successor|hurd/ng]] to the Hurd.
<a name="debian-hurd"></a>
## debian-hurd
+<debian-hurd@lists.debian.org>
<http://lists.debian.org/debian-hurd/>
Discussion around and questions regarding the
@@ -86,10 +99,21 @@ Discussion around and questions regarding the
<a name="gnu-system-discuss"></a>
## gnu-system-discuss
+<gnu-system-discuss@gnu.org>
<http://lists.gnu.org/mailman/listinfo/gnu-system-discuss>
Discussion about the [[GNU_system|hurd/running/gnu]].
+<a name="libc-alpha"></a>
+## libc-alpha
+
+<libc-alpha@sourceware.org>
+<http://sourceware.org/ml/libc-alpha/>
+
+Discussion about [[glibc]], where the Hurd's POSIX et al. interfaces are
+implemented, amongst a lot of other bits and pieces. This list is *moderated*,
+but on-topic development topics will generally be accepted.
+
# Spam
@@ -103,5 +127,4 @@ spam-rejection techniques being used today.
# Related
- * [[IRC]]
- * [[Trackers]]
+ * [[Contact_us]].
diff --git a/mailing_lists/bug-hurd.mdwn b/mailing_lists/bug-hurd.mdwn
index 11d4dfd1..ee803d7d 100644
--- a/mailing_lists/bug-hurd.mdwn
+++ b/mailing_lists/bug-hurd.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta redir=mailing_lists#bug-hurd]]
+[[!meta redir=mailing_lists#bug-hurd]]
diff --git a/mailing_lists/debian-hurd.mdwn b/mailing_lists/debian-hurd.mdwn
index 4df9e593..4b8aa5c0 100644
--- a/mailing_lists/debian-hurd.mdwn
+++ b/mailing_lists/debian-hurd.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta redir=mailing_lists#debian-hurd]]
+[[!meta redir=mailing_lists#debian-hurd]]
diff --git a/mailing_lists/gnu-system-discuss.mdwn b/mailing_lists/gnu-system-discuss.mdwn
index 30f22eab..d966e172 100644
--- a/mailing_lists/gnu-system-discuss.mdwn
+++ b/mailing_lists/gnu-system-discuss.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta redir=mailing_lists#gnu-system-discuss]]
+[[!meta redir=mailing_lists#gnu-system-discuss]]
diff --git a/mailing_lists/help-hurd.mdwn b/mailing_lists/help-hurd.mdwn
index ee7bc5e1..7e283561 100644
--- a/mailing_lists/help-hurd.mdwn
+++ b/mailing_lists/help-hurd.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta redir=mailing_lists#help-hurd]]
+[[!meta redir=mailing_lists#help-hurd]]
diff --git a/mailing_lists/hurd-devel-readers.mdwn b/mailing_lists/hurd-devel-readers.mdwn
index bb2b2fb3..0476c501 100644
--- a/mailing_lists/hurd-devel-readers.mdwn
+++ b/mailing_lists/hurd-devel-readers.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta redir=mailing_lists#hurd-devel-readers]]
+[[!meta redir=mailing_lists#hurd-devel-readers]]
diff --git a/mailing_lists/hurd-devel.mdwn b/mailing_lists/hurd-devel.mdwn
index 63299691..26ca1c33 100644
--- a/mailing_lists/hurd-devel.mdwn
+++ b/mailing_lists/hurd-devel.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta redir=mailing_lists#hurd-devel]]
+[[!meta redir=mailing_lists#hurd-devel]]
diff --git a/mailing_lists/l4-hurd.mdwn b/mailing_lists/l4-hurd.mdwn
index 1c326586..493c38b6 100644
--- a/mailing_lists/l4-hurd.mdwn
+++ b/mailing_lists/l4-hurd.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta redir=mailing_lists#l4-hurd]]
+[[!meta redir=mailing_lists#l4-hurd]]
diff --git a/mailing_lists/libc-alpha.mdwn b/mailing_lists/libc-alpha.mdwn
new file mode 100644
index 00000000..2f997922
--- /dev/null
+++ b/mailing_lists/libc-alpha.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta redir=mailing_lists#libc-alpha]]
diff --git a/mailing_lists/unmoderated.mdwn b/mailing_lists/unmoderated.mdwn
index 14a407b1..385f2615 100644
--- a/mailing_lists/unmoderated.mdwn
+++ b/mailing_lists/unmoderated.mdwn
@@ -1,12 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2011 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
In fact the lists *are* moderated for users that post from not-subscribed email
addresses. However, this moderation should be transparent to the poster, you
@@ -14,6 +15,8 @@ only might notice some additional delay until your message shows up on the
list, as it has to be handled manually. Note that this is a one-time delay, as
the address will be added to a white-list, so that further messages from the
same sending address will get through immediatelly.
+The same holds for people who are sending their first message after subscribing
+to a list. These two measures greatly help to keep the lists' spam level low.
So, to initiate a discussion you do not need to subscribe to the mailing list
in question. And people are very much encouraged to maintain the CC
diff --git a/mailing_lists/web-hurd.mdwn b/mailing_lists/web-hurd.mdwn
index 7a1abeb2..f449205f 100644
--- a/mailing_lists/web-hurd.mdwn
+++ b/mailing_lists/web-hurd.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta redir=mailing_lists#web-hurd]]
+[[!meta redir=mailing_lists#web-hurd]]
diff --git a/mechanism.mdwn b/mechanism.mdwn
index 6a96c656..dddb234b 100644
--- a/mechanism.mdwn
+++ b/mechanism.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
The Collaborative International Dictionary of English v.0.48
defines a mechanism as:
@@ -20,7 +20,7 @@ As mechanisms determine the type of result, they necessarily
impose some [[policy]] (rules). Mechanisms that are referred
to as policy-free are those that minimally impose policy.
-A process can be used to encapsulate a program instance. On Unix,
+A process can be used to encapsulate a program instance. On [[Unix]],
a process is associated with a UID. This UID, in part, determines
what the process is authorized to do. On a [[microkernel]],
the policy that controls what resources a process may access
diff --git a/media_appearances.mdwn b/media_appearances.mdwn
new file mode 100644
index 00000000..61e74840
--- /dev/null
+++ b/media_appearances.mdwn
@@ -0,0 +1,55 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+This is a collection of some Hurd-related media appearances.
+
+A lot of stuff is missing here.
+
+# 2011
+
+ * {{$gnu#gnustatus-2011-01}}
+
+# 2010
+
+## August
+
+ * DebConf10: {{$community/meetings/debconf10#banck_hurd}}
+
+## July
+
+ * GNU Hackers Meeting in the Hague: {{$community/meetings/ghm2010#walfield_hurd}}
+
+ * Koen Vervloesem: [*The Hurd: GNU's quest for the perfect
+ kernel*](http://lwn.net/Articles/395150/)
+
+ Follow-up discussion:
+
+ * <http://www.osnews.com/comments/23827>
+
+ * Richard Hillesley: [*GNU HURD: Altered visions and lost
+ promise*](http://www.h-online.com/open/features/GNU-HURD-Altered-visions-and-lost-promise-1030942.html)
+ ([German
+ translation](http://www.heise.de/open/artikel/GNU-HURD-Veraenderte-Visionen-und-verworfene-Versprechen-1046753.html))
+
+ Follow-up discussion, some of it valid and constructive criticism, some of
+ it less so:
+
+ * <http://lwn.net/Articles/394295/>
+ * <http://www.reddit.com/r/linux/comments/ckjt2/gnu_hurd_altered_visions_and_lost_promise/>
+ * <http://www.reddit.com/r/programming/comments/ckjud/the_hurd_altered_visions_and_lost_promise/>
+ * <http://www.osnews.com/comments/23511>
+ * <http://news.ycombinator.com/item?id=1474941>
+
+# 2004
+
+ * Marcus Brinkmann, *The GNU Hurd - Lessons and Perspective*, from the
+ [OpenWeekend](http://openweekend.cz/) 2004 conference organized by the
+ Silicon Hill club.
+ <http://video.google.com/videoplay?docid=-7449462856350014702>
diff --git a/microkernel.mdwn b/microkernel.mdwn
index 82c6368c..edefddb7 100644
--- a/microkernel.mdwn
+++ b/microkernel.mdwn
@@ -1,12 +1,15 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+A *microkernel* is one kind of a [[kernel]] implementation.
[[Liedtke]] explains in [On Microkernel Construction](http://l4ka.org/publications/paper.php?docid=642)
that a microkernel attempts to minimize the mandatory part of the operating
@@ -19,8 +22,6 @@ The idea of a microkernel as explained above was first explored
by Per Brinch-Hansen in 1970 in
[The Nucleus of a Multiprogramming System](http://brinch-hansen.net/papers/1970a.pdf).
-Other notable microkernels include [[Hydra]], [[KeyKOS]], [[Eros]] and [[L4]].
-
An [introduction](http://www.cs.cornell.edu/Info/People/ulfar/ukernel/ukernel.html) by
Úlfar Erlingsson and Athanasios Kyparlis (from 1996) to microkernel concepts.
@@ -32,4 +33,23 @@ A 2002 article about [[microkernel_FUD|FUD]] (Fear, Uncertainty, Doubt).
[[FAQ]].
-[[Mach]].
+
+# Implementations
+
+ * [[Hydra]]
+
+ * [[KeyKOS]]
+
+ * [[Mach]] -- used by the GNU/Hurd
+
+ * [[EROS]]
+
+ * [[CapROS]]
+
+ * [[Coyotos]]
+
+ * [[L4]]
+
+ * [[Barrelfish]]
+
+ * [[Viengoos]]
diff --git a/microkernel/barrelfish.mdwn b/microkernel/barrelfish.mdwn
new file mode 100644
index 00000000..8cf5591b
--- /dev/null
+++ b/microkernel/barrelfish.mdwn
@@ -0,0 +1,24 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+<http://barrelfish.org/>
+
+ * {{$fof_plos09}}
+
+
+[[!ymlfront data="""
+
+fof_plos09:
+
+ "Pierre-Evariste Dagand, Andrew Baumann, Timothy Roscoe. Filet-o-Fish:
+ practical and dependable domain-specific languages for OS development. PLOS
+ '09, October 11, 2009, Big Sky, Montana, USA."
+
+"""]]
diff --git a/microkernel/coyotos.mdwn b/microkernel/coyotos.mdwn
new file mode 100644
index 00000000..fec023ba
--- /dev/null
+++ b/microkernel/coyotos.mdwn
@@ -0,0 +1,33 @@
+[[!meta copyright="Copyright © 2006, 2007, 2008, 2010, 2011 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]]."]]"""]]
+
+[[!meta title="Coyotos"]]
+
+[*Coyotos*](http://www.coyotos.org/) is a microkernel and OS and the successor
+of [[EROS]], that itself is the successor of [[KeyKOS]]. A more complete
+history can be found [here](http://www.coyotos.org/history.html). Its main
+objectives are to correcte some shortcomings of [[EROS]], demonstrate that an
+atomic kernel design scales well, and (eventually) to completely formally
+verify both the kernel and critical system components by writing them in a new
+language called [bitc](http://www.bitc-lang.org/).
+
+Coyotos is an orthogonally [[persistent|persistency]] pure [[capability]]
+system. It uses [[continuation]]-based unbuffered asynchronous [[IPC]]
+(actually it's synchronous [[IPC]] with asynchronous [[system calls]]).
+
+TODO: explain these terms and (more important) their consequences on system
+design.
+
+The coyotos microkernel specification can be found
+[here](http://www.coyotos.org/docs/ukernel/spec.html).
+
+There once was the idea of a GNU/Hurd [[port using the Coyotos
+microkernel|history/port_to_another_microkernel]], but this didn't come live.
diff --git a/microkernel/discussion.mdwn b/microkernel/discussion.mdwn
new file mode 100644
index 00000000..a5a73e18
--- /dev/null
+++ b/microkernel/discussion.mdwn
@@ -0,0 +1,24 @@
+[[!meta copyright="Copyright © 2011 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_documentation]]
+
+IRC, freenode, #hurd, 2011-07-26:
+
+ < antrik> Tekk_`: regarding microkernels: the basic idea, and really the
+ *only* fundamental difference, is that they isolate things in separate
+ address spaces. everything else goes back to this.
+ < antrik> benefits from the isolation generally fall into two groups: more
+ robustness (main focus of Minix3), and more flexibility (main focus of
+ Hurd)
+ < antrik> while it might also encourage some other good design choices,
+ these are secondary effects: such choices can also be implemented in a
+ monolithic architecture -- and not necessarily harder. just less obvious
+ in some cases...
diff --git a/microkernel/eros.mdwn b/microkernel/eros.mdwn
new file mode 100644
index 00000000..be1ca90a
--- /dev/null
+++ b/microkernel/eros.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2011 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_documentation]]
+
+<http://www.eros-os.org/>
+
+TODO. <http://www.eros-os.org/essays/reliability/paper.html>
diff --git a/microkernel/faq.mdwn b/microkernel/faq.mdwn
index 0e129095..fe259f05 100644
--- a/microkernel/faq.mdwn
+++ b/microkernel/faq.mdwn
@@ -1,17 +1,21 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2009, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title=Microkernel FAQ"]]
+[[!meta title="Microkernel FAQ"]]
-[[inline
+See also other [[/FAQ]].
+
+[[!inline
pages="microkernel/faq/* and !*/discussion"
show=0
+feeds=no
actions=yes
-rootpage=microkernel/faq" postformtext="Add a new item titled:"]]
+rootpage="microkernel/faq" postformtext="Add a new item titled:"]]
diff --git a/microkernel/faq/multiserver_microkernel.mdwn b/microkernel/faq/multiserver_microkernel.mdwn
index da690425..ca9b2179 100644
--- a/microkernel/faq/multiserver_microkernel.mdwn
+++ b/microkernel/faq/multiserver_microkernel.mdwn
@@ -1,15 +1,15 @@
-[[meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2008 Free Software
-Foundation, Inc."]]
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2008, 2009 Free
+Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="What is a Multiserver Microkernel?"]]
+[[!meta title="What is a Multiserver Microkernel?"]]
A Microkernel has nothing to do with the size of the kernel. Rather, it refers
to the functionality that the kernel provides. It is generally agreed that
@@ -22,5 +22,5 @@ use, but now, because the server runs in user space as the user that started
it, they may, for instance, mount an FTP filesystem in their home directory.
For more information about the design of the Hurd, read the paper by Thomas
-Bushnell, BSG: [Towards a new strategy on OS
-design](http://www.gnu.org/software/hurd/hurd-paper.html).
+Bushnell, BSG:
+[[Towards_a_New_Strategy_of_OS_Design|hurd-paper]].
diff --git a/microkernel/for_beginners.mdwn b/microkernel/for_beginners.mdwn
index aed436e8..ad50425e 100644
--- a/microkernel/for_beginners.mdwn
+++ b/microkernel/for_beginners.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
# Concepts
diff --git a/microkernel/fud.mdwn b/microkernel/fud.mdwn
index 68794e69..3f9229aa 100644
--- a/microkernel/fud.mdwn
+++ b/microkernel/fud.mdwn
@@ -1,5 +1,6 @@
-[[meta copyright="Copyright © 2002 Wolfgang Jährling and Jeroen Dekkers"]]
-[[meta license="Verbatim copying and distribution of this entire article is
+[[!meta copyright="Copyright © 2002 Wolfgang Jährling and Jeroen Dekkers"]]
+
+[[!meta license="Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved."]]
# The Microkernel Experiment is Going On
@@ -10,12 +11,24 @@ This article is a response to an [earlier article](http://www.linuxjournal.com/n
Miles Nordin claimed that microkernels are dead already. But this is not completely true. The first generation of microkernels, which were in fact no real microkernels, are dead. But there is a new generation, which uses a radically different strategy than the original (so-called) microkernels. Thus, microkernels are still a research topic, and today they look more promising than ever before. By now, this is just something we claim, but read on, and you'll find out why we do so.
-Out of our own experience, we can confirm that the first generation microkernel Mach is quite slow, but being microkernel independent is one of the goals of the Hurd and people are already working on porting the Hurd from Mach to the second generation microkernel L4. Those new second generation kernels aren't as slow as Mach and we think that one should not talk about the performance of microkernel based systems without having read at least some of the papers on L4. The L4 people did some interesting benchmarks, which indicate that one can get a lot of performance by making a microkernel really small. How is this supposed to work? Well, the microkernel provides very primitive, highly optimized operations, and applications use them to implement whichever way of interprocess communication is apropriate for them in an efficient way. By deciding this on a per-case basis, you get optimal performance for all applications.
+Out of our own experience, we can confirm that the first generation microkernel
+Mach is quite slow, but being microkernel independent is one of the goals of
+the Hurd and people are already working on porting the Hurd from Mach to the
+second generation microkernel L4. Those new second generation kernels aren't
+as slow as Mach and we think that one should not talk about the performance of
+microkernel based systems without having read at least some of the papers on
+L4. The L4 people did some interesting benchmarks, which indicate that one can
+get a lot of performance by making a microkernel really small. How is this
+supposed to work? Well, the microkernel provides very primitive, highly
+optimized operations, and applications use them to implement whichever way of
+inter-process communication is apropriate for them in an efficient way. By
+deciding this on a per-case basis, you get optimal performance for all
+applications.
But L4 takes this even further. For example, you can have schedulers in userspace. Therefore you can use a scheduler which is optimized for the specific tasks your system performs. With the Linux kernel, different schedulers are only possible by using a different source tree, thus you cannot switch at run-time and/or have different schedulers for different groups of processes.
Of course, microkernels still have some problems, mainly because we are bound to today's technology, and current processors have not been designed with microkernels in mind. On a processor that is not optimized for systems with monolithic kernels, where the currently still problematic overhead of context switches would vanish, microkernels would get another performance boost. This sounds like an excuse, but it is intended as a reminder about the fact that the problem is not the general concept of microkernels. However, the L4 people have done a lot of good hacks to work around all this and have reached reasonable performance already.
-All this could be discussed in arbitrary detail, but we won't do that now, as we have more urgent things to do than reacting on FUD about microkernels. So we will conclude by saying that it is too easy to claim that one design is fast and the other one is slow, but everything depends on how exactly a system is designed and implemented. Maybe microkernels will eventually turn out to be slower in almost any case; we doubt that, but who knows? But even then, a microkernel based system will offer enough other advantages so that people will prefer to use it in some cases. But on the other hand, history has shown that new concepts seldom replace old ones completely, but rather establish themselfes in addition to the old ones, therefore we will have the opportunity to argue about which concept is best at least for another couple of years.. or decades?
+All this could be discussed in arbitrary detail, but we won't do that now, as we have more urgent things to do than reacting on FUD about microkernels. So we will conclude by saying that it is too easy to claim that one design is fast and the other one is slow, but everything depends on how exactly a system is designed and implemented. Maybe microkernels will eventually turn out to be slower in almost any case; we doubt that, but who knows? But even then, a microkernel based system will offer enough other advantages so that people will prefer to use it in some cases. But on the other hand, history has shown that new concepts seldom replace old ones completely, but rather establish themselves in addition to the old ones, therefore we will have the opportunity to argue about which concept is best at least for another couple of years.. or decades?
If you are interested in research about the performance of microkernel based systems, visit <http://www.l4ka.org> and <http://os.inf.tu-dresden.de/L4/>
diff --git a/microkernel/l4.mdwn b/microkernel/l4.mdwn
new file mode 100644
index 00000000..7af5e6fc
--- /dev/null
+++ b/microkernel/l4.mdwn
@@ -0,0 +1,36 @@
+[[!meta copyright="Copyright © 2004, 2006, 2007, 2008, 2010, 2011 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]]."]]"""]]
+
+The [*L4* microkernel](http://l4ka.org/) is an attempt to create a very small
+high performace core which provides basic memory management, task and context
+switching, and little else.
+
+[L4Ka Pistachio Home](http://l4ka.org/projects/pistachio/).
+
+See [l4.verified](http://nicta.com.au/research/projects/l4.verified) for work
+on formally verifying an L4 microkernel.
+
+ * {{$sel4}}
+
+There was a GNU/Hurd [[port to L4|history/port_to_another_microkernel]], which
+is now stalled.
+
+
+[[!ymlfront data="""
+
+sel4:
+
+ "G. Klein, K. Elphinstone, G. Heiser, J. Andronick, D. Cock, P. Derrin,
+ D. Elkaduwe, K. Engelhardt, R. Kolanski, M. Norrish, T. Sewell, H. Tuch, and
+ S. Winwood. seL4: Formal verification of an OS kernel. In Proceedings of
+ the ACM Symposium on OS Principles, Big Sky, MT, USA, October 2009."
+
+"""]]
diff --git a/microkernel/mach.mdwn b/microkernel/mach.mdwn
index 078b531f..deaf6788 100644
--- a/microkernel/mach.mdwn
+++ b/microkernel/mach.mdwn
@@ -1,18 +1,92 @@
-[[img logo.png]]
+[[!meta copyright="Copyright © 2007, 2008, 2010 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]]."]]"""]]
Mach is a so-called first generation [[microkernel]]. It is the
microkernel currently used by the [[Hurd]].
-* [[Documentation]]
-* [[Concepts]]
-* [[History]] ([Torvalds, Tanenbaum Debate](http://www.dina.dk/~abraham/Linus_vs_Tanenbaum.html))
+ * [[Concepts]]
+
+ * [[Documentation]]
+
+ * [[History]]
+
+ * [Torvalds, Tanenbaum
+ Debate](http://www.dina.dk/~abraham/Linus_vs_Tanenbaum.html)
+
# Implementations
-* [[GNUMach]]
-* [[Mach/OskitMach]] - A Once Successor of Mach based on OSKit
-* [Apple's Darwin](http://developer.apple.com/darwin/) ([API](http://developer.apple.com/documentation/Darwin/Conceptual/KernelProgramming/index.html)) (**non-free**)
+ * [[GNU_Mach|gnumach]]
+
+ * [Apple's Darwin](http://developer.apple.com/darwin/)
+ ([API](http://developer.apple.com/documentation/Darwin/Conceptual/KernelProgramming/index.html))
+ (**non-free**)
+
# Related
-* [[Mach_Interface_Generator|mig]]
+ * [[Mach_Interface_Generator_(MIG)|mig]]
+
+
+[[!ymlfront data="""
+
+kernel_foundation_unix:
+
+ "M. Accetta, R. Baron, W. Bolosky, D. Golub, R. Rashid, A. Tevanian, and
+ M. Young, Mach: A New Kernel Foundation for UNIX Development, USENIX
+ Conference Proceedings, July 1986. Paper
+ [\[pdf\]](http://www.cs.toronto.edu/~demke/469F.06/Handouts/mach_usenix86.pdf)."
+
+kernel_interface:
+
+ "Mach 3 Kernel Interfaces. Open Software Foundation and Carnegie Mellon
+ University. Keith Loepere, Editor. NORMA-MK12: July 15, 1992. Book [\[ps
+ (HTTP)\]](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/osf/kernel_interface.ps),
+ [\[ps
+ (FTP)\]](ftp://ftp.cs.cmu.edu/afs/cs/project/mach/public/doc/osf/kernel_interface.ps)."
+
+kernel_principles:
+
+ "Mach 3 Kernel Principles. Open Software Foundation and Carnegie Mellon
+ University. Keith Loepere. NORMA-MK12: July 15, 1992. Book [\[ps
+ (HTTP)\]](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/osf/kernel_principles.ps),
+ [\[ps
+ (FTP)\]](ftp://ftp.cs.cmu.edu/afs/cs/project/mach/public/doc/osf/kernel_principles.ps)."
+
+server_interface:
+
+ "Mach 3 Server Writer’s Interfaces. Open Software Foundation and Carnegie
+ Mellon University. Keith Loepere, Editor. NORMA-MK12, user15: July 15,
+ 1992. Book [\[ps
+ (HTTP)\]](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/osf/server_interface.ps),
+ [\[ps
+ (FTP)\]](ftp://ftp.cs.cmu.edu/afs/cs/project/mach/public/doc/osf/server_interface.ps)."
+
+server_writer:
+
+ "Mach 3 Server Writer’s Guide. Open Software Foundation and Carnegie Mellon
+ University. Keith Loepere, Editor. NORMA-MK12, user15: July 15, 1992. Book
+ [\[ps
+ (HTTP)\]](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/osf/server_writer.ps),
+ [\[ps
+ (FTP)\]](ftp://ftp.cs.cmu.edu/afs/cs/project/mach/public/doc/osf/server_writer.ps)."
+
+vm:
+
+ "R. Rashid, A. Tevanian, M. Young, D. Golub, and R. Baron,
+ Machine-Independent Virtual Memory Management for Paged Uniprocessor and
+ Multiprocessor Architectures, 2nd ACM Symposium on Architectural Support for
+ Programming Languages and Operating Systems (ASPLOS), October 1987. Paper
+ [\[pdf\]](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.111.7918&rep=rep1&type=pdf),
+ presentation
+ [\[ppt\]](http://www2.cs.uh.edu/~paris/6360/PowerPoint/Mach.ppt)."
+
+"""]]
diff --git a/microkernel/mach/concepts.mdwn b/microkernel/mach/concepts.mdwn
index 04dbb1c6..0f7cbf00 100644
--- a/microkernel/mach/concepts.mdwn
+++ b/microkernel/mach/concepts.mdwn
@@ -1,6 +1,33 @@
-[[Mach]] is a first-generation [[microkernel]]. Mach's basic abstractions
-include [[address_space]]s in the form of [[task]]s, execution contexts in the
-form of [[thread]]s, [[IPC]], [[capabilities|capability]] in the form of [[port]]s, and
-[[memory_object]]s, which enable Mach's [[external_pager_mechanism]].
+[[!meta copyright="Copyright © 2002, 2003, 2007, 2010 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]]."]]"""]]
+
+[[Mach]] is a first-generation [[microkernel]].
+
+Mach's basic abstractions include [[virtual_address_space]]s in the form of
+[[task]]s, execution contexts in the form of [[thread]]s, [[IPC]],
+[[capabilities|capability]] in the form of [[port]]s, and [[memory_object]]s,
+which enable Mach's [[external_pager_mechanism]].
+
+Controlling [[task]]s, their [[virtual_address_space]], [[thread]]s, and other
+system objects in Mach is implemented by using [[port]]s, as opposed to other
+[[kernel]]s' [[system_call]] interface: almost all of the Mach API is
+implemented by sending [[message]]s to [[port]]s. Device drivers that reside
+in kernel space are controlled by ports, too.
Mach's [[API]] is well-[[documented|documentation]].
+
+[[!toggleable id=mach_kernel_principles text="""[[!template id=note
+text="*[[mach\_kernel\_principles|documentation]]*:
+{{$mach#kernel_principles}}"]]"""]]
+
+In particular the [[!toggle id=mach_kernel_principles
+text="[mach\_kernel\_principles]"]] book further elaborates on Mach's concepts
+and principles.
diff --git a/microkernel/mach/continuation.mdwn b/microkernel/mach/continuation.mdwn
new file mode 100644
index 00000000..7a3267f3
--- /dev/null
+++ b/microkernel/mach/continuation.mdwn
@@ -0,0 +1,24 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[Mach]] internally uses *continuation*s for kernel [[thread]] management.
+
+The advantage is that not a full kernel thread stack has to be preserved in
+case that a thread is about to enter a blocking state. This saves space. It
+is not clear this is still worthwhile given today's RAM offerings. (How many
+kernel threads are there, typically?)
+
+And, this would no longer be possible in case Mach were be made a
+[[preemptive|preemtion]] kernel. In the latter case, the kernel itself, that
+is, kernel threads can be preempted, and then their full state needs to be
+preserved.
+
+[[!tag open_issue_documentation]] <!-- Not linked to from any Mach page. Move
+to GNU Mach pages, as this is only an implementation detail? -->
diff --git a/microkernel/mach/discussion.mdwn b/microkernel/mach/discussion.mdwn
deleted file mode 100644
index 589e302d..00000000
--- a/microkernel/mach/discussion.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-## <a name="Maintenance_of_the_Mach_web"> Maintenance of the Mach web </a>
-
-**_Old discussions:_** [[WIKIHOMEURLMachTOPICrev13]]
-
-Interesting, for consistency sake I'll think about making your changes you made on the right hand side to the other web WebHome pages. I guess it's not critical that they are identical, but I was trying to keep them identical if possible. I also wanted it to be "light" enough feature wise that it doesn't overpower the page. You've added back a few of the features, so we obviously differ in how important you and I think these features are. That's OK, I'll think about it some more and we'll see what happens.
-
-Oh, I see you added back [[WebTopicList]] and [[WebPreferences]]. I purposely removed [[WebPreferences]] from the lists on the right because it has nothing to do with navigation. I also didn't think that people actually use topic names to navigate. If they do they could search for them. Keeping the number to four items instead of six and keeping the descriptions concise makes a big difference when I view the page.
-
-(goes off to think more...)
-
-and eat... ;-)
-
--- [[Main/GrantBow]] - 29 Dec 2002
-
-**_Reasons for my change:_**
-
-1. [[WebTopicList]] is a lot quicker than the [[WebIndex]] - brings down the load times and the load of the server
-2. [[WebPreferences]] - users might be curious to see what can be modified. Changes should of course only be made in their home topics, like in %WIKIUSERNAME%. However, the [[WebPreferences]] can serve as an inspiration. Therefore we should perhaps make sure only the [[Main/TWikiAdminGroup]] members can alter the \*Preferences topics.
-3. If you look closely I've also reordered the links. Shorter names first and long ones last, I tried to keep the descriptions brief and in proportional length as well.
-
-I don't know about you, but keeping the number of items to four rather than six doesn't really matter to me. The text is quite small and if it's the space we're after the [[WebStatistics]] does take up more than the navigation links.
-
--- [[Main/JoachimNilsson]] - 29 Dec 2002
diff --git a/microkernel/mach/documentation.mdwn b/microkernel/mach/documentation.mdwn
index 83e2d0e2..cc880ab6 100644
--- a/microkernel/mach/documentation.mdwn
+++ b/microkernel/mach/documentation.mdwn
@@ -1,17 +1,49 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+2010 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
- - [Meet Mach](http://www.stepwise.com/Articles/Technical/MeetMach.html), a
- summary of Mach's history and main concepts.
+ * Mach's [[concepts]].
- - OSF's [Kernel
- Interface](ftp://ftp.cs.cmu.edu/afs/cs/project/mach/public/doc/osf/kernel_interface.ps)
- - OSF's [Kernel
- Principles](ftp://ftp.cs.cmu.edu/afs/cs/project/mach/public/doc/osf/kernel_principles.ps)
+ * [*Meet Mach* by James
+ Scott](http://beefchunk.com/documentation/macosx-programming/Meet_Mach.pdf),
+ a summary of Mach's history and main concepts.
+
+ * *[[The_GNU_Mach_Reference_Manual|gnumach/reference_manual]]*.
+
+ * {{$mach#kernel_foundation_unix}}
+
+ * {{$mach#vm}}
+
+ * {{$mach#kernel_principles}}
+
+ * {{$mach#kernel_interface}}
+
+ * {{$mach#server_writer}}
+
+ * {{$mach#server_interface}}
+
+ * [*The Unofficial GNU Mach IPC beginner's
+ guide*](http://hurdextras.nongnu.org/ipc_guide/), an easy introduction to
+ Inter Process Comunication in the Mach microkernel by Manuel Pavón
+ Valderrama.
+
+ * [*Mach IPC without
+ MIG*](http://walfield.org/pub/people/neal/papers/hurd-misc/mach-ipc-without-mig.txt),
+ an exercise by Neal Walfield *to understand Mach IPC at one of its lowest
+ application levels*.
+
+ * [*ipc-hello.c*](http://walfield.org/pub/people/neal/papers/hurd-misc/ipc-hello.c):
+ *Hello world à la mach ipc*.
+
+ - [Porting and Modifying the Mach 3.0 Microkernel](http://shakthimaan.com/downloads/hurd/Porting%20and%20Modifying%20the%20Mach%203.0%20Microkernel.pdf)
+
+ - [An IO System for Mach](http://shakthimaan.com/downloads/hurd/An%20IO%20System%20for%20Mach.pdf)
+
+ - [A Programmers' Guide to Mach System Call](http://shakthimaan.com/downloads/hurd/A.Programmers.Guide.to.the.Mach.System.Calls.pdf)
diff --git a/microkernel/mach/external_pager_mechanism.mdwn b/microkernel/mach/external_pager_mechanism.mdwn
index 7ed1ca57..05a6cc56 100644
--- a/microkernel/mach/external_pager_mechanism.mdwn
+++ b/microkernel/mach/external_pager_mechanism.mdwn
@@ -1,91 +1,93 @@
-[[meta copyright="Copyright © 2002, 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2002, 2007, 2008, 2010, 2011 Free Software
+Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-Mach provides a so-called external pager [[mechanism]]. This
+Mach provides a so-called *external pager [[mechanism]]*. This
mechanism serves to separate *managing memory* from *managing
-content*. Mach does the former while user space tasks do the
+content*. Mach does the former while user-space processes do the
latter.
+[[!tag open_issue_documentation]] <!-- Should probably refer to {{$mach#vm}}.
+-->
+
# Introduction
-In Mach, a task's [[Mach/AddressSpace]] consists of references
-to [[Mach/MemoryObjects]]. A memory object is designated using
-a [[port]] (a port is just a [[capability]]) and
-implemented by a normal process.
+In Mach, a [[task]]'s [[virtual_address_space]] consists of references to
+[[memory_object]]s.
To associate a memory object with a portion of a task's
-address space, vm\_map is invoked a capability designating
+address space, `vm_map` is invoked on a capability designating
the task and passing a reference to the memory object
and the offset at which to install it. (The first time
a task maps an object, Mach sends an initialization message
to the server including a control capability, which it uses
to supply pages to the kernel.) This is essentially
-the same as mapping a file into an address space on Unix
-using mmap.
+the same as mapping a file into an address space on [[UNIX]]
+using `mmap`.
-When a task faults, Mach checks to see if there is a memory
+When a task [[faults|page_fault]], Mach checks to see if there is a memory
object associated with the fault address. If not, the task
-is sent an exception, which is normally further propagated
+is sent an [[exception]], which is normally further propagated
as a segmentation fault. If there is an associated memory
-object, Mach checks whether the corresponding page is in core.
-If it is, it installs the page and resumes the task. Mach
-then invokes the memory object with the memory\_object\_request
+object, Mach checks whether the corresponding [[page]] is in core.
+If it is, it installs the page and resumes the task. Mach
+then invokes the memory object with the `memory_object_request`
method and the page to read. The memory manager then fetches
or creates the content as appropriate and supplies it to
-Mach using the memory\_object\_supply method.
+Mach using the `memory_object_supply` method.
# Creating and Mapping a Memory Object
The following illustrates the basic idea:
-> ________
-> / \
-> | Mach |
-> \________/
-> /| / |\ \
-> (C) vm_map / / m_o_ready (E)\ \ (D) memory_object_init
-> / |/ (F) return \ \|
-> ________ ________
-> / \ -----> / \
-> | Client | (A) open | Server |
-> \________/ <----- \________/
-> (B) memory_object
-
-(A) The client sends an "open" rpc to the server.
+ ________
+ / \
+ | Mach |
+ \________/
+ /| / |\ \
+ (C) vm_map / / m_o_ready (E)\ \ (D) memory_object_init
+ / |/ (F) return \ \|
+ ________ ________
+ / \ -----> / \
+ | Client | (A) open | Server |
+ \________/ <----- \________/
+ (B) memory_object
+
+(A) The client sends an `open` [[RPC]] to the server.
(B) The server creates a memory object (i.e., a port receive right), adds
it to the port set that it is listening on and returns a capability (a port
send right) to the client.
(C) The client attempts to map the object into its address space using
-the vm\_map rpc. It passes a reference to the port that the server gave
+the `vm_map` RPC. It passes a reference to the port that the server gave
it to the vm server (typically Mach).
(D) Since Mach has never seen the object before, it queues a
-memory\_object\_init on the given port along with a send right (the
+`memory_object_init` on the given port along with a send right (the
memory control port) for the manager to use to send messages to the
kernel and also as an authentication mechanism for future
interactions: the port is supplied so that the manager will be able to
-identify from which kernel a given memory\_object\_* IPC is from.
+identify from which kernel a given `memory_object_*` IPC is from.
(E) The server dequeues the message, initializes internal data
structures to manage the mapping and then invokes the
-memory\_object\_ready method on the control object.
+`memory_object_ready` method on the control object.
(F) The kernel sees that the manager is ready, sets up the appropriate
-mappings in the client and then replies to the vm\_map rpc indicating
+mappings in the client's address space and then replies to the `vm_map` RPC indicating
success.
-There is nothing stopping others from playing "the kernel." This is
+There is nothing stopping others from playing *the kernel*. This is
not a security problem: clients must [[trust]] the server from whom they
obtain memory objects and also the servers with whom they share
the object. Multiple memory managers are a reality that should be
@@ -95,37 +97,37 @@ mappings etc.
# Resolving Page Faults
-> (G) Client ________
-> resumed / \
-> | Mach |
-> (A) Fault +----|------+ | \ (B) m_o_request (C) store_read
-> ____|___ \_____|__/ |\ \| ________ _________
-> / +---\-------+ \ / \ / \
-> | Client | (F) | Server |<===>| storeio |
-> \________/ m_o_supply \________/ \_________/
-> (E) return data | ^
-> | | (D) device_read
-> v |
-> ________
-> / Device \
-> | Driver |
-> \________/
-> | ^
-> | |
-> v
-> ____________
-> / Hardware \
-
-(A) The client does a memory access and faults. The kernel catches
+ (G) Client ________
+ resumed / \
+ | Mach |
+ (A) Fault +----|------+ | \ (B) m_o_request (C) store_read
+ ____|___ \_____|__/ |\ \| ________ _________
+ / +---\-------+ \ / \ / \
+ | Client | (F) | Server |<===>| storeio |
+ \________/ m_o_supply \________/ \_________/
+ (E) return data | ^
+ | | (D) device_read
+ v |
+ ________
+ / Device \
+ | Driver |
+ \________/
+ | ^
+ | |
+ v
+ ____________
+ / Hardware \
+
+(A) The client does a memory access and [[faults|page_fault]]. The kernel catches
the fault and maps the address to the appropriate memory object. It
-then invokes the memory\_object\_request method on the associated
+then invokes the `memory_object_request` method on the associated
capability. (In addition to the page to supply, it also supplies the
control port so that the server can determine which kernel
sent the message.)
-(B) The manager dequeues the message. On the Hurd, this is translated
-into a store\_read: a function in the libstore library which is used to
-transparently manage block devices. The storeio server starts off as
+(B) The manager dequeues the message. On the [[Hurd]], this is translated
+into a `store_read`: a function in the [[hurd/libstore]] library which is used to
+transparently manage block devices. The [[hurd/storeio]] server starts off as
a separate process, however, if the server has the appropriate
permission, the backing object can be contacted directly by the
server. This layer of indirection is desirable when, for instance, a
@@ -133,37 +135,37 @@ storeio running as root may want to only permit read only access to a
resource, yet it cannot safely transfer its handle to the client. In
this case, it would proxy the requests.
-(C) The storeio server contacts, for instance, a device driver to do
+(C) The storeio server contacts, for instance, a [[device_driver]] to do
the read. This could also be a network block device (the NBD server
in GNU/Linux), a file, a memory object, etc.
-(D) The device driver allocates an anonymous page from the default
-pager and reads the data into it. Once all of the operations are
+(D) The device driver allocates an [[anonymous_page]] from the
+[[default_pager]] and reads the data into it. Once all of the operations are
complete, the device returns the data to the client unmapping it from
its own address space at the same time.
-(E) The storeio transfers the page to the server. The page is still
+(E) The storeio server transfers the page to the server. The page is still
anonymous.
-(F) The manager does a memory\_object\_supply transferring the page to
+(F) The manager does a `memory_object_supply` transferring the page to
the kernel. Only now is the page not considered to be anonymous but
managed.
(G) The kernel caches the page, installs it in the client's virtual
-address space and finally, resumes the client.
+[[address_space]] and finally, resumes the client.
# Paging Data Out
-> Change manager Pager m_o_return store_write
-> \ _________ (B) __(A)__ (C) ________ (D) _______
-> S | / Default \ / \ / \ / \
-> W |<=>| Pager |<=>| Mach |==>| server |<=>| storeio |<=>
-> A | \_________/ \________/ \________/ \_______/
-> P |
-> /
+ Change manager Pager m_o_return store_write
+ \ _________ (B) __(A)__ (C) ________ (D) _______
+ S | / Default \ / \ / \ / \
+ W |<=>| Pager |<=>| Mach |==>| server |<=>| storeio |<=>
+ A | \_________/ \________/ \________/ \_______/
+ P |
+ /
-(A) The paging [[policy]] is implemented by Mach: servers just implement
+(A) The [[paging]] [[policy]] is implemented by Mach: servers just implement
the [[mechanism]].
(B) Once the kernel has selected a page that it would like to evict, it
@@ -172,10 +174,22 @@ if the server does not deallocate the page quickly enough, it cannot
cause a denial of service: the kernel will just later double page it
to swap (the default pager is part of the [[tcb]]).
-(C) Mach then invokes memory\_object\_return method on the control
-object. The server is expected to save the page free it in a timely
+(C) Mach then invokes `memory_object_return` <!-- doesn't exist --> method on the control
+object. The server is expected to save the page free <!-- ? --> it in a timely
fashion. The server is not required to send a response to the kernel.
-(D) The manager then transfers the data to the storeio which
+(D) The manager then transfers the data to the storeio server which
eventually sends it to disk. The device driver consumes the memory
-doing the equivalent of a vm\_deallocate.
+doing the equivalent of a `vm_deallocate`.
+
+
+# Issues
+
+ * [[open_issues/performance/io_system/read-ahead]]
+
+ * [[open_issues/performance/io_system/clustered_page_faults]]
+
+
+# GNU Hurd Usage
+
+Read about the [[Hurd's I/O path|hurd/io_path]].
diff --git a/microkernel/mach/gnumach.mdwn b/microkernel/mach/gnumach.mdwn
index 71681eed..d9ff6535 100644
--- a/microkernel/mach/gnumach.mdwn
+++ b/microkernel/mach/gnumach.mdwn
@@ -1,16 +1,18 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2001, 2002, 2007, 2008, 2011 Free Software
+Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-GNU Mach is currently used by the GNU [[Hurd]].
+GNU Mach is the microkernel that the GNU/Hurd system is based on.
-GNU Mach remains compatible with [[Mach]] 3.0.
+It is maintained by the Hurd developers for the GNU project and remains
+compatible with [[Mach]] 3.0.
The majority of GNU Mach's [[device_driver]]s are from Linux 2.0. They were
added using glue code, i.e., a Linux [[emulation]] layer in Mach.
@@ -20,10 +22,60 @@ GNU Mach runs on x86 machines. See the
[[ports]] to other architectures.
+# Advantages of GNU Mach
+
+GNU Mach is not the most advanced [[microkernel]] known to the planet, nor is
+it the fastest or smallest, but it has a rich set of [[interface]]s and some
+features which make it useful as the base of the [[Hurd]] system.
+
+ * **it's free software**
+
+ Anybody can use, modify, and redistribute it under the terms of the
+ [[GNU_General_Public_License_(GPL)|gpl]].
+
+ * **it's built to survive**
+
+ As a [[microkernel]], GNU Mach doesn't implement a lot of the features
+ commonly found in an operating system, but only the bare minimum that is
+ required to implement a full operating system on top of it. This means
+ that a lot of the operating system code is maintained outside of GNU Mach,
+ and while this code may go through a complete redesign, the code of the
+ microkernel can remain comparatively stable.
+
+ * **it's scalable**
+
+ Mach is particularly well suited for SMP and network cluster techniques.
+ Thread support is provided at the kernel level, and the kernel itself takes
+ advantage of that. Network transparency at the [[IPC]] level makes
+ resources of the system available across machine boundaries (with NORMA
+ IPC, currently not available in GNU Mach).
+
+ * **it exists**
+
+ The Mach microkernel is real software that works Right Now. It is not a
+ research or a proposal. You don't have to wait at all before you can start
+ using and developing it. Mach has been used in many operating systems in
+ the past, usually as the base for a single UNIX server. In the GNU system,
+ Mach is the base of a functional multi-server operating system, the
+ [[Hurd]].
+
+
+# Booting
+
+To actually use the kernel and boot the GNU operating system, you need a boot
+loader. Not all boot loaders are capable to boot the GNU system, you need one
+that supports the multiboot standard. The bootloader of the GNU system is
+[[GNU_GRUB|grub]], which supports a broad range of operating systems including
+GNU/Hurd.
+
+
# Development
-* [[Building]]
-* [[Debugging]]
-* [[Boot_Trace]]
-* [[Projects]]
- * [[Rules]]
+ * [[Reference_Manual]]
+ * [[Building]]
+ * [[Debugging]]
+ * [[Boot_Trace]]
+ * [[Memory_Management]]
+ * [[Projects]]
+ * [[Rules]]
+ * [[Open Issues|tag/open_issue_gnumach]]
diff --git a/microkernel/mach/gnumach/boot_trace.mdwn b/microkernel/mach/gnumach/boot_trace.mdwn
index a08384f0..1badf712 100644
--- a/microkernel/mach/gnumach/boot_trace.mdwn
+++ b/microkernel/mach/gnumach/boot_trace.mdwn
@@ -1,12 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2011 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
`if NCPUS > 1` stuff is not being considered so far.
@@ -215,6 +216,12 @@ is included in the section entitled
>> kern/bootstrap.c: bootstrap\_create
+>>> The [[grub/multiboot]] modules have been put somewhere into memory by
+>>> [[GRUB]]. The boot scripts are parsed. The modules' ELF image's `PT_LOAD`
+>>> sections are \`\`read'' (that is, `vm_allocate` and `copyout`) and turned
+>>> into real [[task]]s. The multiboot modules' memory regions can be
+>>> deallocated then.
+
>> [...]
>> vm\_pageout
diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn
index 27573b64..427fb083 100644
--- a/microkernel/mach/gnumach/building.mdwn
+++ b/microkernel/mach/gnumach/building.mdwn
@@ -1,9 +1,17 @@
-Additional to the following text, a further [[example]] has be posted.
+[[!meta copyright="Copyright © 2006, 2007, 2008, 2011 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]]."]]"""]]
-# Building [[GNUMach]] from Source
+# Building [[GNU_Mach|gnumach]] from Source
-If you want to build the [[GNUMach]] kernel yourself instead of just using a
+If you want to build the [[GNU_Mach|gnumach]] kernel yourself instead of just using a
pre-built binary, follow these instructions.
The unpacked source tree is around 20 MiB, and the build tree (with all drivers
@@ -11,104 +19,101 @@ enabled) is around 50 MiB.
## Getting the Source Code
-### Developers's RCS
+You can either use the git repository (see <http://git.savannah.gnu.org/cgit/hurd/>),
-See [here](http://www.gnu.org/software/hurd/gnumach-download.html#cvs).
+ $ git clone http://git.savannah.gnu.org/cgit/hurd/gnumach.git/
- $ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co -r gnumach-1-branch gnumach
-
-(Most probably you want to get hold of the *GNU Mach 1 branch* and not the
-trunk, which is also what we've done above.)
-
-You then have to create the automatically generatable files:
-
- $ ( cd gnumach && autoreconf --install )
-
-### What Debian is currently using
-
-See [here](http://packages.debian.net/source/unstable/gnumach).
+... or get the Debian sources, if you're using Debian. (See
+[here](http://packages.debian.net/source/unstable/gnumach).)
$ apt-get source gnumach
Please see the Debian [[running/debian/FAQ]] before using `apt-get source`.
-## Preparing for the Build
+## On Debian Systems:
-### ... on Debian systems
+### Preparing for the Build
-Building GNU Mach requires the *build-essential* and *fakeroot* packages, their
-dependencies and additional packages that are specified by the source gnumach
-package:
+Building GNU Mach requires the *build-essential* and *fakeroot* packages,
+and some additional dependencies specified by the gnumach source package:
# apt-get install build-essential fakeroot
# apt-get build-dep gnumach
-### ... on non-Debian systems
-
-Apart from the case that you only want to install GNU Mach's header files (see
-below), building GNU Mach requires you to have the Mach Interface Generator
-installed. See [[building_MIG|mig/building]] about how to do that, then come
-back here.
+### Building and Installing ... Debian `.deb` files
-Additionally, building GNU Mach requires a C compiler, a standard C library and
-your favourite flavor of awk (gawk) and GNU make.
+Change into the directory with the downloaded / unpacked GNU Mach sources,
-## Building and Installing
-
-### ... Debian `.deb` files
-
-Change into the directory with the downloaded / unpacked GNU Mach sources, e.g.
-
- $ cd gnumach-20050801
+ $ cd gnumach-XXXXXXXX
Start the build process with
$ dpkg-buildpackage -us -uc -b -rfakeroot
-[[GNUMach]] is now building. To use the new kernel, you must install the
+[[GNU_Mach|gnumach]] is now building. To use the new kernel, you must install the
resulting `.deb` package which is located one directory above the build
-directory and has a similar name as the build directory, e.g.
+directory and has a similar name as the build directory:
- # dpkg -i ../gnumach_20050801-4_hurd-i386.deb
+ # dpkg -i ../gnumach_XXXXXXXX-X_hurd-i386.deb
You can now reboot your computer and enjoy the new kernel.
-### [TODO]
+## On non-Debian Systems:
-GNU Mach should be built in a separate directory:
+### Preparing for the Build
- $ mkdir gnumach-build
- $ cd gnumach-build
+Building GNU Mach requires a C compiler, a _static_ 32 bit standard C library,
+your favourite flavor of awk (gawk) and GNU make.
-Find the path to your GNU Mach sources (`[...]/gnumach-1-branch`) and configure
-it:
+First, create the configuartion files:
- $ [...]/gnumach-1-branch/configure [TODO]
+ $ cd gnumach
+ $ autoreconf --install
-Build the kernel image:
+GNU Mach (and the associated headers) need be built in a separate build directory:
- $ make gnumach.gz
+ $ mkdir build
+ $ cd build
-Optionally run the (tiny) test suite:
+Run configure:
- $ make check
+ $ ../configure --prefix=
-You can then install and use `gnumach.gz`.
+If building on a 64 bit host system,
+you need a number of additional settings to force a 32 bit build:
-[TODO.]
+ $ CPP='gcc -m32 -E -x c -undef -ansi' CC='gcc -m32' LD='ld -melf_i386' ../configure --prefix= --host=i686-unknown-linux-gnu
-### Installing only the Header Files
+### Installing the Header Files First
-GNU Mach should be built in a separate directory:
+In order to build GNU Mach, you will need a working MIG.
+Building MIG in turn requires the GNU Mach header files to be already present.
+So for bootstrapping MIG, you have to install the Mach headers first,
+for example into `~/gnu/include/`:
- $ mkdir gnumach-build
- $ cd gnumach-build
+ $ make DESTDIR=~/gnu install-data
-Find the path to your GNU Mach sources (`[...]/gnumach-1-branch`) and configure
-it:
+Now you can [[build_MIG|mig/gnu_mig/building]].
+Once you are done with that, come back here to finish the Mach build.
- $ [...]/gnumach-1-branch/configure --prefix=
+### Building and Installing
-Install the header files into e.g. `~/gnu/include/`:
+With MIG present, now build the kernel image:
+
+ $ make gnumach.gz
+
+Optionally run the (tiny) test suite:
+
+ $ make check
+
+It's a good idea to make a backup of the previously installed kernel, in case
+you can't boot using the new one. That way, you can restore it after booting
+from a rescue media (or mounting the disk image used by your vm).
+
+ # cp /boot/gnumach.gz /boot/gnumach.gz.bak
+
+GNU Mach can now be moved into place, typically `/boot/gnumach.gz`, so that you
+can boot your system with the new kernel.
+
+ # cp gnumach.gz /boot
- $ make DESTDIR=~/gnu install-data
diff --git a/microkernel/mach/gnumach/building/example.mdwn b/microkernel/mach/gnumach/building/example.mdwn
deleted file mode 100644
index 6da05c5b..00000000
--- a/microkernel/mach/gnumach/building/example.mdwn
+++ /dev/null
@@ -1,54 +0,0 @@
-[[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]]."]]"""]]
-
-## Compiling GNU Mach microkernel
-
-Host development system is IBM T41 running Debian Sarge 3.1r0a GNU/Linux.
-
-* gcc version: 3.3.5
-* GNU sed version: 4.1.2
-* GNU make version: 3.8
-* mig version: 1.3-4
-
-Obtained gnumach-1-branch sources from cvs:
-
- export CVS_RSH="ssh"
- cvs -z3 -d:ext:anoncvs@ savannah.gnu.org:/cvsroot/hurd co -r gnumach-1-branch gnumach
-
-Obtained mig_1.3-4_i386.deb from
-http://www.hadrons.org/~guillem/debian/pool/main/mig/. Installed it using dpkg:
-
- dpkg -i mig_1.3-4_i386.deb
-
-Entered into the gnumach sources and did the following for compilation:
-
- mkdir build
- cd build
- ../configure --host=i386-unknown-gnu0.2 --build=i586-pc-linux-gnu \
- --enable-kdb --enable-ide
- make
-
-The kernel file is created in the build directory. Move it to /boot on the
-testing x86 system Hurd partition. Rename it as gnumach1 and compress it:
-
- mv kernel gnumach1
- gzip gnumach1
-
-Add a new entry on the testing machine /boot/grub/menu.lst to boot the new
-kernel.
-
- title GNU Hurd K10 Compiled gnumach
- kernel (hd0,3)/boot/gnumach1.gz root=device:hd2s4 -s
- module (hd0,3)/hurd/ext2fs.static--multiboot-command-line=${kernel-command-line} \\
- --host-priv-port=${host-port} --device-master-port=${device-port} \\
- --exec-server-task=${exec-task} -T typed ${root} $(task-create)$(task-resume)
- module (hd0,3)/lib/ld.so.1 /hurd/exec $(exec-task=task-create)
-
-Reboot into the new compiled mygnumach1.gz kernel!
diff --git a/microkernel/mach/gnumach/debugging.mdwn b/microkernel/mach/gnumach/debugging.mdwn
index fa2a9d42..f657e7cc 100644
--- a/microkernel/mach/gnumach/debugging.mdwn
+++ b/microkernel/mach/gnumach/debugging.mdwn
@@ -1,22 +1,78 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009, 2011 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+Here are some hints to debug with GNU Mach.
+
+[[!toc levels=2]]
+
+
+# Kernel Debugger
Mach has a built-in kernel debugger.
[Manual](http://www.gnu.org/software/hurd/gnumach-doc/Kernel-Debugger.html).
+First, make sure to enable it. Either by using a pre-packaged gnumach-image-something-dbg, or by passing --enable-kdb to the ./configure invocation.
+
+Then, reproduce the issue again. If something like a kernel trap happens, you will end up in the GNU Mach debugger. Otherwise, type control-alt-d to make Mach enter it by hand.
+
+If you are running in kvm or qemu, it is convenient to use the curses frontend to be able to copy/paste.
+
+To get the register values, type
+
+ show registers
+
+To get a backtrace, type trace, which will print both function return addresses and function parameters, such as
+
+ 0x107cf1(8088488,5e,40000008,2aa008,0)
+ 0x1071bc(0,0,0,0,0)
+ 0x106831(24fe00,2000,b,800,0)
+
+Run the addr2line tool on the return addresses:
+
+ $ addr2line -i -f -e /boot/gnumach 0x107cf1 0x1071bc 0x106831
+
+This will print the source code lines of the backtrace.
+
+To examine the backtrace of some given thread, use
+
+ show all thread/u
+
+to get the whole listing of all tasks and threads. You can then use trace/t to trace a specific thread.
+
+Unfortunately, userland and kernelland use the same range of addresses, so one can not get userland traces easily. The Xen port uses different ranges, and in that case one can use trace/u to also get the userland trace.
+
+To examine a variable, use nm /boot/gnumach to get the address of the variable (e.g. 0x123400), and use
+
+ x 0x123400
+
+to read it. One can also write to it by using
+
+ w 0x123400
+
+Another interesting feature is watching a variable, by using
+
+ watch 0x123400
+
+and then type continue, to let Mach continue execution. The debugger will be entered again on any change in that variable. The watch is implemented in hardware, so it does not disturb or slow down execution at all.
+
+
+# GDB in QEMU
When you're [[running_a_system_in_QEMU|hurd/running/qemu]] you can directly
[use GDB on the running
-kernel](http://fabrice.bellard.free.fr/qemu/qemu-doc.html#SEC36).
+kernel](http://www.nongnu.org/qemu/qemu-doc.html#SEC48).
+# Code Inside the Kernel
+
Alternatively you can use an approach like this one: add the following code
snippet to `device/ds_routines.c`'s `ds_device_open` function, right at the top
of the function, and modify the code as needed.
@@ -55,6 +111,8 @@ This is especially useful if you need to manually trigger some stuff inside the
running kernel, as with the *D1* example.
+## Writing to the Screen Buffer
+
If you're doing real low level debugging, you might want to put variations of
the following snipped into the code, this code will write a `#` character at
line `[LINE]`, column `[COLUMN]` on the screen:
@@ -66,3 +124,14 @@ The call of `halt_cpu` will -- as the name suggests -- halt the system
afterwards. This might be what you want or it might not, but it is needed at
some place when running the kernel inside QEMU, as QEMU somehow decides not to
update its display buffer anymore under certain conditions.
+
+
+# Halting the CPU and Examining Registers
+
+IRC, freenode, #hurd, 2011-07-14:
+
+ <braunr> one ugly trick i use when printf isn't available is to halt the
+ cpu
+ <braunr> then use info registers to know where the cpu is halted
+ <braunr> and you'll know if you reached that code or not
+ <braunr> (info registers is a qemu command)
diff --git a/microkernel/mach/gnumach/hardware_compatibility_list.mdwn b/microkernel/mach/gnumach/hardware_compatibility_list.mdwn
index 09882467..874f5f07 100644
--- a/microkernel/mach/gnumach/hardware_compatibility_list.mdwn
+++ b/microkernel/mach/gnumach/hardware_compatibility_list.mdwn
@@ -1,12 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009, 2011 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
# CPU Architecture
@@ -28,7 +29,7 @@ Read about further [[ports]].
# Memory
-GNU Mach will use a maximum of 1 GiB of RAM. If your system has more,
+GNU Mach will use a maximum of 1.7 GiB of RAM. If your system has more,
the surplus will silently be ignored. (In past times, this would hinder GNU
Mach from booting at all, but this has been fixed, so you no longer need to
apply GRUB's `uppermem` directive.)
@@ -64,14 +65,14 @@ IEEE 1394 is not supported at this time
# Storage
All common IDE drives should work. Some drive geometries do not work,
-e.g. drives with hundreds of GiB of storage space. If you find a specific IDE
-drive that does not work, make a note of the model and technical specifications
-here.
+e.g. drives with hundreds of GiB of storage space, see [[!GNU_Savannah_bug
+26425]].
-[[toggle id="SATA" text="SATA drives may work in compatibility mode."]]
-<!-- Sure? --[[tschwinge]] -->
-[[toggleable id="SATA" text="""
+## SATA
+
+SATA drives may work in compatibility mode.
+
This is how booting a [[GNU/Hurd_system|hurd]] will typically fail if GNU Mach
couldn't connect to the hard disk, e.g., in a SATA system without IDE
compatibility mode:
@@ -81,7 +82,7 @@ compatibility mode:
There *may* be an option in the system's BIOS setup to configure enabling such
a compatibility mode.
-"""]]
+
# Device Drivers
diff --git a/microkernel/mach/gnumach/hardware_compatibility_list/discussion.mdwn b/microkernel/mach/gnumach/hardware_compatibility_list/discussion.mdwn
index 69ca3190..2b65956a 100644
--- a/microkernel/mach/gnumach/hardware_compatibility_list/discussion.mdwn
+++ b/microkernel/mach/gnumach/hardware_compatibility_list/discussion.mdwn
@@ -1,4 +1,33 @@
+[[!meta copyright="Copyright © 2007, 2008, 2011 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_documentation]]
+
Further information may still be found on
<http://www.nongnu.org/thug/gnumach_hardware.html>
and could perhaps be incorporated into that page.
--[[tschwinge]]
+
+
+# SATA
+
+IRC, freenode, +hurd, 2011-07-24
+
+ <braunr> youpi: concerning the ide compatibility problem, it seems some
+ bioses provide several modes
+ <braunr> youpi: "legacy ide" and "native ide"
+ <braunr> i don't know what native ide really means, but when debugging ide
+ probing in gnumach, it just looks like there is nothing to detect
+ <braunr> and even in this mode, linux uses the ahci driver
+ <youpi> apparently native means it still uses the IDE protocol, but
+ possibly with other IRQs
+ <youpi> i.e. you need a PCI driver to handle that
+ <braunr> ok
diff --git a/microkernel/mach/gnumach/hardwarecompatibilitylist.mdwn b/microkernel/mach/gnumach/hardwarecompatibilitylist.mdwn
deleted file mode 100644
index 8c67e3e0..00000000
--- a/microkernel/mach/gnumach/hardwarecompatibilitylist.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-[[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]]."]]"""]]
-
-[[meta redir=hardware_compatibility_list]]
diff --git a/microkernel/mach/gnumach/memory_management.mdwn b/microkernel/mach/gnumach/memory_management.mdwn
new file mode 100644
index 00000000..43b99d83
--- /dev/null
+++ b/microkernel/mach/gnumach/memory_management.mdwn
@@ -0,0 +1,82 @@
+[[!meta copyright="Copyright © 2011 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_documentation]]
+
+IRC, freenode, #hurd, 2011-02-15
+
+ <braunr> etenil: originally, mach had its own virtual space (the kernel
+ space)
+ <braunr> etenil: in order to use linux 2.0 drivers, it now directly maps
+ physical memory, as linux does
+ <braunr> etenil: but there is nothing similar to kmap() or vmalloc() in
+ mach, so the kernel is limited to its 1 GiB
+ <braunr> (3 GiB userspace / 1 GiB kernelspace)
+ <braunr> that's the short version, there is a vmalloc() in mach, but this
+ trick made it behave almost like a kmalloc()
+ <antrik> braunr: the direct mapping is *only* for the benefit of Linux
+ drivers?...
+ <braunr> also, the configuration of segments limits the kernel space
+ <braunr> antrik: i'm not sure, as i said, this is the short version
+ <braunr> antrik: but there is a paper which describes the integration of
+ those drivers in mach
+ <etenil> you mean the linux 2.0 drivers?
+ <antrik> braunr: I read it once, but I don't remember anything about the
+ physical mapping in there...
+ <antrik> etenil: well, originally it was 1.3, but essentially that's the
+ same...
+ <braunr> i don't see any other reason why there would be a direct mapping
+ <braunr> except for performance (because you can use larger - even very
+ lage - pages without resetting the mmu often thanks to global pages, but
+ that didn't exist at the time)
+
+IRC, freenode, #hurd, 2011-02-15
+
+ <antrik> however, the kernel won't work in 64 bit mode without some changes
+ to physical memory management
+ <braunr> and mmu management
+ <braunr> (but maybe that's what you meant by physical memory)
+
+IRC, freenode, #hurd, 2011-02-16
+
+ <braunr> antrik: youpi added it for xen, yes
+ <braunr> antrik: but you're right, since mach uses a direct mapped kernel
+ space, the true problem is the lack of linux-like highmem support
+ <braunr> which isn't required if the kernel space is really virtual
+
+
+---
+
+IRC, freenode, #hurd, 2011-06-09
+
+ <braunr> btw, how can gnumach use 1 GiB of RAM ? did you lower the
+ user/kernel boundary address ?
+ <youpi> I did
+ <braunr> 2G ?
+ <youpi> yes
+ <braunr> ok
+ <youpi> it doesn't make so much sense to let processes have 3G addressing
+ space when there can't be more that 1G physical memory
+ <braunr> that's sad for an operating system which does most things by
+ mapping memory eh
+ <youpi> well, if a process wants to map crazy things, 3G may be tight
+ already
+ <youpi> e.g. ext2fs
+ <braunr> yes
+ <youpi> so there's little point in supporting them
+ <braunr> we need hurd/amd64
+ <youpi> and there's quite some benefit in shrinking them to 2G
+ <youpi> yes
+ <youpi> actually even 2G may become a bit tight
+ <youpi> webkit linking needs about 1.5-2GiB
+ <youpi> things become really crazy
+ <braunr> wow
+ <braunr> i remember the linux support for 4G/4G split when there was enough
+ RAM to fill the kernel space with struct page entries
diff --git a/microkernel/mach/gnumach/ports.mdwn b/microkernel/mach/gnumach/ports.mdwn
index 00cdee8c..f114460c 100644
--- a/microkernel/mach/gnumach/ports.mdwn
+++ b/microkernel/mach/gnumach/ports.mdwn
@@ -1,15 +1,24 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009, 2011 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
* x86. This is the main port.
+
+ * [[Xen]]
+
* [PowerPC](http://www.pjbruin.dds.nl/hurd/). Is not in a usable state.
- * Alpha. Was once started, but isn't in a usable state either.
- * [[Xen]]
+ * Alpha: [project I](http://savannah.nongnu.org/projects/hurd-alpha), and
+ [project II](http://savannah.nongnu.org/projects/gnumach-alpha). Was once
+ started, but isn't in a usable state either.
+
+ * MIPS. Status completely unknown.
+
+ * [[open_issues/Mach_on_Top_of_POSIX]]. Status unknown.
diff --git a/microkernel/mach/gnumach/ports/xen.mdwn b/microkernel/mach/gnumach/ports/xen.mdwn
index 1c1cc40f..5fe73c06 100644
--- a/microkernel/mach/gnumach/ports/xen.mdwn
+++ b/microkernel/mach/gnumach/ports/xen.mdwn
@@ -1,29 +1,73 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009, 2011 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-/!\ Since GNU Mach doesn't handle PAE yet, you'll need a PAE-disabled hypervisor.
+[[!toc]]
-/!\ You need an already installed GNU/Hurd system.
-This also means that you'll currently need a PAE-disabled `dom0`.
-[[Stefan_Siegl|stesie]] is providing a PAE-disabled Linux kernel image at
-<http://brokenpipe.de/GnuHurd/XEN/>.
+# Xen dom0, hypervisor
+/!\ Now that GNU Mach handles PAE you can use a PAE-enabled hypervisor.
You can either get binaries at <http://youpibouh.thefreecat.org/hurd-xen/> or build them yourself.
-- Copy `gnumach-xen` and `hurd-modules` to your dom0 /boot.
+- Copy `gnumach-xen-pae` and `hurd-modules` to your dom0 /boot. If you still have a non-PAE hypervisor, use `gnumach-xen-nonpae` instead.
- Copy `hurd` into `/etc/xen`, edit it for fixing access to your hurd / and swap
-- Run `xm create -c hurd`, gnumach should get started.
+
+# GNU/Hurd system
+
+/!\ You need an already installed [[GNU/Hurd_system|hurd/running]].
+
+If you have a free partition, you can fdisk to type 0x83, create a filesystem using:
+
+ sudo mke2fs -b 4096 -I 128 -o hurd /dev/sda4
+
+Replace /dev/sda4 with your partition. Install and use crosshurd to setup a GNU/Hurd system on this partition.
+
+
+# /etc/xen/hurd configuration
+
+Here is a sample /etc/xen/hurd configuration
+
+ kernel = "/boot/gnumach-xen-pae"
+ memory = 256
+ disk = ['phy:sda4,hda,w']
+ extra = "root=device:hd0"
+ vif = [ '' ]
+ ramdisk = "/boot/hurd-modules"
+
+Do not give more than 580MB memory (due to bootstrap limitations, it's not easy
+to map more).
+
+Suggestions about [[networking_configuration]] are available.
+
+If you need stable MAC addresses, use a syntax like `vif = [
+'mac=00:16:3e:XX:XX:XX, bridge=br0' ]`.
+
+
+# Running Hurd with Xen
+
+To run Hurd with Xen, use:
+
+ xm create -c hurd
+
+and gnumach should get started. Proceed with native-install.
+
+ export TERM=mach
+ ./native-install
+
- If `xm` complains about networking (`vif could not be connected`), it's Xen scripts' fault, see Xen documentation for how to configure the network. The simplest way is network-bridge with fixed IPs (note that you need the bridge-utils package for this). You can also just disable networking by commenting the vif line in the config.
-- If `xm` complains `Error: (2, 'Invalid kernel', 'xc_dom_compat_check: guest type xen-3.0-x86_32 not supported by xen kernel, sorry\n')`, you most probably have a PAE-enabled hypervisor, and you just need to install and boot non-PAE hypervisor and kernel.
+- If `xm` complains `Error: (2, 'Invalid kernel', 'xc_dom_compat_check: guest type xen-3.0-x86_32 not supported by xen kernel, sorry\n')`, you most probably have a PAE-enabled hypervisor and a non-PAE gnumach. Either install and boot non-PAE hypervisor and kernel, or rebuilt gnumach in PAE mode.
+
+
+# Building from sources
If you want to generate these images, first get the `gnumach-1-branch-Xen-branch` branch from gnumach CVS.
Then look for "Ugly" in `kern/bootstrap.c`, how to generate `hurd-modules` is explained there, and you'll have to fix `EXT2FS_SIZE` and `LD_SO_SIZE` by hand.
@@ -33,10 +77,51 @@ Then use
make
The current `hurd-modules` was built from the debian packages `hurd 20070606-2` and `libc0.3 2.6.1-1`.
-/!\ This means that when using this image, your GNU/Hurd system also needs to be a glibc version 2.6-based one!
+/!\ This means that when using this image, your GNU/Hurd system also needs to be a glibc version 2.6 or later-based one!
+
+# `pv-grub`
+
+From Xen 4.0 on you can run the GNU Hurd directly using `pv-grub`,
+without the need to [prepare a special bootstrap
+image](http://youpibouh.thefreecat.org/hurd-xen/build_hurd-modules) (like an
+initrd).
+
+Download http://youpibouh.thefreecat.org/hurd-xen/pv-grub.gz into /boot, and use the following for instance:
+
+ kernel = "/boot/pv-grub.gz"
+ memory = 256
+ disk = ['phy:sda4,hda,w']
+ extra = "(hd0,1)/boot/grub/menu.lst"
+ vif = [ '' ]
+
+extra is now the path to the grub config file.
+
+# Partitions
+
+You will need the following notation for the gnumach root= parameter:
----
+root=part:2:device:hd0
+
+to access the second partition of hd0, for instance.
+
+You will also need to use the parted storeio module for the /dev entries, for instance:
+
+settrans -fgap /dev/hd0s1 /hurd/storeio -T typed part:1:device:hd0
+
+# Miscellaneous
[[Internals]].
-[[GNU_Savannah_task 5468]], [[GNU_Savannah_task 6584]].
+[[!GNU_Savannah_task 5468]], [[!GNU_Savannah_task 6584]].
+
+
+# Host-side Writeback Caching
+
+Optimization possible as it is with [[QEMU|hurd/running/qemu/discussion]],
+*Host-side Writeback Caching*?
+
+IRC, freenode, #hurd, 2011-06-08
+
+ <braunr> youpi: does xen provide disk caching options ?
+ <youpi> through a blktap, probably
+ <braunr> ok
diff --git a/microkernel/mach/gnumach/ports/xen/discussion.mdwn b/microkernel/mach/gnumach/ports/xen/discussion.mdwn
new file mode 100644
index 00000000..2980e3b2
--- /dev/null
+++ b/microkernel/mach/gnumach/ports/xen/discussion.mdwn
@@ -0,0 +1,14 @@
+[[!meta copyright="Copyright © 2011 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_documentation]]
+
+Stuff from <http://youpibouh.thefreecat.org/hurd-xen> should be merged into
+these pages here.
diff --git a/microkernel/mach/gnumach/ports/xen/internals.mdwn b/microkernel/mach/gnumach/ports/xen/internals.mdwn
index 22aac75e..eae9d9a8 100644
--- a/microkernel/mach/gnumach/ports/xen/internals.mdwn
+++ b/microkernel/mach/gnumach/ports/xen/internals.mdwn
@@ -1,12 +1,14 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
The port does use Xen's para-virtualized interface for device (ide, network,
etc.) access.
+
+[[Virtualization]].
diff --git a/microkernel/mach/gnumach/ports/xen/networking_configuration.mdwn b/microkernel/mach/gnumach/ports/xen/networking_configuration.mdwn
new file mode 100644
index 00000000..52e6db87
--- /dev/null
+++ b/microkernel/mach/gnumach/ports/xen/networking_configuration.mdwn
@@ -0,0 +1,105 @@
+[[!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]]."]]"""]]
+
+[[!toc]]
+
+The Xen dom0 infrastructure provides for a bridged networking setup using shell
+scripts to configure the bridging device properly and attach the domUs' virtual
+interfaces to the bridge. However, we've [seen
+problems](http://lists.gnu.org/archive/html/bug-hurd/2008-08/msg00023.html)
+when using this approach, so to [solve these
+issues](http://lists.gnu.org/archive/html/bug-hurd/2008-09/msg00071.html),
+instead suggest the following configuration method (to achieve the same thing).
+
+This is for a Debian dom0.
+
+# */etc/network/interfaces*
+
+Comment out everything referencing your physical devices. Add this:
+
+ auto br0
+ iface br0 inet dhcp
+ bridge_ports regex (eth|vif).* noregex
+
+... or if you want to do the manual configuration dance:
+
+ auto br0
+ iface br0 inet static
+ bridge_ports regex (eth|vif).* noregex
+ address 192.168.10.60
+ netmask 255.255.255.0
+ [...]
+
+This needs a version of the `bridge-utils` package more recent than the current
+Debian stable one ([[!debbug 405215]]). (It's trivial to rebuild the `dpkg` of,
+e.g., the Debian testing one on Debian stable.)
+
+# */etc/xen/xend-config.sxp*
+
+Make sure that only `(network-script network-dummy)` and `(vif-script
+vif-bridge)` are activated and all other `(network-script network-WHATEVER)`,
+respective `(vif-script vif-WHATEVER)` are commented out.
+
+
+# Sample configuration files on Debian Lenny
+
+## /etc/xen/hurd on dom0
+
+ kernel = "/boot/gnumach-xen"
+ memory = 256
+ disk = ['phy:sda5,hda,w']
+ extra = "root=device:hd0"
+ vif = [ 'mac=00:16:3e:00:00:00, bridge=br0' ]
+ ramdisk = "/boot/hurd-modules"
+
+/dev/sda5 is an extended partition. br0 is bridge interface on dom0.
+
+## /etc/xen/xend-config.sxp on dom0
+
+ (network-script 'network-bridge netdev=br0')
+ (dom0-min-mem 196)
+ (dom0-cpus 0)
+ (vncpasswd '')
+
+## /etc/network/interfaces on dom0
+
+ auto br0
+ iface br0 inet static
+ address 192.168.1.211
+ network 192.168.1.0
+ netmask 255.255.255.0
+ broadcast 192.168.1.255
+ gateway 192.168.1.1
+ bridge_ports eth1
+
+eth1 is the interface that is connected to the Internet on the LAN:
+
+## Doing settrans on domU
+
+ settrans -fgap /servers/socket/2 /hurd/pfinet -i eth0 -a 192.168.1.210 -g 192.168.1.1 -m 255.255.255.0
+
+## /sbin/ifconfig on dom0
+
+ br0 Link encap:Ethernet HWaddr 00:19:d1:2e:06:33
+ inet addr:192.168.1.211 Bcast:192.168.1.255 Mask:255.255.255.0
+ inet6 addr: fe80::219:d1ff:fe2e:633/64 Scope:Link
+ UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
+ RX packets:14187 errors:0 dropped:0 overruns:0 frame:0
+ TX packets:9214 errors:0 dropped:0 overruns:0 carrier:0
+ collisions:0 txqueuelen:0
+ RX bytes:936563 (914.6 KiB) TX bytes:746184 (728.6 KiB)
+
+ eth1 Link encap:Ethernet HWaddr 00:19:d1:2e:06:33
+ inet6 addr: fe80::219:d1ff:fe2e:633/64 Scope:Link
+ UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
+ RX packets:34339 errors:0 dropped:0 overruns:0 frame:0
+ TX packets:18526 errors:0 dropped:0 overruns:0 carrier:0
+ collisions:0 txqueuelen:1000
+ RX bytes:3019251 (2.8 MiB) TX bytes:1453672 (1.3 MiB)
diff --git a/microkernel/mach/gnumach/projects.mdwn b/microkernel/mach/gnumach/projects.mdwn
index 35b5c2ef..f4ef192a 100644
--- a/microkernel/mach/gnumach/projects.mdwn
+++ b/microkernel/mach/gnumach/projects.mdwn
@@ -1,13 +1,13 @@
-[[meta copyright="Copyright © 2005, 2006, 2007, 2008
- Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2005, 2006, 2007, 2008, 2011 Free Software
+Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
This page is a place to keep track of ideas about things that may be improved
in GNU Mach, so that it'll evolve to a reliable microkernel for The Hurd, both
@@ -15,7 +15,7 @@ in terms of stability and performance. If you find anything missing here,
please feel free to add a entry with a short description.
If you want to help with any of the task (thanks!), please send a mail to
-*[[mailing_lists/bug-hurd]]* stating what task you wish to work on,
+*[[mailing lists/bug-hurd]]* stating what task you wish to work on,
so that no duplicate efforts end up.
# Active Branches
@@ -33,6 +33,8 @@ so that no duplicate efforts end up.
* [[Clean_up_the_code]]
+ * [[Open Issues|tag/open_issue_gnumach]]
+
* Update the core architecture and drivers
* Check what NetBSD, FreeBSD and Linux do with their host specific code
@@ -56,7 +58,8 @@ so that no duplicate efforts end up.
* Improve the external pagers interface
- * Implement read-ahead (huge I/O improvements expected).
+ * Implement [[open_issues/performance/io_system/read-ahead]] (huge I/O
+ improvements expected).
* Making this interface synchronous should improve I/O performance
significantly, without (almost) any drawbacks (we also get some
@@ -99,7 +102,7 @@ so that no duplicate efforts end up.
See [[GDB_stubs]].
- * Make it run as a UNIX/Linux executable.
+ * Make it run as a [[UNIX]]/Linux executable.
* Neal:
diff --git a/microkernel/mach/gnumach/projects/clean_up_the_code.mdwn b/microkernel/mach/gnumach/projects/clean_up_the_code.mdwn
index 875bb8cd..2a9b4b60 100644
--- a/microkernel/mach/gnumach/projects/clean_up_the_code.mdwn
+++ b/microkernel/mach/gnumach/projects/clean_up_the_code.mdwn
@@ -1,13 +1,15 @@
-[[meta copyright="Copyright © 2005, 2006, 2007, 2008
- Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2005, 2006, 2007, 2008, 2010 Free Software
+Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+[[!tag open_issue_gnumach]]
# Restructure the tree in a sane way
@@ -39,80 +41,80 @@ So, additionally to the list given below, there may actually be a bunch of
further files (also exported ones) that serve no real value, but are being
`#include`d through one way or another.
-* [[source_gnumach-1-branch ddb/db_expr.h]]
+* [[!source_gnumach-1-branch ddb/db_expr.h]]
Currently used, but copyright violation? Rewrite?
-* [[source_gnumach-1-branch ddb/db_print.h]]
+* [[!source_gnumach-1-branch ddb/db_print.h]]
Copyright violation? Currently unused, but could be used in principle (or
be rewritten, to avoid the copyright oddity).
-* [[source_gnumach-1-branch ddb/tr.h]]
+* [[!source_gnumach-1-branch ddb/tr.h]]
Copyright violation. Unused. Remove.
-* [[source_gnumach-1-branch device/dev_master.h]]
+* [[!source_gnumach-1-branch device/dev_master.h]]
Might be usable for SMP? Remove otherwise.
-* [[source_gnumach-1-branch i386/i386/kttd_machdep.h]]
+* [[!source_gnumach-1-branch i386/i386/kttd_machdep.h]]
-* [[source_gnumach-1-branch i386/i386/sched_param.h]]
+* [[!source_gnumach-1-branch i386/i386/sched_param.h]]
-* [[source_gnumach-1-branch i386/include/mach/i386/cthreads.h]]
+* [[!source_gnumach-1-branch i386/include/mach/i386/cthreads.h]]
Was probably once exported, but is no longer.
-* [[source_gnumach-1-branch i386/include/mach/i386/ioccom.h]]
+* [[!source_gnumach-1-branch i386/include/mach/i386/ioccom.h]]
Exported.
-* [[source_gnumach-1-branch include/device/audio_status.h]]
+* [[!source_gnumach-1-branch include/device/audio_status.h]]
Exported.
-* [[source_gnumach-1-branch include/device/tape_status.h]]
+* [[!source_gnumach-1-branch include/device/tape_status.h]]
Exported.
-* [[source_gnumach-1-branch include/mach/alert.h]]
+* [[!source_gnumach-1-branch include/mach/alert.h]]
Exported.
-* [[source_gnumach-1-branch include/mach/boot.h]]
+* [[!source_gnumach-1-branch include/mach/boot.h]]
Exported.
-* [[source_gnumach-1-branch include/mach/macro_help.h]]
+* [[!source_gnumach-1-branch include/mach/macro_help.h]]
Exported.
-* [[source_gnumach-1-branch include/mach/multiboot.h]]
+* [[!source_gnumach-1-branch include/mach/multiboot.h]]
Exported.
-* [[source_gnumach-1-branch include/mach/profil.h]]
+* [[!source_gnumach-1-branch include/mach/profil.h]]
Exported.
-* [[source_gnumach-1-branch include/mach/profilparam.h]]
+* [[!source_gnumach-1-branch include/mach/profilparam.h]]
Exported.
-* [[source_gnumach-1-branch include/mach/exec/a.out.h]]
+* [[!source_gnumach-1-branch include/mach/exec/a.out.h]]
Exported.
-* [[source_gnumach-1-branch include/mach_debug/pc_info.h]]
+* [[!source_gnumach-1-branch include/mach_debug/pc_info.h]]
Currently not exported, but was probably once meant to be.
-* [[source_gnumach-1-branch kern/act.h]]
+* [[!source_gnumach-1-branch kern/act.h]]
-* [[source_gnumach-1-branch kern/refcount.h]]
+* [[!source_gnumach-1-branch kern/refcount.h]]
-* [[source_gnumach-1-branch kern/shuttle.h]]
+* [[!source_gnumach-1-branch kern/shuttle.h]]
# Remove dead functions, variables, etc. from source files
diff --git a/microkernel/mach/gnumach/projects/gdb_stubs.mdwn b/microkernel/mach/gnumach/projects/gdb_stubs.mdwn
index 9a11a82b..064da7bf 100644
--- a/microkernel/mach/gnumach/projects/gdb_stubs.mdwn
+++ b/microkernel/mach/gnumach/projects/gdb_stubs.mdwn
@@ -1,13 +1,19 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2010 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+[[!tag open_issue_gnumach open_issue_gdb]]
* <http://lists.gnu.org/archive/html/bug-hurd/2008-04/msg00103.html>
* [ChangeLog.gdb](http://cvs.savannah.gnu.org/viewvc/gnumach/ChangeLog.gdb?root=hurd&view=markup&pathrev=gnumach-1-branch-gdb-branch)
+
+This may be another follow-up project: [*Linux Kernel GDB tracepoint
+module*](http://thread.gmane.org/gmane.comp.gdb.devel/29369), Hui Zhu,
+2010-10-09.
diff --git a/microkernel/mach/gnumach/reference_manual.mdwn b/microkernel/mach/gnumach/reference_manual.mdwn
new file mode 100644
index 00000000..95d11517
--- /dev/null
+++ b/microkernel/mach/gnumach/reference_manual.mdwn
@@ -0,0 +1,26 @@
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 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]]."]]"""]]
+
+*The GNU Mach Reference Manual* documents the architecture, the usage and the
+programming of the GNU Mach microkernel. At the moment, the manual documents
+the interface completely, but is not very useful as a tutorial or introduction
+into the Mach architecture.
+
+ * [HTML version](http://www.gnu.org/software/hurd/gnumach-doc/index.html)
+ for browsing online,
+ * [PostScript
+ version](http://www.gnu.org/software/hurd/gnumach-doc/mach.ps) [around
+ 900KiB],
+ * [gzipped PostScript
+ version](http://www.gnu.org/software/hurd/gnumach-doc/mach.ps.gz)
+ [around 300KiB],
+ * [PDF version](http://www.gnu.org/software/hurd/gnumach-doc/mach.pdf)
+ [around 700KiB].
diff --git a/microkernel/mach/history.mdwn b/microkernel/mach/history.mdwn
index a27595c0..5a3608cd 100644
--- a/microkernel/mach/history.mdwn
+++ b/microkernel/mach/history.mdwn
@@ -1,14 +1,14 @@
-# <a name="Table_of_Contents"> Table of Contents </a>
-
-%TOC%
-
# <a name="Early_beginnings"> Early beginnings </a>
Mach has quite a history. Everything actually started at the University of Rochester in 1975. It was invented to demonstrate how operating systems could be built using a modular design where processes communicated using message passing, even across networks. The system was called the Rochester Intelligent Gateway and ran on a 16 bit mini computer called Eclipse from Data General.
One of the engineers behind the project was Richard Rashid. In 1979 he moved his socks to Carnegie Mellon University to continue his research on message passing operating systems. The result emerged in 1981 and was called Accent.
-Accent kept running at CMU until 1984 but was by then being run over by UNIX. Rashid then decided to use an early embrace strategy and started designing the third generation OS project called Mach. By making Mach compatible with UNIX, Mach was supposed to gain a lot of available UNIX software.
+Accent kept running at CMU until 1984 but was by then being run over by
+[[UNIX]]. Rashid then decided to use an early embrace strategy and started
+designing the third generation OS project called Mach. By making Mach
+compatible with UNIX, Mach was supposed to gain a lot of available UNIX
+software.
Mach was a vast improvement over Accent. It incorporated parts commonly used today, such as: threads, better IPC, multiprocessor support and an advanced VM system.
diff --git a/microkernel/mach/ipc.mdwn b/microkernel/mach/ipc.mdwn
index 889fac2f..1bb44b59 100644
--- a/microkernel/mach/ipc.mdwn
+++ b/microkernel/mach/ipc.mdwn
@@ -1,22 +1,21 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-[[General_information|/ipc]] about IPC.
+Read about the [[general concept of *inter-process communication* (IPC)|/ipc]].
-An IPC is sent by invoking a [[port]]. <!-- Isn't this wording a bit strange?
-``IPC is sent'' --tschwinge -->
+On Mach, an IPC is done by invoking a [[port]].
+
+The two fundamental operations, to *send* and *receive* [[message]]s, are used
+to implement a [[RPC]] system.
[[Sequence_numbering]].
[The Unofficial GNU Mach IPC beginner's guide](http://www.nongnu.org/hurdextras/ipc_guide/ipc_guide.html)
-
-# See Also
-
-* [[RPC]]
diff --git a/microkernel/mach/ipc/sequence_numbering.mdwn b/microkernel/mach/ipc/sequence_numbering.mdwn
index 7c1f68e4..eb94d662 100644
--- a/microkernel/mach/ipc/sequence_numbering.mdwn
+++ b/microkernel/mach/ipc/sequence_numbering.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Mach's [[IPC]] mechanism allows for getting access to a message's sequence
number.
diff --git a/microkernel/mach/logo.png b/microkernel/mach/logo.png
deleted file mode 100644
index 94951acf..00000000
--- a/microkernel/mach/logo.png
+++ /dev/null
Binary files differ
diff --git a/microkernel/mach/memory_object.mdwn b/microkernel/mach/memory_object.mdwn
new file mode 100644
index 00000000..f32fe778
--- /dev/null
+++ b/microkernel/mach/memory_object.mdwn
@@ -0,0 +1,33 @@
+[[!meta copyright="Copyright © 2002, 2003, 2010, 2011 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]]."]]"""]]
+
+Mach's [[virtual_memory]] subsystem uses *memory objects* for supplying the
+content of regions of virtual memory in an [[virtual_address_space]].
+
+All of these objects are managed by *memory manager*s, that are also called
+*pager*s. These can be implemented as user-space processes.
+
+Both the memory objects, and their managers are kernel objects, and are
+accessed by [[port]]s.
+
+A system's physical memory is conceived as a *memory cache* that contains
+*memory cache objects*. So when a [[thread]] accesses a page in its task's
+address space, the memory object that includes this page is *cached* in the
+memory cache. Memory objects are [[paged out and paged
+in|external_pager_mechanism]] by the aforementioned memory managers. The
+decision when they should be paged in or paged out is left to [[Mach]]. Each
+memory object has an ordered list of memory managers that provide paging. The
+last one tried is the *default memory manager* that resides in the microkernel,
+in contrast to most of the others. The default memory manager is needed
+because the microkernel can't wait infinitely for someone else to free the
+memory cache: it just calls the next memory manager hoping it to succeed.
+
+Read about [[GNU Mach's memory management|gnumach/memory_management]].
diff --git a/microkernel/mach/memory_object/discussion.mdwn b/microkernel/mach/memory_object/discussion.mdwn
new file mode 100644
index 00000000..a2a1514b
--- /dev/null
+++ b/microkernel/mach/memory_object/discussion.mdwn
@@ -0,0 +1,67 @@
+[[!meta copyright="Copyright © 2011 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_documentation open_issue_gnumach]]
+
+IRC, freenode, #hurd, 2011-08-05:
+
+ < neal> braunr: For instance, memory objects are great as they allow you to
+ specify the mapping policy in user space.
+ < neal> braunr: But, the policy for determining the eviction order is
+ realized by Mach
+ < neal> braunr: And user-space has no control
+ < braunr> are you referring to the page cache lru approximation and stuff
+ like resource containers ?
+ < neal> I'm not sure what you mean by page cache lru appoximateion
+ < braunr> the kernel eviction policy :)
+ < neal> that's an implementation detail
+
+IRC, freenode, #hurd, 2011-09-05:
+
+ <braunr> mach isn't a true modern microkernel, it handles a lot of
+ resources, such as high level virtual memory and cpu time
+ <braunr> for example, the page replacement mechanism can't be implemented
+ outside the kernel
+ <braunr> yet, it provides nothing to userspace server to easily allocate
+ resources on behalf of clients
+ <braunr> so, when a thread calls an RPC, the cpu time used to run that RPC
+ is accounted on the server task
+ <braunr> the hurd uses lots of external memory managers
+
+[[external_pager_mechanism]].
+
+ <braunr> but they can't decide how to interact with the page cache
+ <braunr> the kernel handles the page cache, and initiates the requests to
+ the pagers
+ <cjuner> braunr, why can't they decide that?
+ <braunr> because it's implemented in the kernel
+ <braunr> and there is nothing provided by mach to do that some other way
+ <slpz_> braunr: you probably already know this, but the problem with client
+ requests being accounted on behalf the server, is fixed in Mach with
+ Migrating Threads
+
+[[open_issues/mach_migrating_threads]].
+
+ <braunr> slpz_: migrating threads only fix the issue for the resources
+ managed by mach, not the external servers
+ <braunr> slpz_: but it's a (imo necessary) step to completely solve the
+ issue
+ <braunr> in addition to being a great feature for performance (lighter
+ context switchers, less state to track)
+ <braunr> it also helps priority inversion problems
+ <slpz_> braunr: I was referring just to cpu-time, but I agree with you an
+ interface change is needed for external pagers
+ <braunr> slpz_: servers in general, not necessarily pagers
+ <slpz_> as a way to mitigate the effect of Mach paging out to external
+ pagers, the folks at OSF implemented an "advisory pageout", so servers
+ are "warned" that they should start paging out, and can decide which
+ pages are going to be flushed by themselves
+
+[[open_issues/resource_management_problems]].
diff --git a/microkernel/mach/message.mdwn b/microkernel/mach/message.mdwn
new file mode 100644
index 00000000..ba47671e
--- /dev/null
+++ b/microkernel/mach/message.mdwn
@@ -0,0 +1,31 @@
+[[!meta copyright="Copyright © 2002, 2003, 2010 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]]."]]"""]]
+
+*Messages* are collections of typed data, with a defined layout.
+
+They are used for [[IPC]], and are sent to and received from [[port]]s.
+
+These messages are not only opaque data. They can also contain [[port
+rights|port]] to be passed to another [[task]]. Port rights are either
+*copied* or *moved*. Notice that port receive right must be moved but not
+copied because there can't be more than one task that holds the receive right
+to a port. The receiving task creates new local port name to the port rights
+it received.
+
+Some data in the message can be *out-of-line data*. In the message, these are
+*references* to memory regions ([[memory_object]]s) that are *virtually
+copied*. When the message is received in a task, these virtual copies become
+part of the task by mapping them into the receiver's [[virtual_address_space]].
+Another key concept that is applied is using *copy-on-write*, which means that
+data is not copied immediately, but only when it is changed. This is primarily
+used to send large blocks of data efficiently, as it is too expensive to store
+them in the kernel address space: extra copied need only be made at the moment
+that the memory regions begin to diverge, by threads modifying them.
diff --git a/microkernel/mach/mig.mdwn b/microkernel/mach/mig.mdwn
index f47eadfb..331b3bf4 100644
--- a/microkernel/mach/mig.mdwn
+++ b/microkernel/mach/mig.mdwn
@@ -1,12 +1,35 @@
-[[img logo.png]]
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2006, 2007, 2008, 2010 Free
+Software Foundation, Inc."]]
-The Mach Interface Generator (MIG) is an [[IDL]] compiler. Based on an
-interface definition, it creates stubs to [[invoke]] object methods
-and to demultiplex incoming messages. These stubs conveniently hide
-the details of Mach's [[IPC]] machinery.
+[[!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]]."]]"""]]
-GNU MIG is fully compatible with OSF MIG.
+The *Mach Interface Generator* (*MIG*) is an [[IDL]] compiler. Based on an
+interface definition, it creates stub code to [[invoke]] object methods and to
+demultiplex incoming messages. These stub functions conveniently hide the
+details of Mach's [[IPC]] and [[port]] machinery and make it easy to implement
+and use Mach [[interface]]s as [[remote procedure calls (RPC)|rpc]]: by using
+the stub functions, the client programs can call remote procedures more or less
+like any other C function.
-* MIG's [homepage](http://www.gnu.org/software/hurd/mig.html)
-* [[Documentation]]
-* [[Building]] - Building (and obtaining) MIG
+These functions encode arguments into [[message]]s' format (*marshalling*),
+wait for a result on a newly created [[reply port|port]], decode return
+arguments from the reply message (*demarshalling*, or *unmarshalling*) and pass
+them to the client program. Similar actions are provided in the skeletons that
+are linked to server programs.
+
+MIG allows very precise semantics to be specified about what the arguments are
+and how to be passed.
+
+
+ * [[Documentation]]
+
+
+# Implementations
+
+ * [[GNU_MIG]]
diff --git a/microkernel/mach/mig/building.mdwn b/microkernel/mach/mig/building.mdwn
deleted file mode 100644
index ee299166..00000000
--- a/microkernel/mach/mig/building.mdwn
+++ /dev/null
@@ -1,71 +0,0 @@
-# <a name="Building_the_Mach_Interface_Gene"> Building the Mach Interface Generator from Source </a>
-
-If you want to build the Mach Interface Generator yourself instead of just using a pre-built package, follow these instructions.
-
-## <a name="Getting_the_Source_Code"> Getting the Source Code </a>
-
-You can chose between getting the [sources from the developers's rcs](http://www.gnu.org/software/hurd/mig-download.html#cvs):
-
- $ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co mig
-
-... or (if you are working on a Debian system) the ones that are used for the [current Debian mig package](http://packages.debian.net/source/unstable/mig):
-
- $ apt-get source mig
-
-Please see the Debian [[running/debian/FAQ]] before using _apt-get source_.
-
-The unpacked source tree is around 1 MiB, and the build tree also is around 1 MiB.
-
-## <a name="Preparing_for_the_Build"> Preparing for the Build </a>
-
-### <a name="_on_Debian_systems"> ... on Debian systems </a>
-
-Building the Mach Interface Generator requires the _build-essential_ and _fakeroot_ packages, their dependencies and additional packages that are specified by the source mig package:
-
- # apt-get install build-essential fakeroot
- # apt-get build-dep mig
-
-### <a name="_on_non_Debian_systems"> ... on non-Debian systems </a>
-
-Building the Mach Interface Generator requires a C compiler, a standard C library (with corresponding header files) and your favourite flavor of awk (gawk), yacc (bison), lex (flex) and make.
-
-Additionally, you need to have GNU Mach's header files installed. See [[mach/gnumach/building]] about how to do that, then come back here.
-
-## <a name="Building_and_Installing"> Building and Installing </a>
-
-### <a name="_a_deb_file"> ... a _.deb_ file </a>
-
-Change into the directory with the downloaded / unpacked MIG sources (_mig-1.3.1.99_):
-
- $ cd mig-1.3.1.99
-
-Start the build process:
-
- $ dpkg-buildpackage -us -uc -b -rfakeroot
-
-You can then install / distribute the _.deb_ file which will drop out one directory above the current one.
-
-### <a name="_TODO_"> [TODO] </a>
-
-The Mach Interface Generator has to be built in a separate directory:
-
- $ mkdir mig-build
- $ cd mig-build
-
-Find the root directory where you installed GNU Mach's header files and where you now intend to install the Mach Interface Generator (_~/gnu_) and the path to your Mach Interface Generator sources (\_[...]/mig) and configure it:
-
- $ GNU=~/gnu
- $ TARGET_CPPFLAGS=-I"$GNU"/include [...]/mig/configure --prefix="$GNU"
-
-Build and install the Mach Interface Generator into _$GNU_, i.e. _~/gnu/_ in our example:
-
- $ make all install
-
-To make your _mig_ binary easily available, you should append something like the following to e.g. your _~/.bash\_profile_:
-
- PATH=~/gnu/bin:$PATH
- export PATH
-
-If you already have e.g. _~/bin_ in your _$PATH_, you could also create a symbolic link:
-
- $ ln -s ~/gnu/bin/mig ~/bin/
diff --git a/microkernel/mach/mig/dealloc.mdwn b/microkernel/mach/mig/dealloc.mdwn
deleted file mode 100644
index 1ed9d52b..00000000
--- a/microkernel/mach/mig/dealloc.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-[[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]]."]]"""]]
-
-[[meta redir=documentation#dealloc]]
diff --git a/microkernel/mach/mig/discussion.mdwn b/microkernel/mach/mig/discussion.mdwn
deleted file mode 100644
index fdab3a45..00000000
--- a/microkernel/mach/mig/discussion.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Created
-
--- [[Main/JoachimNilsson]] - 29 Oct 2002
-
-The logo seems very programmer friendly as this web topic is intended.
-
--- [[Main/GrantBow]] - 15 Nov 2002
-
-There's little traffic here and little content. Perhaps we should just remove this web? It seemed like a good idea to create it when we split the others off...
-
--- [[Main/GrantBow]] - 22 Dec 2002
-
-Maybe, but not yet. Let's keep it for a while longer - say, three months. 1st April 2003. If the traffic still is low then we move the Mig topics to the Mach web ...
-
-...Mig = **Mach** Interface Generator.
-
--- [[Main/JoachimNilsson]] - 22 Dec 2002
diff --git a/microkernel/mach/mig/documentation.mdwn b/microkernel/mach/mig/documentation.mdwn
index 8c977e55..7d4f1eca 100644
--- a/microkernel/mach/mig/documentation.mdwn
+++ b/microkernel/mach/mig/documentation.mdwn
@@ -1,13 +1,13 @@
-[[meta copyright="Copyright © 2002, 2003, 2005, 2007, 2008 Free Software
-Foundation, Inc."]]
+[[!meta copyright="Copyright © 2002, 2003, 2005, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
This is a small collection of links to external documents describing the *Mach
Interface Generator* used by GNU Mach.
@@ -17,23 +17,23 @@ Interface Generator* used by GNU Mach.
A tutorial which demonstrates the use of the C Threads library primitives in
writing a multithreaded program and the use of the Mach Interface Generator
-(MIG) to generate remote procedure calls for interprocess communication. Like
+(MIG) to generate remote procedure calls for inter-process communication. Like
its companion tutorial, it is based on the Mach 2.5 system. However, the
concepts are applicable to Mach 3.0 user level programming.
Linda R. Walmer and Mary R. Thompson. *A Programmer's Guide to the Mach User
Environment*. [PostScript
-](ftp://ftp.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/machuse.ps),
-[Doc](ftp://ftp.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/machuse.doc).
+](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/machuse.ps),
+[Doc](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/machuse.doc).
February 1988. School of Computer Science, Carnegie Mellon University.
An ftp directory containing the [mig programming
-examples](ftp://ftp.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/mig_example)
+examples](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/mig_example)
for this tutorial.
Slides to Rich Drave's talk on MIG, on November 21, 1991:
-[PostScript](ftp://ftp.cs.cmu.edu//afs/cs/project/mach/public/doc/unpublished/internals_slides/Mig/root.ps),
-[TeX](ftp://ftp.cs.cmu.edu//afs/cs/project/mach/public/doc/unpublished/internals_slides/Mig/slides.tex).
+[PostScript](http://www.cs.cmu.edu//afs/cs/project/mach/public/doc/unpublished/internals_slides/Mig/root.ps),
+[TeX](http://www.cs.cmu.edu//afs/cs/project/mach/public/doc/unpublished/internals_slides/Mig/slides.tex).
# Roots
@@ -41,15 +41,15 @@ Slides to Rich Drave's talk on MIG, on November 21, 1991:
Mig is an implementation of a subset of the Matchmaker **language**.
"Matchmaker is a language for specifying and automating the generation of
-multilingual interprocess communication interfaces. MIG is an interim
+multilingual inter-process communication interfaces. MIG is an interim
implementation of a subset of the Matchmaker language that generates C and C++
-remote procedure call interfaces for interprocess communication between Mach
+remote procedure call interfaces for inter-process communication between Mach
tasks."
Richard P. Draves, Michael B. Jones, Mary R. Thompson, *MIG - THE MACH
INTERFACE GENERATOR*.
-[ps](ftp://ftp.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/mig.ps),
-[doc](ftp://ftp.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/mig.doc).
+[ps](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/mig.ps),
+[doc](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/mig.doc).
November 1989. Department of Computer Science, Carnegie-Mellon University.
@@ -66,12 +66,19 @@ pp. 67--77."
# Further Relevant Documentation
- * The [GNU Mach Reference
- Manual](http://www.gnu.org/software/hurd/docs.html#manuals), espacially
+ * The [[GNU_Mach_Reference_Manual|gnumach/reference_manual]], espacially
[Chapter 4, Inter Process
- Communication](http://www.gnu.org/software/hurd/gnumach-doc/Inter-Process-Communication.html),
- which, for example, explains how the <a name="dealloc">`dealloc` flag</a>
- works in [Chapter 4.2.4,
- Memory](http://www.gnu.org/software/hurd/gnumach-doc/Memory.html)
+ Communication](http://www.gnu.org/software/hurd/gnumach-doc/Inter-Process-Communication.html).
+
+ * OSF's [Server Writer's Guide (ps)](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/osf/server_writer.ps)
+ [Server Writer's Guide (pdf)](http://shakthimaan.com/downloads/hurd/server_writer.pdf)
+
+ * OSF's [Server Writer's Interfaces (ps)](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/osf/server_interface.ps)
+ [Server Writer's Interfaces (pdf)](http://shakthimaan.com/downloads/hurd/server_interface.pdf)
+
+ * Flags:
+
+ * [[dealloc_and_dealloc[&#93;|dealloc]]
+ * [[ServerCopy]]
* MIG *in action*: [[hurd/io_path]].
diff --git a/microkernel/mach/mig/documentation/dealloc.mdwn b/microkernel/mach/mig/documentation/dealloc.mdwn
new file mode 100644
index 00000000..b627b532
--- /dev/null
+++ b/microkernel/mach/mig/documentation/dealloc.mdwn
@@ -0,0 +1,15 @@
+[[!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]]."]]"""]]
+
+The [[GNU_Mach_Reference_Manual|gnumach/reference_manual]] describes the
+`dealloc` flag in [Chapter 4.2.4,
+Memory](http://www.gnu.org/software/hurd/gnumach-doc/Memory.html).
+
+What exactly is `dealloc[]` (`hurd/fs.defs:dir_readdir`)?
diff --git a/microkernel/mach/mig/documentation/servercopy.mdwn b/microkernel/mach/mig/documentation/servercopy.mdwn
new file mode 100644
index 00000000..8abf9b07
--- /dev/null
+++ b/microkernel/mach/mig/documentation/servercopy.mdwn
@@ -0,0 +1,23 @@
+[[!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]]."]]"""]]
+
+For IN args. If set it...
+
+ * removes the `__mig_deallocate` for OOL IN data, which is usually done after
+ the implementation has been called;
+
+ * adds a `boolean_t NAMESCopy` for the IN arg `NAME` to indicate whether the
+ data will persist nevertheless (OOL case) or has to be copied by the
+ implementation (inline case).
+
+Cf., [[translator/exec]] server, `exec.defs`.
+
+I.e., the IN args' memory region (OOL case) persists after the implementation
+has returned.
diff --git a/microkernel/mach/mig/gnu_mig.mdwn b/microkernel/mach/mig/gnu_mig.mdwn
new file mode 100644
index 00000000..0de1bd67
--- /dev/null
+++ b/microkernel/mach/mig/gnu_mig.mdwn
@@ -0,0 +1,28 @@
+[[!meta copyright="Copyright © 2001, 2006, 2008, 2009, 2010 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]]."]]"""]]
+
+GNU MIG is the GNU distribution of the
+[[Mach_3.0_interface_generator_*MIG*|mig]], as maintained by the GNU Hurd
+developers for the GNU project.
+
+You need this tool to compile the GNU Mach and GNU Hurd distributions, and to
+compile the GNU C library for the Hurd. Also, you will need it for other
+software in the GNU system that uses Mach-based
+[[inter-process_communication|ipc]].
+
+GNU MIG is fully compatible with [[OSF_MIG|mig]].
+
+Like its predecessor, it can only generate C code, that has to be compiled and
+linked to client and server programs respectively ([[!taglink
+open_issue_mig]]).
+
+ * [[Building]] - building (and obtaining) GNU MIG
+ * [[Open Issues|tag/open_issue_mig]]
diff --git a/microkernel/mach/mig/gnu_mig/building.mdwn b/microkernel/mach/mig/gnu_mig/building.mdwn
new file mode 100644
index 00000000..e7d3c150
--- /dev/null
+++ b/microkernel/mach/mig/gnu_mig/building.mdwn
@@ -0,0 +1,103 @@
+[[!meta copyright="Copyright © 2006, 2007, 2008, 2011 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]]."]]"""]]
+
+# <a name="Building_the_Mach_Interface_Gene"> Building the Mach Interface Generator from Source </a>
+
+If you want to build the Mach Interface Generator yourself instead of just
+using a pre-built package, follow these instructions.
+
+## <a name="Getting_the_Source_Code"> Getting the Source Code </a>
+
+You can chose between getting the [sources from the developers'
+RCS](http://git.savannah.gnu.org/cgit/hurd/):
+
+ $ git clone http://git.savannah.gnu.org/cgit/hurd/mig.git/
+
+... or (if you are working on a Debian system) get the sources that are used for the
+[current Debian mig package](http://packages.debian.net/source/unstable/mig):
+
+ $ apt-get source mig
+
+Please see the Debian [[hurd/running/debian/FAQ]] before using _apt-get source_.
+
+The unpacked source tree is around 1 MiB, and the build tree also is around 1 MiB.
+
+## <a name="_on_Debian_systems"> On Debian Systems: </a>
+
+### <a name="Preparing_for_the_Build"> Preparing for the Build </a>
+
+Building MIG requires the *build-essential* and *fakeroot* packages,
+and some additional dependencies specified by the mig source package:
+
+ # apt-get install build-essential fakeroot
+ # apt-get build-dep mig
+
+### <a name="Building_and_Installing"> Building and Installing </a> <a name="_a_deb_file"> ... a _.deb_ file </a>
+
+Change into the directory with the downloaded / unpacked MIG sources:
+
+ $ cd mig-X.X.X.XX
+
+Start the build process:
+
+ $ dpkg-buildpackage -us -uc -b -rfakeroot
+
+This will create a _.deb_ package in the parent directory,
+which you can then install on your system.
+
+## <a name="_on_non_Debian_systems"> On non-Debian Systems: </a>
+
+### <a name="Preparing_for_the_Build"> Preparing for the Build </a>
+
+Building the Mach Interface Generator requires a C compiler, a standard 32 bit
+C library (with corresponding header files), your favourite flavor of awk
+(gawk), yacc (bison), lex (flex) and make.
+
+Additionally, you need to have GNU Mach's header files installed. See
+[[building GNU Mach|mach/gnumach/building]] about how to do that, then come back here.
+
+### <a name="Building_and_Installing"> Building and Installing </a>
+
+First, generate the configuration files:
+
+ $ cd mig
+ $ autoreconf --install
+
+The Mach Interface Generator has to be built in a separate build directory:
+
+ $ mkdir build
+ $ cd build
+
+Find the base directory where you installed GNU Mach's header files and where
+you now intend to install the Mach Interface Generator (e.g. _~/gnu_), and run
+configure:
+
+ $ GNU=~/gnu
+ $ TARGET_CPPFLAGS=-I"$GNU"/include ../configure --prefix="$GNU"
+
+If you are building on a 64 bit machine, you need to add a --host option:
+
+ $ GNU=~/gnu
+ $ TARGET_CPPFLAGS=-I"$GNU"/include ../configure --prefix="$GNU" --host=i686-unknown-linux-gnu
+
+Build and install the Mach Interface Generator into _$GNU_ (i.e. _~/gnu/_ in our example):
+
+ $ make all install
+
+To make your _mig_ binary easily available, you should append something like
+the following to e.g. your _~/.bash\_profile_:
+
+ PATH=~/gnu/bin:$PATH
+ export PATH
+
+If you already have e.g. _~/bin_ in your _$PATH_, you could also create a symbolic link:
+
+ $ ln -s ~/gnu/bin/mig ~/bin/
diff --git a/microkernel/mach/mig/gnu_mig/building/discussion.mdwn b/microkernel/mach/mig/gnu_mig/building/discussion.mdwn
new file mode 100644
index 00000000..d7636158
--- /dev/null
+++ b/microkernel/mach/mig/gnu_mig/building/discussion.mdwn
@@ -0,0 +1,16 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+# Non-cross-compiling
+
+[[!tag open_issue_mig]]
+
+[[samuelthibault]] mentioned that I should make clear what compiler options, etc. are only needed if compiling on a 64 bit computer. However, I don't know if the --host=i686... option is needed, here and when making gnumach, in case there may be some other default on 32 bit computers? --[[sudoman]]
+
diff --git a/microkernel/mach/mig/logo.png b/microkernel/mach/mig/logo.png
deleted file mode 100644
index cdfec179..00000000
--- a/microkernel/mach/mig/logo.png
+++ /dev/null
Binary files differ
diff --git a/microkernel/mach/port.mdwn b/microkernel/mach/port.mdwn
index 77b1372f..26b55456 100644
--- a/microkernel/mach/port.mdwn
+++ b/microkernel/mach/port.mdwn
@@ -1,41 +1,89 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2002, 2003, 2007, 2008, 2010, 2011 Free Software
+Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
-
-Mach ports are [[capabilities|capability]].
-
-A Mach port is a kernel queue. Each port has associated with
-it a receive right and one or more send and send-once rights.
-A queue can hold a number of messages. Once the queue is full,
-the send blocks until their is space to enqueue the message
-(this is interruptible via a timeout mechanism).
-
-A receive right designates a queue and authorizes the holder to
-dequeue messages from the queue, and to create send and send-once
-rights.
-
-Send and send-once rights designate a queue and authorize the
-hold to enqueue messages (in the case of a send-once right,
-a single message). Enqueuing a message is equivalent to
-[[invoke|invoking]] a capability.
-
-Send and receive rights are named using local names. Each
-task has associated with it a port [[address_space]]. A ports
-are addressed via this table. Each task thus has its own
-private [[naming_context]] for ports.
-
-Ports can be [[delegate]]d in an [[IPC]] message. When the
-receiver dequeues the message, the right is made available
-to it.
-
-A [[thread]] can only block receiving on a single port. To work
-around this, the concept of a port set was introduced. A receive
-right can be added to (at most) one port set. When a thread
-receives from a port set, it dequeues from any of the ports that
-has a message available.
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[Mach]] *port*s are [[capabilities|capability]], and are also essentially
+similar to [[UNIX]] pipes. They are unforgeable communication channels,
+implemented by kernel queues.
+
+Each port has associated with it one *receive right* and one or more *send
+right*s and *send-once right*s. That is, there is one receiver and one or more
+senders -- a unidirectional communication channel. Only with the corresponding
+port right, access to a port is possible; this is enforced by Mach.
+
+The kernel queue can hold a number of [[message]]s. Once the queue is full,
+the send blocks until there is space to enqueue the message (this is
+interruptible via a timeout mechanism).
+
+A receive right [[designates|designation]] a queue and authorizes the holder to
+dequeue messages from the queue, and to create send and send-once rights.
+
+Send and send-once rights designate a queue and authorize the hold to enqueue
+messages (in the case of a send-once right, a single message). Enqueuing a
+message is equivalent to [[invoke|invoking]] a capability.
+
+Ports are automatically destroyed when there is no associated port right to
+them.
+
+Mach knows what port rights belong to each task, but [[thread]]s that running
+in the context of a task refer to ports by means of send and receive rights
+that are named using local *port names*. These port names are plain integers,
+like [[UNIX file descriptors|unix/file_descriptor]]. Only these local names
+can be used by [[thread]]s for invoking operations on ports, threads do not
+deal with port rights directly.
+
+For that, each task has associated with it a *port address space*, or *port
+name space*. All ports are addressed via this table. Each task thus has its
+own private [[naming_context]] for port rights.
+
+So, the picture is that after obtaining a port send right, the client uses a
+port name to send [[message]]s to the port, or exactly one message if it's a
+send-once right. These messages are (probably) queued and when the server task
+tries to receive messages by having a [[thread]] use its port receive right, it
+gets the message(s). This is called [[IPC]].
+
+Port rights themselves can be [[delegate]]d in a [[message]], too. When the
+receiver dequeues the message, the right is made available to it.
+
+The delivery of [[message]]s is reliable and strictly ordered. When a
+[[thread]] sends messages *1* and *2*, it is guaranteed that the receiving
+[[task]] will catch them in the same order. Of course, there can be
+intermediate messages that are sent by other threads.
+
+Ports are objects that are implemented by the [[kernel]], and they are
+kernel-protected resources: they are unforgeable, and there is no way for a
+[[task]] to do anything with a port unless it have corresponding port right.
+
+Due to this, ports are globally unique. This makes them ideal for constituting
+system-wide *object references*. (Fruther reading:
+{{$capability#wikipedia_object-capability_model}}.) For example, the [[RPC]]
+system as used by the GNU Hurd works by invoking *methods* on such object
+references. The available methods are defined in [[hurd/interface]] files, and
+are processes by the [[MIG]] tool.
+
+Invoking an operation on a port does not transfer the current execution control
+to the receiver, but instead is an asynchronous operation. For this, and
+especially in a [[RPC]] system, the sender may include a *reply port* using a
+send-once right, and synchronize (block) on that one.
+
+
+# Port Set
+
+A [[thread]] can only block receiving on a single port. To work around this,
+the concept of a *port set* was introduced. A receive right can be added to
+(at most) one port set. These port sets look like port receive rights, but
+cannot be passed to other tasks, and there are additional operations for adding
+and removing port receive rights.
+
+When a server process' thread receives from a port set, it dequeues exactly one
+message from any of the ports that has a message available in its queue.
+
+This concept of port sets is also the facility that makes convenient
+implementation of [[UNIX]]'s `select` [[system_call]] possible.
diff --git a/microkernel/mach/rpc.mdwn b/microkernel/mach/rpc.mdwn
index ecef86ee..422e0441 100644
--- a/microkernel/mach/rpc.mdwn
+++ b/microkernel/mach/rpc.mdwn
@@ -1,15 +1,28 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2002, 2003, 2007, 2008, 2010, 2011 Free Software
+Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-[[General_information|/rpc]] about RPC.
+Read about the [[general concept of a *remote procedure call* (RPC)|/rpc]].
Uses Mach's [[IPC]] [[mechanism]].
-Stub code generated by [[MIG]].
+The [[port]] abstraction allows RPCs to be executed on another computer
+transparently. This can be implemented with user [[task]]s, but there is an
+implementation in the kernel possible, too, which is called *NORMA*, but is not
+avilable in [[GNU Mach|gnumach]].
+
+The RPC stub code generated by [[MIG]].
+
+
+# Tracing
+
+ * [[hurd/debugging/rpctrace]]
+
+ * [[open_issues/librpci]]
diff --git a/microkernel/mach/rpc/discussion.mdwn b/microkernel/mach/rpc/discussion.mdwn
new file mode 100644
index 00000000..00e4a012
--- /dev/null
+++ b/microkernel/mach/rpc/discussion.mdwn
@@ -0,0 +1,117 @@
+[[!meta copyright="Copyright © 2011 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_documentation]]
+
+
+# IRC, freenode, #hurd, 2011-06-11
+
+ <antrik> I don't think we have a precendence case of Mach initiating RPCs
+ to userspace tasks
+ <braunr> well mach regularly sends RPCs to external pagers
+ <antrik> hm, right
+ <antrik> anyways, the ds_ in device.defs is for use *inside* Mach, not for
+ the userspace interface
+ <braunr> what makes you think so ?
+ <antrik> several things
+ <antrik> not least the fact that without zhengda's modifications, the
+ device handling never calls out to userspace for all I know
+ <braunr> hm, it does
+ <braunr> for async I/O
+ <braunr> when the kernel has finished its I/O, it calls
+ ds_device_read_reply/ds_device_write_reply
+ <antrik> I see
+ <antrik> I never quite understood the _reply stuff
+ <braunr> although i wonder how mig is supposed to forge those names
+ <antrik> braunr: it isn't
+ <antrik> braunr: there is a separate device_reply.defs
+ <antrik> braunr: and it sets a *userprefix* of ds_
+ <antrik> rather than a serverprefix
+ <braunr> i saw, yes
+ <braunr> ah right
+ <antrik> so ds still refers to the in-Mach device server, not anything
+ userspace
+ <braunr> so this is where the patch is supposed to introduce the
+ device_intr_notify RPC
+ <antrik> or at least that's my understanding...
+ <braunr> no, it doesn't refer to in-mach servers
+ <braunr> it really forges the right rpcs to be called by mach
+ <antrik> the definition of "RPC" is rather unclear here
+ <braunr> why ?
+ <braunr> mach has its own mach_msg() call for kernel-to-user messaging
+ <antrik> yes, but this is used only to send the reply message for the RPC
+ earlier initiated by userspace AIUI
+ <antrik> it doesn't look like there is any special RPC for async I/O
+ <braunr> yes, because this is the only use case they had
+ <braunr> hence the name "reply"
+ <braunr> intr_notify isn't a reply, but it uses the same mechanism
+ <braunr> these are declared as simpleroutine
+ <antrik> sure. but the fact that it isn't a reply message, but rather
+ initiates a new RPC, changes things from MiG point of view I believe
+ <antrik> right, as there is no reply to the reply :-)
+ <braunr> :)
+ <braunr> a simpleroutine is how to turn an rpc into a simple ipc
+ <antrik> I know
+ <antrik> so in _reply, we pretend that the reply is actually a new RPC,
+ with server and client roles reversed, and no reply
+ <antrik> (this is actually rather kludgy... apparently MIG has no real
+ notion of async replies)
+ <braunr> i don't understand what you mean
+ <braunr> simpleroutine is the explicit solution for async replies
+ <braunr> as stated in
+ http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/mig.ps
+ <braunr> it's not a new rpc with roles reversed
+ <braunr> it's not a reply either
+ <antrik> it might be an explicit solution for that, but it still seems
+ kludgy :-)
+ <braunr> i don't see why :/
+ <braunr> would you have expected something like an option to create both
+ sync and async versions ?
+ <antrik> because it requires an extra .defs file
+ <antrik> yes
+ <braunr> ok
+ <braunr> well this seems cumbersome to me :)
+ <braunr> i prefer the simpleroutine approach
+ <braunr> but i agree this seems odd since mach has a high level ipc api
+ <antrik> anyways, my point is that the ds_ in device_reply.defs still
+ refers to the Mach side of things
+ <braunr> npnth: which package fails to build ?
+ <antrik> though a userspace process that actually handles the replies in an
+ async fashion will of course need some kind of device server too, just
+ like the DDE stuff...
+ <antrik> though naming it ds_ is confusing IMHO, because of the name clash
+ with the device server in Mach
+ <braunr> hm again, i fail to see why
+ <braunr> ds_ just means device_server
+ <braunr> and as most things in mach, it can be in kernel or not
+ <braunr> i mean, this is an interface prefix, i don't refer to an actual
+ single instance of a "device server" out there
+ <antrik> oh, right... DDE implements the Mach device protocol, so it *does*
+ do the ds_ part... but that makes the interrupt notification stuff even
+ more confusing
+ <braunr> hm
+ <braunr> because it provides a ds_device_intr_notify() which will never be
+ used, just to completely implement the interface ?
+ <antrik> yeah, that's what I suspect...
+ <braunr> sounds likely
+ <antrik> the device interface actually has two parts: one for "generic"
+ RPCs on the master device port, and one for device-specific RPCs. DDE
+ implements the latter, and uses the former...
+ <antrik> they live in separate places though I think: the individual device
+ RPCs are implemented in libmachdev, while the intr_ stuff is used in
+ libddekit probably
+ <braunr> it would be hairy to build otherwise
+ <antrik> so we *really* need to know what component npnth gets the error
+ with
+ <antrik> braunr: nah, not really. that's why we always have a separate
+ prefix for the server routines in Hurd RPCs
+ <braunr> right, i really need to read about mig again
+ <antrik> it's pretty normal for a translator to both implement and use an
+ interface
diff --git a/microkernel/mach/task.mdwn b/microkernel/mach/task.mdwn
new file mode 100644
index 00000000..c03c6a14
--- /dev/null
+++ b/microkernel/mach/task.mdwn
@@ -0,0 +1,23 @@
+[[!meta copyright="Copyright © 2002, 2003, 2010 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]]."]]"""]]
+
+A Mach *task* is a collection of resources, a [[virtual_address_space]], and a
+[[port name space|port]]. They depend on [[thread]]s for executing program
+code: a task alone has no means to do so.
+
+Switching from one task to another one involves doing a *context switch*, which
+is usually not a cheap operation, as it involves switching the hardware's idea
+of the memory layout ([[virtual_address_space]]), amongst others.
+
+Mach tasks are distinct from [[UNIX processes|unix/process]] in that they
+provide less facilities. In processes, there are [[unix/signal]]s, process /
+group / session IDs, [[unix/file_descriptor]]s and many other things. Tasks
+are used for resource allocation and sharing; they are *resource container*s.
diff --git a/microkernel/mach/thread.mdwn b/microkernel/mach/thread.mdwn
new file mode 100644
index 00000000..e27bb117
--- /dev/null
+++ b/microkernel/mach/thread.mdwn
@@ -0,0 +1,37 @@
+[[!meta copyright="Copyright © 2002, 2003, 2010 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]]."]]"""]]
+
+A Mach *thread* belongs to exactly one [[task]], and is the means of execution.
+The task supplies the resources.
+
+Mach threads are implemented inside the [[kernel]], as opposed to other
+systems' user-level thread packages.
+
+A thread (theoretically) runs concurrently with all the other threads of a
+system. If the system provides several processors, they can be used for
+simultaneously running either several threads of the same task, or several
+threads of different tasks. <!-- This is called SMP; the processors use
+*shared memory*. --> [[!tag open_issue_documentation]] <!-- This needs a new
+page, also covering Mach's `processor_set`s, and non-SMP, but still
+multiprocessor systems. --> (But this is currently not support in [[GNU
+Mach|gnumach]].)
+
+It is easy for the kernel to switch execution from one thread to another one
+inside the same task: essentially, it only involves exchanging a few processor
+registers' state.
+
+Threads have scheduling parameters and maintain various statistics about
+themselves.
+
+On GNU/Hurd, APIs for Mach threads and thereabouts are provided by the
+[[hurd/libthreads]] (cthreads), and [[libpthread]] (POSIX Threads) packages.
+
+A task backing a thread is the basis for a [[UNIX process|unix/process]].
diff --git a/microkernel/mach/virtual_address_space.mdwn b/microkernel/mach/virtual_address_space.mdwn
new file mode 100644
index 00000000..97bc5f6b
--- /dev/null
+++ b/microkernel/mach/virtual_address_space.mdwn
@@ -0,0 +1,36 @@
+[[!meta copyright="Copyright © 2002, 2003, 2010 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]]."]]"""]]
+
+*Virtual address space*s in Mach define the valid virtual addresses that can be
+used by [[thread]]s under execution in the [[task]] that owns that address
+space. Each task has only one address space and each address space belongs to
+only one task. So when we want to name an address space (for example, in the
+Mach API) we name it by the task it belongs to.
+
+These address spaces are divided into *pages*. Each page has individual
+properties like *access rights* (*read* / *write* / *execute*), *inheritance
+attributes* (*no inheritance* / *copy* / *share*) and some other system
+properties. Page manipulation is optimized to help moving large blocks of data
+from one address space to another, for example when one thread provides data to
+another thread -- *client / server* technology.
+
+Memory ranges of pages that can be controlled as a whole are called
+*[[memory_object]]*s.
+
+*Wired pages* are those that cannot be [[paged out|external_pager_mechanism]].
+For example, Mach itself is a task with its own address space and threads, and
+all of its pages are wired.
+
+*Precious pages* are those that must not be discarded silently when they are
+clean and memory is needed. For example, a memory manager that shares memory
+across a network could not restore a page if it is silently discarded because
+it is unmodified. This is not valid for the well-known [[pager
+managers|external_pager_mechanism]] that use disks as backing store.
diff --git a/microkernel/viengoos.mdwn b/microkernel/viengoos.mdwn
index 9a4f726f..66c6ff36 100644
--- a/microkernel/viengoos.mdwn
+++ b/microkernel/viengoos.mdwn
@@ -1,20 +1,45 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2009, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-*viengoos* is a new kernel currently being designed and written by Neal
-Walfield.
+*Viengoos* is a research kernel, designed and written by Neal Walfield.
-It can be found in the *hurd-l4* repository, available at
-<http://savannah.gnu.org/cvs/?group=hurd>.
+As of late 2009, the project is on hold, due to time constraints.
-* [[Building]]
-* Running
- * [[QEMU]]
- * [[Hardware]]
+Viengoos is not really meant to be a successor to [[Mach]]. It is highly
+experimental; some of the techniques it employs, in particular, those related
+to [[memory_management]] and [[IPC]], are unproven. These were motivated by
+[[shortcomings_in_Mach|hurd/critique]] as well as current operating systems. A
+research system is unlikely the best base for a product. A better approach is
+to view Viengoos as an experimental platform whose goal is to explore solutions
+to some of the [[issues_uncovered_by_the_Hurd|challenges]]. Knowledge gained
+can then be integrated into something like [[Mach]].
+
+The source can be downloaded from the *viengoos.git* repository, cf.
+<http://git.savannah.gnu.org/gitweb/?p=hurd/viengoos.git>. You can
+check it out using, for example:
+
+ git clone git://git.sv.gnu.org/hurd/viengoos.git
+
+Then update to viengoos-on-bare-metal
+
+ cd viengoos
+ git checkout -b viengoos-on-bare-metal origin/viengoos-on-bare-metal
+
+viengoos-on-bare-metal is the current development focus.
+
+Discussion should be held on the [[mailing lists/l4-hurd]] mailing list.
+
+ * [[Building]]
+ * Running
+ * [[QEMU]]
+ * [[Hardware]]
+ * [[Documentation]]
+ * [[Projects]]
diff --git a/microkernel/viengoos/building.mdwn b/microkernel/viengoos/building.mdwn
new file mode 100644
index 00000000..45111c35
--- /dev/null
+++ b/microkernel/viengoos/building.mdwn
@@ -0,0 +1,100 @@
+[[!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]]."]]"""]]
+
+Check out Viengoos and switch to the viengoos-on-bare-metal branch
+(all development is currently done on this branch and it will
+eventually be merged into the master branch):
+
+ $ git clone git://git.savannah.gnu.org/hurd/viengoos.git
+ $ cd viengoos
+ $ git checkout -b viengoos-on-bare-metal origin/viengoos-on-bare-metal
+
+Generate the autoconf environment (note that --force is not specified
+as we have our own version of config.guess and config.sub):
+
+ $ autoreconf -i
+
+Configure a build directory:
+
+ $ mkdir build
+ $ cd build
+ $ ../configure --host=x86_64-pc-viengoos-gnu --with-newlib
+
+Now, build Viengoos. Running make the first time will automatically
+fetch binutils and gcc from the Internet and build a cross compiler.
+Running make again will build the Viengoos proper. Again, the build
+process with fetch several tarballs including Newlib, the Boehm GC and
+Sqlite.
+
+ $ make
+ ...
+ The cross compiler is now set-up. Re-run `make' and proceed as usual.
+ make[2]: Leaving directory `.../viengoos/build'
+ make[1]: Leaving directory `.../viengoos/build'
+ $ make
+
+# Booting Using QEMU
+
+To boot Viengoos, use Grub 2. You cannot use Grub Legacy: Viengoos is
+an ELF64 executable, which Grub Legacy does not support.
+
+First, check out Grub 2 from svn:
+
+ $ svn co svn://svn.savannah.gnu.org/grub/trunk/grub2
+ $ cd grub2
+
+Before building Grub 2, you should apply the following patch, which
+makes it easy to tell Grub to load a specific grub.cfg at start up
+([details](http://lists.gnu.org/archive/html/grub-devel/2009-01/msg00099.html)).
+
+ $ wget http://www.gnu.org/software/hurd/microkernel/viengoos/grub2-config.diff -O /dev/stdout | patch -p0
+
+Next, build Grub 2:
+
+ $ ./autogen.sh
+ $ mkdir build
+ $ cd build
+ $ ../configure --prefix=`pwd`/../install
+ $ make && make install
+
+Create the boot disk:
+
+ $ cd ../install
+ $ bin/grub-mkrescue boot.img --configfile="(hd0,1)/grub.cfg" --image-type=floppy --modules='help reboot serial multiboot pc configfile normal boot fat'
+
+Now, create /viengoos and link viengoos and hieronymus into that
+directory:
+
+ $ mkdir /viengoos
+ $ cd /viengoos
+ $ ln -s ~/viengoos/build/viengoos/viengoos.stripped viengoos
+ $ ln -s ~/viengoos/build/hieronymus/hieronymus.stripped hieronymus
+
+Also, create a grub.cfg file in /viengoos/grub.cfg:
+
+ set timeout=1
+ set default=0
+ set root=hd0,1
+
+ menuentry "Viengoos" {
+ multiboot /viengoos -D 3 -o serial
+ module /hieronymus
+ }
+
+NB: If you edit grub.cfg and a backup file called grub.cfg~ is
+created, qemu will use grub.cfg~ instead of grub.cfg! Thus, after
+editing grub.cfg, be sure to delete any grub.cfg~ file!
+
+Finally, boot!
+
+ $ qemu-system-x86_64 -serial stdio -fda ~/grub2/install/boot.img -hda fat:/viengoos -boot a
+
+By default, Hieronymus is configured to load ruth, a test suite. Ruth
+can take a long time to complete.
diff --git a/microkernel/viengoos/documentation.mdwn b/microkernel/viengoos/documentation.mdwn
new file mode 100644
index 00000000..52ff7a48
--- /dev/null
+++ b/microkernel/viengoos/documentation.mdwn
@@ -0,0 +1,56 @@
+[[!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]]."]]"""]]
+
+The most up-to-date documentation is in the source code itself, see in
+particular the header files in the hurd directory.
+
+There is a started but as-of-yet incomplete manual in the doc
+directory, which documents the Viengoos API and the Hurd API. A
+version of that is available [[here|reference-guide.pdf]]. It is
+not, however, automatically regenerated, and thus may not be up to
+date.
+
+Academic Papers:
+
+ * [Viengoos: A Framework for Stakeholder-Directed Resource
+ Allocation](http://walfield.org/papers/2009-walfield-viengoos-a-framework-for-stakeholder-directed-resource-allocation.pdf).
+ By Neal H. Walfield. Submitted to EuroSys 2009.
+
+ General-purpose operating systems not only fail to provide adaptive
+ applications the information they need to intelligently adapt, but
+ also schedule resources in such a way that were applications to
+ aggressively adapt, resources would be inappropriately scheduled. The
+ problem is that these systems use demand as the primary indicator of
+ utility, which is a poor indicator of utility for adaptive
+ applications.
+
+ We present a resource management framework appropriate for traditional
+ as well as adaptive applications. The primary difference from current
+ schedulers is the use of stakeholder preferences in addition to
+ demand. We also show how to revoke memory, compute the amount of
+ memory available to each principal, and account shared
+ memory. Finally, we introduce a prototype system, Viengoos, and
+ present some benchmarks that demonstrate that it can efficiently
+ support multiple aggressively adaptive applications simultaneously.
+
+ * [Improving Usability via Access Decomposition and Policy
+ Refinement](http://walfield.org/papers/20070104-walfield-access-decomposition-policy-refinement.pdf).
+ By Neal H. Walfield and Marcus Brinkmann. Technical report
+ (submitted to HotOS 2007).
+
+ Commodity operating systems fail to meet the security, resource
+ management and integration expectations of users. We propose a unified
+ solution based on a capability framework as it supports fine grained
+ objects, straightforward access propagation and virtualizable
+ interfaces and explore how to improve resource use via access
+ decomposition and policy refinement with minimum interposition. We
+ argue that only a small static number of scheduling policies are
+ needed in practice and advocate hierarchical policy specification and
+ central realization.
diff --git a/microkernel/viengoos/documentation/reference-guide.pdf b/microkernel/viengoos/documentation/reference-guide.pdf
new file mode 100644
index 00000000..6fbea23b
--- /dev/null
+++ b/microkernel/viengoos/documentation/reference-guide.pdf
Binary files differ
diff --git a/microkernel/viengoos/grub2-config.diff b/microkernel/viengoos/grub2-config.diff
new file mode 100644
index 00000000..e4b1ef40
--- /dev/null
+++ b/microkernel/viengoos/grub2-config.diff
@@ -0,0 +1,47 @@
+2009-01-17 Neal H. Walfield <address@hidden>
+
+ * util/i386/pc/grub-mkrescue.in: Add new option --configfile. If
+ not the set and not the empty string, load it from the generated
+ config file on boot.
+
+Index: util/i386/pc/grub-mkrescue.in
+===================================================================
+--- util/i386/pc/grub-mkrescue.in (revision 2148)
++++ util/i386/pc/grub-mkrescue.in (working copy)
+@@ -49,6 +49,7 @@
+ --image-type=TYPE select floppy or cdrom (default)
+ --emulation=TYPE select El Torito boot emulation type floppy
+ or none (default) (cdrom only)
++ --configfile=FILE config file to load (default: none)
+
+ grub-mkimage generates a bootable rescue image of the specified type.
+
+@@ -93,6 +94,9 @@
+ echo "Unknown emulation type \`$emulation'" 1>&2
+ exit 1 ;;
+ esac ;;
++ --configfile=*)
++ configfile=`echo "$option" | sed 's/--configfile=//'`
++ ;;
+ -*)
+ echo "Unrecognized option \`$option'" 1>&2
+ usage
+@@ -121,9 +125,15 @@
+ ${aux_dir}/boot/grub/
+
+ modules="biosdisk `cat ${input_dir}/partmap.lst` ${modules}"
+-for i in ${modules} ; do
+- echo "insmod $i"
+-done > ${aux_dir}/boot/grub/grub.cfg
++{
++ for i in ${modules} ; do
++ echo "insmod $i"
++ done
++ if test x$configfile != x
++ then
++ echo "configfile $configfile"
++ fi
++} > ${aux_dir}/boot/grub/grub.cfg
+
+ for d in ${overlay}; do
+ echo "Overlaying $d"
diff --git a/microkernel/viengoos/hardware.mdwn b/microkernel/viengoos/hardware.mdwn
index 1b4ce514..aff70604 100644
--- a/microkernel/viengoos/hardware.mdwn
+++ b/microkernel/viengoos/hardware.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
I boot over the network using PXE.
diff --git a/microkernel/viengoos/projects.mdwn b/microkernel/viengoos/projects.mdwn
new file mode 100644
index 00000000..971206bb
--- /dev/null
+++ b/microkernel/viengoos/projects.mdwn
@@ -0,0 +1,17 @@
+[[!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]]."]]"""]]
+
+Some projects:
+
+[[!inline
+pages="microkernel/viengoos/projects/* and !microkernel/viengoos/projects/*/*"
+show=0
+feeds=no
+actions=yes]]
diff --git a/microkernel/viengoos/projects/address_space_management.mdwn b/microkernel/viengoos/projects/address_space_management.mdwn
new file mode 100644
index 00000000..2d00e4f4
--- /dev/null
+++ b/microkernel/viengoos/projects/address_space_management.mdwn
@@ -0,0 +1,40 @@
+[[!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_viengoos]]
+
+In Viengoos, a process's address space is managed entirely in user
+space by the process itself. This creates two interesting problems:
+dealing with circular dependencies resulting from having to manage the
+address space data structures and accessing and manipulating the
+address space data structures.
+
+First, managing the address space requires resources, which in turn
+may require address space (e.g., data structures require memory which
+require address space, etc.). We currently break this circular
+dependency by trying to keep enough resources in reserve that
+allocating resources for managing the address space never requires
+more resources than are minimally in the reserve. The reserve is
+currently chosen in an ad-hoc fashion. It would be nice to determine
+it more systematically. Moreover, it would be nice to reduce the
+cases in which a reserve is required. This may be possible by
+restructuring some of the code.
+
+Second, the address space data structures are protected using a single
+lock. This not only means that only a single thread can be updating
+the address space at a time, but that if a thread faults and the
+address space is locked, then the process dead locks! It should be
+possible to at least walk the address space using lock-free
+techniques. This requires updating the address space construction
+code such that all addresses remain valid during any given
+manipulation. Second, to avoid the mentioned dead-lock problem, we
+try to ensure that accessing the data structures will never result in
+a fault. This means protecting the stack. An alternative approach is
+to use undo buffers.
diff --git a/microkernel/viengoos/projects/capability-aware_compiler.mdwn b/microkernel/viengoos/projects/capability-aware_compiler.mdwn
new file mode 100644
index 00000000..b4e465d9
--- /dev/null
+++ b/microkernel/viengoos/projects/capability-aware_compiler.mdwn
@@ -0,0 +1,16 @@
+[[!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_viengoos]]
+
+Modify, e.g., gcc to understand capability semantics and teach gcc how
+to optimize it, e.g., how to batch and combine calls.
+
+This project is deemed suitable for a thesis.
diff --git a/microkernel/viengoos/projects/new_hash_function.mdwn b/microkernel/viengoos/projects/new_hash_function.mdwn
new file mode 100644
index 00000000..d0374720
--- /dev/null
+++ b/microkernel/viengoos/projects/new_hash_function.mdwn
@@ -0,0 +1,22 @@
+[[!meta copyright="Copyright © 2008, 2009, 2010 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_viengoos]]
+
+The current hash function in libhurd-ihash results in a lot of
+collisions when the hash table is 80% full. To overcome this, we keep
+hash tables at most 30% full. This represents a fair amount of
+overhead. Find a better algorithm. There can either be one that is
+appropriate in the general case or one that works well in a relevant,
+specific case, e.g., viengoos/object.c uses a hash to find the object
+corresponding to a frame, which is keyed on its physical address.
+
+Note that this applies to the Hurd's [[hurd/libihash]], too.
diff --git a/microkernel/viengoos/serial_port.mdwn b/microkernel/viengoos/serial_port.mdwn
index 53b988c5..14efcb9f 100644
--- a/microkernel/viengoos/serial_port.mdwn
+++ b/microkernel/viengoos/serial_port.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Viengoos can be configured to send output to the serial port (in fact,
this is the only configuration that I use). To talk to the serial
diff --git a/naming_context.mdwn b/naming_context.mdwn
index 9c701e71..2968b0a5 100644
--- a/naming_context.mdwn
+++ b/naming_context.mdwn
@@ -1,18 +1,22 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
Names are bindings to objects, however, to find an object
given a name, the relation must be looked up in a
-naming context. A problem with using string as names is
+*naming context*.
+
+A problem with using strings as names is
that it is very easy to lose track of the correct naming
-context. This is one of the problem with [[PassiveTranslators]]:
+context. This is one of the problem with [[passive
+translators|hurd/translator]]:
a passive translator is a string. When the node is accessed
on which the passive translator is set and there is no active
translator, then an active translator is started using the
@@ -22,3 +26,6 @@ passive translator. The passive translator settings are
therefore resolved in the file system's naming context, which
may be different from that of the program instance that set the
passive translator setting.
+
+[[!tag open_issue_hurd open_issue_documentation]] <!-- Move the description of
+the specific problem / example elsewhere. -->
diff --git a/news.mdwn b/news.mdwn
new file mode 100644
index 00000000..83f9d9d8
--- /dev/null
+++ b/news.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2008, 2011 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 stable_URL]]
+
+[[!inline
+pages="news/* and !*/discussion"
+show=0
+feeds=no
+actions=yes]]
diff --git a/news/2002-01-13.mdwn b/news/2002-01-13.mdwn
new file mode 100644
index 00000000..684fed13
--- /dev/null
+++ b/news/2002-01-13.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 2002, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2002-01-13"]]
+
+An
+<A HREF="http://www.pl-berichte.de/berichte/brinkmann.html">interview
+with Marcus Brinkmann</A> was published by <A
+HREF="http://pro-linux.de/">Pro-Linux</A> (the interview is in
+German).
diff --git a/news/2002-01-19.mdwn b/news/2002-01-19.mdwn
new file mode 100644
index 00000000..5adbfc60
--- /dev/null
+++ b/news/2002-01-19.mdwn
@@ -0,0 +1,28 @@
+[[!meta copyright="Copyright © 2002, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2002-01-19"]]
+
+The Toronto Hurd User Group meets: The University of Waterloo
+Computer Science Club will be hosting a talk on the Hurd and the
+Debian GNU/Hurd operating system. There will also be a gpg keysigning
+and installfest for GNU/Hurd following the talk. All are welcome, and
+gpg keys are not required.
+<P>
+Date: 26 Jan 2002
+<P>
+Time: 1400 (2pm EST)
+<P>
+Place: University of Waterloo, Math and Computers building, room 3001
+(comfy lounge).
+<P>
+More information about this event at
+<A HREF="mailto:thug@gnu.org"><EM>thug@gnu.org</EM></A>
diff --git a/news/2002-02-18.mdwn b/news/2002-02-18.mdwn
new file mode 100644
index 00000000..a01bd857
--- /dev/null
+++ b/news/2002-02-18.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2002, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2002-02-18"]]
+
+Pro-Linux has published a <A
+HREF="http://www.pl-berichte.de/berichte/hurd/hurd-status/">GNU/Hurd
+status report</A> (in German). They will infrequently publish updates
+in the future.
diff --git a/news/2002-03-03.mdwn b/news/2002-03-03.mdwn
new file mode 100644
index 00000000..6f88208b
--- /dev/null
+++ b/news/2002-03-03.mdwn
@@ -0,0 +1,28 @@
+[[!meta copyright="Copyright © 2002, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2002-03-03"]]
+
+There is a new mailing list called <A
+HREF="http://mail.gnu.org/mailman/listinfo/hurd-devel-readers">
+Hurd-devel-readers</A>. It is the read-only version of Hurd-devel.
+<P>
+Hurd-devel is a mailing list for detailed discussions
+of design and implementation issues in the GNU&nbsp;Hurd; it is an internal
+low-volume list restricted to the core developers of the Hurd. While
+the <A HREF="http://lists.gnu.org/archive/html/hurd-devel/">web-based
+archive of Hurd-devel</A> has always been public, the new mailing list
+Hurd-devel-readers provides a convenient way to follow
+the discussion of the Hurd experts.
+<P>
+If you are a recipient of Hurd-devel-readers and want
+to follow up on the discussion, please reply to the
+Bug-hurd mailing list.
diff --git a/news/2002-03-08.mdwn b/news/2002-03-08.mdwn
new file mode 100644
index 00000000..aa3d6e8c
--- /dev/null
+++ b/news/2002-03-08.mdwn
@@ -0,0 +1,31 @@
+[[!meta copyright="Copyright © 2002, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2002-03-08"]]
+
+We are pleased to announce version 1.3 of the GNU distribution of the
+Mach 3.0 interface generator `MIG'. It may be found in the file
+<SAMP><A HREF="http://ftp.gnu.org/gnu/mig/mig-1.3.tar.gz">http://ftp.gnu.org/gnu/mig/mig-1.3.tar.gz</A></SAMP> (about 145 KB compressed).
+<P>
+Diffs from version 1.2 are in <SAMP><A HREF="http://ftp.gnu.org/gnu/mig/mig-1.2-1.3.diff.gz">http://ftp.gnu.org/gnu/mig/mig-1.2-1.3.diff.gz</A></SAMP>
+(about 6 KB compressed, 15 KB uncompressed). Relative to version 1.2,
+version 1.3 contains only some minor fixes.
+<P>
+You need this tool to compile the GNU&nbsp;Mach and Hurd distributions, and
+to compile GNU libc for the Hurd.
+<P>
+Bug reports relating to this distribution should be sent to
+<A HREF="mailto:bug-hurd@gnu.org">bug-hurd@gnu.org</A>. Requests for assistance should be made on
+<A HREF="mailto:help-hurd@gnu.org">help-hurd@gnu.org</A>.
+<P>
+The md5sum checksum for this distibution is:
+<P>
+45c2b7456727d81dbd75f7152f8136fd mig-1.3.tar.gz
diff --git a/news/2002-03-23.mdwn b/news/2002-03-23.mdwn
new file mode 100644
index 00000000..68180ba8
--- /dev/null
+++ b/news/2002-03-23.mdwn
@@ -0,0 +1,16 @@
+[[!meta copyright="Copyright © 2002, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2002-03-23"]]
+
+Added the [[hurd/Hurd_Hacking_Guide]] to the documentation section. Thanks to
+Wolfgang Jährling for providing this introduction into GNU/Hurd and Mach
+programming!
diff --git a/news/2002-05-05.mdwn b/news/2002-05-05.mdwn
new file mode 100644
index 00000000..0908b78f
--- /dev/null
+++ b/news/2002-05-05.mdwn
@@ -0,0 +1,33 @@
+[[!meta copyright="Copyright © 2002, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2002-05-05"]]
+
+We are currently finishing the transition from a stdio-based GNU C
+Library (glibc) to a libio-based one. This is the result of about
+five months of work we put into getting the system ready and, of
+course, the work that the glibc developers did to make glibc what it
+is.
+<P>
+This change will have various advantages, for example libio has been
+tested more extensively, as it is also used by most GNU/Linux systems
+for some time now. However, it also means a change in the Application
+Binary Interface (ABI) of glibc, thus you will need to reinstall an
+existing Debian GNU/Hurd system. Upgrading has not been tested at
+all, so better do not expect it to work. Also note that you will need
+to get some of the Debian packages from <A
+HREF="ftp://alpha.gnu.org/gnu/hurd/debian-libio/">alpha.gnu.org</A>.
+Please read the recent mailing list archives for details.
+<P>
+<B>Important Note:</B> As another temporary complication, the current
+installation tarball is available at <A
+HREF="ftp://alpha.gnu.org/gnu/hurd/debian-staging/">a different place</A>
+than usual.
diff --git a/news/2002-05-18.mdwn b/news/2002-05-18.mdwn
new file mode 100644
index 00000000..10104a5e
--- /dev/null
+++ b/news/2002-05-18.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 2002, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2002-05-18"]]
+
+The "Linux and Unix User Group Heilbronn" (in Germany) is organizing
+a Debian GNU/Hurd <A
+HREF="http://www.luug-hn.org/vortraege.html">installation party</A> at
+25 May 2002. In addition to that, Wolfgang J&auml;hrling will give a talk
+about usage of GNU/Hurd, common problems found in porting programs to
+GNU/Hurd and programming of extensions for the Hurd. It is a public
+event, so everyone is free to show up and participate.
diff --git a/news/2002-05-24.mdwn b/news/2002-05-24.mdwn
new file mode 100644
index 00000000..57c7549f
--- /dev/null
+++ b/news/2002-05-24.mdwn
@@ -0,0 +1,21 @@
+[[!meta copyright="Copyright © 2002, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2002-05-24"]]
+
+Finally, the transition from the stdio-based GLibC Application
+Binary Interface (ABI) to the libio-based GLibC ABI has been
+completed. The Debian GNU/Hurd binary distribution has resumed
+building packages again, and everything should be back to normal.
+Note that we have also switched to <A
+HREF="http://gcc.gnu.org/gcc-3.1/">GCC 3.1</A> as our default
+compiler. Thanks to everyone who helped in making all this possible,
+and our apologize for any inconvenience we have caused you.
diff --git a/news/2002-05-28.mdwn b/news/2002-05-28.mdwn
new file mode 100644
index 00000000..5cfe129b
--- /dev/null
+++ b/news/2002-05-28.mdwn
@@ -0,0 +1,22 @@
+[[!meta copyright="Copyright © 2002, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2002-05-28"]]
+
+We are pleased to announce version 1.3 of the GNU distribution of
+the Mach kernel, featuring advanced boot script support, support for
+large disks (>= 10GB) and an improved console.
+<P>
+This distribution is only for x86 PC machines.
+Volunteers interested in ports to other architectures are eagerly sought.
+<P>
+More <A HREF="gnumach-download.html#release">information about GNU
+Mach 1.3</A> is available on the GNU&nbsp;Mach web page.
diff --git a/news/2002-06-22.mdwn b/news/2002-06-22.mdwn
new file mode 100644
index 00000000..3bb316b3
--- /dev/null
+++ b/news/2002-06-22.mdwn
@@ -0,0 +1,22 @@
+[[!meta copyright="Copyright © 2002, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2002-06-22"]]
+
+Various developers of the Hurd and people interested in it will meet
+at the <A HREF="http://lsm.abul.org/">Libre Software Meeting</A> in
+Bordeaux on July 9-13. Neal Walfield, who is working on porting the
+Hurd to the <A HREF="http://www.l4ka.org/">L4</A> microkernel, will give
+a presentation about L4, the people from
+<A HREF=" http://www.hurdfr.org/">HurdFr</A> will give an
+introduction to the Hurd, and another presentation about the Hurd will
+be given by Marcus Brinkmann. There might be additional talks about
+the Hurd and related topics.
diff --git a/news/2002-08-16.mdwn b/news/2002-08-16.mdwn
new file mode 100644
index 00000000..9814295f
--- /dev/null
+++ b/news/2002-08-16.mdwn
@@ -0,0 +1,32 @@
+[[!meta copyright="Copyright © 2002, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2002-08-16"]]
+
+The Hurd sources have stabilized again after a short period in
+which some of the interfaces were changed to prepare support of long
+files. All relevant filesystem and I/O interfaces have been modified
+to use 64 bit even on 32 bit systems.
+
+In light of the small and patient user base, we decided to drop
+backwards compatibility and replace the interfaces instead extending
+them. This means that the binaries of the Hurd, the C library, and
+some other programs need to be replaced manually, all at the same
+time, followed by a reboot.
+
+A <A
+HREF="http://www.debian.org/ports/hurd/extra-files/hurd-upgrade.txt">detailed
+step-by-step procedure how to upgrade</A> Debian GNU/Hurd is available
+on the Debian web site.
+
+People not using a binary distribution need to do a full manual
+bootstrap. It is recommended to treat this as a cross-compilation
+case.
diff --git a/news/2002-10-03.mdwn b/news/2002-10-03.mdwn
new file mode 100644
index 00000000..5e25a55b
--- /dev/null
+++ b/news/2002-10-03.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 2002, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2002-10-03"]]
+
+A new article about [[the_authentication_server|hurd/documentation/auth]]
+has been added to the web pages. It resembles the talk
+about the same topic which was given at the Libre Software Meeting,
+therefore the target audience is mostly programmers which want to learn
+about the details of authentication in the Hurd.
diff --git a/news/2002-10-03_2.mdwn b/news/2002-10-03_2.mdwn
new file mode 100644
index 00000000..281d24c8
--- /dev/null
+++ b/news/2002-10-03_2.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 2002, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2002-10-03"]]
+
+Marcus Brinkmann speaks about the GNU&nbsp;Hurd at "Reflections |
+Projections 2002", the <A
+HREF="http://www.acm.uiuc.edu/conference/">National Student ACM
+Conference</A> at the University of Urbana-Champaign, Illinois. The
+conference is held on October 18-20.
diff --git a/news/2002-10-19.mdwn b/news/2002-10-19.mdwn
new file mode 100644
index 00000000..9153fb41
--- /dev/null
+++ b/news/2002-10-19.mdwn
@@ -0,0 +1,39 @@
+[[!meta copyright="Copyright © 2002, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2002-10-19"]]
+
+The Toronto Hurd Users Group meets again: The <A
+HREF="http://www.uwaterloo.ca/"> University of Waterloo</A> <A
+HREF="http://www.csclub.uwaterloo.ca/">Computer Science Club</A> will
+be hosting talks on the GNU&nbsp;Hurd on October 26 by Marcus Brinkmann and
+Neal Walfield. There will also be a <A
+HREF="http://www.gnupg.org/">GnuPG</A> keysigning before Marcus's
+talk. Please email <A HREF="mailto:rmgolbeck@uwaterloo.ca">Ryan
+Golbeck</A> your <A HREF="http://www.gnupg.org/">GnuPG</A> key so he
+can get everyone setup.</P>
+
+<P>Marcus will talk about <A
+HREF="http://www.csclub.uwaterloo.ca/events/MC2066-2002-10-26-3%3A00PM.html">the
+Hurd interfaces</A>. Neal will talk about about
+<A HREF="http://www.csclub.uwaterloo.ca/events/MC2066-2002-10-26-4%3A30PM.html">
+A GNU Approach to Virtual Memory Management in a Multiserver Operating
+System
+</A></P>
+
+<P>Date: 26 Oct 2002</P>
+<P>Time: 1330 (1:30pm EST) and 1500 (3:00pm EST)</P>
+<P>Place: University of Waterloo, Math and Computers building, room MC
+2066</P>
+
+<P>More information can be found at <A
+HREF="http://www.csclub.uwaterloo.ca/"> UW CS Club website</A> and
+at <A HREF="mailto:thug@gnu.org">thug@gnu.org</A>
diff --git a/news/2002-11-18.mdwn b/news/2002-11-18.mdwn
new file mode 100644
index 00000000..9db912a1
--- /dev/null
+++ b/news/2002-11-18.mdwn
@@ -0,0 +1,21 @@
+[[!meta copyright="Copyright © 2002, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2002-11-18"]]
+
+For one month now, the pthread implementation by Neal Walfield is part
+of the Hurd CVS source tree, and has been used to compile more
+software for the Debian GNU/Hurd archive. The lack of a POSIX
+compatible thread library (the Hurd was based on the cthread
+implementation that originally accompanied Mach) was a show stopper,
+and we are happy about the possibility to not only compile more
+applications, but also to start the work on migrating the Hurd source
+code to pthreads.
diff --git a/news/2003-01-18.mdwn b/news/2003-01-18.mdwn
new file mode 100644
index 00000000..8f342d1d
--- /dev/null
+++ b/news/2003-01-18.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 2003, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2003-01-18"]]
+
+Ga&euml;l Le Mignot, president of HurdFr,
+<A HREF="http://news.hurdfr.org/gen.php3/2002/11/05/44,0,1,0,0.html">
+presented the GNU&nbsp;Hurd on 22 November</A>
+2002 at EpX in Paris.
+<A HREF="http://kilobug.free.fr/hurd/pres-en/">English slides</A> and
+<A HREF="http://kilobug.free.fr/hurd/pres-fr/">French slides</A> of the
+talk are also available.
diff --git a/news/2003-02-14.mdwn b/news/2003-02-14.mdwn
new file mode 100644
index 00000000..4584c525
--- /dev/null
+++ b/news/2003-02-14.mdwn
@@ -0,0 +1,16 @@
+[[!meta copyright="Copyright © 2003, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2003-02-14"]]
+
+The <A HREF="/software/hurd/docs.html#UsersGuide">GNU/Hurd User's Guide</A>
+is now accessible through the <A HREF="/software/hurd/docs.html">Documentation
+</A> section of the Hurd web pages.
diff --git a/news/2003-07-02.mdwn b/news/2003-07-02.mdwn
new file mode 100644
index 00000000..27d9702a
--- /dev/null
+++ b/news/2003-07-02.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 2003, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2003-07-02"]]
+
+The tarball for Debian GNU/Hurd that Marcus Brinkmann made over the
+years has been discontinued in favour of Jeff Bailey's
+<A HREF="http://packages.debian.org/crosshurd">crosshurd</A> package.
+To install Debian GNU/Hurd from now on, this package should be used.
+Another Debian system is required to be installed on the same machine.
+The GNU/Hurd installation guide has not been updated yet.
diff --git a/news/2003-07-16.mdwn b/news/2003-07-16.mdwn
new file mode 100644
index 00000000..a37bed26
--- /dev/null
+++ b/news/2003-07-16.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 2003, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2003-07-16"]]
+
+GNU/LinuxTag 2003 is now over and since there was a talk given about
+the Hurd, a demo GNU/Hurd machine running and the sale of Hurd
+t-shirts, Wolfgang J&auml;hrling decided to write a <A
+HREF="http://mail.gnu.org/archive/html/help-hurd/2003-07/msg00029.html">short
+summary</A> of what happened there. Many thanks to Wolfgang
+J&auml;hrling, Volker Dormeyer and Michael Banck!
diff --git a/news/2003-08-21.mdwn b/news/2003-08-21.mdwn
new file mode 100644
index 00000000..1a44c1d2
--- /dev/null
+++ b/news/2003-08-21.mdwn
@@ -0,0 +1,16 @@
+[[!meta copyright="Copyright © 2003, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2003-08-21"]]
+
+Added a link to Patrick Strasser's <A
+HREF="http://www.htu.tugraz.at/~past/hurd/global/">the Hurd Source
+Code Cross Reference</A> in all the "Source code" sections.
diff --git a/news/2005-01-28.mdwn b/news/2005-01-28.mdwn
new file mode 100644
index 00000000..9e54ff60
--- /dev/null
+++ b/news/2005-01-28.mdwn
@@ -0,0 +1,16 @@
+[[!meta copyright="Copyright © 2005, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2005-01-28"]]
+
+Marcus Brinkmann added
+<A HREF="/software/hurd/hurd-l4.html">a small web page</A> describing
+the ongoing developments on the Hurd-to-L4 port.
diff --git a/news/2005-09-20.mdwn b/news/2005-09-20.mdwn
new file mode 100644
index 00000000..e2af05d7
--- /dev/null
+++ b/news/2005-09-20.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 2005, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2005-09-20"]]
+
+Material from the Operating System topic during
+the <A HREF="http://libresoftwaremeeting.org/">Libre Software
+Meeting</A> which took place this summer
+is <A
+HREF="http://medias.2005.libresoftwaremeeting.org/topics/os/">available
+online</A>. Included are slides and recordings of talks by Marcus
+Brinkmann and Neal Walfield about the Hurd/L4 port.
diff --git a/news/2006-04-27.mdwn b/news/2006-04-27.mdwn
new file mode 100644
index 00000000..befce295
--- /dev/null
+++ b/news/2006-04-27.mdwn
@@ -0,0 +1,75 @@
+[[!meta copyright="Copyright © 2006, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2006-04-27"]]
+
+<p>The GNU&nbsp;Hurd project will participate in this year's <strong>Google
+Summer of Code</strong>, under the aegis of the GNU project.</p>
+
+<p>The following is a list of items you might want to work on. If you want to
+modify or extend these tasks or have your own ideas what to work on, please
+feel invited to contact us on the
+[[bug-hurd_mailing_list|mailing lists/bug-hurd]] or
+the [[#hurd_IRC_channel|irc]].</p>
+
+<ul>
+
+<li>Make GNU&nbsp;Mach use more <a href="http://savannah.gnu.org/task/?5488">up
+to date <em>device drivers</em></a>.</li>
+
+<li>Work on <a href="http://savannah.gnu.org/task/?5489">GNU&nbsp;Mach's
+<em>IPC / VM system</em></a>.</li>
+
+<li>Design and implement a <a
+href="http://savannah.gnu.org/task/?5485"><em>sound system</em></a>.</li>
+
+<li>Transition the Hurd libraries and servers <a
+href="http://savannah.gnu.org/task/?5487">from <em>cthreads</em> to
+<em>pthreads</em></a>.</li>
+
+<li>Find and implement a reasonable way to make the Hurd servers use <a
+href="http://savannah.gnu.org/task/?5490"><em>syslog</em></a>.</li>
+
+<li>Design and implement <a
+href="http://savannah.gnu.org/task/?1619"><em>libchannel</em></a>, a library
+for streams.</li>
+
+<li>Rewrite <a href="http://savannah.gnu.org/task/?5469"><em>pfinet</em></a>,
+our interface to the IPv4 world.</li>
+
+<li>Implement and make the Hurd properly use <a
+href="http://savannah.gnu.org/task/?5503"><em>extended
+attributes</em></a>.</li>
+
+<li>Design / implement / enhance support for the...
+
+ <ul>
+ <li><a href="http://savannah.gnu.org/task/?5486"><em>Andrew File System
+ (AFS)</em></a>;</li>
+
+ <li><a href="http://savannah.gnu.org/task/?5497"><em>NFS client</em> and
+ <em>NFSd</em></a>;</li>
+
+ <li><a href="http://savannah.gnu.org/task/?5498"><em>EXT3 file
+ system</em></a>;</li>
+
+ <li><a href="http://savannah.gnu.org/task/?5499"><em>Logical Volume Manager
+ (LVM)</em></a>.</li>
+
+ </ul>
+
+</ul>
+
+<p>Please see the page <a href="/software/soc-projects/guidelines.html">GNU
+guidelines for Summer of Code projects</a> about how to make an application and
+<a href="/software/soc-projects/ideas.html">Summer of Code project ideas
+list</a> for a list of tasks for various GNU projects and information about
+about how to submit your own ideas for tasks.</p>
diff --git a/news/2007-01-07.mdwn b/news/2007-01-07.mdwn
new file mode 100644
index 00000000..3b7ed1be
--- /dev/null
+++ b/news/2007-01-07.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2007, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2007-01-07"]]
+
+A number of GNU Hurd developers will again (as already in the previous years)
+meet at the time of the FOSDEM 2007, which will take place from 2007-02-24 to
+25 in Brussels, Belgium. [[This_wiki_page|community/meetings/fosdem_2007]] has
+some details. [[Contact_us]] if you are interested in meeting with us.
diff --git a/news/2007-01-14.mdwn b/news/2007-01-14.mdwn
new file mode 100644
index 00000000..e33270e4
--- /dev/null
+++ b/news/2007-01-14.mdwn
@@ -0,0 +1,52 @@
+[[!meta copyright="Copyright © 2007, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2007-01-14"]]
+
+<p>Neal Walfield and Marcus Brinkmann have written and submitted for
+publication <a
+href="http://lists.gnu.org/archive/html/bug-hurd/2007-01/msg00046.html"><em>A
+Critique of the GNU&nbsp;Hurd Multi-server Operating System</em></a> and a <a
+href="http://lists.gnu.org/archive/html/l4-hurd/2007-01/msg00007.html">position
+paper <em>Improving Usability via Access Decomposition and Policy
+Refinement</em></a>. Please follow the two preceding links to see the complete
+announcements. The authors welcome comments and discussion which may be
+directed to the <a href="mailto:bug-hurd@gnu.org">&lt;bug-hurd@gnu.org&gt;
+mailing list</a> for the Critique and to the <a
+href="mailto:l4-hurd@gnu.org">&lt;l4-hurd@gnu.org&gt; mailing list</a> for the
+position paper.
+
+<p>The abstract of the Critique: <blockquote><p>The GNU&nbsp;Hurd's design was
+motivated by a desire to rectify a number of observed shortcomings in Unix.
+Foremost among these is that many policies that limit users exist simply as
+remnants of the design of the system's mechanisms and their implementation. To
+increase extensibility and integration, the Hurd adopts an object-based
+architecture and defines interfaces, which, in particular those for the
+composition of and access to name spaces, are virtualizable.
+
+<p>This paper is first a presentation of the Hurd's design goals and a
+characterization of its architecture primarily as it represents a departure
+from Unix's. We then critique the architecture and assess it in terms of the
+user environment of today focusing on security. Then follows an evaluation of
+Mach, the microkernel on which the Hurd is built, emphasizing the design
+constraints which Mach imposes as well as a number of deficiencies its design
+presents for multi-server like systems. Finally, we reflect on the properties
+such a system appears to require.</blockquote>
+
+<p>The abstract of the position paper: <blockquote><p>Commodity operating
+systems fail to meet the security, resource management and integration
+expectations of users. We propose a unified solution based on a capability
+framework as it supports fine grained objects, straightforward access
+propagation and virtualizable interfaces and explore how to improve resource
+use via access decomposition and policy refinement with minimum interposition.
+We argue that only a small static number of scheduling policies are needed in
+practice and advocate hierarchical policy specification and central
+realization.</blockquote>
diff --git a/news/2007-03-14.mdwn b/news/2007-03-14.mdwn
new file mode 100644
index 00000000..5b601a35
--- /dev/null
+++ b/news/2007-03-14.mdwn
@@ -0,0 +1,57 @@
+[[!meta copyright="Copyright © 2007, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2007-03-14"]]
+
+<p>The GNU&nbsp;Hurd project will participate in this year's <strong>Google
+Summer of Code</strong>, under the aegis of the GNU project.</p>
+
+<p>The following is a list of items you might want to work on. If you want to
+modify these task proposals or have your own ideas on what to work, then please
+don't hesitate to contact us on the
+[[bug-hurd_mailing_list|mailing lists/bug-hurd]] or
+the [[#hurd_IRC_channel|irc]].</p>
+
+<ul>
+
+<li>Design and implement <a
+href="http://savannah.gnu.org/task/?1619"><em>libchannel</em></a>, a library
+for streams.</li>
+
+<li>Rewrite <a href="http://savannah.gnu.org/task/?5469"><em>pfinet</em></a>,
+our interface to the IPv4 world; create a <a
+href="http://savannah.gnu.org/task/?5470"><em>pfinet6</em></a> to interface to
+the IPv6 world.</li>
+
+<li>Make GNU Mach use more <a href="http://savannah.gnu.org/task/?5488">up to
+date <em>device drivers</em></a>.</li>
+
+<li>Design and implement a <a
+href="http://savannah.gnu.org/task/?5485"><em>sound system</em></a>.</li>
+
+<li>Introduce the world of the <a
+href="http://savannah.gnu.org/task/?5486"><em>Andrew File System (AFS)</em></a>
+to the Hurd.</li>
+
+<li>Work on enhancing our <a href="http://savannah.gnu.org/task/?5497"><em>NFS
+client</em> and <em>NFSd</em></a>.</li>
+
+<li>Implement support for <a
+href="http://savannah.gnu.org/task/?5499"><em>Logical Volume Management
+(LVM)</em></a>.</li>
+
+</ul>
+
+<p>Please see the page <a href="/software/soc-projects/guidelines.html">GNU
+guidelines for Summer of Code projects</a> about how to make an application and
+<a href="/software/soc-projects/ideas.html">Summer of Code project ideas
+list</a> for a list of tasks for various GNU projects and information about
+about how to submit your own ideas for tasks.</p>
diff --git a/news/2007-10-01.mdwn b/news/2007-10-01.mdwn
new file mode 100644
index 00000000..0284f3dc
--- /dev/null
+++ b/news/2007-10-01.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 2007, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2007-10-01"]]
+
+This year the GNU Hurd had again been assigned one slot within the **Google
+Summer of Code** program, which was assigned to the task **design and implement
+[*libchannel*](http://savannah.gnu.org/task/?1619), a library for streams**.
+Carl Fredrik Hammar has been working on this task and recently [posted a
+summary](http://lists.gnu.org/archive/html/bug-hurd/2007-09/msg00009.html)
+about the successful work he had been doing, but also gave an outline about how
+he intends to continue improving and extending it.
diff --git a/news/2007-10-12.mdwn b/news/2007-10-12.mdwn
new file mode 100644
index 00000000..82ff8843
--- /dev/null
+++ b/news/2007-10-12.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2007, 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2007-10-12"]]
+
+Stefan Siegl added [[support_for_IPv6_networking|hurd/translator/pfinet/ipv6]]
+to the *pfinet* translator.
diff --git a/news/2008-02-11.mdwn b/news/2008-02-11.mdwn
new file mode 100644
index 00000000..060c0b94
--- /dev/null
+++ b/news/2008-02-11.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2008-02-11"]]
+
+A number of GNU Hurd developers will again (as already in the previous
+years) meet at the time of the FOSDEM 2008, which will take place from
+2008-02-23 to 24 in Brussels, Belgium.
+
+The page about [[community/meetings/FOSDEM_2008]] has some details.
+[[Contact_us]] if you are interested in meeting with us.
diff --git a/news/2008-03-19.mdwn b/news/2008-03-19.mdwn
new file mode 100644
index 00000000..fbfb4c60
--- /dev/null
+++ b/news/2008-03-19.mdwn
@@ -0,0 +1,22 @@
+[[!meta copyright="Copyright © 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2008-03-19"]]
+
+The GNU Hurd project has been accepted as a mentoring organisation for the
+**Google Summer of Code 2008**! If you are a student and looking for a job
+during the summer, take a look at our
+[[project_ideas_list|community/gsoc]]--here's your chance to help improving the
+GNU Hurd including mentoring from our side and being paid compensation from
+Google's!
+
+The application deadline has been [**extended** to **Monday,
+2008-04-07**](http://groups.google.com/group/google-summer-of-code-announce/browse_thread/thread/9fa88f31aa401f70),
+so there's more time for you students to hand in your Hurd applications.
diff --git a/news/2008-09-11.mdwn b/news/2008-09-11.mdwn
new file mode 100644
index 00000000..0765a269
--- /dev/null
+++ b/news/2008-09-11.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2008-09-11"]]
+
+All five students who worked on the Hurd during the **Google Summer of Code 2008** succeeded
+in their projects. For more information please see [[the_community/gsoc_page|community/gsoc]].
+**Congratulations to both students and mentors!**
diff --git a/news/2008-11-14.mdwn b/news/2008-11-14.mdwn
new file mode 100644
index 00000000..0d357900
--- /dev/null
+++ b/news/2008-11-14.mdwn
@@ -0,0 +1,16 @@
+[[!meta copyright="Copyright © 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2008-11-14"]]
+
+[[Samuel_Thibault|samuelthibault]] has implemented support for the PAE feature
+offered by modern x86 processors. This largely faciliates the deployment of
+GNU/Hurd systems running as a [[Xen_domU|microkernel/mach/gnumach/ports/xen]]
+on top of a standard Debian GNU/Linux Xen dom0, for example.
diff --git a/news/2008-12-12.mdwn b/news/2008-12-12.mdwn
new file mode 100644
index 00000000..0bd750b8
--- /dev/null
+++ b/news/2008-12-12.mdwn
@@ -0,0 +1,41 @@
+[[!meta copyright="Copyright © 2008, 2011 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]]."]]"""]]
+
+[[!meta date="2008-12-12"]]
+
+Neal Walfield has submitted a paper to
+[[community/meetings/EuroSys_2009]] describing how resource management
+is done in [[microkernel/viengoos]]:
+
+[Viengoos: A Framework for Stakeholder-Directed Resource
+Allocation](http://walfield.org/papers/2009-walfield-viengoos-a-framework-for-stakeholder-directed-resource-allocation.pdf).
+
+[[!if test="included()" then="""[[!toggle id=abstract
+text="Abstract."]][[!toggleable id=abstract text="[[!paste id=abstract]]"]]"""
+else="[[!paste id=abstract]]"]]
+
+[[!cut id="abstract" text="""
+> General-purpose operating systems not only fail to provide adaptive
+> applications the information they need to intelligently adapt, but also
+> schedule resources in such a way that were applications to aggressively
+> adapt, resources would be inappropriately scheduled. The problem is that
+> these systems use demand as the primary indicator of utility, which is a poor
+> indicator of utility for adaptive applications.
+
+> We present a resource management framework appropriate for traditional as
+> well as adaptive applications. The primary difference from current
+> schedulers is the use of stakeholder preferences in addition to demand. We
+> also show how to revoke memory, compute the amount of memory available to
+> each principal, and account shared memory. Finally, we introduce a prototype
+> system, Viengoos, and present some benchmarks that demonstrate that it can
+> efficiently support multiple aggressively adaptive applications
+> simultaneously.
+"""]]
+
diff --git a/news/2009-03-28.mdwn b/news/2009-03-28.mdwn
new file mode 100644
index 00000000..78c40688
--- /dev/null
+++ b/news/2009-03-28.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2009, 2011 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]]."]]"""]]
+
+[[!meta date="2009-03-28"]]
+
+The application phase for the **Google Summer of Code 2009** has already
+started. Please see our [[page_about_the_GSoC|community/gsoc]] for
+details of how to apply for your favorite Hurd project.
diff --git a/news/2009-04-20.mdwn b/news/2009-04-20.mdwn
new file mode 100644
index 00000000..3755a7fb
--- /dev/null
+++ b/news/2009-04-20.mdwn
@@ -0,0 +1,14 @@
+[[!meta copyright="Copyright © 2009, 2011 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]]."]]"""]]
+
+[[!meta date="2009-04-20"]]
+
+Sergiu Ivanov will be working on [[unionmount_translators|user/scolobb]] during
+the **Google Summer of Code 2009**.
diff --git a/news/2009-06-30.mdwn b/news/2009-06-30.mdwn
new file mode 100644
index 00000000..5031de6c
--- /dev/null
+++ b/news/2009-06-30.mdwn
@@ -0,0 +1,31 @@
+[[!meta copyright="Copyright © 2009, 2011 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]]."]]"""]]
+
+[[!meta date="2009-06-30"]]
+
+A month of the Hurd: *Git migration*, *stand-alone libpthread* and *updated
+status*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+> This month Thomas Schwinge [finished
+> migrating](http://lists.gnu.org/archive/html/bug-hurd/2009-06/msg00147.html)
+> the main Hurd, GNU Mach, MIG, libpthread and unionfs to Git. You can find
+> the new repositories at <http://git.savannah.gnu.org/cgit/hurd/>.
+
+> Also, he made [libpthread buildable
+> stand-alone](http://lists.gnu.org/archive/html/bug-hurd/2009-06/msg00166.html)
+> by separating its build system from the Hurd's.
+
+> Additionally, Olaf Buddenhagen wrote a usability report about his experience
+> with the [[GNU Hurd for everyday work|hurd/status]].
+"""]]
diff --git a/news/2009-07-31.mdwn b/news/2009-07-31.mdwn
new file mode 100644
index 00000000..21f09ae2
--- /dev/null
+++ b/news/2009-07-31.mdwn
@@ -0,0 +1,44 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta date="2009-08-03 08:00 UTC"]]
+
+A month of the Hurd: *hurd Debian package*, *union mount translator*, *bug
+fixes*, and a *job opening*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+> Samuel Thibault uploaded a new version of the hurd
+> [[Debian|hurd/running/debian]] package which improves system stability by
+> fixing a long-standing bug in the [[hurd/translator/exec]] server that had
+> randomly made it hang, inhibiting the creation of new processes.
+
+> [[Sergiu Ivanov|scolobb]] implemented most of the functionality of the
+> [[union mount translator|hurd/translator/unionmount]] which allows combining
+> the [[filesystem trees exported by several translators|hurd/translator]] with
+> the filesystem tree of the underlying node (in contrast to a pure
+> [[hurd/translator/unionfs]], which won't do that). The patches are currently
+> undergoing testing and review on the [[bug-hurd mailing
+> list|mailing_lists/bug-hurd]]. This work is being done as a [[Google Summer
+> of Code|community/gsoc]] project, and we're happy to tell that Sergiu
+> successfully passed the project's midterm evaluation.
+
+> Also, [[Zheng Da|zhengda]] [[!GNU_Savannah_patch 6851 desc="fixed a bug"]] in GNU Mach's
+> [[!wikipedia Berkeley Packet Filter desc="BPF (Berkeley Packet Filter)"]]
+> implementation and contributed a number of fixes and
+> improvements for [[hurd/debugging/rpctrace]] which should help further debugging.
+
+> Aside from looking for new [[contributors|contributing]] all the time,
+> here is another job opening that doesn't require specific Hurd knowledge:
+> we're seeking [someone interested in writing a regression test suite for Hurd
+> components](http://lists.gnu.org/archive/html/bug-hurd/2009-07/msg00177.html).
+"""]]
diff --git a/news/2009-09-30.mdwn b/news/2009-09-30.mdwn
new file mode 100644
index 00000000..38f09bfa
--- /dev/null
+++ b/news/2009-09-30.mdwn
@@ -0,0 +1,32 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta date="2009-10-01 11:52 UTC"]]
+
+A month of the Hurd: *Successful Google Summer of Code project: unionmount*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+> This month saw the successful completion of the Google Summer of Code 2009,
+> for which [[Sergiu Ivanov|scolobb]] created a
+> [[unionmount_translator|hurd/translator/unionmount]].
+> His work allows you to simply union one directory or translator into another one,
+> so you see the files of both of them side by side.
+>
+> He was mentored by Olaf Buddenhagen and both are now working on polishing the code
+> and extending the namespace based translator selection ([[hurd/translator/nsmux]]) which allows you to
+> read a node with a selected translator by simply appending `,,<translator>` to its name.
+>
+> That aside, we saw the usual steady rate of enhancement discussions, as well
+> as bugs getting fixed: X server crashing, preventing that GCC versions after
+> 4.2 optimize too much, etc.
+"""]]
diff --git a/news/2009-10-31.mdwn b/news/2009-10-31.mdwn
new file mode 100644
index 00000000..db3537d0
--- /dev/null
+++ b/news/2009-10-31.mdwn
@@ -0,0 +1,49 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta date="2009-11-02 22:39 UTC"]]
+
+A month of the Hurd: new *installation CDs*, further *Git migration*,
+*porting*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+> This month Philip Charles created a new [installation
+> CD](http://ftp.debian-ports.org/debian-cd/current/), the [L
+> series](http://ftp.debian-ports.org/debian-cd/current/README-L1-disc-set),
+> for the Hurd, which brings us a big step towards installing the Hurd from the
+> Hurd (without the need of a Linux-based installer). If you enjoy testing
+> stuff, please give it a try.
+
+> On the same front, Michael Banck uploaded a new version of
+> [crosshurd](http://packages.debian.org/sid/crosshurd) that makes it again
+> possible to use this package for creating a GNU/Hurd system image directly
+> from Debian unstable packages.
+
+> Also, Thomas Schwinge migrated Sergiu Ivanov's [[hurd/translator/nsmux]],
+> [[Flávio Cruz|flaviocruz]]' cl-hurd *(clisp bindings)*, and Carl Fredrik
+> Hammar [[hurd/libchannel]] repositories into our new [*incubator* Git
+> repository](http://git.savannah.gnu.org/cgit/hurd/incubator.git/), making
+> them easier to access for other contributors.
+
+> Our bunch of porters continued to make further Debian packages usable on
+> GNU/Hurd: Pino Toscano worked on a lot of packages, and Wesley W. Terpstra
+> made [mlton](http://packages.debian.org/sid/mlton) build -- together with
+> Samuel Thibault, who first had to enhance [[GNU
+> Mach|microkernel/mach/gnumach]] to support allocating more than 1 GiB of RAM
+> to one user-space process, which mlton needs.
+
+> On the go, Samuel also fixed a number of other bugs here and there, for
+> example together with Eric Blake and Roland McGrath hashed out a difficile
+> issue in the filesystem servers regarding POSIX conformance and system
+> stability.
+"""]]
diff --git a/news/2009-11-30.mdwn b/news/2009-11-30.mdwn
new file mode 100644
index 00000000..86a575bc
--- /dev/null
+++ b/news/2009-11-30.mdwn
@@ -0,0 +1,51 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta date="2009-12-03 11:00 UTC"]]
+
+A month of the Hurd: initial work on *network device drivers in user space*,
+*GRUB 2*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+> This month [[Zheng Da|zhengda]], our [[former Google Summer of Code student
+> working on network virtualization and some related
+> topics|community/gsoc/2008]], published the code for the pcnet32 device
+> driver that he had modified to run as a user-space process instead of inside
+> the kernel, and posted some preliminary [performance benchmark
+> results](http://lists.gnu.org/archive/html/bug-hurd/2009-11/msg00144.html).
+> The test results are mostly on par with the in-kernel driver, so they show
+> that moving the lower-layer parts of the networking stack, the device drivers
+> themselves, into user space can be done without losing (much) performance.
+> Given this encouraging start, work is going on to explore whether the [Device
+> Driver Environment](http://wiki.tudos.org/DDE/DDEKit) that has been created
+> for L4-based systems can be used for [providing GNU/Hurd systems with device
+> drivers](http://lists.gnu.org/archive/html/bug-hurd/2009-11/msg00241.html)
+> that (a) are more recent than our current ones, (b) support classes of
+> devices that [[we don't support so
+> far|microkernel/mach/gnumach/hardware_compatibility_list]], and (c) are
+> running as (possibly separate, fault-isolated) user-space processes.
+
+> Thanks to Samuel Thibault, the latest Debian GRUB 2 package (1.97+20091130-1)
+> [supports native
+> installation](http://lists.debian.org/debian-hurd/2009/11/msg00095.html) from
+> GNU/Hurd itself -- booting GNU/Hurd systems with GRUB has always been
+> working, but until now it wasn't possible to *install* GRUB from a GNU/Hurd
+> system. GNU GRUB has originally been written [for booting GNU/Hurd
+> systems](http://www.gnu.org/software/grub/manual/grub.html#History), so this
+> step completes its original purpose.
+
+> Samuel also continued to work on preparing the [[Xen branch of GNU
+> Mach|microkernel/mach/gnumach/ports/xen]] for being merged with the mainline
+> code, and he fixed a kernel panic in the kernel's floating point
+> support code.
+"""]]
diff --git a/news/2009-12-31.mdwn b/news/2009-12-31.mdwn
new file mode 100644
index 00000000..286350d1
--- /dev/null
+++ b/news/2009-12-31.mdwn
@@ -0,0 +1,85 @@
+[[!meta copyright="Copyright © 2009, 2010 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]]."]]"""]]
+
+[[!meta date="2009-12-31 17:33 UTC"]]
+
+A month of the Hurd: *official Xen domU support*, *DDE*, *porting*, and *FOSDEM 2010*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+> This month Samuel Thibault [merged his development branch into GNU Mach's
+> master
+> branch](http://lists.gnu.org/archive/html/bug-hurd/2009-12/msg00058.html) --
+> meaning that his [[GNU Mach Xen domU
+> port|microkernel/mach/gnumach/ports/xen]] is now part of the official
+> sources. Only the [[microkernel (GNU Mach)|microkernel/mach/gnumach]] needed
+> to be extended, and no changes were needed in the Hurd, or glibc code bases.
+> He had started this port in 2007 already, but it has been in heavy use over
+> the last two years already, so merging it into the main source bases was long
+> overdue.
+
+> He also got the necessary Xen patches committed into Xen's unstable branch,
+> so that from Xen's 4.0 release on you'll be able to boot GNU/Hurd systems
+> using `pv-grub`, without the need to prepare a special bootstrap image (like
+> an initrd).
+
+> Of course, running GNU/Hurd systems in other virtualization environments is
+> possible too, but the Xen domU approach offers superior performance compared
+> to [[hurd/running/QEMU]]'s machine emulation, for example.
+
+> Samuel also spent some time on adding code for [detecting invalid (duplicate)
+> port
+> deallocations](http://lists.gnu.org/archive/html/commit-hurd/2009-12/msg00016.html),
+> and started fixing these, as well as he fulfilled his usual share of
+> miscellaneous bug fixing.
+
+> The [[DDE]] port of Zheng Da now [passes the first
+> tests](http://lists.gnu.org/archive/html/bug-hurd/2009-12/msg00060.html),
+> bringing us the first steps towards updated device drivers -- and much lower
+> overhead for maintaining them.
+
+> Now that the Debian GNU/Hurd build stats are again hosted on the [master
+> Debian build machine](https://buildd.debian.org/stats/), Debian developers
+> see their packages' build failures more prominently, and quite a few started
+> to fix their packages.
+
+> Thus, thanks to the [[hurd/running/debian/porting]] work of mainly Emilio Pozuelo
+> Monfort and Pino Toscano, users of the Hurd can get many more packages
+> directly via the [[Debian GNU/Hurd|hurd/running/debian]] distribution.
+> Thanks to their and the other porters' relentless work, the percentage of
+> available Debian packages [has reached
+> 66%](https://buildd.debian.org/stats/hurd-i386.txt), rising. For a specific example,
+> they ported many GNOME packages, so that the `gnome-core` metapackage [is
+> installable
+> again](http://lists.gnu.org/archive/html/bug-hurd/2009-12/msg00217.html).
+> Please test these and [[report back|mailing lists/debian-hurd]].
+
+> Thomas Schwinge started the planning for [[a GNU Hurd folks meeting at
+> FOSDEM|community/meetings/fosdem 2010]] on February 6th/7th 2010 at the
+> Université Libre de Bruxelles.
+
+> Guillem Jover jumped in and started [fixing GNU Mach build
+> warnings](http://lists.gnu.org/archive/html/commit-hurd/2009-12/msg00008.html)
+> -- meaning that Thomas Schwinge's evil plan finally worked out, when he
+> enabled `-Wall` in an October 2006 commit:
+>
+> +# Yes, this makes the eyes hurt. But perhaps someone will finally take care of
+> +# all that scruffy Mach code... Also see <http://savannah.gnu.org/task/?5726>.
+> +AM_CFLAGS += \
+> + -Wall
+
+> ---
+
+> The GNU Hurd team wishes a pleasant Year 2010 to everyone!
+
+"""]]
diff --git a/news/2010-01-31.mdwn b/news/2010-01-31.mdwn
new file mode 100644
index 00000000..306a54b3
--- /dev/null
+++ b/news/2010-01-31.mdwn
@@ -0,0 +1,58 @@
+[[!meta copyright="Copyright © 2009, 2010 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]]."]]"""]]
+
+[[!meta date="2010-02-02 00:25 UTC"]]
+
+A month of the Hurd: *Arch Hurd*, *FOSDEM preparations* and a *thesis on mobile Hurd objects*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+> This month, we saw the first booting version of an [[hurd/running/Arch Hurd]]
+> system, which seconds the [[Debian GNU/Hurd|hurd/running/debian]]
+> distribution that already provides two third of the Debian software archive
+> compiled for GNU/Hurd.
+
+> Nine Hurd developers will [[meet at FOSDEM
+> 2010|community/meetings/fosdem_2010]] on February 6th and 7th in Bruxelles,
+> Belgium. On Sunday, Olaf will be giving two presentations in the Alt-OS
+> Developer Room: [*Why is Anyone Still Working on the GNU
+> Hurd?*](http://fosdem.org/2010/schedule/events/altos_hurd) (10:30), and
+> [*Porting KGI graphics drivers from Linux to GNU
+> Hurd*](http://fosdem.org/2010/schedule/events/altos_kgi_hurd) (13:00). The
+> day before, on Saturday, Bas will be giving a [talk about *Iris*, his new
+> kernel](http://fosdem.org/2010/schedule/events/emb_iris) (18:00, Embedded
+> Developer Room).
+
+> Carl Fredrik Hammar
+> [finished and presented](http://lists.gnu.org/archive/html/bug-hurd/2010-01/msg00078.html)
+> his thesis
+> [*Generalizing mobility for the Hurd*](http://users.student.lth.se/cs07fh9/2009-hammar-hurd-mobility.pdf)
+> and passed with distinction. Congratulations! Its abstract reads:
+
+> > The GNU Hurd features mobile objects
+> > in its implementation of filesystem backing stores.
+> > This thesis investigates the
+> > limitations and security concerns
+> > these objects present,
+> > and how they can be overcome.
+> > This is done in preparation for new applications
+> > that feature mobile code and mobile objects.
+> > In addition,
+> > one such application is studied and implemented,
+> > in which mobile code is used to make
+> > the `ioctl` system call more extensible.
+
+> So, when are *YOU* going to do a thesis, or another project on a
+> GNU/Hurd-related topic? [[Contact_us]] if you are interested!
+
+"""]]
diff --git a/news/2010-02-28.mdwn b/news/2010-02-28.mdwn
new file mode 100644
index 00000000..ee6e22ef
--- /dev/null
+++ b/news/2010-02-28.mdwn
@@ -0,0 +1,72 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta date="2010-03-10 15:55 UTC"]]
+
+A month of the Hurd: *DDE driver*, *X.org / libpciaccess*, *FOSDEM*, and
+*Google Summer of Code 2010*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+> A bit late, but here it is finally: the *MotH* for February, 2010.
+
+> This month saw the first running and testable
+> [[DDE driver by Zheng Da|user/zhengda]],
+> with which he begins to reap the benefits of porting [[DDE]] to the Hurd --
+> essentially, allowing us to use current Linux device drivers.
+
+> Samuel Thibault pushed a [libpciaccess x86
+> backend](http://cgit.freedesktop.org/xorg/lib/libpciaccess/commit/?id=af2be74979aeab9a2fc4c933462e97ce70f816b6)
+> to X.Org:
+
+> > This adds support on x86 for OSes that do not have a PCI interface,
+> > tinkering with I/O ports, and makes use of it on GNU/Hurd.
+
+> In the course of this, he also got commit access to X.org, so it should be
+> easier now to get further Hurd-related patches applied.
+
+> As announced in our [[previous news blurb|2010-01-31]], at FOSDEM, Bas did
+> his presentation of [*Iris, a new capability-based microkernel
+> OS*](http://fosdem.org/2010/schedule/events/emb_iris) in the Embedded
+> Developer Room, and Olaf illustrated [*Why is Anyone Still Working on the GNU
+> Hurd?*](http://fosdem.org/2010/schedule/events/altos_hurd), and presented his
+> work of [*Porting KGI graphics drivers from Linux to GNU
+> Hurd*](http://fosdem.org/2010/schedule/events/altos_kgi_hurd), in the Alt-OS
+> Developer Room.
+
+> In [Mikel Olasagasti's
+> words](http://lists.gnu.org/archive/html/bug-hurd/2010-03/msg00014.html):
+
+> > The room was full and people was "standing-up" for the talk. Some people
+> > even couldn't enter to the room (+20?).
+> >
+> > Antrik [Olaf] made a good job. Was nice for the crowd to see Hurd running X,
+> > slow but working.
+
+> The regular IRC meeting schedule has been
+> [changed](http://lists.gnu.org/archive/html/bug-hurd/2010-02/msg00040.html)
+> to Wednesdays, 11:00 UTC; see the [[IRC#regular_meetings]] page for details.
+
+> Last, but not least, it is time again to think about the [[Google Summer of
+> Code|community/gsoc]]. In [[community/gsoc/2007]], the GNU Hurd had one
+> successful project, in [[community/gsoc/2008]] five of them,
+> [[community/gsoc/2009]] saw another one, so we obviously plan to make it five
+> projects again this year. We already have [[dozens of
+> ideas|community/gsoc/project ideas]] online, and will add yet more -- also
+> based on YOUR suggestions and wishes!
+
+> So, if you're a student, and interested in working on the GNU Hurd, please
+> join in; browse through the [[community/GSoC]] pages, and don't be shy to
+> [[contact us]]!
+
+"""]]
diff --git a/news/2010-03-31.mdwn b/news/2010-03-31.mdwn
new file mode 100644
index 00000000..c3c424d1
--- /dev/null
+++ b/news/2010-03-31.mdwn
@@ -0,0 +1,48 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta date="2010-04-01 07:55 UTC"]]
+
+A month of the Hurd: some more *bug squashing* and *Google Summer of Code 2010*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+> This month saw bugs dying as they met hackers like [Jérémie,
+> Samuel](http://lists.gnu.org/archive/html/bug-hurd/2010-03/msg00027.html), or
+> [Zheng,
+> Thomas](http://lists.gnu.org/archive/html/bug-hurd/2010-03/msg00051.html), or
+> [Jakub](http://lists.gnu.org/archive/html/bug-hurd/2010-03/msg00071.html)
+> (keeping it to a few ones which were discussed on the [[bug-hurd mailing
+> list|mailing_lists/bug-hurd]]).
+
+> Olaf, Thomas and Fredrik
+> [wrote](http://lists.gnu.org/archive/html/bug-hurd/2010-03/msg00022.html) and
+> submitted our [[community/gsoc/organization_application]] for the Google
+> Summer of Code 2010. However, Google is [asking most GNU projects to work
+> under the GNU project
+> umbrella](http://lists.gnu.org/archive/html/bug-hurd/2010-03/msg00125.html),
+> so we aren't listed as an organization on our own, but instead will again
+> participate as a subproject of GNU.
+
+> Anyway, this organizational detail is not at all important for interested
+> students; you can apply for any of the ideas that are listed on our
+> [[community/gsoc/project_ideas]] page (or come up with your own ideas, of
+> course!) via the [GNU project GSoC
+> page](http://socghop.appspot.com/gsoc/org/show/google/gsoc2010/gnuproject). If
+> you apply, please also include the information we're asking for on our
+> [[community/gsoc/student_application_form]]. Don't hesitate to
+> [[contact_us]] beforehand, if there are any questions. We're looking forward
+> to seeing your applications, please send them in [before
+> 2010-04-09](http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2010/faqs#timeline)!
+
+"""]]
diff --git a/news/2010-04-30.mdwn b/news/2010-04-30.mdwn
new file mode 100644
index 00000000..254ceb99
--- /dev/null
+++ b/news/2010-04-30.mdwn
@@ -0,0 +1,92 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta date="2010-05-02 21:20 UTC"]]
+
+A month of the Hurd: *Arch Hurd*, *updated Debian GNU/Hurd QEMU image*, and *GSoC students*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+> The Arch Hurd folks keep [making good
+> progress](http://lists.gnu.org/archive/html/help-hurd/2010-04/msg00003.html):
+> their count of available packages keeps increasing, and one of their team
+> reported the first instance of Arch Hurd [running on real
+> hardware](http://www.archhurd.org/news/11) (and uploaded [a
+> photo](http://wiki.archhurd.org/wiki/User:Giselher#ArchHurd_on_a_real_PC) as
+> evidence).
+
+> Of course, our Debian port is still progressing, too: 66% of all Debian
+> packages [are currently available for Debian
+> GNU/Hurd](https://buildd.debian.org/stats/hurd-i386.txt).
+
+> *Samuel Thibault*'s fix got included in libxcb1, so X.org again [works out of
+> the box](http://lists.debian.org/debian-hurd/2010/04/msg00034.html) using a
+> simple `startx`.
+
+> *Philip Charles* [extended his
+> offerings](http://lists.debian.org/debian-hurd/2010/04/msg00019.html) with an
+> updated *GRUB USB stick for booting Debian GNU/Hurd*.
+
+> *Carl Fredrik Hammar* proposed a patch to [faciliate debugging the startup of
+> misbehaving
+> translators](http://lists.gnu.org/archive/html/bug-hurd/2010-04/msg00037.html).
+
+> Mainly thanks to *Jose Luis Alarcon Sanchez*, we now have a [new QEMU
+> image](http://lists.debian.org/debian-hurd/2010/04/msg00098.html). It can be
+> run with a simple `qemu -hda debian-hurd-17042010-qemu.img`.
+
+> *Thomas Schwinge* updated [our glibc maintenance
+> repository](http://git.savannah.gnu.org/cgit/hurd/glibc.git/?h=tschwinge/Roger_Whittaker)
+> to a recent version, including a bunch of the patches from the Debian glibc
+> package (and these are meant to eventually be submitted upstream). After a
+> long break, he as well
+> [updated](http://lists.gnu.org/archive/html/bug-hurd/2010-04/msg00062.html)
+> his toolchain cross-compilation script [[`cross-gnu`|toolchain/cross-gnu]]
+> to
+> the current source code packages, and added C++ support.
+
+> On to the Google Summer of Code 2010: we got three students working on the
+> Hurd this year:
+
+> * *Jeremie Koenig*, mentored by *Samuel Thibault*, will be working on
+> adapting the Debian Installer to [produce working Debian GNU/Hurd
+> installation
+> images](http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/debian/t127230758239)
+> so we can easily offer up to date disc-sets.
+> ([Details](http://wiki.debian.org/SummerOfCode2010/HurdDebianInstaller/JeremieKoenig).)
+
+> * *Emilio Pozuelo Monfort*, mentored by *Carl Fredrik Hammar* (who was a
+> GSoC student in 2007), will be working on a task that may be perceived as
+> less exciting from the outside, but yet is extremely valuable: [fixing
+> compatibility problems exposed by projects'
+> testsuites](http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/gnuproject/t127230759396).
+> ([[Details|community/gsoc/project_ideas/testsuites]].) For starters, he
+> already got a glibc patch [accepted
+> upstream](http://sourceware.org/ml/libc-alpha/2010-04/msg00046.html).
+
+> * *Karim Allah Ahmed*, mentored by *Sergio López*, will be working on
+> [tuning the VM Subsystem in
+> GNU/Hurd](http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/gnuproject/t127230759587)
+> to bring the virtual memory management in Hurd/Mach up to date.
+> ([[Details|community/gsoc/project_ideas/vm_tuning]].)
+
+> We'd be happy to see *YOU* sign up on our mailing lists
+> ([[mailing_lists/bug-hurd]] and [[mailing_lists/debian-hurd]] are the main
+> lists), and [[contribute|contributing]] towards making the Hurd usable for
+> everyone, as written down in
+> [[our_mission_statement|community/weblogs/antrik/hurd-mission-statement]].
+> Perhaps one of the unassigned projects (outside of the Google Summer of Code
+> context) from our [[project_ideas_list|community/gsoc/project_ideas]] is fit
+> for you?
+
+"""]]
diff --git a/news/2010-05-31.mdwn b/news/2010-05-31.mdwn
new file mode 100644
index 00000000..5bef328e
--- /dev/null
+++ b/news/2010-05-31.mdwn
@@ -0,0 +1,66 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta date="2010-06-06 22:15 UTC"]]
+
+A month of the Hurd: *DDE linux26*, *thread storms*, *patches*, *new live CD* and *IRC meetings*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+> [[Zheng_Da|user/zhengda]]
+> [reported](http://lists.gnu.org/archive/html/bug-hurd/2010-05/msg00037.html)
+> on the state of his ongoing work of porting DDE linux26 to the Hurd, which is
+> meant to improve the GNU/Hurd hardware support. The devices as emulated by
+> QEMU and VMware already work fine, but he's still seeking help for testing on
+> real hardware.
+
+> Sergio López published
+> [patches](http://lists.gnu.org/archive/html/bug-hurd/2010-05/msg00059.html)
+> as well as [readily-usable
+> packages](http://lists.gnu.org/archive/html/bug-hurd/2010-05/msg00106.html)
+> to prevent thread storms in ext2fs when synchronizing large pagers. This
+> should improve system performance and stability.
+
+> Emilio Pozuelo Monfort and Sergio López developed further patches (for
+> example:
+> [exec](http://lists.gnu.org/archive/html/bug-hurd/2010-05/msg00108.html),
+> [tmpfs](http://lists.gnu.org/archive/html/bug-hurd/2010-05/msg00077.html)) to
+> fix or improve the various internal Hurd servers, and discussed them with
+> other Hurd developers.
+
+> Justus Winter [created a live
+> CD](http://lists.gnu.org/archive/html/bug-hurd/2010-05/msg00033.html) with an
+> installation wizard in the spirit of the OpenBSD installer. He needs testers
+> to help improve it.
+
+> Ludovic Courtès informed that he has added support for [cross-building
+> packages from GNU/Linux to
+> GNU/Hurd](http://lists.gnu.org/archive/html/bug-hurd/2010-05/msg00105.html)
+> to the Nix package manager, as well as doing [continuous cross-building of
+> the GNU Hurd
+> itself](http://lists.gnu.org/archive/html/bug-hurd/2010-05/msg00111.html),
+> and [glibc](http://sourceware.org/ml/libc-alpha/2010-05/msg00049.html).
+
+> The [[regular IRC meetings|irc#regular_meetings]] for [[Google Summer of Code
+> students|community/gsoc]], their mentors, and any other interested parties
+> [are
+> continuing](http://lists.gnu.org/archive/html/bug-hurd/2010-05/msg00148.html)
+> on Mondays and Thursdays, 10:30 UTC, as Olaf Buddenhagen reported. If you
+> want to catch up, have a look at the [#hurd channel
+> logs](http://richtlijn.be/~larstiq/hurd/).
+
+> As always in the *Month of the Hurd*, these news blurbs are only a selection
+> of what happened in the last month. There's always more to be found on our
+> [[mailing_lists]], especially [[mailing_lists/bug-hurd]].
+
+"""]]
diff --git a/news/2010-06-30.mdwn b/news/2010-06-30.mdwn
new file mode 100644
index 00000000..d435d2d2
--- /dev/null
+++ b/news/2010-06-30.mdwn
@@ -0,0 +1,77 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta date="2010-07-08 14:00 UTC"]]
+
+A month of the Hurd: *Debian Installer*, *clustered page-in*, and *a bunch of
+bug fixing*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+> A bunch of patches have hit the mailing lists and source code repositories:
+
+> Jérémie Koenig posted a [preliminary
+> patch](http://lists.gnu.org/archive/html/bug-hurd/2010-06/msg00047.html) to
+> add initrd (initial ramdisk) support in GNU Mach for his [[Google Summer of
+> Code|community/gsoc]] 2010 project: [[Debian Installer|jkoenig]]. With this
+> patch, and some other patches that are still in flux, he ended up being able
+> to install a [[Debian GNU/Hurd|hurd/running/debian]] system using the Debian
+> Installer -- which is the goal of his project. Patches being *in flux* means
+> that there's still work left to be done to properly solve some issues, so
+> there's no need to worry that Jérémie wouldn't have any work left until the
+> GSoC ends.
+
+> Karim Allah Amed came up with the [first
+> patch](http://lists.gnu.org/archive/html/bug-hurd/2010-06/msg00023.html) for
+> porting the clustered paging-in code from OSF Mach to GNU Mach, which should
+> improve the virtual memory performance of the Hurd.
+
+> Emilio Pozuelo Monfort got a bug in [glibc
+> fixed](http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=2a50c07836d2750baf70442f8f760bf6cd43b3af),
+> which unblocks a problem we've seen in [coreutils'
+> `ln`](https://savannah.gnu.org/bugs/?29655), and also continued to make
+> progress on other grounds.
+
+> Zheng Da
+> [began](http://lists.gnu.org/archive/html/commit-hurd/2010-06/msg00003.html)
+> [to](http://lists.gnu.org/archive/html/commit-hurd/2010-06/msg00005.html)
+> [commit](http://lists.gnu.org/archive/html/commit-hurd/2010-06/msg00014.html)
+> patches to make his [[DDE project|zhengda]] support block device drivers,
+> apart from fixing some other issues, too.
+
+> Samuel Thibault [fixed memory
+> leaks](http://lists.gnu.org/archive/html/commit-hurd/2010-06/msg00018.html)
+> in [[`pfinet`|hurd/translator/pfinet]], which is the Hurd's TCP/IP networking
+> unit. Even though that a crashed `pfinet` [[server|hurd/translator]] will be
+> restarted upon its next use, having it eat up all system memory is to be
+> avoided, of course -- and is corrected with these patches.
+
+> Carl Fredrik Hammar submitted patches to improve the stability of the auth
+> server ([rendezvous port
+> death](http://lists.gnu.org/archive/html/bug-hurd/2010-06/msg00003.html) /
+> [invalid rendezvous
+> ports](http://lists.gnu.org/archive/html/bug-hurd/2010-06/msg00019.html)).
+
+> Lastly, if you haven't seen it already: Richard Hillesley has posted an
+> article [*GNU HURD: Altered visions and lost
+> promise*](http://www.h-online.com/open/features/GNU-HURD-Altered-visions-and-lost-promise-1030942.html)
+> that caused [quite](http://lwn.net/Articles/394295/)
+> [a](http://www.reddit.com/r/linux/comments/ckjt2/gnu_hurd_altered_visions_and_lost_promise/)
+> [bunch](http://www.reddit.com/r/programming/comments/ckjud/the_hurd_altered_visions_and_lost_promise/)
+> [of](http://www.osnews.com/comments/23511)
+> [discussion](http://news.ycombinator.com/item?id=1474941) -- some of it valid
+> and constructive criticism, some of it less so. If *you* want to come in
+> contact with us GNU Hurd developers, there are [[numerous options to contact
+> us|contact_us]]!
+
+"""]]
diff --git a/news/2010-07-31.mdwn b/news/2010-07-31.mdwn
new file mode 100644
index 00000000..68153c7a
--- /dev/null
+++ b/news/2010-07-31.mdwn
@@ -0,0 +1,59 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta date="2010-08-10 17:30 UTC"]]
+
+A month of the Hurd: *Thanks, Phil!*, *Debian Installer*, *compatibility*, and
+*LWN article*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+> Philip Charles, our 72 years old provider of Debian GNU/Hurd installation CDs
+> [has now resigned](http://lists.debian.org/debian-hurd/2010/07/msg00020.html)
+> from that position. This has lead to a flood of [public thank-you
+> responses](http://lists.debian.org/debian-hurd/2010/07/msg00020.html#00021),
+> and surely yet more of those have been sent privately. Phil, thanks again
+> for providing the many installation images you've started producing [nearly
+> ten years ago](http://lists.debian.org/debian-hurd/2000/08/msg00249.html)! --
+> oh, the joy of (not) uploading CD-size images using a 56k modem... -- and
+> that have been the first choice for many of us to get a [[Debian
+> GNU/Hurd|hurd/running/debian]] system installed.
+
+> On the other hand, there's no need to worry about these news: Jérémie Koenig
+> got the [Debian Installer for the
+> Hurd](http://jk.fr.eu.org/debian/hurd-installer/) into a basically working
+> state; there is a simple [four step installation
+> guide](http://jk.fr.eu.org/debian/hurd-installer/README.txt). This brings us
+> a big step forward towards easy installation of Debian GNU/Hurd and automated
+> image creation. You can track Jérémie's progress on his [[user
+> page|jkoenig]].
+
+> Emilio Pozuelo Monfort also made progress with his Google Summer of Code
+> work. For example, he posted a new iteration of his proposed [changes to
+> exec](http://lists.gnu.org/archive/html/bug-hurd/2010-07/msg00141.html) as
+> well as he added support for [sending file descriptors over Unix
+> sockets](http://lists.gnu.org/archive/html/bug-hurd/2010-07/msg00145.html).
+> These patches add features and improve compatibility to other systems, and
+> thus help to get more software packages to work as expected on GNU/Hurd
+> systems.
+
+> Ludovic Courtès [fixed `make
+> dist`](http://lists.gnu.org/archive/html/bug-hurd/2010-07/threads.html#00107),
+> which allows for easy tarball creation of the GNU Hurd sources.
+
+> We've been in the news [[last month|2010-06-30]] -- and this month yet again:
+> LWN posted a well-researched article on the status of the Hurd: Koen
+> Vervloesem: [*The Hurd: GNU's quest for the perfect
+> kernel*](http://lwn.net/Articles/395150/).
+
+"""]]
diff --git a/news/2010-08-31.mdwn b/news/2010-08-31.mdwn
new file mode 100644
index 00000000..f3910b15
--- /dev/null
+++ b/news/2010-08-31.mdwn
@@ -0,0 +1,90 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta date="2010-09-17 13:00 UTC"]]
+
+A month of the Hurd: *Media Appearances*, *procfs*, *Arch Hurd*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+> Neal Walfield and Michael Bank have been doing presentations related to the
+> GNU Hurd: from the GNU Hackers Meeting in the Hague you can watch the
+> {{$community/meetings/ghm2010#walfield_hurd}} where he details why we're
+> still interested in working on the GNU Hurd, and there is another
+> {{$community/meetings/debconf10#banck_hurd}} from DebConf10, including a very
+> nice nod towards the main actors who are currently pushing the Hurd forward.
+
+> Jérémie Koenig wrapped up his Google Summer of Code project ([[Debian
+> Installer|jkoenig]]) by posting his [*Hurd patches for
+> installer/build*](http://lists.debian.org/debian-hurd/2010/08/threads.html#00016)
+> as well as the [*patches used for hurd
+> 20100802-1~jk7*](http://lists.debian.org/debian-hurd/2010/08/threads.html#00022)
+> to the [[mailing_lists/debian-hurd]] mailing list. Most of them have been
+> handled in the mean time, and we're still waiting for *you* to test his work
+> by following his easy [four-step
+> instructions](http://jk.fr.eu.org/debian/hurd-installer/README.txt).
+
+> However, even though that [[this year's GSoC|community/gsoc]] has come
+> to an end, he didn't stop working: among other things, he has rewritten
+> [[hurd/translator/procfs]] and [published his
+> version](http://lists.gnu.org/archive/html/bug-hurd/2010-08/msg00165.html)
+> just before the end of the month:
+>
+> > I have successfully tested it with most of the Linux procps utilities,
+> > as well as busybox and htop. It seems to be stable, not too slow, and
+> > it stays under 1.5M in resident size.
+>
+> Testing it is as simple as this:
+>
+> $ git clone git://git.savannah.gnu.org/hurd/procfs.git
+> $ cd procfs/
+> $ git checkout jkoenig/master
+> $ make
+> $ settrans -ca proc procfs --compatible
+> $ ls -l proc/
+
+> Thomas Schwinge [added some more
+> information](http://lists.gnu.org/archive/html/bug-hurd/2010-08/msg00066.html)
+> to the web pages, notably a bunch of [[open_issues]] reports, to have them
+> registered in a generic place, and to facilitate coordination. If you're
+> looking for a Hurd-related project to work on, go looking
+> [[there|open_issues]]! He also converted and merged some of the [hurdextras
+> CVS repositories](http://www.nongnu.org/hurdextras/) into the [hurd Git
+> repositories](http://git.savannah.gnu.org/cgit/hurd) and our
+> [incubator](http://git.savannah.gnu.org/cgit/hurd/incubator.git/refs/). All
+> of this should make it easier for new contributors to join in.
+
+> The [[hurd/running/Arch_Hurd]] guys have some news to share, too:
+>
+> * They reported on their [current status](http://www.archhurd.org/news/17),
+> as well as they [released a new LiveCD
+> image](http://www.barrucadu.co.uk/arch-hurd-livecd-i686-core-2010-08-25iso),
+> and added a [Planet Arch Hurd](http://planet.archhurd.org/) which
+> aggregates the different Arch Hurd Blogs.
+>
+> * The team [packaged everything](http://www.archhurd.org/news/18/) you need
+> for the [[faq/GHAMP]] solution stack.
+>
+> * Their Diego Nieto Cid sent a patch series to [*bring console-driver-xkb
+> up to
+> date*](http://lists.gnu.org/archive/html/bug-hurd/2010-08/threads.html#00012).
+> This is a add-on to allow using X keymaps to configure the [[Hurd
+> console|hurd/console]] for non-US keyboard layouts.
+
+> Finally, amongst other bug fixing and other development work by the usual
+> suspects, we had a short review of what the current Hurd contributors [[still
+> need|community/weblogs/ArneBab/what_we_need]] to use a GNU/Hurd system for
+> most of their day-to-day tasks. This may help to prioritize the development
+> efforts.
+
+"""]]
diff --git a/news/2010-09.mdwn b/news/2010-09.mdwn
new file mode 100644
index 00000000..2829de73
--- /dev/null
+++ b/news/2010-09.mdwn
@@ -0,0 +1,128 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+[[!meta date="2010-10-23 12:47:26 UTC"]]
+
+A month of the Hurd: *new translators* / *bug fixing*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="
+[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+Yes, we're a bit late this month. Arne Babenhauserheide, the guy who has
+started and has been drafting the *Month of the Hurd* ever since June 2009
+(yes, that one and a half years already!), moves on to other duties -- his wife
+has given birth to our first Hurd developer offspring (as far as I know):
+
+> Last friday my son Leandro entered our cold and too bright but friendly
+> world, [...]
+
+We wish them good luck for their new parental duty!
+
+The other guy, Thomas Schwinge, who has been editing and publishing the *Month
+of the Hurd* will take over -- at least temporarily (mind you, Arne).
+
+But, we got some Hurd news, too.
+
+Olaf Buddenhagen posted a patch that allows to [obtain number of ports in proc
+and libps](http://lists.gnu.org/archive/html/bug-hurd/2010-09/msg00036.html) by
+means of adding a new [[RPC]] -- and subsequently held a discussion with Samuel
+Thibault who proposed that instead of adding such functionality on an [ad hoc
+basis](http://lists.gnu.org/archive/html/bug-hurd/2010-09/msg00044.html), a
+more generic solution could be found, too. In the end, they agreed that this
+functionality was useful enough, and the patch was
+[committed](http://lists.gnu.org/archive/html/commit-hurd/2010-09/msg00031.html).
+
+It is important to spend time on designing proper interfaces (RPCs in this
+case), but on the other hand what we're doing now need not be set in stone
+forever, as Olaf
+[explains](http://lists.gnu.org/archive/html/bug-hurd/2010-09/msg00045.html):
+
+> Well, we already have a mechanism for making communication protocols in
+> the Hurd extensible: it's called the RPC mechanism... :-) Let's not try
+> to invent another generic mechanism on top of RPCs.
+>
+> *If* ten year down the road we indeed end up with half a dozen
+> miscallaneous info queries, we can *still* replace them by a new RPC
+> covering all of it...
+
+Thomas Schwinge [moved some
+packages](http://lists.gnu.org/archive/html/bug-hurd/2010-09/msg00031.html)
+([[hurd/translator/gopherfs]], [[hurd/translator/netio]],
+[[hurd/translator/tarfs]]) from hurdextras to the Hurd's
+[[source_repositories/incubator]] repository; these are now available as
+[[Debian GNU/Hurd packages|hurd/running/debian]]. Manuel Menal also spent time
+on actually making tarfs and good ol' gopherfs usable.
+
+Similar treatment [has been
+applied](http://lists.gnu.org/archive/html/bug-hurd/2010-09/msg00055.html) to
+Jérémie Koenig's new [[procfs|hurd/translator/procfs/jkoenig]] implementation;
+this one is now [used in Debian
+GNU/Hurd](http://lists.gnu.org/archive/html/commit-hurd/2010-09/msg00063.html).
+
+Jérémie found some [problems with signal
+delivery](http://lists.gnu.org/archive/html/bug-hurd/2010-09/msg00006.html) --
+signals apparently are not delivered as expected. Roland McGrath, this *hairy
+code*'s original author, [provided some
+insight](http://lists.gnu.org/archive/html/bug-hurd/2010-09/msg00008.html):
+
+> It's not that it's a bug, it's that the Hurd has never had POSIX-1996
+> multithreaded signal semantics. The Hurd implementation predates those
+> specifications.
+
+He [continued to
+explain](http://lists.gnu.org/archive/html/bug-hurd/2010-09/msg00010.html):
+
+> The Hurd signal semantics are well-defined
+> today. They are not the POSIX-1996 semantics in the presence of multiple
+> threads per process.
+
+This explains for differences comparing to other recent Unixy systems, for
+example Linux. Neal Walfield, our [[libpthread]]'s main author,
+[states](http://lists.gnu.org/archive/html/bug-hurd/2010-09/msg00017.html) that
+he sees *no convincing reason to not adopt POSIX/Linux signal semantics and
+abandon Hurd signal semantics*. Jérémie went on to [send a first
+patch](http://lists.gnu.org/archive/html/bug-hurd/2010-09/msg00011.html).
+While already working in that area, Samuel Thibault applied some further fixes
+to our two threading libraries, and among others, he also sent a related glibc
+patch to [fix signal-catching
+functions](http://sourceware.org/ml/libc-alpha/2010-09/msg00015.html). And
+then, there is still the project about [[converting the Hurd's libraries and
+servers to using libpthread instead of Mach's cthreads
+(libthreads)|community/gsoc/project_ideas/pthreads]]; likely such signalling
+system moderizations could be done [alongside of
+that](http://lists.gnu.org/archive/html/bug-hurd/2010-09/msg00021.html).
+
+Manuel Menal [fixed a
+bug](http://lists.gnu.org/archive/html/bug-hurd/2010-09/msg00061.html) that
+occurred when sending file descriptors with `SCM_RIGHTS` over `PF_LOCAL`
+sockets. He also identified this bug as the reason why the SSH daemon's
+privilege separation was not working on GNU/Hurd -- now [this is
+fixed](http://lists.gnu.org/archive/html/commit-hurd/2010-09/msg00036.html) and
+you can use the default of `UsePrivilegeSeparation yes`.
+
+Michael Banck has, based on user feedback, applied some changes to the
+[[!debpkg crosshurd]] package, and [uploaded a new
+version](http://lists.debian.org/debian-hurd/2010/09/msg00037.html).
+
+In other news, the [[hurd/running/Arch_Hurd]] guys rightfully concluded that
+now that they're having a package available for almighty GNU Emacs, [no further
+user-land packages need to be
+ported](http://blogs.archhurd.org/hayashi/2010/09/04/emacs-emacs/). If only
+everyone was using Emacs...
+
+Last, and least, [there are
+rumors](http://lists.gnu.org/archive/html/bug-hurd/2010-09/msg00026.html) about
+our colleagues over at the Duke Nukem Forever department getting serious again.
+We shall see. :-)
+
+"""]]
diff --git a/news/2010-10.mdwn b/news/2010-10.mdwn
new file mode 100644
index 00000000..c7312256
--- /dev/null
+++ b/news/2010-10.mdwn
@@ -0,0 +1,65 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta date="2010-12-20 11:10 UTC"]]
+
+A month of the Hurd: *bug fixing* / *flubber re-installation*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="
+[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+A bit of bug fixing has been going on:
+
+Samuel Thibault taught [[GNU Mach|microkernel/mach/gnumach]] that Intel Pentium
+4 and Opteron-class CPUs [are not just
+i386](http://lists.gnu.org/archive/html/commit-hurd/2010-10/msg00021.html), but
+in fact a bit more advanced. Not only does this help GNU Mach to select
+optimized code paths, but this information is also propagated to the user
+space, and used for the `uname` command, for example.
+
+Pino Toscano continued [fixing bugs in the socket-related glibc code and Hurd's
+pfinet](http://lists.gnu.org/archive/html/bug-hurd/2010-10/msg00017.html).
+
+After finding out that our `pread` implementation does not conform to the POSIX
+standard in one aspect, Manuel Menal analyzed this, and [posted a
+patch](http://lists.gnu.org/archive/html/bug-hurd/2010-10/msg00056.html).
+
+Alexey Kuznetsov [privided IPv6 raw socket
+fixes](http://lists.gnu.org/archive/html/commit-hurd/2010-10/msg00028.html) for
+[[hurd/translator/pfinet]].
+
+Michael Banck [uploaded a new version of
+crosshurd](http://lists.gnu.org/archive/html/commit-hurd/2010-10/msg00006.html)
+to keep up with recent packaging and dependency changes.
+
+Samuel Thibault uploaded [[hurd/translator/gopherfs]] packages [to the Debian
+repository](http://lists.debian.org/debian-hurd/2010/10/msg00018.html). He
+also [enabled IPv6 support for Debian Installer
+installations](http://lists.gnu.org/archive/html/commit-hurd/2010-10/msg00034.html).
+
+Thomas Schwinge:
+
+> It's been a really long-long time (hooray!), but now
+> [[flubber|public_hurd_boxen]]'s root file system is totally hosed, and thus
+> needs to be
+> [re-installed](http://lists.gnu.org/archive/html/bug-hurd/2010-10/msg00003.html).
+> (I've been running `apt-get dist-upgrade` when the box apparently crashed.)
+> Running `e2fsck` on it spew out over 50.000 lines of illegal and
+> multiply-claimed block lists, before I terminated it, so no chance. I'll do
+> this over the weekend. `/home/` etc. are not affected, thanks to being on a
+> separate partition.
+
+As of two days later, the machine was
+[re-installed](http://lists.gnu.org/archive/html/bug-hurd/2010-10/msg00011.html).
+
+"""]]
diff --git a/news/2010-11.mdwn b/news/2010-11.mdwn
new file mode 100644
index 00000000..0fcc6551
--- /dev/null
+++ b/news/2010-11.mdwn
@@ -0,0 +1,29 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta date="2011-01-09 20:50 UTC"]]
+
+A month of the Hurd: *a short one*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="
+[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+That's a short one. Apart from the regular business of having internal design
+/ development / etc. discussions, and helping people to get their Hurd systems
+running, we had Diego Nieto Cid post patches
+([1](http://lists.gnu.org/archive/html/bug-hurd/2010-11/msg00019.html),
+[2](http://lists.gnu.org/archive/html/bug-hurd/2010-11/msg00023.html)) to
+correct two programming errors, which Samuel Thibault quickly reviewed and
+applied to the [[source repositories]].
+
+"""]]
diff --git a/news/2010-12.mdwn b/news/2010-12.mdwn
new file mode 100644
index 00000000..60d0226f
--- /dev/null
+++ b/news/2010-12.mdwn
@@ -0,0 +1,45 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta date="2011-01-09 21:25 UTC"]]
+
+A month of the Hurd: *CD images*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="
+[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+Samuel Thibault [*updated the Debian GNU/Hurd installer
+ISO*](http://lists.debian.org/debian-hurd/2010/12/msg00001.html), and also
+again did his regular batch of bug fixing.
+
+*Arch Hurd is back in action!*, too: they uploaded a [first version of a
+graphical live CD](http://www.archhurd.org/news/19/).
+
+Neal Walfield
+[reported](http://lists.gnu.org/archive/html/l4-hurd/2010-12/msg00001.html) on
+the state of his [[microkernel/Viengoos]] kernel / research project, which
+unfortunately is currently on hold, due to other commitments.
+
+Olaf Buddenhagen raised an interesting use case: you can use a [[*subhurd* for
+debugging the *main* Hurd system|hurd/subhurd#debugging_main_hurd_system]].
+That is [[hurd/virtualization]] at its best!
+
+Right before the end of the year, Diego Martin Nieto Cid sent a [patch series
+to fix some issues with `make
+dist`](http://lists.gnu.org/archive/html/bug-hurd/2010-12/msg00024.html).
+
+---
+
+Happy New Year 2011, everyone!
+
+"""]]
diff --git a/news/2010.mdwn b/news/2010.mdwn
new file mode 100644
index 00000000..2ba85266
--- /dev/null
+++ b/news/2010.mdwn
@@ -0,0 +1,130 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta date="2011-02-05 12:00 UTC"]]
+
+A year of the Hurd: *2010*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="
+[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+Originally published in {{$gnu#gnustatus-2011-01}}.
+
+From Olaf Buddenhagen, Arne Babenhauserheide, Thomas Schwinge: Yeah,
+that's quite right: the GNU Hurd project is still alive!
+
+According to our mission statement, the goal is creating *a
+general-purpose kernel suitable for the GNU operating system, which is
+viable for everyday use, and gives users and programs as much control
+over their computing environment as possible*. It has a unique
+multi-server microkernel-based architecture---bringing advanced
+operating system research to the mainstream. More concretely, it's a
+collection of user-space server processes that run on the GNU Mach
+microkernel.
+
+The Hurd doesn't fully deliver on the *everyday usability* goal
+yet, but it is seeing continuous improvement---and 2010 has been no
+exception. Let's take a look at the progress throughout the year.
+
+ *
+Apart from having done a lot of other work, Samuel Thibault, our Jack
+of all trades, merged his development branch that added Xen domU
+support to GNU Mach, which makes it possible to run a GNU/Hurd system
+as a Xen guest. Development of this started in 2007, and since then
+it has been heavily tested by using it for the Debian GNU/Hurd build
+servers, most of our public GNU/Hurd systems,
+<http://www.gnu.org/software/hurd/public_hurd_boxen.html>, and the
+Hurd project's wiki web server.
+
+ *
+We had Zheng Da work on a new hardware device driver framework, which
+is based on the Dresden L4 (Fiasco) group's DDE project, and allows
+running modern Linux kernel drivers as user-space server processes.
+Many network cards already work perfectly with this new framework.
+(It has not yet been integrated into the mainstream Hurd code base, so
+it needs to be compiled and set up by hand.) Other driver classes,
+such as hard disk controllers, will require further work.
+
+ *
+As in the previous years, we again participated in the Google Summer
+of Code 2010. Olaf Buddenhagen is our main guy for organizing this.
+
+ Jérémie Koenig ported the modern Debian Installer to Debian
+GNU/Hurd. Installation images using the new installer are replacing
+the previous CD images, which were using an installer based on the old
+Debian boot floppies (and running under the Linux kernel)---Philip
+Charles has been maintaining these single-handedly for almost ten
+years! The new installer images are available from
+<http://people.debian.org/~sthibault/hurd-i386/installer/cdimage/>.
+
+ Emilio Pozuelo Monfort was investigating specific compatibility
+problems exposed by the extensive test suites coming with some
+software packages. Emilio's analysis uncovered a number of
+programming errors in the Hurd code, and he fixed several of them. As
+these typically affected other programs too, this improved stability
+and compatibility in general.
+
+ *
+Jérémie Koenig created a new implementation of a `procfs`
+translator, which is considerably more robust and efficient than the
+previous one. Tools such as `top` can now be used without
+problems.
+
+ Some other translators (`gopherfs`, `netio`,
+`tarfs`) which have been created by external contributors in
+the past have been fixed up by Manuel Menal, and packaged in Debian.
+Thus, some of the results of Hurd's extensible architecture are now
+easier to access, and these updated translators can serve as examples
+for other developers to implement their own ideas.
+
+ *
+In addition to various general stability, compatibility, and
+portability fixes, several people (Samuel Thibault, Pino Toscano,
+Emilio Pozuelo Monfort, and others) have been working on fixing issues
+with specific Debian packages. So far, about 68% of all Debian
+packages are also available for Debian GNU/Hurd.
+
+ *
+Michael Walker started the Arch Hurd distribution, and together with
+other enthusiastic Arch developers (Allan McRae, Matthias Lanzinger,
+Alexander Preisinger, Stephen Gilles, Diego Nieto Cid) they got it
+working in an amazingly short amount of time, both as an installable
+system, and a live CD. So now there is a choice between two
+well-featured distributions for the Hurd. These new people of course
+also help forwarding Hurd development in general---Diego in particular
+contributed various patches to the Hurd console and other components.
+
+ *
+Carl Fredrik Hammar finished and presented his thesis, *Generalizing
+mobility for the Hurd*,
+<http://lists.gnu.org/archive/html/bug-hurd/2010-01/msg00078.html>,
+and passed with distinction.
+
+This is a very short digest of what happened in the last year. You
+can read our regular *Month of the Hurd* at
+<http://www.gnu.org/software/hurd/news.html>, or by subscribing to
+our RSS feed at <http://www.gnu.org/software/hurd/index.rss>.
+
+If you are interested, for example, in doing a university project on a
+multi-server microkernel-based operating system, or if you are
+interested in contributing to Hurd development in general, please see
+<http://www.gnu.org/software/hurd/contributing.html>. Or just
+talk to us at <bug-hurd@gnu.org> or the `#hurd` IRC
+channel on freenode.
+
+---
+
+French article by Manuel Menal, [*Gnu : L'année 2010 du
+Hurd*](http://linuxfr.org/news/lann%C3%A9e-2010-du-hurd).
+
+"""]]
diff --git a/news/2011-03-26.mdwn b/news/2011-03-26.mdwn
new file mode 100644
index 00000000..588f5fcf
--- /dev/null
+++ b/news/2011-03-26.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta date="2011-03-26 14:20 UTC"]]
+
+The **Google Summer of Code 2011** is on! If you're a student, consider
+applying for a GNU Hurd project -- details to be found on our
+*[[community/GSoC]] page*.
diff --git a/news/2011-04-01.mdwn b/news/2011-04-01.mdwn
new file mode 100644
index 00000000..3c0c3869
--- /dev/null
+++ b/news/2011-04-01.mdwn
@@ -0,0 +1,44 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta date="2011-04-01 08:30 UTC"]]
+
+[[!meta title="2011-04-01: GNU/Hurd 0.401 is released!"]]
+
+We'd like to pass on these marvelous news from our Release Management
+Team, headed by Release Manager Samuel Thibault:
+
+> Hello,
+>
+> There are rumors that Duke Nukem Forever will actually be released in
+> Apr^WMa^WJune 2011, so there's no escape for the Hurd any more, we had
+> to finish and release. There has been considerable progress lately,
+> so it is with great pleasure that the Hurd maintainers team decided
+> to release *version 0.401 of the GNU/Hurd Operating System*. As the
+> version number and image size suggest, this is only a small preview
+> of course, but we expect GNU/Hurd to be of production-quality within
+> the third millenium, to be sure.
+>
+> A *LiveCD demo* is available on
+> <http://people.debian.org/~sthibault/hurd-0.401/hurd-0.401.iso>
+> and can be trivially tried using
+> `qemu -cdrom hurd-0.401.iso`
+>
+> We hope that you will appreciate its features and speed.
+>
+> Are you interested in contributing to the GNU Hurd project? Just
+> request an shell account on one of our servers and get started.
+>
+> <http://www.gnu.org/software/hurd/public_hurd_boxen.html>
+>
+> It is also worth noting that like in previous years, GNU/Hurd runs
+> for the GSoC program, details can be found on
+>
+> <http://www.gnu.org/software/hurd/community/gsoc.html>
diff --git a/news/2011-05-02-foss_factory.mdwn b/news/2011-05-02-foss_factory.mdwn
new file mode 100644
index 00000000..298a5de6
--- /dev/null
+++ b/news/2011-05-02-foss_factory.mdwn
@@ -0,0 +1,98 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta date="2011-05-02 09:30 UTC"]]
+
+[[!meta title="2011-05-02: Introducing FOSS Factory -- a Bounty System for GNU Hurd Work"]]
+
+> Hey, I have more money than time or programming skills, and I'd like to help
+> GNU Hurd development specifically -- how can we arrange for this, where can I
+> donate money for GNU Hurd development?
+
+If you're dwelling on such thoughts, here is the answer; here you can donate
+money for GNU Hurd development.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Read on."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="
+[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+As its principal idea, [FOSS Factory](http://www.fossfactory.org/), means to
+serve as a hub and organizational platform for connecting Free/Open Source
+Software developers with monetary sponsors. From
+<http://www.fossfactory.org/aboutus.php>:
+
+[[!img donate/foss_factory/logo.png align=right link=no]]
+
+> FOSS Factory's mission is to accelerate the advancement of free/open source
+> software by helping people collaborate on the design, funding, and
+> development of innovative software ideas. All software solutions produced
+> using our system are released under free/open source licenses. Our unique
+> model brings the best of innovators from both the entrepreneurial and FOSS
+> worlds together to solve real world problems using the mass resources of the
+> FOSS community.
+
+In very general words, their modus operandi is that the community (including
+the monetary sponsors) works together with the developers on splitting up tasks
+into suitable and assessable sub-projects as necessary, and then act as the
+reviewing instance, deciding on such sub-projects' success (and payment,
+successively). For more details see their [System
+Overview](http://www.fossfactory.org/overview.php).
+
+For now, we can assume that the amount of money to be made by working on a GNU
+Hurd task in this framework is likely to be a symbolic amount only, rather than
+being representative for the real effort that needs to be invested. Software
+development is expensive, mostly due to the amount of time that is needed for
+completing any non-trivial task. Instead, these bounties should be regarded as
+an attraction/reward, perhaps also simply as a motivation for a developer to
+focus on one specific problem, and bringing it to completion.
+
+Working on a task and/or suggesting/donating for a new task.
+
+In principle, any Hurd-related development task is applicable (for example,
+from the [[GSoC project ideas|community/gsoc/project_ideas]], or from the
+[[open_issues]] list), but it is of course recommendable to match sponsors'
+ideas with those of the developers and maintainers. For this, if you want to
+sponsor a project, but don't know which one to choose, or if you want to work
+on a bounty that is not yet listed on the site, we suggest that you talk to us
+first, either publically on the [[bug-hurd mailing
+list|mailing_lists/bug-hurd]] or privately on <hurd-maintainers@gnu.org>, if
+you prefer.
+
+Both for supporting (donating) as well as claiming a bounty, you have to
+register [at their site](http://www.fossfactory.org/), and proceed from there.
+Please don't hesitate to ask [[Thomas Schwinge|tschwinge]] if you need help.
+
+Continue to explore the [[list of open bounties|tag/bounty]].
+
+---
+
+This new installment is in no way meant to depreciate the developers' current,
+un-paid, efforts. It is also not meant to replace the volunteer work in the
+long term. Neither is it meant to trick the [general FSF fund
+raising](http://donate.fsf.org/) out of a few dollars. Instead, this is simply
+an additional means, a place for donators to give money for *Hurd-specific
+tasks*.
+
+Everyone of the existing crew is eligible to do coding under this bounty
+system, but we also hope to attract new developers -- in a sense similar to our
+many years of participation in the [[Google Summer of Code|community/gsoc]].
+
+Participation in/use of FOSS Factory's services has explicitly been set up
+personally by me, Thomas Schwinge; there is no inherent connection to the GNU
+Hurd maintainers. This also means that each contribution that comes to life
+out of FOSS Factory's framework is subject to the same rules/review process as
+any other contribution has always been.
+
+Unless willing to discuss these publically, any concerns, questions, requests
+regarding this system can always be addressed directly to [[me|tschwinge]].
+
+"""]]
diff --git a/news/2011-q1.mdwn b/news/2011-q1.mdwn
new file mode 100644
index 00000000..103f559b
--- /dev/null
+++ b/news/2011-q1.mdwn
@@ -0,0 +1,57 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta date="2011-04-05 21:30 UTC"]]
+
+A quarter of the Hurd, Q1 of 2011: *GSoC*, and *new faces*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="
+[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+We're again participating in the [[Google Summer of Code's 2011
+edition|community/gsoc]]. If you know someone who knows that her neighbor
+would be interested in getting mentored (by us) and paid (by Google) for
+working on a [[GNU/Hurd task|community/gsoc/project_ideas]], please hurry up:
+the *student application period* will end this Friday, 2011-04-08.
+
+There's further progress to be reported on the package porting front:
+additionally to the usual suspects, Svante Signell
+[has](http://lists.gnu.org/archive/html/bug-hurd/2011-01/msg00028.html)
+actively [started](http://lists.debian.org/debian-hurd/2011/02/msg00021.html)
+with [contributing](http://lists.debian.org/debian-hurd/2011/02/msg00036.html)
+by [fixing](http://lists.gnu.org/archive/html/bug-hurd/2011-03/msg00017.html)
+or [porting](http://lists.debian.org/debian-hurd/2011/01/msg00025.html) his
+[favorite](http://lists.debian.org/debian-hurd/2011/01/msg00062.html) packages
+[to](http://lists.debian.org/debian-hurd/2011/01/msg00051.html) GNU/Hurd.
+Welcome, Svante!
+
+Amongst other fixes, Diego Nieto Cid submitted his work for using [XKB's
+keymaps for the Hurd
+console](http://lists.gnu.org/archive/html/bug-hurd/2011-03/threads.html#00053).
+Of course, he was not the only one to contribute fixes; there's always our
+bunch of folks who appear every other month, or week, and send in some
+contribution. Also, as we ask our GSoC applicants to submit patches in order
+to substantiate their application, we've seen some additional ones due to that.
+([[And you can, too.|contributing]])
+
+The Arch Hurd folks published their [Year of Arch Hurd
+report](http://www.barrucadu.co.uk/year-of-arch-hurd), wrapping up their
+progress, including GHAMP (GNU/Hurd, Apache, MySQL, and PHP), X.org, and their
+[Arch Hurd LiveCD](http://www.archhurd.org/gethurd.php#livecd). We had
+published our [[YotH 2010|2010]], too.
+
+Finally we got a nice [recognition (or did they mean...) by
+xkcd](http://xkcd.com/844/), *How to Write Good Code*, subtitled *You can
+either hang out in the Android Loop or the HURD loop*. Go figure! ;-)
+
+"""]]
diff --git a/news/2011-q2.mdwn b/news/2011-q2.mdwn
new file mode 100644
index 00000000..23f5aecd
--- /dev/null
+++ b/news/2011-q2.mdwn
@@ -0,0 +1,63 @@
+[[!meta copyright="Copyright © 2011 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 stable_URL]]
+
+[[!meta date="2011-07-03 17:30 UTC"]]
+
+A quarter of the Hurd, Q2 of 2011: *Graphical Installer*, *GSoC*, and *Debian*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="
+[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+Jérémie Koenig started working on his [[Google Summer of Code
+project|user/jkoenig/java]]: bringing not only Java to the Hurd, but also
+fixing or adding missing parts in the Hurd's components along the way. For
+example, he already contributed [a set of signal handling
+improvements](http://sourceware.org/ml/libc-alpha/2011-06/threads.html#00119).
+
+Samuel Thibault
+[created](http://lists.gnu.org/archive/html/bug-hurd/2011-05/msg00189.html) the
+first Debian GNU/Hurd CD set with a graphical installer. You can dowload it at
+[the usual place for Debian CD
+images](http://people.debian.org/~sthibault/hurd-i386/installer/cdimage/).
+
+Amongst others, Samuel also [tracked down and
+fixed](http://lists.gnu.org/archive/html/bug-hurd/2011-05/msg00025.html) a port
+leak in `file_reparent`. This one got visible on the Debian package builder
+machine.
+
+On the organizational side, there is now a real plan to release a Hurd variant
+of Debian with their next major release, Wheezy. Expected towards the end of
+2012 or beginning of 2013, the Hurd-specific bits of that release effort's
+process are being tracked on <http://wiki.debian.org/Debian_GNU/Hurd>. There
+is still a lot of work left to be done, but -- as everyone knows -- a real goal
+as well as a bit of pressure might help to actually get it done. If you want
+to lend a helping hand in order to make this happen, [[porting
+packages|contributing#porting]] is a great way to get started and do something
+useful at the same time.
+
+Tanguy le Carrour offered to sponsor some Hurd work, and followed up on his
+offer by adding to the Hurd bounties that Thomas Schwinge had set up over at on
+FOSS Factory -- [[claim them if you can|2011-05-02-foss_factory]]! It's not
+(not yet?) comparable to a Google Summer of Code student's salary, but a step
+into the right direction. So, if you have more money than time and want the
+Hurd to advance, why don't you [[join Tanguy|2011-05-02-foss_factory]]?
+
+At the end of August, Hurd folks will be meeting at the [[GNU Hackers
+Meeting|community/meetings/ghm2011]] in Paris. Samuel Thibault will be giving
+a talk (*GNU/Hurd, aka. Extensibility from the Ground*), and -- amongs others
+-- Jérémie Koenig will be there too, ready to answer all the questions about
+his Java/Hurd Google Summer of Code work.
+
+"""]]
diff --git a/open_issues.mdwn b/open_issues.mdwn
new file mode 100644
index 00000000..f77c1983
--- /dev/null
+++ b/open_issues.mdwn
@@ -0,0 +1,34 @@
+[[!meta copyright="Copyright © 2009, 2010, 2011 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]]."]]"""]]
+
+[[!meta title="Open Issues"]]
+
+This is a dumping ground for open issues. This list includes everything from
+bug reports to open-ended research questions.
+
+[[!inline
+pages=none
+show=-1
+feeds=no
+actions=yes
+rootpage="open_issues" postformtext="Add a new item titled:"]]
+
+
+# List of Issues
+
+[[!map
+pages="(./open_issues/* or */open_issues/* or hurd/running/debian/porting/* or tagged(open_issue*)) and !*/discussion"
+show=title]]
+
+
+# List of Tags
+
+[[!inline pages=tag raw=yes feeds=no]]
diff --git a/open_issues/active_vs_passive_symlink_translator.mdwn b/open_issues/active_vs_passive_symlink_translator.mdwn
new file mode 100644
index 00000000..cbd9b077
--- /dev/null
+++ b/open_issues/active_vs_passive_symlink_translator.mdwn
@@ -0,0 +1,44 @@
+[[!meta copyright="Copyright © 2011 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_documentation open_issue_hurd]]
+
+IRC, freenode, #hurd, 2011-07-25
+
+Set an *active* (not *passive*) `/hurd/symlink` translator on a node.
+
+ < antrik> that's strange: the file doesn't look like a symlink in ls output
+ -- but it behaves like one...
+ < antrik> using firmlink instead of symlink yields less confusing
+ results...
+ < gg0> how does it behaves like one?
+ < antrik> perhaps the symlink mechanism only fully works for a passive
+ symlink translator, not an active one
+ < antrik> gg0: if you access it, you actually get the linked file contents
+ < antrik> it's only ls that's confused
+ < antrik> it might be because ls -l uses O_NOFOLLOW, which results in
+ O_NOTRANS, so it sees the original file contents
+ < gg0> stat says it's still 12264 bytes
+ < antrik> stat also seems to use NOFOLLOW
+ < antrik> wc will show the "correct" size
+ < gg0> ok
+ < antrik> if you set it as passive translator, it works as expected... but
+ then you better don't forget removing it, as it won't go away after a
+ reboot :-)
+ < antrik> but as I said, you can just ignore the weirdness -- or use
+ firmlink instead
+ < antrik> the thing is, if symlink is set as a passive translator, the
+ filesystem handles it specially, so it really looks like a symlink to
+ programs using NOFOLLOW. that's not the case with an active symlink... so
+ programs using NOFOLLOW simply do not see the active symlink at all
+ < antrik> firmlink OTOH ignores NOFOLLOW, so you always see the linked-to
+ file
+
+ * [[hurd/translator/short-circuiting]]
diff --git a/open_issues/address_space_memory_mapping_entries.mdwn b/open_issues/address_space_memory_mapping_entries.mdwn
new file mode 100644
index 00000000..caf447dd
--- /dev/null
+++ b/open_issues/address_space_memory_mapping_entries.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 2011 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_gnumach]]
+
+IRC, freenode, #hurd, 2011-05-07
+
+ <braunr> and as a last example: memory mapping is heavily used in the hurd,
+ but for some reason, the map entries in an address space are still on a
+ linked list
+ <braunr> a bare linked list
+ <braunr> which makes faults and page cache lookups even slower
diff --git a/open_issues/adduser.mdwn b/open_issues/adduser.mdwn
new file mode 100644
index 00000000..7761ec61
--- /dev/null
+++ b/open_issues/adduser.mdwn
@@ -0,0 +1,37 @@
+[[!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]]."]]"""]]
+
+[[!meta title="adduser: posix_spawn() error=1073741826"]]
+
+[[!tag open_issue_porting]]
+
+`adduser` does work as expected, the following warnings are spurious, they just
+appear when one doesn't have the nscd package. They do not appear on linux boxes
+because there posix_spawn doesn't report ENOENT for exec(). Posix indeed says
+that `if the error occurs after the calling process successfully returns, the
+child process shall exit with exit status 127'. The hurd however reports all
+errors, thus the warning.
+
+ $ sudo adduser foo
+ Adding user `foo' ...
+ Adding new group `foo' (1002) ...
+ posix_spawn() error=1073741826
+ posix_spawn() error=1073741826
+ posix_spawn() error=1073741826
+ Adding new user `foo' (1002) with group `foo' ...
+ posix_spawn() error=1073741826
+ posix_spawn() error=1073741826
+ posix_spawn() error=1073741826
+ posix_spawn() error=1073741826
+ Creating home directory `/home/foo' ...
+ Copying files from `/etc/skel' ...
+ [...]
+
+Reported at http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=623199
diff --git a/open_issues/anatomy_of_a_hurd_system.mdwn b/open_issues/anatomy_of_a_hurd_system.mdwn
new file mode 100644
index 00000000..e1d5c9d8
--- /dev/null
+++ b/open_issues/anatomy_of_a_hurd_system.mdwn
@@ -0,0 +1,73 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!taglink open_issue_documentation]]
+
+A bunch of this should also be covered in other (introductionary) material,
+like Bushnell's Hurd paper. All this should be unfied and streamlined.
+
+IRC, freenode, #hurd, 2011-03-08
+
+ <foocraft> I've a question on what are the "units" in the hurd project, if
+ you were to divide them into units if they aren't, and what are the
+ dependency relations between those units(roughly, nothing too pedantic
+ for now)
+ <antrik> there is GNU Mach (the microkernel); there are the server
+ libraries in the Hurd package; there are the actual servers in the same;
+ and there is the POSIX implementation layer in glibc
+ <antrik> relations are a bit tricky
+ <antrik> Mach is the base layer which implements IPC and memory management
+ <foocraft> hmm I'll probably allocate time for dependency graph generation,
+ in the worst case
+ <antrik> on top of this, the Hurd servers, using the server libraries,
+ implement various aspects of the system functionality
+ <antrik> client programs use libc calls to use the servers
+ <antrik> (servers also use libc to communicate with other servers and/or
+ Mach though)
+ <foocraft> so every server depends solely on mach, and no other server?
+ <foocraft> s/mach/mach and/or libc/
+ <antrik> I think these things should be pretty clear one you are somewhat
+ familiar with the Hurd architecture... nothing really tricky there
+ <antrik> no
+ <antrik> servers often depend on other servers for certain functionality
+
+---
+
+IRC, freenode, #hurd, 2011-03-12
+
+ <dEhiN> when mach first starts up, does it have some basic i/o or fs
+ functionality built into it to start up the initial hurd translators?
+ <antrik> I/O is presently completely in Mach
+ <antrik> filesystems are in userspace
+ <antrik> the root filesystem and exec server are loaded by grub
+ <dEhiN> o I see
+ <dEhiN> so in order to start hurd, you would have to start mach and
+ simultaneously start the root filesystem and exec server?
+ <antrik> not exactly
+ <antrik> GRUB loads all three, and then starts Mach. Mach in turn starts
+ the servers according to the multiboot information passed from GRUB
+ <dEhiN> ok, so does GRUB load them into ram?
+ <dEhiN> I'm trying to figure out in my mind how hurd is initially started
+ up from a low-level pov
+ <antrik> yes, as I said, GRUB loads them
+ <dEhiN> ok, thanks antrik...I'm new to the idea of microkernels, but a
+ veteran of monolithic kernels
+ <dEhiN> although I just learned that windows nt is a hybrid kernel which I
+ never knew!
+ <rm> note there's a /hurd/ext2fs.static
+ <rm> I belive that's what is used initially... right?
+ <antrik> yes
+ <antrik> loading the shared libraries in addition to the actual server
+ would be unweildy
+ <antrik> so the root FS server is linked statically instead
+ <dEhiN> what does the root FS server do?
+ <antrik> well, it serves the root FS ;-)
+ <antrik> it also does some bootstrapping work during startup, to bring the
+ rest of the system up
diff --git a/open_issues/automatic_backtraces_when_assertions_hit.mdwn b/open_issues/automatic_backtraces_when_assertions_hit.mdwn
new file mode 100644
index 00000000..1cfacaf5
--- /dev/null
+++ b/open_issues/automatic_backtraces_when_assertions_hit.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 2010 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_glibc]]
+
+IRC, unknown channel, unknown date.
+
+ <azeem> tschwinge: ext2fs.static: thread-cancel.c:55: hurd_thread_cancel: Assertion `! __spin_lock_locked (&ss->critical_section_lock)' failed.
+ <youpi> it'd be great if we could have backtraces in such case
+ <youpi> at least just the function names
+ <youpi> and in this case (static), just addresses would be enough
diff --git a/open_issues/automatically_checking_port_deallocation.mdwn b/open_issues/automatically_checking_port_deallocation.mdwn
new file mode 100644
index 00000000..fb8cfd01
--- /dev/null
+++ b/open_issues/automatically_checking_port_deallocation.mdwn
@@ -0,0 +1,22 @@
+[[!meta copyright="Copyright © 2010 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_gnumach]]
+
+IRC, unknown channel, unknown date.
+
+ <youpi> we really need something that is able to automatically check port deallocation
+ <youpi> at least for the trivial cases, for which we do have bugs I'm currently fixing...
+ <pochu> test suite? :)
+ <pochu> won't magically find them though, so not what you've asked for...
+ <youpi> test suites can trigger some of the bugs yes
+ <youpi> which is already a good thing
+ <youpi> of course the coverage can't be perfect
+ <youpi> one of the bugs I fixed happened only for setuid binaries for instance
diff --git a/open_issues/bash.mdwn b/open_issues/bash.mdwn
new file mode 100644
index 00000000..47598071
--- /dev/null
+++ b/open_issues/bash.mdwn
@@ -0,0 +1,47 @@
+[[!meta copyright="Copyright © 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]]
+
+# *bash* 4.0 vs. typing `C-c` (*SIGINT*)
+
+Will show `-bash: echo: write error: (ipc/mig) wrong reply message ID` unter
+certain conditions.
+
+After having noticed that this error doesn't occur if starting *bash* with
+`--norc`, I isolated it to the following command in `.bashrc`:
+
+ case $TERM in
+ xterm* | rxvt*)
+ PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}:${PWD}\007"';;
+ esac
+
+... and indeed:
+
+ tschwinge@flubber:~ $ echo "$TERM" -- "$PROMPT_COMMAND"
+ xterm -- echo -ne "\033]0;${USER}@${HOSTNAME}:${PWD}\007"
+ tschwinge@flubber:~ $ ^C
+ -bash: echo: write error: (ipc/mig) wrong reply message ID
+ tschwinge@flubber:~ $ PROMPT_COMMAND=
+ tschwinge@flubber:~ $ ^C
+ tschwinge@flubber:~ $
+
+ bash-4.0$ PROMPT_COMMAND='echo >&2 -n foo\ '
+ foo bash-4.0$ ^C
+
+ bash-4.0$ PROMPT_COMMAND='echo >&1 -n foo\ '
+ foo bash-4.0$ ^C
+ bash: echo: write error: (ipc/mig) wrong reply message ID
+
+ bash-4.0$ PROMPT_COMMAND='/bin/echo >&1 -n foo\ '
+ foo bash-4.0$ ^C
+ bash: start_pipeline: pgrp pipe: (ipc/mig) wrong reply message ID
+
+So, there's something different with stdout in / after the SIGINT handler.
diff --git a/open_issues/bash_busy-loop.mdwn b/open_issues/bash_busy-loop.mdwn
new file mode 100644
index 00000000..5228ba33
--- /dev/null
+++ b/open_issues/bash_busy-loop.mdwn
@@ -0,0 +1,33 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+I've first seen this problem after having had the following command line run
+for a week, or two, or three:
+
+Start `screen`. Find PID of pfinet.
+
+ $ while sleep 66; do echo "$(date)" " $(ps --no-header --format=hurd -p [PID])"; done | tee ps-pfinet
+
+Leave it running, detach from `screen`.
+
+Eventually, the main `bash` process will go bonkers and eat 100 % CPU time.
+Reproduced on four different systems.
+
+A faster way to reproduce this, again inside `screen`; every three seconds,
+write text in 10 MiB bursts to the terminal:
+
+ $ while sleep 3; do date > tmp/tmp && yes "$(date)" | dd bs=1M count=10; done
+
+This one only needs like ten hours, before `bash` starts its busy-loop, from
+which it can only be terminated with `SIGKILL`. At this point, the `term`,
+`screen`, `fifo` processes also have used 40, 52, 25 minutes of CPU time,
+respectively, but appear to be still working fine.
+
+I did not yet start debugging this.
diff --git a/open_issues/bash_interrupted_system_call.mdwn b/open_issues/bash_interrupted_system_call.mdwn
new file mode 100644
index 00000000..9feab6ff
--- /dev/null
+++ b/open_issues/bash_interrupted_system_call.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+IRC, unknown channel, unknown date.
+
+ <virtuoso015> i seem to be getting this message from the shell "-bash: /dev/fd/62: Interrupted system call"
+ <virtuoso015> is it significant ?
+ <youpi> I've seen this issue already yes
+ <youpi> it's not
+ <youpi> it's bash not handling EINTR properly
+ <antrik> youpi: so this is actually a bug in bash, not Hurd generating a bogus error?
+ <youpi> well, it's Hurd generating an error which bash doesn't expect to see
diff --git a/open_issues/bash_vs_screen_vs_sigint.mdwn b/open_issues/bash_vs_screen_vs_sigint.mdwn
new file mode 100644
index 00000000..9672041c
--- /dev/null
+++ b/open_issues/bash_vs_screen_vs_sigint.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+ * [[bash]]
+ * [[screen]]
diff --git a/open_issues/benefits_of_a_native_hurd_implementation.mdwn b/open_issues/benefits_of_a_native_hurd_implementation.mdwn
new file mode 100644
index 00000000..d796bf6b
--- /dev/null
+++ b/open_issues/benefits_of_a_native_hurd_implementation.mdwn
@@ -0,0 +1,132 @@
+[[!meta copyright="Copyright © 2010, 2011 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_documentation]]
+
+What are the benefits of a native GNU/Hurd system, now that Linux et al. can do
+so much? Think [[hurd/translator]]s: FUSE, [[hurd/subhurd]]s: User-Mode-Linux
+and other virtualization techiques, and so on.
+
+It is possible to begin [[implementing_Hurd_on_top_of_another_system]], but...
+
+IRC, #hurd, August / September 2010
+
+ <marcusb> ArneBab: but Neal and I were not happy with that alone. We were
+ looking for deeper improvements to the system, for, I think, sound
+ reasons. That is what brought us to the L4/Coyotos technologies
+ <marcusb> ArneBab: as you are writing a kernel in user space, you can still
+ do kernel improvements there
+ <marcusb> ArneBab: if you take it very far, you end up with a kernel that
+ runs Linux in user space (just flip the two) for the drivers
+ <marcusb> ArneBab: that is what the L4 people did with the DDE
+
+([[DDE]])
+
+ <marcusb> ArneBab: so, with these different cuts, there are different
+ opportunities. on the one end, you can run Linux as normal and get some
+ of the Hurd features such as translators in some programs. At the other
+ end, you can do whatever you want and run some linux code for the drivers
+ or none at all.
+ <marcusb> ArneBab: one of the big questions then becomes: at which point
+ can the advantages offered by the Hurd be realized?
+ <marcusb> ArneBab: and that's not entirely clear to me
+ <marcusb> when I worked on this with Neal, we pushed further and further
+ into need-to-change-everything land
+ <marcusb> while the current efforts on the Hurd seem to be more equivalent
+ to the could-run-it-in-userspace-on-top-of-Linux camp
+ <ArneBab> marcusb: for that I think we need a way to move towards them step
+ by step. Would it be possible to get the advantages of better resource
+ allocation with a Viengoos in userspace, too?
+ <ArneBab> and when that is stable, just switch over?
+ <marcusb> ArneBab: I don't know. I suspect these people will know before
+ us: http://lxc.sourceforge.net/
+ <ArneBab> something like implementing flip points: flip Linux with Hurd to
+ Hund with Linux. Flip Mach with L4 to L4 with Mach.
+ <ArneBab> lxc sounds interesting.
+ <marcusb> note that these efforts address security concerns more than other
+ concerns
+ <marcusb> so they will get isolation long before sharing is even considered
+ <marcusb> but some of the issues are the same
+ <marcusb> once you allow malware to do what it wants, it's a small step to
+ also allow the user to what he wants :)
+ <ArneBab> it kinda looks like hacking it where it doesn’t really fit again…
+ <ArneBab> there I ask myself when the point comes that doing a cleaner
+ design offsets the popularity
+ <ArneBab> they are pushing more and more stuff into userspace
+ <ArneBab> which is a good thing (to me)
+ <ArneBab> it’s hard to clearly describe how, but even though I like having
+ more stuff in userspace, the way it is bolted onto Linux doesn’t feel
+ good for me.
+ <ArneBab> FUSE is cool, but if I use it, I am at a disadvantage compared to
+ a non-fuse user
+ <ArneBab> while in the Hurd, these additional options are on eqal footing.
+ <marcusb> ArneBab: are they pushing more and more into user space? I don't
+ think so. I see more of the reverse, actually
+ <marcusb> or maybe both
+ <ArneBab> FUSE, lxd and scheduling in userspace move to userspace
+ <ArneBab> well, KMS moved to the kernel
+ <ArneBab> to avoid flickering when switching between X and the console?
+ <ArneBab> marcusb: Do you experience FUSE lxc and such being secondclass in
+ Linux, too, or is that just a strange feeling of me?
+ <ArneBab> marcusb: and that splits the users into those who can get stuff
+ into the kernel and those who can only work in userspace – which I don’t
+ really like.
+ <ArneBab> That’s one more advantage of the Hurd: eqal footing for all
+ (except the Mach hackers, but they have a very limited terrain)
+ <marcusb> ArneBab: but UML kernel module is minimal, and Linus didn't have
+ a principled objection to it (but just wanted a more general solution)
+ <marcusb> ArneBab: as a side note, although people keep complaining, the
+ linux kernel seems to be growing steadily, so getting stuff into the
+ kernel doesn't seem too hard. 8-O
+
+---
+
+IRC, #hurd, 2010-12-28
+
+ <tim> but is monolithic so bad?
+ <sartakov> yep
+ <braunr> no it's not
+ <braunr> proof: it works very well for most people
+ [...]
+ <braunr> the real problem is extensibility and interfaces
+ <tim> :/ whats the huge advantage of micro-k
+ <braunr> extensibility
+ <tim> over?
+ <braunr> you can add a whole lot of new services for new purposes with new
+ interfaces without changing the kernel
+ <tim> oright
+ <braunr> it basically boils down to the original Unix idea: everything does
+ one thing well
+ [...]
+ <kilobug> well, I would say extensibility and fault-tolerance are the two
+ key advantages
+ <braunr> taht's a side effect
+ <braunr> there are fault taulerant monolithic kernels
+ [...]
+ <braunr> tolerant*
+ <braunr> and the hurd is for now a non fault-tolerant microkernel based OS
+ :/
+ [...]
+ <kilobug> braunr: not really; you can't ensure fault tolerance for code
+ running in kernel space, code running in kernel space can do everything,
+ including reboot, crash, ...
+ [...]
+ <braunr> kilobug: right, a monolithick kernel is less folt-tolerant than a
+ well designed/implemented microkernel based os
+ <kilobug> braunr: well, the Hurd is buggy nowadays, but things like an
+ ext2fs translator doing a segfault and being restarted is a
+ fault-tolerance that would be almost impossible to have in Linux
+ <kilobug> braunr: sure, you can have fault-tolerance with FUSE, but FUSE is
+ applying micro-kernel paradigm to Linux
+ [...]
+ <braunr> the reason i don't care that much about fault tolerance is that
+ Linux obviously shows a monolithic kernel can run almost flawlessly if
+ well written
+ <braunr> but extensibility is really another matter
diff --git a/open_issues/binutils.mdwn b/open_issues/binutils.mdwn
new file mode 100644
index 00000000..63ee780d
--- /dev/null
+++ b/open_issues/binutils.mdwn
@@ -0,0 +1,194 @@
+[[!meta copyright="Copyright © 2007, 2008, 2010, 2011 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 stable_URL open_issue_binutils]]
+
+Here's what's to be done for maintaining GNU Binutils.
+
+As these tools primarily deal with low-level parts of the target architecture
+and the object file format (ELF ABI), which are essentially (at least meant to
+be) the same, there shouldn't be many differences comparing the binutils
+between the GNU/Hurd and GNU/Linux ports, for example. There are a few,
+though, as explained below.
+
+[[!toc levels=2]]
+
+
+# [[General information|/binutils]]
+
+
+# [[Sources|source_repositories/binutils]]
+
+
+# Configuration
+
+Last reviewed up to the [[Git mirror's 31fd5921fbb68f2b5ca4ca416cb5f5f7657b3f4d
+(2011-09-04) sources|source_repositories/binutils]].
+
+ * Globally
+
+ * a.out, COFF, PE image support and 64 bit support are not interesting.
+
+ * In the testsuites, `.exp` and `.d` files very likely should not only
+ care for `*-*-linux*`, but also `*-*-gnu*`. (If the need to be
+ conditionalized like this at all.)
+
+ * `bfd/`
+
+ * `config.bfd`
+
+ * `i[3-7]86-*-gnu*`
+
+ Comparing to `i[3-7]86-*-linux-*`:
+
+ * `i386linux_vec` -- a.out.
+
+ * `i386pei_vec` -- PE.
+
+ * 64 bit.
+
+ * `configure.host`
+
+ Souldn't need anything. x86 Linux neither.
+
+ * `configure.in`
+
+ Linux:
+
+ * `COREFILE=trad-core.lo` with `TRAD_HEADER='"hosts/i386linux.h"'`
+
+ We don't have any such core file support configured. TODO: should
+ we? Where is this core file reading exactly used? GDB?
+
+ * `i386linux_vec` -- a.out.
+
+ * `i386pei_vec` -- PE.
+
+ * `binutils/`
+
+ * `configure.tgt`
+
+ * `gas/`
+
+ * `config/te-gnu.h`
+
+ C.f. `te-linux.h`; search tree for `TE_LINUX` vs. `TE_GNU` usage.
+
+ * `tc-i386.h`
+
+ Sole `TE_LINUX` usage is for a.out.
+
+ * `configure.tgt`
+
+ * `ld/`
+
+ * `configure.host`
+
+ * `*-*-gnu*`
+
+ TODO: resolve `crt0.o` vs. `crt1.o` issue. [[Testsuite
+ failures|binutils#static]].
+
+ * `configure.tgt`
+
+ * `i[3-7]86-*-gnu*`
+
+ Compare to `i[3-7]86-*-linux-*`, but don't need a.out (`i386linux`)
+ and 64 bit support.
+
+
+# Build
+
+Here's a log of a binutils build run; this is from our [[Git repository's
+6f6a8f5b0176a3e5a8fdd80627d2422831738c7e (2011-09-04)
+sources|source_repositories/binutils]], run on kepler.SCHWINGE and
+coulomb.SCHWINGE.
+
+ $ export LC_ALL=C
+ $ ../master/configure --prefix="$PWD".install SHELL=/bin/dash CC=gcc-4.6 CXX=g++-4.6 2>&1 | tee log_build
+ [...]
+ $ make 2>&1 | tee log_build_
+ [...]
+
+Different hosts may default to different shells and compiler versions; thus
+harmonized.
+
+This takes up around 110 MiB, and needs roughly 4 min on kepler.SCHWINGE and
+15 min on coulomb.SCHWINGE.
+
+
+## Analysis
+
+x86 GNU/Linux' and GNU/Hurd's configurations are slightly different, thus mask
+out most of the differences that are due to GNU/Linux supporting more core file
+formats, and more emulation vectors.
+
+ $ diff -wu <(ssh kepler.SCHWINGE 'cd tmp/source/binutils/ && cat hurd/master.build/log_build* | sed -e "s%\(/media/data\)\?${PWD}%[...]%g"' | sed -f open_issues/binutils/log_build-linux.sed) <(ssh coulomb.SCHWINGE 'cd tmp/binutils/ && cat hurd/master.build/log_build* | sed -e "s%\(/media/erich\)\?${PWD}%[...]%g"' | sed -f open_issues/binutils/log_build-hurd.sed) > open_issues/binutils/log_build.diff
+
+[[log_build.diff]].
+
+
+# Install
+
+ $ make install 2>&1 | tee log_install
+ [...]
+
+This takes up around 70 MiB, and needs roughly 1 min on kepler.SCHWINGE and 5
+min on coulomb.SCHWINGE.
+
+
+## Analysis
+
+ $ diff -wu <(ssh kepler.SCHWINGE 'cd tmp/source/binutils/ && cat hurd/master.build/log_install | sed -e "s%\(/media/data\)\?${PWD}%[...]%g"' | sed -f open_issues/binutils/log_install-linux.sed) <(ssh coulomb.SCHWINGE 'cd tmp/binutils/ && cat hurd/master.build/log_install | sed -e "s%\(/media/erich\)\?${PWD}%[...]%g"' | sed -f open_issues/binutils/log_install-hurd.sed) > open_issues/binutils/log_install.diff
+
+[[log_install.diff]].
+
+ * `libtool: finish`: `ldconfig` is not run for the Hurd.
+
+
+# Testsuite
+
+ $ make -k check
+ [...]
+
+This needs roughly 5 min on kepler.SCHWINGE and 15 min on coulomb.SCHWINGE.
+
+ $ ssh kepler.SCHWINGE 'cd tmp/source/binutils/ && cat hurd/master.build/*/*.sum hurd/master.build/*/*/*.sum | sed -e "s%\(/media/data\)\?${PWD}%[...]%g"' > open_issues/binutils/sum_linux
+ $ ssh coulomb.SCHWINGE 'cd tmp/binutils/ && cat hurd/master.build/*/*.sum hurd/master.build/*/*/*.sum | sed -e "s%\(/media/erich\)\?${PWD}%[...]%g"' > open_issues/binutils/sum_hurd
+
+Comparing the results files, [[sum_linux]] to [[sum_hurd]]:
+
+ $ diff -u -F ^Running open_issues/binutils/sum_linux open_issues/binutils/sum_hurd > open_issues/binutils/sum.diff
+
+[[open_issues/binutils/sum.diff]].
+
+
+## Analysis
+
+ * <a name="static"><!-- stable_URL -->`FAIL: static [...]`</a>
+
+ The testsuite isn't prepared for using `crt0.o` instead of `crt1.o`
+ depending on whether a static or dynamic executable is created. Documented
+ in `ld/configure.host`. Perhaps we should finally rewrite this messy code
+ in glibc?
+
+ * <a name="64ksec">`FAIL: ld-elf/64ksec`</a>
+
+ On the idle grubber, this one takes a few minutes wall time to complete
+ successfully ([[I/O system
+ weakness|performance/io_system/binutils_ld_64ksec]]), so assuming some
+ system load variation, the testsuite's timeout may trigger.
+
+ * <a name="weak"><!-- stable_URL -->`FAIL: ELF weak [...]`</a>
+
+ [[I|tschwinge]] suppose this is due to us having an override w.r.t. weak
+ symbol handling in glibc, needed for our external [[/libpthread]]. TODO:
+ document properly.
diff --git a/open_issues/binutils/log_build-hurd.sed b/open_issues/binutils/log_build-hurd.sed
new file mode 100644
index 00000000..070f9823
--- /dev/null
+++ b/open_issues/binutils/log_build-hurd.sed
@@ -0,0 +1,5 @@
+s%i686-unknown-gnu0\.3%[ARCH]%g
+
+
+
+s%-DSELECT_VECS=\('\?\)&bfd_elf32_i386_vec,&bfd_elf32_little_generic_vec,&bfd_elf32_big_generic_vec\1%-DSELECT_VECS=\1[SELECT_VECS]\1%
diff --git a/open_issues/binutils/log_build-linux.sed b/open_issues/binutils/log_build-linux.sed
new file mode 100644
index 00000000..9c94797c
--- /dev/null
+++ b/open_issues/binutils/log_build-linux.sed
@@ -0,0 +1,5 @@
+s%i686-pc-linux-gnu%[ARCH]%g
+s%-DTRAD_CORE%%
+s%-DHAVE_i386linux_vec%%
+s%-DHAVE_i386pei_vec%%
+s%-DSELECT_VECS=\('\?\)&bfd_elf32_i386_vec,&i386linux_vec,&i386pei_vec,&bfd_elf32_little_generic_vec,&bfd_elf32_big_generic_vec\1%-DSELECT_VECS=\1[SELECT_VECS]\1%
diff --git a/open_issues/binutils/log_build.diff b/open_issues/binutils/log_build.diff
new file mode 100644
index 00000000..e270dbc6
--- /dev/null
+++ b/open_issues/binutils/log_build.diff
@@ -0,0 +1,280 @@
+--- /dev/fd/63 2011-09-04 14:41:28.825654597 +0200
++++ /dev/fd/62 2011-09-04 14:41:28.825654597 +0200
+@@ -276,12 +276,12 @@
+ checking for sys/sysinfo.h... yes
+ checking for machine/hal_sysinfo.h... no
+ checking for sys/table.h... no
+-checking for sys/sysctl.h... yes
++checking for sys/sysctl.h... no
+ checking for sys/systemcfg.h... no
+ checking for stdint.h... (cached) yes
+ checking for stdio_ext.h... yes
+ checking for process.h... no
+-checking for sys/prctl.h... yes
++checking for sys/prctl.h... no
+ checking for sys/wait.h that is POSIX.1 compatible... yes
+ checking whether time.h and sys/time.h may both be included... yes
+ checking whether errno must be declared... no
+@@ -351,13 +351,13 @@
+ checking for working fork... yes
+ checking for working vfork... (cached) yes
+ checking for _doprnt... no
+-checking for sys_errlist... yes
+-checking for sys_nerr... yes
++checking for sys_errlist... no
++checking for sys_nerr... no
+ checking for sys_siglist... yes
+ checking for external symbol _system_configuration... no
+ checking for __fsetlocking... yes
+ checking for canonicalize_file_name... yes
+-checking for dup3... yes
++checking for dup3... no
+ checking for getrlimit... yes
+ checking for getrusage... yes
+ checking for getsysinfo... no
+@@ -374,7 +374,7 @@
+ checking for strerror... yes
+ checking for strsignal... yes
+ checking for sysconf... yes
+-checking for sysctl... yes
++checking for sysctl... no
+ checking for sysmp... no
+ checking for table... no
+ checking for times... yes
+@@ -459,7 +459,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... nm
+ checking the name lister (nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for ld option to reload object files... -r
+@@ -479,7 +479,7 @@
+ checking if gcc-4.6 supports -c -o file.o... yes
+ checking if gcc-4.6 supports -c -o file.o... (cached) yes
+ checking whether the gcc-4.6 linker (ld) supports shared libraries... yes
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking for shl_load... no
+ checking for shl_load in -ldld... no
+@@ -569,26 +569,26 @@
+ checking sys/procfs.h usability... yes
+ checking sys/procfs.h presence... yes
+ checking for sys/procfs.h... yes
+-checking for prstatus_t in sys/procfs.h... yes
++checking for prstatus_t in sys/procfs.h... no
+ checking for prstatus32_t in sys/procfs.h... no
+ checking for prstatus_t.pr_who in sys/procfs.h... no
+ checking for prstatus32_t.pr_who in sys/procfs.h... no
+-checking for pstatus_t in sys/procfs.h... no
++checking for pstatus_t in sys/procfs.h... yes
+ checking for pxstatus_t in sys/procfs.h... no
+ checking for pstatus32_t in sys/procfs.h... no
+-checking for prpsinfo_t in sys/procfs.h... yes
+-checking for prpsinfo_t.pr_pid in sys/procfs.h... yes
++checking for prpsinfo_t in sys/procfs.h... no
++checking for prpsinfo_t.pr_pid in sys/procfs.h... no
+ checking for prpsinfo32_t in sys/procfs.h... no
+ checking for prpsinfo32_t.pr_pid in sys/procfs.h... no
+-checking for psinfo_t in sys/procfs.h... no
+-checking for psinfo_t.pr_pid in sys/procfs.h... no
++checking for psinfo_t in sys/procfs.h... yes
++checking for psinfo_t.pr_pid in sys/procfs.h... yes
+ checking for psinfo32_t in sys/procfs.h... no
+ checking for psinfo32_t.pr_pid in sys/procfs.h... no
+-checking for lwpstatus_t in sys/procfs.h... no
++checking for lwpstatus_t in sys/procfs.h... yes
+ checking for lwpxstatus_t in sys/procfs.h... no
+ checking for lwpstatus_t.pr_context in sys/procfs.h... no
+-checking for lwpstatus_t.pr_reg in sys/procfs.h... no
+-checking for lwpstatus_t.pr_fpreg in sys/procfs.h... no
++checking for lwpstatus_t.pr_reg in sys/procfs.h... yes
++checking for lwpstatus_t.pr_fpreg in sys/procfs.h... yes
+ checking for win32_pstatus_t in sys/procfs.h... no
+ checking linker --as-needed support... yes
+ checking for cos in -lm... yes
+@@ -1229,36 +1229,15 @@
+ /bin/dash ./libtool --tag=CC --mode=compile gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR='"[...]/hurd/master.build.install/bin"' -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT dwarf1.lo -MD -MP -MF .deps/dwarf1.Tpo -c -o dwarf1.lo ../../master/bfd/dwarf1.c
+ libtool: compile: gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR=\"[...]/hurd/master.build.install/bin\" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT dwarf1.lo -MD -MP -MF .deps/dwarf1.Tpo -c ../../master/bfd/dwarf1.c -o dwarf1.o
+ mv -f .deps/dwarf1.Tpo .deps/dwarf1.Plo
+-/bin/dash ./libtool --tag=CC --mode=compile gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR='"[...]/hurd/master.build.install/bin"' -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT i386linux.lo -MD -MP -MF .deps/i386linux.Tpo -c -o i386linux.lo ../../master/bfd/i386linux.c
+-libtool: compile: gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR=\"[...]/hurd/master.build.install/bin\" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT i386linux.lo -MD -MP -MF .deps/i386linux.Tpo -c ../../master/bfd/i386linux.c -o i386linux.o
+-mv -f .deps/i386linux.Tpo .deps/i386linux.Plo
+-/bin/dash ./libtool --tag=CC --mode=compile gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR='"[...]/hurd/master.build.install/bin"' -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT aout32.lo -MD -MP -MF .deps/aout32.Tpo -c -o aout32.lo ../../master/bfd/aout32.c
+-libtool: compile: gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR=\"[...]/hurd/master.build.install/bin\" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT aout32.lo -MD -MP -MF .deps/aout32.Tpo -c ../../master/bfd/aout32.c -o aout32.o
+-mv -f .deps/aout32.Tpo .deps/aout32.Plo
+-/bin/dash ./libtool --tag=CC --mode=compile gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR='"[...]/hurd/master.build.install/bin"' -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT pei-i386.lo -MD -MP -MF .deps/pei-i386.Tpo -c -o pei-i386.lo ../../master/bfd/pei-i386.c
+-libtool: compile: gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR=\"[...]/hurd/master.build.install/bin\" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT pei-i386.lo -MD -MP -MF .deps/pei-i386.Tpo -c ../../master/bfd/pei-i386.c -o pei-i386.o
+-mv -f .deps/pei-i386.Tpo .deps/pei-i386.Plo
+-rm -f peigen.c
+-sed -e s/XX/pe/g < ../../master/bfd/peXXigen.c > peigen.new
+-mv -f peigen.new peigen.c
+-/bin/dash ./libtool --tag=CC --mode=compile gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR='"[...]/hurd/master.build.install/bin"' -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT peigen.lo -MD -MP -MF .deps/peigen.Tpo -c -o peigen.lo peigen.c
+-libtool: compile: gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR=\"[...]/hurd/master.build.install/bin\" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT peigen.lo -MD -MP -MF .deps/peigen.Tpo -c peigen.c -o peigen.o
+-mv -f .deps/peigen.Tpo .deps/peigen.Plo
+-/bin/dash ./libtool --tag=CC --mode=compile gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR='"[...]/hurd/master.build.install/bin"' -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT cofflink.lo -MD -MP -MF .deps/cofflink.Tpo -c -o cofflink.lo ../../master/bfd/cofflink.c
+-libtool: compile: gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR=\"[...]/hurd/master.build.install/bin\" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT cofflink.lo -MD -MP -MF .deps/cofflink.Tpo -c ../../master/bfd/cofflink.c -o cofflink.o
+-mv -f .deps/cofflink.Tpo .deps/cofflink.Plo
+ /bin/dash ./libtool --tag=CC --mode=compile gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR='"[...]/hurd/master.build.install/bin"' -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT elf32-gen.lo -MD -MP -MF .deps/elf32-gen.Tpo -c -o elf32-gen.lo ../../master/bfd/elf32-gen.c
+ libtool: compile: gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR=\"[...]/hurd/master.build.install/bin\" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT elf32-gen.lo -MD -MP -MF .deps/elf32-gen.Tpo -c ../../master/bfd/elf32-gen.c -o elf32-gen.o
+ mv -f .deps/elf32-gen.Tpo .deps/elf32-gen.Plo
+ /bin/dash ./libtool --tag=CC --mode=compile gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR='"[...]/hurd/master.build.install/bin"' -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT cpu-i386.lo -MD -MP -MF .deps/cpu-i386.Tpo -c -o cpu-i386.lo ../../master/bfd/cpu-i386.c
+ libtool: compile: gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR=\"[...]/hurd/master.build.install/bin\" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT cpu-i386.lo -MD -MP -MF .deps/cpu-i386.Tpo -c ../../master/bfd/cpu-i386.c -o cpu-i386.o
+ mv -f .deps/cpu-i386.Tpo .deps/cpu-i386.Plo
+-/bin/dash ./libtool --tag=CC --mode=compile gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR='"[...]/hurd/master.build.install/bin"' -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT trad-core.lo -MD -MP -MF .deps/trad-core.Tpo -c -o trad-core.lo ../../master/bfd/trad-core.c
+-libtool: compile: gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR=\"[...]/hurd/master.build.install/bin\" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT trad-core.lo -MD -MP -MF .deps/trad-core.Tpo -c ../../master/bfd/trad-core.c -o trad-core.o
+-mv -f .deps/trad-core.Tpo .deps/trad-core.Plo
+ rm -f tofiles
+ f=""; \
+- for i in elf32-i386.lo elf-ifunc.lo elf-vxworks.lo elf32.lo elf.lo elflink.lo elf-attrs.lo elf-strtab.lo elf-eh-frame.lo dwarf1.lo i386linux.lo aout32.lo pei-i386.lo peigen.lo cofflink.lo elf32-gen.lo cpu-i386.lo trad-core.lo ; do \
++ for i in elf32-i386.lo elf-ifunc.lo elf-vxworks.lo elf32.lo elf.lo elflink.lo elf-attrs.lo elf-strtab.lo elf-eh-frame.lo dwarf1.lo elf32-gen.lo cpu-i386.lo ; do \
+ case " $f " in \
+ *" $i "*) ;; \
+ *) f="$f $i" ;; \
+@@ -1268,7 +1247,7 @@
+ /bin/dash ../../master/bfd/../move-if-change tofiles ofiles
+ touch stamp-ofiles
+ /bin/dash ./libtool --tag=CC --mode=link gcc-4.6 -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -release `cat libtool-soversion` -o libbfd.la -rpath [...]/hurd/master.build.install/lib archive.lo archures.lo bfd.lo bfdio.lo bfdwin.lo cache.lo coffgen.lo corefile.lo format.lo init.lo libbfd.lo opncls.lo reloc.lo section.lo syms.lo targets.lo hash.lo linker.lo srec.lo binary.lo tekhex.lo ihex.lo stabs.lo stab-syms.lo merge.lo dwarf2.lo simple.lo compress.lo verilog.lo `cat ofiles` -lz
+-libtool: link: ar rc .libs/libbfd.a archive.o archures.o bfd.o bfdio.o bfdwin.o cache.o coffgen.o corefile.o format.o init.o libbfd.o opncls.o reloc.o section.o syms.o targets.o hash.o linker.o srec.o binary.o tekhex.o ihex.o stabs.o stab-syms.o merge.o dwarf2.o simple.o compress.o verilog.o elf32-i386.o elf-ifunc.o elf-vxworks.o elf32.o elf.o elflink.o elf-attrs.o elf-strtab.o elf-eh-frame.o dwarf1.o i386linux.o aout32.o pei-i386.o peigen.o cofflink.o elf32-gen.o cpu-i386.o trad-core.o
++libtool: link: ar rc .libs/libbfd.a archive.o archures.o bfd.o bfdio.o bfdwin.o cache.o coffgen.o corefile.o format.o init.o libbfd.o opncls.o reloc.o section.o syms.o targets.o hash.o linker.o srec.o binary.o tekhex.o ihex.o stabs.o stab-syms.o merge.o dwarf2.o simple.o compress.o verilog.o elf32-i386.o elf-ifunc.o elf-vxworks.o elf32.o elf.o elflink.o elf-attrs.o elf-strtab.o elf-eh-frame.o dwarf1.o elf32-gen.o cpu-i386.o
+ libtool: link: ranlib .libs/libbfd.a
+ libtool: link: ( cd ".libs" && rm -f "libbfd.la" && ln -s "../libbfd.la" "libbfd.la" )
+ libtooldir=`/bin/dash ./libtool --config | sed -n -e 's/^objdir=//p'`; \
+@@ -1335,7 +1314,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... nm
+ checking the name lister (nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for ld option to reload object files... -r
+@@ -1355,7 +1334,7 @@
+ checking if gcc-4.6 supports -c -o file.o... yes
+ checking if gcc-4.6 supports -c -o file.o... (cached) yes
+ checking whether the gcc-4.6 linker (ld) supports shared libraries... yes
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -1510,7 +1489,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... nm
+ checking the name lister (nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for ld option to reload object files... -r
+@@ -1531,7 +1510,7 @@
+ checking if gcc-4.6 supports -c -o file.o... (cached) yes
+ checking whether the gcc-4.6 linker (ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -1977,7 +1956,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... nm
+ checking the name lister (nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for ld option to reload object files... -r
+@@ -1998,7 +1977,7 @@
+ checking if gcc-4.6 supports -c -o file.o... (cached) yes
+ checking whether the gcc-4.6 linker (ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -2231,7 +2210,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... nm
+ checking the name lister (nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for ld option to reload object files... -r
+@@ -2252,7 +2231,7 @@
+ checking if gcc-4.6 supports -c -o file.o... (cached) yes
+ checking whether the gcc-4.6 linker (ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -2471,7 +2450,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... nm
+ checking the name lister (nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for ld option to reload object files... -r
+@@ -2492,7 +2471,7 @@
+ checking if gcc-4.6 supports -c -o file.o... (cached) yes
+ checking whether the gcc-4.6 linker (ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -2508,7 +2487,7 @@
+ checking if g++-4.6 supports -c -o file.o... yes
+ checking if g++-4.6 supports -c -o file.o... (cached) yes
+ checking whether the g++-4.6 linker (ld) supports shared libraries... yes
+-checking dynamic linker characteristics... (cached) GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether NLS is requested... yes
+ checking for catalogs to be installed... bg da es fi fr ga id ja sv tr vi zh_CN zh_TW
+@@ -2588,13 +2567,13 @@
+ /bin/dash ../../master/ld/../ylwrap ../../master/ld/ldgram.y y.tab.c ldgram.c y.tab.h ldgram.h y.output ldgram.output -- bison -y -d
+ updating ldgram.h
+ (echo "/* This file is automatically generated. DO NOT EDIT! */";\
+- for f in `echo " " eelf_i386.o ei386linux.o eelf32_x86_64.o "" \
++ for f in `echo " " eelf_i386.o "" \
+ | sed -e 's/ e/ ld/g' -e 's/ ld/ /g' -e 's/[.]o//g'`; do \
+ echo "extern ld_emulation_xfer_type ld_${f}_emulation;"; \
+ done;\
+ echo "";\
+ echo "#define EMULATION_LIST \\";\
+- for f in `echo " " eelf_i386.o ei386linux.o eelf32_x86_64.o "" \
++ for f in `echo " " eelf_i386.o "" \
+ | sed -e 's/ e/ ld/g' -e 's/ ld/ /g' -e 's/[.]o//g'`; do \
+ echo " &ld_${f}_emulation, \\"; \
+ done;\
+@@ -2708,17 +2687,11 @@
+ gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/ld -I. -I../../master/ld -I../bfd -I../../master/ld/../bfd -I../../master/ld/../include -g -O2 -DENABLE_PLUGINS -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT plugin.o -MD -MP -MF .deps/plugin.Tpo -c -o plugin.o ../../master/ld/plugin.c
+ mv -f .deps/plugin.Tpo .deps/plugin.Po
+ cp ../../master/ld/emultempl/astring.sed stringify.sed
+-LIB_PATH='' /bin/dash ../../master/ld/genscripts.sh "../../master/ld" "[...]/hurd/master.build.install/lib" "[...]/hurd/master.build.install" "[...]/hurd/master.build.install" [ARCH] [ARCH] [ARCH] "elf_i386 elf32_x86_64" "/usr/local/lib /lib /usr/lib" no yes elf_i386 "[ARCH]"
++LIB_PATH='' /bin/dash ../../master/ld/genscripts.sh "../../master/ld" "[...]/hurd/master.build.install/lib" "[...]/hurd/master.build.install" "[...]/hurd/master.build.install" [ARCH] [ARCH] [ARCH] "elf_i386" "/usr/local/lib /lib /usr/lib" no yes elf_i386 "[ARCH]"
+ gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/ld -I. -I../../master/ld -I../bfd -I../../master/ld/../bfd -I../../master/ld/../include -g -O2 -DENABLE_PLUGINS -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT eelf_i386.o -MD -MP -MF .deps/eelf_i386.Tpo -c -o eelf_i386.o eelf_i386.c
+ mv -f .deps/eelf_i386.Tpo .deps/eelf_i386.Po
+-LIB_PATH='' /bin/dash ../../master/ld/genscripts.sh "../../master/ld" "[...]/hurd/master.build.install/lib" "[...]/hurd/master.build.install" "[...]/hurd/master.build.install" [ARCH] [ARCH] [ARCH] "elf_i386 elf32_x86_64" "/usr/local/lib /lib /usr/lib" no yes i386linux "[ARCH]aout"
+-gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/ld -I. -I../../master/ld -I../bfd -I../../master/ld/../bfd -I../../master/ld/../include -g -O2 -DENABLE_PLUGINS -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT ei386linux.o -MD -MP -MF .deps/ei386linux.Tpo -c -o ei386linux.o ei386linux.c
+-mv -f .deps/ei386linux.Tpo .deps/ei386linux.Po
+-LIB_PATH='' /bin/dash ../../master/ld/genscripts.sh "../../master/ld" "[...]/hurd/master.build.install/lib" "[...]/hurd/master.build.install" "[...]/hurd/master.build.install" [ARCH] [ARCH] [ARCH] "elf_i386 elf32_x86_64" "/usr/local/lib /lib /usr/lib" no yes elf32_x86_64 "[ARCH]"
+-gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/ld -I. -I../../master/ld -I../bfd -I../../master/ld/../bfd -I../../master/ld/../include -g -O2 -DENABLE_PLUGINS -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT eelf32_x86_64.o -MD -MP -MF .deps/eelf32_x86_64.Tpo -c -o eelf32_x86_64.o eelf32_x86_64.c
+-mv -f .deps/eelf32_x86_64.Tpo .deps/eelf32_x86_64.Po
+-/bin/dash ./libtool --tag=CC --mode=link gcc-4.6 -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -o ld-new ldgram.o ldlex-wrapper.o lexsup.o ldlang.o mri.o ldctor.o ldmain.o ldwrite.o ldexp.o ldemul.o ldver.o ldmisc.o ldfile.o ldcref.o plugin.o eelf_i386.o ei386linux.o eelf32_x86_64.o ../bfd/libbfd.la ../libiberty/libiberty.a -lz -ldl
+-libtool: link: gcc-4.6 -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -o ld-new ldgram.o ldlex-wrapper.o lexsup.o ldlang.o mri.o ldctor.o ldmain.o ldwrite.o ldexp.o ldemul.o ldver.o ldmisc.o ldfile.o ldcref.o plugin.o eelf_i386.o ei386linux.o eelf32_x86_64.o ../bfd/.libs/libbfd.a ../libiberty/libiberty.a -lz -ldl
++/bin/dash ./libtool --tag=CC --mode=link gcc-4.6 -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -o ld-new ldgram.o ldlex-wrapper.o lexsup.o ldlang.o mri.o ldctor.o ldmain.o ldwrite.o ldexp.o ldemul.o ldver.o ldmisc.o ldfile.o ldcref.o plugin.o eelf_i386.o ../bfd/libbfd.la ../libiberty/libiberty.a -lz -ldl
++libtool: link: gcc-4.6 -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -o ld-new ldgram.o ldlex-wrapper.o lexsup.o ldlang.o mri.o ldctor.o ldmain.o ldwrite.o ldexp.o ldemul.o ldver.o ldmisc.o ldfile.o ldcref.o plugin.o eelf_i386.o ../bfd/.libs/libbfd.a ../libiberty/libiberty.a -lz -ldl
+ touch ld.1
+ perl ../../master/ld/../etc/texi2pod.pl -I ../../master/ld -I ../../master/ld/../bfd/doc -I ../bfd/doc -I ../../master/ld/../libiberty -Dman < ../../master/ld/ld.texinfo > ld.pod
+ (pod2man --center="GNU Development Tools" --release="binutils-2.21.53" --section=1 ld.pod | \
diff --git a/open_issues/binutils/log_install-hurd.sed b/open_issues/binutils/log_install-hurd.sed
new file mode 100644
index 00000000..9565aaae
--- /dev/null
+++ b/open_issues/binutils/log_install-hurd.sed
@@ -0,0 +1 @@
+s%i686-unknown-gnu0\.3%[ARCH]%g
diff --git a/open_issues/binutils/log_install-linux.sed b/open_issues/binutils/log_install-linux.sed
new file mode 100644
index 00000000..22880cc5
--- /dev/null
+++ b/open_issues/binutils/log_install-linux.sed
@@ -0,0 +1 @@
+s%i686-pc-linux-gnu%[ARCH]%g
diff --git a/open_issues/binutils/log_install.diff b/open_issues/binutils/log_install.diff
new file mode 100644
index 00000000..cbf8b57d
--- /dev/null
+++ b/open_issues/binutils/log_install.diff
@@ -0,0 +1,18 @@
+--- /dev/fd/63 2011-09-04 14:44:45.079020993 +0200
++++ /dev/fd/62 2011-09-04 14:44:45.079020993 +0200
+@@ -68,7 +68,6 @@
+ libtool: install: /usr/bin/install -c .libs/libbfd.a [...]/hurd/master.build.install/lib/libbfd.a
+ libtool: install: chmod 644 [...]/hurd/master.build.install/lib/libbfd.a
+ libtool: install: ranlib [...]/hurd/master.build.install/lib/libbfd.a
+-libtool: finish: PATH="/home/thomas/command-i686:/home/thomas/command:/home/thomas/shared/command:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin" ldconfig -n [...]/hurd/master.build.install/lib
+ ----------------------------------------------------------------------
+ Libraries have been installed in:
+ [...]/hurd/master.build.install/lib
+@@ -104,7 +103,6 @@
+ libtool: install: /usr/bin/install -c .libs/libopcodes.a [...]/hurd/master.build.install/lib/libopcodes.a
+ libtool: install: chmod 644 [...]/hurd/master.build.install/lib/libopcodes.a
+ libtool: install: ranlib [...]/hurd/master.build.install/lib/libopcodes.a
+-libtool: finish: PATH="/home/thomas/command-i686:/home/thomas/command:/home/thomas/shared/command:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin" ldconfig -n [...]/hurd/master.build.install/lib
+ ----------------------------------------------------------------------
+ Libraries have been installed in:
+ [...]/hurd/master.build.install/lib
diff --git a/open_issues/binutils/sum.diff b/open_issues/binutils/sum.diff
new file mode 100644
index 00000000..07b7f43e
--- /dev/null
+++ b/open_issues/binutils/sum.diff
@@ -0,0 +1,80 @@
+--- open_issues/binutils/sum_linux 2011-09-04 15:01:50.000000000 +0200
++++ open_issues/binutils/sum_hurd 2011-09-04 15:01:57.000000000 +0200
+@@ -1,5 +1,5 @@
+-Test Run By thomas on Sun Sep 4 14:45:17 2011
+-Native configuration is i686-pc-linux-gnu
++Test Run By thomas on Sun Sep 4 14:47:58 2011
++Native configuration is i686-unknown-gnu0.3
+
+ === binutils tests ===
+
+@@ -120,8 +120,8 @@ Running [...]/hurd/master/binutils/tests
+
+ # of expected passes 88
+ # of unsupported tests 3
+-Test Run By thomas on Sun Sep 4 14:45:54 2011
+-Native configuration is i686-pc-linux-gnu
++Test Run By thomas on Sun Sep 4 14:50:18 2011
++Native configuration is i686-unknown-gnu0.3
+
+ === ld tests ===
+
+@@ -325,10 +325,10 @@ Running [...]/hurd/master/ld/testsuite/l
+ PASS: PIE init array
+ PASS: PIE fini array
+ PASS: PIE init array mixed
+-PASS: static preinit array
+-PASS: static init array
+-PASS: static fini array
+-PASS: static init array mixed
++XFAIL: static preinit array
++XFAIL: static init array
++XFAIL: static fini array
++XFAIL: static init array mixed
+ Running [...]/hurd/master/ld/testsuite/ld-elf/exclude.exp ...
+ PASS: ld link shared library
+ PASS: ld export symbols from archive
+@@ -582,8 +582,8 @@ Running [...]/hurd/master/ld/testsuite/l
+ PASS: ELF DSO weak func last DSO
+ PASS: ELF weak func first
+ PASS: ELF weak func last
+-PASS: ELF weak func first DSO
+-PASS: ELF weak func last DSO
++XFAIL: ELF weak func first DSO
++XFAIL: ELF weak func last DSO
+ PASS: ELF DSO weak data first
+ PASS: ELF DSO weak data last
+ PASS: ELF DSO weak data first DSO
+@@ -594,10 +594,10 @@ Running [...]/hurd/master/ld/testsuite/l
+ PASS: ELF weak data last
+ PASS: ELF weak data first common
+ PASS: ELF weak data last common
+-PASS: ELF weak data first DSO
+-PASS: ELF weak data last DSO
+-PASS: ELF weak data first DSO common
+-PASS: ELF weak data last DSO common
++XFAIL: ELF weak data first DSO
++XFAIL: ELF weak data last DSO
++XFAIL: ELF weak data first DSO common
++XFAIL: ELF weak data last DSO common
+ PASS: ELF DSO small bar (size)
+ PASS: ELF DSO foo with small bar (size)
+ PASS: ELF DSO big bar (size)
+@@ -928,13 +928,13 @@ Running [...]/hurd/master/ld/testsuite/l
+
+ === ld Summary ===
+
+-# of expected passes 662
+-# of expected failures 8
++# of expected passes 652
++# of expected failures 18
+ # of untested testcases 6
+ [...]/hurd/master.build/ld/ld-new 2.21.53.20110904
+
+-Test Run By thomas on Sun Sep 4 14:45:29 2011
+-Native configuration is i686-pc-linux-gnu
++Test Run By thomas on Sun Sep 4 14:48:36 2011
++Native configuration is i686-unknown-gnu0.3
+
+ === gas tests ===
+
diff --git a/open_issues/binutils/sum_hurd b/open_issues/binutils/sum_hurd
new file mode 100644
index 00000000..140b5429
--- /dev/null
+++ b/open_issues/binutils/sum_hurd
@@ -0,0 +1,1409 @@
+Test Run By thomas on Sun Sep 4 14:47:58 2011
+Native configuration is i686-unknown-gnu0.3
+
+ === binutils tests ===
+
+Schedule of variations:
+ unix
+
+Running target unix
+Running [...]/hurd/master/binutils/testsuite/binutils-all/ar.exp ...
+PASS: ar long file names
+PASS: ar symbol table
+PASS: ar thin archive
+PASS: ar thin archive with nested archive
+PASS: ar argument parsing
+PASS: ar deterministic archive
+PASS: ar deleting an element
+PASS: ar moving an element
+PASS: ar unique symbol in archive
+Running [...]/hurd/master/binutils/testsuite/binutils-all/arm/objdump.exp ...
+Running [...]/hurd/master/binutils/testsuite/binutils-all/bfin/objdump.exp ...
+Running [...]/hurd/master/binutils/testsuite/binutils-all/compress.exp ...
+PASS: objcopy (objcopy compress debug sections)
+PASS: objcopy (objcopy decompress compressed debug sections)
+PASS: objcopy decompress debug sections in archive
+PASS: objcopy compress debug sections in archive
+Running [...]/hurd/master/binutils/testsuite/binutils-all/dlltool.exp ...
+Running [...]/hurd/master/binutils/testsuite/binutils-all/elfedit.exp ...
+UNSUPPORTED: Update ELF header 1
+PASS: Update ELF header 2
+PASS: Update ELF header 3
+UNSUPPORTED: Update ELF header 1
+Running [...]/hurd/master/binutils/testsuite/binutils-all/hppa/objdump.exp ...
+Running [...]/hurd/master/binutils/testsuite/binutils-all/i386/i386.exp ...
+PASS: objcopy on compressed debug sections
+PASS: strip on uncompressed debug sections
+PASS: strip on compressed debug sections
+Running [...]/hurd/master/binutils/testsuite/binutils-all/m68k/objdump.exp ...
+Running [...]/hurd/master/binutils/testsuite/binutils-all/nm.exp ...
+PASS: nm (no arguments)
+PASS: nm -g
+PASS: nm -g on unique symbols
+PASS: nm -P
+Running [...]/hurd/master/binutils/testsuite/binutils-all/objcopy.exp ...
+PASS: objcopy (simple copy)
+PASS: objcopy --reverse-bytes
+PASS: objcopy -i --interleave-width
+PASS: objcopy -O srec
+PASS: objcopy --set-start
+PASS: objcopy --adjust-start
+PASS: objcopy --adjust-vma
+PASS: objcopy --adjust-section-vma +
+PASS: objcopy --adjust-section-vma =
+PASS: strip preserving OS/ABI
+PASS: strip
+PASS: strip with saving a symbol
+PASS: simple objcopy of executable
+PASS: run objcopy of executable
+PASS: run stripped executable preserving OS/ABI
+PASS: run stripped executable
+PASS: run stripped executable with saving a symbol
+PASS: keep only debug data
+PASS: simple objcopy of debug data
+PASS: objcopy (ELF unknown section type)
+PASS: objcopy (ELF group)
+PASS: objcopy (ELF group)
+PASS: objcopy (ELF group)
+PASS: objcopy (ELF group)
+PASS: copy removing group member
+PASS: copy with setting section flags 1
+PASS: add notes section
+PASS: copy with setting section flags 2
+PASS: copy with setting section flags 3
+PASS: strip --strip-unneeded on common symbol
+PASS: strip with section group 1
+PASS: strip with section group 2
+PASS: strip empty file
+PASS: strip with section group 4
+PASS: strip with section group 5
+PASS: strip with section group 6
+PASS: strip with section group 7
+PASS: strip with section group 8
+PASS: strip with section group 9
+PASS: strip on STB_GNU_UNIQUE
+PASS: objcopy keeps symbols needed by relocs
+PASS: --localize-hidden test 1
+PASS: unordered .debug_info references to .debug_ranges
+UNSUPPORTED: unordered .debug_info references to .debug_ranges
+PASS: objcopy add-section
+PASS: objcopy add-empty-section
+PASS: objcopy on sections with SHF_EXCLUDE
+PASS: strip --strip-unneeded on sections with SHF_EXCLUDE
+PASS: --localize-hidden test 2
+Running [...]/hurd/master/binutils/testsuite/binutils-all/objdump.exp ...
+PASS: objdump -i
+PASS: objdump -f
+PASS: objdump -h
+PASS: objdump -t
+PASS: objdump -r
+PASS: objdump -s
+PASS: objdump -s -j .zdebug_abbrev
+PASS: objdump -W
+Running [...]/hurd/master/binutils/testsuite/binutils-all/readelf.exp ...
+PASS: finding out ELF size with readelf -h
+PASS: readelf -h
+PASS: readelf -S
+PASS: readelf -s
+PASS: readelf -r
+PASS: readelf -wi
+PASS: readelf -wa (compressed)
+PASS: readelf -p
+Running [...]/hurd/master/binutils/testsuite/binutils-all/size.exp ...
+PASS: size (no arguments)
+PASS: size -A
+Running [...]/hurd/master/binutils/testsuite/binutils-all/vax/objdump.exp ...
+Running [...]/hurd/master/binutils/testsuite/binutils-all/windres/windres.exp ...
+Running [...]/hurd/master/binutils/testsuite/binutils-all/x86-64/x86-64.exp ...
+
+ === binutils Summary ===
+
+# of expected passes 88
+# of unsupported tests 3
+Test Run By thomas on Sun Sep 4 14:50:18 2011
+Native configuration is i686-unknown-gnu0.3
+
+ === ld tests ===
+
+Schedule of variations:
+ unix
+
+Running target unix
+Running [...]/hurd/master/ld/testsuite/ld-alpha/alpha.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-arm/arm-elf.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-auto-import/auto-import.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-bootstrap/bootstrap.exp ...
+UNTESTED: bootstrap
+UNTESTED: bootstrap with strip
+UNTESTED: bootstrap with --static
+UNTESTED: bootstrap with --traditional-format
+UNTESTED: bootstrap with --no-keep-memory
+UNTESTED: bootstrap with --relax
+Running [...]/hurd/master/ld/testsuite/ld-cdtest/cdtest.exp ...
+PASS: cdtest
+PASS: cdtest with -Ur
+Running [...]/hurd/master/ld/testsuite/ld-checks/checks.exp ...
+PASS: check sections 1
+PASS: check sections 2
+Running [...]/hurd/master/ld/testsuite/ld-cris/cris.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-crx/crx.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-cygwin/exe-export.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-d10v/d10v.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-discard/discard.exp ...
+PASS: ld-discard/extern
+PASS: ld-discard/start
+PASS: ld-discard/static
+PASS: ld-discard/zero-range
+PASS: ld-discard/zero-rel
+Running [...]/hurd/master/ld/testsuite/ld-elf/audit.exp ...
+PASS: Run with -paudit.so
+PASS: Run with -Paudit.so
+PASS: Run with --depaudit=audit.so
+PASS: Run with shared with --audit
+PASS: Run with shared with --audit
+PASS: Run with -lusesaudit
+PASS: Run with -lusesaudit -lusesaudit2
+Running [...]/hurd/master/ld/testsuite/ld-elf/binutils.exp ...
+PASS: strip -z max-page-size=0x200000 (maxpage1)
+PASS: strip -z max-page-size=0x200000 -z common-page-size=0x100000 (maxpage1)
+PASS: strip -z max-page-size=0x100000 (maxpage1)
+PASS: strip -z max-page-size=0x100000 -z common-page-size=0x1000 (maxpage1)
+PASS: strip (maxpage1)
+PASS: strip -shared (maxpage1)
+PASS: objcopy (maxpage1)
+PASS: objcopy -shared (maxpage1)
+PASS: strip -z relro (relro1)
+PASS: strip -z relro -shared (relro1)
+PASS: objcopy -z relro (relro1)
+PASS: objcopy -z relro -shared (relro1)
+PASS: strip -z relro -shared (relro2)
+PASS: objcopy -z relro -shared (relro2)
+PASS: strip -T [...]/hurd/master/ld/testsuite/ld-elf/lma.lnk (lma)
+PASS: objcopy (tdata1)
+PASS: objcopy -z relro (tdata1)
+PASS: objcopy -shared (tdata1)
+PASS: objcopy -shared -z relro (tdata1)
+PASS: objcopy -z max-page-size=0x100000 (tdata1)
+PASS: objcopy -z max-page-size=0x100000 -z common-page-size=0x1000 (tdata1)
+PASS: objcopy (tdata2)
+PASS: objcopy -z relro (tdata2)
+PASS: objcopy -shared (tdata2)
+PASS: objcopy -shared -z relro (tdata2)
+PASS: objcopy -z max-page-size=0x100000 (tdata2)
+PASS: objcopy -z max-page-size=0x100000 -z common-page-size=0x1000 (tdata2)
+PASS: objcopy (tdata3)
+PASS: objcopy -z relro (tdata3)
+PASS: objcopy -shared (tdata3)
+PASS: objcopy -shared -z relro (tdata3)
+PASS: objcopy -z max-page-size=0x100000 (tdata3)
+PASS: objcopy -z max-page-size=0x100000 -z common-page-size=0x1000 (tdata3)
+PASS: objcopy (tbss1)
+PASS: objcopy -z relro (tbss1)
+PASS: objcopy -shared (tbss1)
+PASS: objcopy -shared -z relro (tbss1)
+PASS: objcopy -z max-page-size=0x100000 (tbss1)
+PASS: objcopy -z max-page-size=0x100000 -z common-page-size=0x1000 (tbss1)
+PASS: objcopy (tbss2)
+PASS: objcopy -z relro (tbss2)
+PASS: objcopy -shared (tbss2)
+PASS: objcopy -shared -z relro (tbss2)
+PASS: objcopy -z max-page-size=0x100000 (tbss2)
+PASS: objcopy -z max-page-size=0x100000 -z common-page-size=0x1000 (tbss2)
+PASS: objcopy (tbss3)
+PASS: objcopy -z relro (tbss3)
+PASS: objcopy -shared (tbss3)
+PASS: objcopy -shared -z relro (tbss3)
+PASS: objcopy -z max-page-size=0x100000 (tbss3)
+PASS: objcopy -z max-page-size=0x100000 -z common-page-size=0x1000 (tbss3)
+Running [...]/hurd/master/ld/testsuite/ld-elf/compress.exp ...
+PASS: Build libfoo.so with compressed debug sections
+PASS: Build libbar.so with compressed debug sections
+PASS: Run normal with libfoo.so with compressed debug sections
+Running [...]/hurd/master/ld/testsuite/ld-elf/dwarf.exp ...
+PASS: Build libdwarf1.so
+PASS: Run with libdwarf1.so first
+PASS: Run with libdwarf1.so last
+PASS: Strip -s libdwarf1c.so
+Running [...]/hurd/master/ld/testsuite/ld-elf/eh-group.exp ...
+PASS: Guess the target size from eh-group1size.o
+PASS: Build eh-group1.o
+PASS: Link eh-group.o to eh-group
+Running [...]/hurd/master/ld/testsuite/ld-elf/elf.exp ...
+PASS: Build symbol3.a
+PASS: Build symbol3w.a
+PASS: Build shared library for next test
+PASS: Link using broken linker script
+PASS: ld-elf/commonpage1
+PASS: ld-elf/compress1a
+PASS: ld-elf/compress1b
+PASS: ld-elf/compress1c
+PASS: ld-elf/discard1
+PASS: ld-elf/discard2
+PASS: ld-elf/discard3
+PASS: ld-elf/dynamic1
+PASS: ld-elf/dynsym1
+PASS: ld-elf/eh-frame-hdr
+PASS: ld-elf/eh5
+PASS: ld-elf/eh6
+PASS: ld-elf/empty
+PASS: ld-elf/empty2
+PASS: ld-elf/exclude3a
+PASS: ld-elf/exclude3b
+PASS: ld-elf/exclude3c
+PASS: ld-elf/expr1
+PASS: --extract-symbol test 1 (sections)
+PASS: --extract-symbol test 1 (symbols)
+PASS: --set-section-flags test 1 (sections)
+PASS: ld-elf/group1
+PASS: ld-elf/group10
+PASS: ld-elf/group2
+PASS: ld-elf/group3a
+PASS: ld-elf/group3b
+PASS: ld-elf/group4
+PASS: ld-elf/group5
+PASS: ld-elf/group6
+PASS: ld-elf/group7
+PASS: ld-elf/group8a
+PASS: ld-elf/group8b
+PASS: ld-elf/group9a
+PASS: ld-elf/group9b
+PASS: ld-elf/hash
+PASS: ld-elf/header
+PASS: ld-elf/init-fini-arrays
+PASS: ld-elf/linkonce1
+PASS: ld-elf/linkonce2
+PASS: ld-elf/linkoncerdiff
+PASS: ld-elf/loadaddr1
+PASS: ld-elf/loadaddr2
+PASS: ld-elf/loadaddr3a
+PASS: ld-elf/loadaddr3b
+PASS: ld-elf/local1
+PASS: ld-elf/maxpage1
+PASS: ld-elf/maxpage2
+PASS: ld-elf/maxpage3a
+PASS: ld-elf/merge
+PASS: ld-elf/merge2
+PASS: ld-elf/multibss1
+PASS: ld-elf/nobits-1
+PASS: ld-elf/noload-1
+PASS: ld-elf/noload-2
+PASS: ld-elf/noload-3
+PASS: ld-elf/note-1
+PASS: ld-elf/note-2
+PASS: ld-elf/orphan-region
+PASS: ld-elf/orphan
+PASS: ld-elf/orphan2
+PASS: ld-elf/orphan3
+PASS: ld-elf/orphan4
+PASS: ld-elf/overlay
+PASS: ld-elf/pr11304
+PASS: ld-elf/pr12851
+PASS: ld-elf/pr349
+PASS: relocatable with script
+PASS: ld-elf/seg
+PASS: ld-elf/stab
+PASS: ld-elf/textaddr1
+PASS: ld-elf/textaddr2
+PASS: ld-elf/textaddr3
+PASS: ld-elf/textaddr4
+PASS: ld-elf/textaddr5
+PASS: ld-elf/textaddr6
+PASS: ld-elf/textaddr7
+PASS: ld-elf/unknown
+PASS: ld-elf/unknown2
+PASS: ld-elf/warn1
+PASS: ld-elf/warn2
+PASS: ld-elf/warn3
+PASS: Weak symbols in dynamic objects 1 (support)
+PASS: Weak symbols in dynamic objects 1 (main test)
+PASS: --gc-sections on tls variable
+PASS: preinit array
+PASS: init array
+PASS: fini array
+PASS: init array mixed
+PASS: PIE preinit array
+PASS: PIE init array
+PASS: PIE fini array
+PASS: PIE init array mixed
+XFAIL: static preinit array
+XFAIL: static init array
+XFAIL: static fini array
+XFAIL: static init array mixed
+Running [...]/hurd/master/ld/testsuite/ld-elf/exclude.exp ...
+PASS: ld link shared library
+PASS: ld export symbols from archive
+PASS: ld link shared library with --exclude-libs
+PASS: ld exclude symbols from archive - --exclude-libs libexclude
+PASS: ld exclude symbols from archive - --exclude-libs libexclude.a
+PASS: ld exclude symbols from archive - --exclude-libs ALL
+PASS: ld exclude symbols from archive - --exclude-libs foo:libexclude.a
+PASS: ld exclude symbols from archive - --exclude-libs foo,libexclude.a
+PASS: ld don't exclude symbols from archive - --exclude-libs foo:bar
+Running [...]/hurd/master/ld/testsuite/ld-elf/frame.exp ...
+PASS: read-only .eh_frame section
+PASS: read-only .gcc_except_table section
+Running [...]/hurd/master/ld/testsuite/ld-elf/sec-to-seg.exp ...
+PASS: assignment of ELF sections to segments (same page)
+PASS: assignment of ELF sections to segments (adjacent pages)
+PASS: assignment of ELF sections to segments (disjoint pages)
+Running [...]/hurd/master/ld/testsuite/ld-elf/sec64k.exp ...
+PASS: ld-elf/64ksec-r
+PASS: ld-elf/64ksec
+Running [...]/hurd/master/ld/testsuite/ld-elf/shared.exp ...
+PASS: Build libfoo.so
+PASS: Build versioned libfoo.so
+PASS: Build libbar.so
+PASS: Build warn libbar.so
+PASS: Build hidden libbar.so
+PASS: Build protected libbar.so
+PASS: Build libbar.so with libfoo.so
+PASS: Build libar.so with versioned libfoo.so
+PASS: Build hidden libbar.so with libfoo.so
+PASS: Build hidden libar.so with versioned libfoo.so
+PASS: Build protected libbar.so with libfoo.so
+PASS: Build protected libbar.so with versioned libfoo.so
+PASS: Build libdl1.so
+PASS: Build libdl2a.so with --dynamic-list=dl2.list
+PASS: Build libdl2a.so with --dynamic-list=dl2a.list
+PASS: Build libdl2a.so with --dynamic-list-data
+PASS: Build libdl2b.so with --dynamic-list=dl2.list and dl2xxx.list
+PASS: Build libdl2c.so with --dynamic-list-data and dl2xxx.list
+PASS: Build libdl4a.so with --dynamic-list=dl4.list
+PASS: Build libdl4b.so with --dynamic-list-data
+PASS: Build libdl4c.so with --dynamic-list=dl4.list and dl4xxx.list
+PASS: Build libdl4d.so with --dynamic-list-data and dl4xxx.list
+PASS: Build libdl4e.so with -Bsymbolic-functions --dynamic-list-cpp-new
+PASS: Build libdl4f.so with --dynamic-list-cpp-new -Bsymbolic-functions
+PASS: Build libdl6a.so
+PASS: Build libdl6b.so with -Bsymbolic --dynamic-list-data
+PASS: Build libdl6c.so with -Bsymbolic
+PASS: Build libdl6d.so with --dynamic-list-data -Bsymbolic
+PASS: Build libdata1.so
+PASS: Build libcomm1.o
+PASS: Build libfunc1.so
+PASS: Build libpr9676-1.a
+PASS: Build libpr9676-2.a
+PASS: Build libpr9676-3.so
+PASS: Build libpr9676-4.so
+PASS: Build libpr9676-4a.so
+PASS: Build libpr9679.so
+PASS: Build libpr11138-1.so
+PASS: Build libpr11138-2.o
+PASS: Run normal with libfoo.so
+PASS: Run protected with libfoo.so
+PASS: Run hidden with libfoo.so
+PASS: Run normal with versioned libfoo.so
+PASS: Run warn with versioned libfoo.so
+PASS: Run protected with versioned libfoo.so
+PASS: Run hidden with versioned libfoo.so
+PASS: Run normal libbar.so with libfoo.so
+PASS: Run protected libbar.so with libfoo.so
+PASS: Run hidden libbar.so with libfoo.so
+PASS: Run normal libbar.so with versioned libfoo.so
+PASS: Run protected libbar.so with versioned libfoo.so
+PASS: Run hidden libbar.so with versioned libfoo.so
+PASS: Run dl1a with --dynamic-list=dl1.list and dlopen on libdl1.so
+PASS: Run dl1b with --dynamic-list-data and dlopen on libdl1.so
+PASS: Run with libdl2a.so
+PASS: Run with libdl2b.so
+PASS: Run with libdl2c.so
+PASS: Run with libdl4a.so
+PASS: Run with libdl4b.so
+PASS: Run with libdl4c.so
+PASS: Run with libdl4d.so
+PASS: Run with libdl4e.so
+PASS: Run with libdl4f.so
+PASS: Run dl6a1 with --dynamic-list-data and dlopen on libdl6a.so
+PASS: Run dl6a2 with -Bsymbolic-functions and dlopen on libdl6a.so
+PASS: Run dl6a3 with -Bsymbolic and dlopen on libdl6a.so
+PASS: Run dl6a4 with -Bsymbolic --dynamic-list-data and dlopen on libdl6a.so
+PASS: Run dl6a5 with -Bsymbolic-functions --dynamic-list-cpp-new and dlopen on libdl6a.so
+PASS: Run dl6a6 with --dynamic-list-cpp-new -Bsymbolic-functions and dlopen on libdl6a.so
+PASS: Run dl6a7 with --dynamic-list-data -Bsymbolic and dlopen on libdl6a.so
+PASS: Run dl6b1 with --dynamic-list-data and dlopen on libdl6b.so
+PASS: Run dl6b2 with dlopen on libdl6b.so
+PASS: Run dl6c1 with --dynamic-list-data and dlopen on libdl6c.so
+PASS: Run dl6d1 with --dynamic-list-data and dlopen on libdl6d.so
+PASS: Run with libdata1.so
+PASS: Run with libfunc1.so comm1.o
+PASS: Run with comm1.o libfunc1.so
+PASS: Run with pr11138-2.c libpr11138-1.so
+PASS: Run with libpr11138-1.so pr11138-2.c
+PASS: Build libdl3a.so with --dynamic-list=dl3.list
+PASS: Build libdl3b.so with -Bsymbolic
+PASS: Build libdl3a.so with --dynamic-list-cpp-typeinfo
+PASS: Build libdnew1a.so with --Bsymbolic-functions --dynamic-list-cpp-new
+PASS: Build libdnew1b.so with --dynamic-list-data --dynamic-list-cpp-new
+PASS: Run with libdl3a.so
+PASS: Run with libdl3c.so
+PASS: Run with libnew1a.so
+PASS: Run with libnew1b.so
+Running [...]/hurd/master/ld/testsuite/ld-elf/tls_common.exp ...
+PASS: tls_common
+Running [...]/hurd/master/ld/testsuite/ld-elf/wrap.exp ...
+PASS: Build libwrap1a.so
+PASS: Build libwrap1b.so
+PASS: Run with libwrap1a.so and libwrap1b.so
+PASS: Run with libwrap1b.so and libwrap1a.so
+Running [...]/hurd/master/ld/testsuite/ld-elfcomm/elfcomm.exp ...
+PASS: --sort-common (descending)
+PASS: --sort-common (ascending)
+PASS: size/aligment change of common symbols (warning 1)
+PASS: size/aligment change of common symbols (change 1)
+PASS: size/aligment change of common symbols (warning 2)
+PASS: size/aligment change of common symbols (change 2)
+Running [...]/hurd/master/ld/testsuite/ld-elfvers/vers.exp ...
+PASS: vers1
+PASS: vers2
+PASS: vers3
+PASS: vers4
+PASS: vers4a
+PASS: vers4b
+PASS: vers5
+PASS: vers6
+PASS: vers7a
+PASS: vers7
+PASS: vers8
+PASS: vers9
+PASS: vers10
+PASS: vers11
+PASS: vers12
+PASS: ar with versioned solib
+PASS: vers14
+PASS: vers15
+PASS: vers16a
+PASS: vers16
+PASS: vers17
+PASS: vers18
+PASS: vers19
+PASS: vers20a
+PASS: vers20
+PASS: vers21
+PASS: vers22a
+PASS: vers22b
+PASS: vers22
+PASS: vers23a
+PASS: vers23b
+PASS: vers23c
+PASS: vers23d
+PASS: vers23
+PASS: vers24a
+PASS: vers24b
+PASS: vers24c
+PASS: vers25a
+PASS: vers25b1
+PASS: vers25b2
+PASS: vers26a
+PASS: vers26b1
+PASS: vers26b2
+PASS: vers26b3
+PASS: vers27a
+PASS: vers27b
+PASS: vers27c1
+PASS: vers27c2
+PASS: vers27d1
+PASS: vers27d2
+PASS: vers27d3
+PASS: vers27d4
+PASS: vers27d5
+PASS: vers28a
+PASS: vers28b
+PASS: vers28c
+PASS: vers29
+PASS: vers30
+PASS: vers31
+PASS: vers32a
+PASS: vers32b
+Running [...]/hurd/master/ld/testsuite/ld-elfvsb/elfvsb.exp ...
+PASS: ld-elfvsb/hidden0
+PASS: ld-elfvsb/hidden1
+PASS: ld-elfvsb/hidden2
+PASS: ld-elfvsb/internal0
+PASS: ld-elfvsb/internal1
+PASS: ld-elfvsb/protected0
+PASS: ld-elfvsb/protected1
+PASS: visibility (hidden) (non PIC)
+PASS: visibility (hidden) (non PIC, load offset)
+PASS: visibility (hidden)
+PASS: visibility (hidden) (PIC main, non PIC so)
+PASS: visibility (hidden) (PIC main)
+PASS: visibility (hidden_normal) (non PIC)
+PASS: visibility (hidden_normal) (non PIC, load offset)
+PASS: visibility (hidden_normal)
+PASS: visibility (hidden_normal) (PIC main, non PIC so)
+PASS: visibility (hidden_normal) (PIC main)
+PASS: visibility (hidden_undef) (non PIC)
+PASS: visibility (hidden_undef) (non PIC, load offset)
+PASS: visibility (hidden_undef)
+PASS: visibility (hidden_undef) (PIC main, non PIC so)
+PASS: visibility (hidden_undef) (PIC main)
+PASS: visibility (hidden_undef_def) (non PIC)
+PASS: visibility (hidden_undef_def) (non PIC, load offset)
+PASS: visibility (hidden_undef_def)
+PASS: visibility (hidden_undef_def) (PIC main, non PIC so)
+PASS: visibility (hidden_undef_def) (PIC main)
+PASS: visibility (hidden_weak) (non PIC)
+PASS: visibility (hidden_weak) (non PIC, load offset)
+PASS: visibility (hidden_weak)
+PASS: visibility (hidden_weak) (PIC main, non PIC so)
+PASS: visibility (hidden_weak) (PIC main)
+PASS: visibility (protected) (non PIC)
+PASS: visibility (protected) (non PIC, load offset)
+PASS: visibility (protected)
+PASS: visibility (protected) (PIC main, non PIC so)
+PASS: visibility (protected) (PIC main)
+PASS: visibility (protected_undef) (non PIC)
+PASS: visibility (protected_undef) (non PIC, load offset)
+PASS: visibility (protected_undef)
+PASS: visibility (protected_undef) (PIC main, non PIC so)
+PASS: visibility (protected_undef) (PIC main)
+PASS: visibility (protected_undef_def) (non PIC)
+PASS: visibility (protected_undef_def) (non PIC, load offset)
+PASS: visibility (protected_undef_def)
+PASS: visibility (protected_undef_def) (PIC main, non PIC so)
+PASS: visibility (protected_undef_def) (PIC main)
+PASS: visibility (protected_weak) (non PIC)
+PASS: visibility (protected_weak) (non PIC, load offset)
+PASS: visibility (protected_weak)
+PASS: visibility (protected_weak) (PIC main, non PIC so)
+PASS: visibility (protected_weak) (PIC main)
+PASS: visibility (normal) (non PIC)
+PASS: visibility (normal) (non PIC, load offset)
+PASS: visibility (normal)
+PASS: visibility (normal) (PIC main, non PIC so)
+PASS: visibility (normal) (PIC main)
+PASS: common hidden symbol
+PASS: weak hidden symbol DSO last
+PASS: weak hidden symbol DSO first
+Running [...]/hurd/master/ld/testsuite/ld-elfweak/elfweak.exp ...
+PASS: ELF DSO weak func first
+PASS: ELF DSO weak func last
+PASS: ELF DSO weak func first DSO
+PASS: ELF DSO weak func last DSO
+PASS: ELF weak func first
+PASS: ELF weak func last
+XFAIL: ELF weak func first DSO
+XFAIL: ELF weak func last DSO
+PASS: ELF DSO weak data first
+PASS: ELF DSO weak data last
+PASS: ELF DSO weak data first DSO
+PASS: ELF DSO weak data last DSO
+PASS: ELF DSO weak data first DSO common
+PASS: ELF DSO weak data last DSO common
+PASS: ELF weak data first
+PASS: ELF weak data last
+PASS: ELF weak data first common
+PASS: ELF weak data last common
+XFAIL: ELF weak data first DSO
+XFAIL: ELF weak data last DSO
+XFAIL: ELF weak data first DSO common
+XFAIL: ELF weak data last DSO common
+PASS: ELF DSO small bar (size)
+PASS: ELF DSO foo with small bar (size)
+PASS: ELF DSO big bar (size)
+PASS: ELF weak size
+PASS: ld-elfweak/size2
+Running [...]/hurd/master/ld/testsuite/ld-fastcall/fastcall.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-frv/fdpic.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-frv/frv-elf.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-frv/tls.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-gc/gc.exp ...
+PASS: Check --gc-section
+PASS: Check --gc-section/-q
+PASS: Check --gc-section/-r/-e
+PASS: Check --gc-section/-r/-u
+PASS: --gc-sections -r without -e
+PASS: --gc-sections with note section
+PASS: --gc-sections with __start_
+PASS: --gc-sections with shared library
+Running [...]/hurd/master/ld/testsuite/ld-h8300/h8300.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-i386/i386.exp ...
+PASS: TLS -fpic -shared transitions
+PASS: TLS descriptor -fpic -shared transitions
+PASS: Helper shared library
+PASS: TLS -fpic and -fno-pic exec transitions
+PASS: TLS descriptor -fpic and -fno-pic exec transitions
+PASS: TLS -fno-pic -shared
+PASS: TLS with global dynamic and descriptors
+PASS: TLS in debug sections
+PASS: TLS @indntpoff with %eax
+PASS: Reloc section order
+PASS: Basic --emit-relocs support
+PASS: -z combreloc relocation sections
+PASS: TLS GD->LE transition
+PASS: TLS LD->LE transition
+PASS: TLS IE->LE transition
+PASS: Absolute non-overflowing relocs
+PASS: PCREL8 overflow
+PASS: PCREL16 overflow
+PASS: PCREL16 absolute reloc
+PASS: Invalid allocated section
+PASS: --warn-shared-textrel --fatal-warnings
+PASS: TLS GD->LE transition check
+PASS: TLS IE->LE transition check (R_386_TLS_GOTIE with %eax)
+PASS: TLS IE->LE transition check (R_386_TLS_GOTIE)
+PASS: TLS IE->LE transition check (R_386_TLS_IE with %eax)
+PASS: TLS IE->LE transition check (R_386_TLS_IE)
+PASS: ld-i386/hidden1
+PASS: ld-i386/hidden2
+PASS: ld-i386/hidden3
+PASS: ld-i386/protected1
+PASS: ld-i386/protected2
+PASS: ld-i386/protected3
+PASS: TLS with PIE
+PASS: TLS with PIE
+PASS: ld-i386/nogot1
+PASS: ld-i386/nogot2
+PASS: ld-i386/discarded1
+PASS: PR ld/12718
+PASS: PR ld/12921
+PASS: undefined symbol with compressed debug sections
+PASS: PR ld/12627
+Running [...]/hurd/master/ld/testsuite/ld-ia64/ia64.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-ia64/line.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-ifunc/binutils.exp ...
+PASS: strip (ifunc-4-x86)
+PASS: objcopy (ifunc-4-x86)
+PASS: strip (ifunc-4-local-x86)
+PASS: objcopy (ifunc-4-local-x86)
+Running [...]/hurd/master/ld/testsuite/ld-ifunc/ifunc.exp ...
+PASS: Building ifunc binaries
+PASS: Checking ifunc binaries
+PASS: ld-ifunc/ifunc-1-local-x86
+PASS: ld-ifunc/ifunc-1-x86
+PASS: ld-ifunc/ifunc-10-i386
+PASS: ld-ifunc/ifunc-11-i386
+PASS: ld-ifunc/ifunc-12-i386
+PASS: ld-ifunc/ifunc-13-i386
+PASS: ld-ifunc/ifunc-14-i386
+PASS: ld-ifunc/ifunc-2-i386
+PASS: ld-ifunc/ifunc-2-local-i386
+PASS: ld-ifunc/ifunc-3a-x86
+PASS: ld-ifunc/ifunc-3b-x86
+PASS: ld-ifunc/ifunc-4-local-x86
+PASS: ld-ifunc/ifunc-4-x86
+PASS: ld-ifunc/ifunc-4a-x86
+PASS: ld-ifunc/ifunc-5a-i386
+PASS: ld-ifunc/ifunc-5a-local-i386
+PASS: ld-ifunc/ifunc-5b-i386
+PASS: ld-ifunc/ifunc-5b-local-i386
+PASS: ld-ifunc/ifunc-5r-local-i386
+PASS: ld-ifunc/ifunc-6a-i386
+PASS: ld-ifunc/ifunc-6b-i386
+PASS: ld-ifunc/ifunc-7a-i386
+PASS: ld-ifunc/ifunc-7b-i386
+PASS: ld-ifunc/ifunc-8-i386
+PASS: ld-ifunc/ifunc-9-x86
+Running [...]/hurd/master/ld/testsuite/ld-libs/libs.exp ...
+PASS: -l: test (preparation)
+PASS: -l: test
+Running [...]/hurd/master/ld/testsuite/ld-linkonce/linkonce.exp ...
+PASS: ld-linkonce/zeroehl32
+Running [...]/hurd/master/ld/testsuite/ld-m68hc11/m68hc11.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-m68k/m68k-got.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-m68k/m68k.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-mep/mep.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-mips-elf/mips-elf-flags.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-mips-elf/mips-elf.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-misc/defsym.exp ...
+PASS: ld-misc/defsym1
+Running [...]/hurd/master/ld/testsuite/ld-mmix/mmix.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-mn10300/mn10300.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-pe/pe-compile.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-pe/pe-run.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-pe/pe-run2.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-pe/pe.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-pie/pie.exp ...
+PASS: weak undefined
+PASS: weak undefined data
+PASS: missing entry symbol
+Running [...]/hurd/master/ld/testsuite/ld-plugin/plugin.exp ...
+PASS: plugin API enabled
+PASS: load plugin
+PASS: fail plugin onload
+PASS: fail plugin allsymbolsread
+PASS: fail plugin cleanup
+PASS: plugin all hooks
+PASS: plugin claimfile lost symbol
+PASS: plugin claimfile replace symbol
+PASS: plugin claimfile resolve symbol
+PASS: plugin claimfile replace file
+PASS: plugin set symbol visibility
+PASS: plugin ignore lib
+PASS: plugin claimfile replace lib
+Running [...]/hurd/master/ld/testsuite/ld-powerpc/aix52.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-powerpc/powerpc.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-s390/s390.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-scripts/align.exp ...
+PASS: align1
+PASS: ld-scripts/align2a
+PASS: ld-scripts/align2b
+PASS: ld-scripts/align2c
+Running [...]/hurd/master/ld/testsuite/ld-scripts/alignof.exp ...
+PASS: ALIGNOF
+Running [...]/hurd/master/ld/testsuite/ld-scripts/assert.exp ...
+PASS: ASSERT
+PASS: ld-scripts/assert2
+Running [...]/hurd/master/ld/testsuite/ld-scripts/crossref.exp ...
+PASS: NOCROSSREFS 1
+PASS: NOCROSSREFS 2
+PASS: NOCROSSREFS 3
+Running [...]/hurd/master/ld/testsuite/ld-scripts/data.exp ...
+PASS: ld-scripts/data
+Running [...]/hurd/master/ld/testsuite/ld-scripts/default-script.exp ...
+PASS: ld-scripts/default-script1
+PASS: ld-scripts/default-script2
+PASS: ld-scripts/default-script3
+PASS: ld-scripts/default-script4
+Running [...]/hurd/master/ld/testsuite/ld-scripts/defined.exp ...
+PASS: DEFINED (PRMS 5699)
+PASS: ld-scripts/defined2
+PASS: ld-scripts/defined3
+PASS: ld-scripts/defined4
+PASS: ld-scripts/defined5
+Running [...]/hurd/master/ld/testsuite/ld-scripts/dynamic-sections.exp ...
+PASS: dynamic sections
+Running [...]/hurd/master/ld/testsuite/ld-scripts/empty-address.exp ...
+PASS: ld-scripts/empty-address-1
+PASS: ld-scripts/empty-address-2a
+PASS: ld-scripts/empty-address-2b
+PASS: ld-scripts/empty-address-3a
+PASS: ld-scripts/empty-address-3b
+PASS: ld-scripts/empty-address-3c
+Running [...]/hurd/master/ld/testsuite/ld-scripts/empty-aligned.exp ...
+PASS: ld-scripts/empty-aligned
+Running [...]/hurd/master/ld/testsuite/ld-scripts/empty-orphan.exp ...
+PASS: ld-scripts/empty-orphan
+Running [...]/hurd/master/ld/testsuite/ld-scripts/expr.exp ...
+PASS: ld-scripts/expr1
+PASS: ld-scripts/expr2
+PASS: ld-scripts/sane1
+Running [...]/hurd/master/ld/testsuite/ld-scripts/extern.exp ...
+PASS: EXTERN
+Running [...]/hurd/master/ld/testsuite/ld-scripts/include.exp ...
+PASS: include-1
+Running [...]/hurd/master/ld/testsuite/ld-scripts/map-address.exp ...
+PASS: map addresses
+Running [...]/hurd/master/ld/testsuite/ld-scripts/overlay-size.exp ...
+PASS: overlay size
+PASS: overlay size (map check)
+Running [...]/hurd/master/ld/testsuite/ld-scripts/phdrs.exp ...
+PASS: PHDRS
+Running [...]/hurd/master/ld/testsuite/ld-scripts/phdrs2.exp ...
+PASS: PHDRS2
+Running [...]/hurd/master/ld/testsuite/ld-scripts/phdrs3.exp ...
+PASS: PHDRS headers
+PASS: PHDRS headers 3a
+Running [...]/hurd/master/ld/testsuite/ld-scripts/provide.exp ...
+PASS: ld-scripts/provide-1
+PASS: ld-scripts/provide-2
+XFAIL: ld-scripts/provide-3
+Running [...]/hurd/master/ld/testsuite/ld-scripts/rgn-at.exp ...
+PASS: rgn-at1
+PASS: rgn-at2
+PASS: rgn-at3
+PASS: rgn-at4
+PASS: rgn-at5
+Running [...]/hurd/master/ld/testsuite/ld-scripts/rgn-over.exp ...
+PASS: rgn-over1
+PASS: rgn-over1 (map check)
+PASS: rgn-over2
+PASS: rgn-over2 (map check)
+PASS: rgn-over3
+PASS: rgn-over3 (map check)
+PASS: rgn-over4
+PASS: rgn-over4 (map check)
+PASS: rgn-over5
+PASS: rgn-over5 (map check)
+PASS: rgn-over6
+PASS: rgn-over6 (map check)
+PASS: rgn-over7
+PASS: rgn-over7 (map check)
+PASS: rgn-over8
+Running [...]/hurd/master/ld/testsuite/ld-scripts/script.exp ...
+PASS: script
+PASS: MRI script
+PASS: MEMORY
+XFAIL: REGION_ALIAS: region-alias-1.t
+XFAIL: REGION_ALIAS: region-alias-2.t
+XFAIL: REGION_ALIAS: region-alias-3.t
+XFAIL: REGION_ALIAS: region-alias-4.t
+Running [...]/hurd/master/ld/testsuite/ld-scripts/section-flags.exp ...
+PASS: section-flags-1
+PASS: section-flags-2
+Running [...]/hurd/master/ld/testsuite/ld-scripts/section-match.exp ...
+PASS: ld-scripts/section-match-1
+Running [...]/hurd/master/ld/testsuite/ld-scripts/size.exp ...
+PASS: ld-scripts/size-1
+PASS: ld-scripts/size-2
+Running [...]/hurd/master/ld/testsuite/ld-scripts/sizeof.exp ...
+PASS: SIZEOF
+Running [...]/hurd/master/ld/testsuite/ld-scripts/sort.exp ...
+PASS: --sort-section alignment
+PASS: SORT_BY_ALIGNMENT
+PASS: SORT_BY_ALIGNMENT(SORT_BY_ALIGNMENT())
+PASS: SORT_BY_ALIGNMENT(SORT_BY_ALIGNMENT()) --sort-section alignment
+PASS: SORT_BY_ALIGNMENT(SORT_BY_ALIGNMENT()) --sort-section name
+PASS: SORT_BY_ALIGNMENT(SORT_BY_NAME())
+PASS: SORT_BY_ALIGNMENT(SORT_BY_NAME()) --sort-section name
+PASS: SORT_BY_ALIGNMENT(SORT_BY_NAME()) --sort-section alignment
+PASS: --sort-section name
+PASS: SORT_BY_NAME
+PASS: SORT_BY_NAME(SORT_BY_ALIGNMENT())
+PASS: SORT_BY_NAME(SORT_BY_ALIGNMENT()) --sort-section alignment
+PASS: SORT_BY_NAME(SORT_BY_ALIGNMENT()) --sort-section alignment
+PASS: SORT_BY_NAME(SORT_BY_NAME())
+PASS: SORT_BY_NAME(SORT_BY_NAME()) --sort-section name
+PASS: SORT_BY_NAME(SORT_BY_NAME()) --sort-section alignment
+PASS: no SORT_BY_NAME/SORT_BY_ALIGNMENT/SORT
+PASS: no SORT_BY_NAME/SORT_BY_ALIGNMENT/SORT
+Running [...]/hurd/master/ld/testsuite/ld-scripts/weak.exp ...
+PASS: weak symbols
+Running [...]/hurd/master/ld/testsuite/ld-selective/sel-dump.exp ...
+PASS: Preserve default . = 0
+PASS: Preserve explicit . = 0
+Running [...]/hurd/master/ld/testsuite/ld-selective/selective.exp ...
+PASS: selective1
+PASS: selective2
+PASS: selective3
+XFAIL: selective4
+XFAIL: selective5
+XFAIL: selective6
+Running [...]/hurd/master/ld/testsuite/ld-sh/arch/arch.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-sh/rd-sh.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-sh/sh-vxworks.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-sh/sh.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-sh/sh64/rd-sh64.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-sh/sh64/relax.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-sh/sh64/relfail.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-sh/sh64/sh64.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-shared/shared.exp ...
+PASS: shared (non PIC)
+PASS: shared (non PIC, load offset)
+PASS: shared
+PASS: shared -Bsymbolic
+PASS: shared (PIC main, non PIC so)
+PASS: shared (PIC main)
+Running [...]/hurd/master/ld/testsuite/ld-sparc/sparc.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-spu/spu.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-srec/srec.exp ...
+PASS: S-records
+PASS: S-records with constructors
+Running [...]/hurd/master/ld/testsuite/ld-tic6x/tic6x.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-tilegx/tilegx.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-tilepro/tilepro.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-undefined/entry.exp ...
+PASS: Build libentry.a
+PASS: --entry foo archive
+PASS: --entry foo -u foo archive
+PASS: -shared --entry foo archive
+PASS: -shared --entry foo -u foo archive
+PASS: --entry foo
+PASS: --entry foo -u foo
+PASS: --entry 0x0
+Running [...]/hurd/master/ld/testsuite/ld-undefined/undefined.exp ...
+PASS: undefined
+PASS: undefined function
+PASS: undefined line
+Running [...]/hurd/master/ld/testsuite/ld-undefined/weak-undef.exp ...
+PASS: weak undefined symbols
+Running [...]/hurd/master/ld/testsuite/ld-unique/unique.exp ...
+PASS: Checking unique object
+PASS: Checking unique executable
+PASS: Checking empty unique object
+PASS: Checking unique PIC object
+PASS: Checking unique PIC object
+PASS: Checking shared empty executable
+Running [...]/hurd/master/ld/testsuite/ld-v850/v850.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-versados/versados.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-vxworks/vxworks.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-x86-64/dwarfreloc.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-x86-64/line.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-x86-64/x86-64.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-xc16x/xc16x.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-xstormy16/xstormy16.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-xtensa/coalesce.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-xtensa/lcall.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-xtensa/xtensa.exp ...
+
+ === ld Summary ===
+
+# of expected passes 652
+# of expected failures 18
+# of untested testcases 6
+[...]/hurd/master.build/ld/ld-new 2.21.53.20110904
+
+Test Run By thomas on Sun Sep 4 14:48:36 2011
+Native configuration is i686-unknown-gnu0.3
+
+ === gas tests ===
+
+Schedule of variations:
+ unix
+
+Running target unix
+Running [...]/hurd/master/gas/testsuite/gas/all/gas.exp ...
+PASS: pcrel values in assignment
+PASS: simplifiable double subtraction
+PASS: simplifiable double subtraction (-a)
+PASS: simple FP constants
+PASS: difference of two undefined symbols
+PASS: .equiv for symbol already set to another one
+PASS: .equiv for symbol already set to an expression
+PASS: .equ for symbol already set
+PASS: .equ for symbol already set through .eqv
+PASS: .eqv support
+PASS: .eqv for symbol already set
+PASS: == assignment support
+PASS: == assignment for symbol already set
+PASS: forward references
+PASS: forward expression
+PASS: .equ redefinitions
+PASS: .equ redefinitions (2)
+PASS: .equ redefinitions (3)
+PASS: .set for symbol already used as label
+PASS: .set for symbol already defined through .comm
+PASS: comment.s: comments in listings
+PASS: general info section in listings
+PASS: difference between forward references
+PASS: struct
+PASS: align
+PASS: align2
+PASS: alternate macro syntax
+PASS: alternate macro syntax (escape)
+PASS: evaluation of simple expressions
+PASS: conditional listings
+PASS: incbin
+PASS: assignment tests
+PASS: .sleb128 tests
+PASS: relax .uleb128
+PASS: bad byte directive
+PASS: .quad tests
+PASS: octa bignum
+PASS: weakref tests, relocations
+PASS: weakref tests, global syms
+PASS: weakref tests, local syms
+PASS: weakref tests, strong undefined syms
+PASS: weakref tests, weak undefined syms
+PASS: e: would close weakref loop: e => a => b => c => d => e
+PASS: a: would close weakref loop: a => b => c => d => e => a
+PASS: is already defined
+PASS: .strings tests
+PASS: gas/all/err-1.s (test for errors, line 3)
+PASS: gas/all/err-1.s (test for errors, line 4)
+PASS: gas/all/err-1.s (test for errors, line 5)
+PASS: gas/all/err-1.s (test for errors, line 6)
+PASS: gas/all/err-1.s (test for errors, line 7)
+PASS: gas/all/err-1.s (test for excess errors)
+PASS: gas/all/warn-1.s (test for warnings, line 3)
+PASS: gas/all/warn-1.s (test for errors, line 4)
+PASS: gas/all/warn-1.s (test for warnings, line 5)
+PASS: gas/all/warn-1.s (test for warnings, line 6)
+PASS: gas/all/warn-1.s (test for warnings, line 7)
+PASS: gas/all/warn-1.s (test for excess errors)
+Running [...]/hurd/master/gas/testsuite/gas/alpha/alpha.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/arc/arc.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/arc/warn.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/arm/arm.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/bfin/bfin.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/bfin/error.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/cfi/cfi.exp ...
+PASS: CFI on i386
+PASS: cfi cfi-diag-1
+PASS: CFI common 1
+PASS: CFI common 2
+PASS: CFI common 3
+PASS: CFI common 4
+PASS: CFI common 5
+PASS: CFI common 6
+PASS: CFI common 7
+Running [...]/hurd/master/gas/testsuite/gas/cr16/cr16.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/cr16/pic.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/cris/cris.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/crx/allinsn.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/d10v/d10v.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/d30v/d30.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/dlx/alltests.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/elf/elf.exp ...
+PASS: elf ehopt0
+PASS: .file file names
+PASS: group section
+PASS: group section
+PASS: group section name
+PASS: group section with multiple sections of same name
+PASS: group section with multiple sections of same name
+PASS: automatic section group a
+PASS: automatic section group b
+PASS: .equ redefinitions (ELF)
+PASS: elf equate relocs
+PASS: Ill-formed directives
+PASS: elf section0
+PASS: elf section1
+PASS: elf section2 list
+PASS: note section
+PASS: label arithmetic with multiple same-name sections
+PASS: elf section5 list
+PASS: ELF struct
+PASS: .set with expression
+PASS: ELF symbol versioning
+PASS: .set with IFUNC
+PASS: elf type list
+PASS: elf section6
+PASS: elf section7
+PASS: section flags
+PASS: section flags
+PASS: DWARF2 1
+PASS: DWARF2 2
+PASS: DWARF2 3
+PASS: DWARF2 4
+PASS: Check bad section flag
+PASS: Check bad size directive
+PASS: Check bad group
+PASS: gas/elf/warn-2.s (test for warnings, line )
+PASS: gas/elf/warn-2.s (test for excess errors)
+Running [...]/hurd/master/gas/testsuite/gas/fr30/allinsn.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/fr30/fr30.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/frv/allinsn.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/h8300-coff.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/h8300-elf.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/h8300.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t01_mov.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t02_mova.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t03_add.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t04_sub.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t05_cmp.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t06_ari2.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t07_ari3.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t08_or.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t09_xor.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t10_and.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t11_logs.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t12_bit.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t13_otr.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/hppa/basic/basic.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/hppa/parse/parse.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/hppa/reloc/reloc.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/hppa/unsorted/unsorted.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/i386/i386.exp ...
+PASS: i386 float
+PASS: i386 general
+PASS: i386 inval
+PASS: i386 segment
+PASS: i386 inval-seg
+PASS: i386 inval-reg
+PASS: i386 modrm
+PASS: i386 naked reg
+PASS: i386 opcodes
+PASS: i386 opcodes (Intel disassembly)
+PASS: i386 opcodes (w/ suffix)
+PASS: i386 intel
+PASS: i386 intel16
+PASS: i386 intelbad
+PASS: i386 intel-ok
+PASS: i386 prefix
+PASS: i386 amd
+PASS: i386 katmai
+PASS: i386 jump
+PASS: i386 relax 1
+PASS: i386 relax 2
+PASS: i386 ssemmx2
+PASS: i386 sse2
+PASS: i386 sub
+PASS: i386 SSE3
+PASS: i386 SIB
+PASS: i386 SIB (Intel mode)
+PASS: i386 displacement
+PASS: i386 displacement (Intel mode)
+PASS: i386 32bit displacement
+PASS: i386 VMX
+PASS: i386 SMX
+PASS: i386 suffix
+PASS: i386 immed
+PASS: i386 equates
+PASS: i386 divide
+PASS: i386 padlock
+PASS: i386 cr8+
+PASS: i386 cr-err
+PASS: 32-bit SVME
+PASS: i386 amdfam10
+PASS: i386 SSSE3
+PASS: i386 rep prefix
+PASS: i386 rep prefix (with suffixes)
+PASS: i386 lockable insns
+PASS: i386 lockable insns (Intel disassembly)
+PASS: i386 lockbad-1
+PASS: i386 long insns
+PASS: i386 long insns (Intel disassembly)
+PASS: i386 fp
+PASS: i386 nops
+PASS: i386 nops 16bit 1
+PASS: i386 nops 1
+PASS: i386 -mtune=i386 nops 1
+PASS: i386 nops -march=i386 -mtune=i686 1
+PASS: i386 -mtune=i686 nops 1
+PASS: i386 -mtune=k8 nops 1
+PASS: i386 -mtune=core2 nops 1
+PASS: i386 -mtune=bdver1 nops 1
+PASS: i386 -mtune=bdver2 nops 1
+PASS: i386 nops 2
+PASS: i386 nops -mtune=i386 2
+PASS: i386 -march=i386 -mtune=core2 nops 2
+PASS: i386 nops 3
+PASS: i386 nops -mtune=i386 3
+PASS: i386 -mtune=i686 nops 3
+PASS: i386 nops 4
+PASS: i386 nops -mtune=i386 4
+PASS: i386 -mtune=i686 nops 4
+PASS: i386 -march=i686+nop nops 4a
+PASS: i386 nops 5
+PASS: i386 -march=i686 nops 5
+PASS: i386 nops 6
+PASS: i386 16-bit addressing in 32-bit mode.
+PASS: i386 32-bit addressing in 16-bit mode.
+PASS: i386 SSE4.1
+PASS: i386 SSE4.1 (Intel disassembly)
+PASS: i386 SSE4.2
+PASS: i386 SSE4.2 (Intel disassembly)
+PASS: i386 crc32
+PASS: i386 crc32 (Intel disassembly)
+PASS: i386 inval-crc32
+PASS: i386 SIMD
+PASS: i386 SIMD (Intel mode)
+PASS: i386 SIMD (with suffixes)
+PASS: i386 mem
+PASS: i386 mem (Intel mode)
+PASS: i386 reg
+PASS: i386 reg (Intel mode)
+PASS: i386
+PASS: i386 float AT&T mnemonic
+PASS: i386 float Intel mnemonic
+PASS: i386 arch 1
+PASS: i386 arch 2
+PASS: i386 arch 3
+PASS: i386 arch 4
+PASS: i386 arch 5
+PASS: i386 arch 6
+PASS: i386 arch 7
+PASS: i386 arch 9
+PASS: i386 arch 10
+PASS: i386 arch 10 (lzcnt)
+PASS: i386 arch-10-1
+PASS: i386 arch-10-2
+PASS: i386 arch-10-3
+PASS: i386 arch-10-4
+PASS: i386 arch 11
+PASS: i386 arch 12
+PASS: i386 8087
+PASS: i386 287
+PASS: i386 387 (cmdline)
+PASS: i386 no87
+PASS: i386 no87-2
+PASS: i386 xsave
+PASS: i386 xsave (Intel mode)
+PASS: i386 AES
+PASS: i386 AES (Intel mode)
+PASS: i386 PCLMUL
+PASS: i386 PCLMUL (Intel mode)
+PASS: i386 AVX
+PASS: i386 AVX (Intel disassembly)
+PASS: i386 AVX scalar insns
+PASS: i386 AVX scalar insns (Intel disassembly)
+PASS: i386 256bit integer AVX insns
+PASS: i386 256bit integer AVX insns (Intel disassembly)
+PASS: i386 AVX2 insns
+PASS: i386 AVX2 insns (Intel disassembly)
+PASS: i386 AVX GATHER insns
+PASS: i386 AVX GATHER insns (Intel disassembly)
+PASS: i386 SSE with AVX encoding
+PASS: i386 inval-avx
+PASS: i386 SSE check (none)
+PASS: i386 SSE check (.sse_check none)
+PASS: i386 SSE check (warning)
+PASS: i386 sse-check-error
+PASS: i386 SSE without AVX equivalent
+PASS: i386 movbe
+PASS: i386 movbe (Intel disassembly)
+PASS: i386 inval-movbe
+PASS: i386 EPT
+PASS: i386 EPT (Intel disassembly)
+PASS: i386 inval-ept
+PASS: i386 INVPCID insns
+PASS: i386 INVPCID insns (Intel disassembly)
+PASS: i386 inval-invpcid
+PASS: i386 arch avx 1
+PASS: i386 arch-avx-1-1
+PASS: i386 arch-avx-1-2
+PASS: i386 arch-avx-1-3
+PASS: i386 arch-avx-1-4
+PASS: i386 arch-avx-1-5
+PASS: i386 arch-avx-1-6
+PASS: encoding option
+PASS: encoding option (Intel mode)
+PASS: encoding option with -msse2avx
+PASS: encoding option with -msse2avx (Intel mode)
+PASS: i386 BMI2 insns
+PASS: i386 BMI2 insns (Intel disassembly)
+PASS: i386 FMA
+PASS: i386 FMA (Intel disassembly)
+PASS: i386 FMA scalar insns
+PASS: i386 FMA scalar insns (Intel disassembly)
+PASS: i386 FMA4
+PASS: i386 LWP
+PASS: i386 XOP
+PASS: i386 BMI insns
+PASS: i386 BMI insns (Intel disassembly)
+PASS: i386 TBM
+PASS: i386 TBM insns (Intel disassembly)
+PASS: i386 F16C
+PASS: i386 F16C (Intel disassembly)
+PASS: i386 FSGSBase
+PASS: i386 FSGSBase (Intel disassembly)
+PASS: i386 RdRnd
+PASS: i386 RdRnd (Intel disassembly)
+PASS: i386 reloc
+PASS: i386 jump16
+PASS: i386 white
+PASS: i386 pcrel reloc
+PASS: i386 abs reloc
+PASS: i386 intelpic
+PASS: i386 relax
+PASS: i386 gotpc
+PASS: i386 dynamic tls
+PASS: i386 pic tls
+PASS: i386 non-pic tls
+PASS: i386 .bss
+PASS: i386 relocs
+PASS: i386 reloc32
+PASS: x86 mixed mode relocs (32-bit object)
+PASS: i386 AT&T register names
+PASS: i386 intel-got
+PASS: i386 Intel register names
+PASS: i386 inval-equ-1
+PASS: i386 inval-equ-2
+PASS: i386 ifunc
+PASS: i386 ifunc-2
+PASS: i386 ifunc 3
+PASS: i386 l1om-inval
+PASS: i386 k1om-inval
+PASS: i386 local PIC
+PASS: DWARF2 debugging information 1
+PASS: DWARF2 debugging information 2
+PASS: Check bad size directive
+PASS: i386 jump
+PASS: x86 Intel expressions
+PASS: string insn operands
+PASS: i386 string-bad
+PASS: i386 space1
+PASS: i386 list-1
+PASS: i386 list-2
+PASS: i386 list-3
+PASS: DWARF2 debugging information 1
+Running [...]/hurd/master/gas/testsuite/gas/i386/ilp32/cfi/ilp32.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/i386/ilp32/elf/ilp32.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/i386/ilp32/ilp32.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/i386/ilp32/lns/ilp32.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/i860/i860.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/ia64/ia64.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/ieee-fp/x930509a.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/iq2000/allinsn.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/iq2000/load-hazards.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/iq2000/odd-ldw.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/iq2000/odd-sdw.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/iq2000/yield.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/lm32/all.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/lns/lns.exp ...
+PASS: lns lns-diag-1
+PASS: lns-duplicate
+PASS: lns-common-1
+Running [...]/hurd/master/gas/testsuite/gas/m32r/allinsn.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/m32r/error.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/m32r/m32r.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/m32r/m32r2.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/m32r/m32rx.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/m32r/pic.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/m32r/rel32.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/m68hc11/m68hc11.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/m68k-coff/gas.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/m68k/all.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/macros/macros.exp ...
+PASS: macro test 1
+PASS: macro test 2
+PASS: macro test 3
+PASS: macro irp
+PASS: macro rept
+PASS: nested irp/irpc/rept
+PASS: macro vararg
+PASS: macro infinite recursion
+PASS: logical and in macro definition
+PASS: semi
+PASS: strings
+PASS: APP with macro without NO_APP
+PASS: APP with macro then NO_APP
+PASS: APP with macro then NO_APP then more code
+PASS: included file with .if 0 wrapped in APP/NO_APP, no final NO_APP, macro in main file
+PASS: macros badarg
+PASS: macros dot
+PASS: macros end
+PASS: macros purge
+PASS: macros redef
+PASS: gas/macros/paren
+PASS: .exitm outside of a macro
+Running [...]/hurd/master/gas/testsuite/gas/mcore/allinsn.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/mep/allinsn.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/mep/complex-relocs.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/mips/mips.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/mmix/mmix-err.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/mmix/mmix-list.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/mmix/mmix.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/mn10200/basic.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/mn10300/basic.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/mri/mri.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/msp430/msp430.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/mt/errors.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/mt/mt.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/mt/relocs.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/openrisc/allinsn.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/pdp11/pdp11.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/pe/pe.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/pj/pj.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/ppc/aix.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/ppc/ppc.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/rx/rx.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/s390/s390.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/score/relax.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/score/relax_32.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/sh/arch/arch.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/sh/basic.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/sh/err.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/sh/sh64/err.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/sh/sh64/sh64.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/sparc-solaris/addend.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/sparc-solaris/gas.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/sparc/mismatch.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/sparc/sparc.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/sun4/addend.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/symver/symver.exp ...
+PASS: symver symver0
+PASS: symver symver1
+PASS: symver symver2
+PASS: symver symver3
+PASS: symver symver6
+Running [...]/hurd/master/gas/testsuite/gas/tic4x/tic4x.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/tic54x/tic54x.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/tic6x/tic6x.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/tilegx/tilegx.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/tilepro/tilepro.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/v850/basic.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/vax/vax.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/xc16x/xc16x.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/xstormy16/allinsn.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/xtensa/all.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/xtensa/xtensa-err.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/z80/z80.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/z8k/z8k.exp ...
+
+ === gas Summary ===
+
+# of expected passes 346
+../as-new 2.21.53.20110904
+
diff --git a/open_issues/binutils/sum_linux b/open_issues/binutils/sum_linux
new file mode 100644
index 00000000..4957a1e9
--- /dev/null
+++ b/open_issues/binutils/sum_linux
@@ -0,0 +1,1409 @@
+Test Run By thomas on Sun Sep 4 14:45:17 2011
+Native configuration is i686-pc-linux-gnu
+
+ === binutils tests ===
+
+Schedule of variations:
+ unix
+
+Running target unix
+Running [...]/hurd/master/binutils/testsuite/binutils-all/ar.exp ...
+PASS: ar long file names
+PASS: ar symbol table
+PASS: ar thin archive
+PASS: ar thin archive with nested archive
+PASS: ar argument parsing
+PASS: ar deterministic archive
+PASS: ar deleting an element
+PASS: ar moving an element
+PASS: ar unique symbol in archive
+Running [...]/hurd/master/binutils/testsuite/binutils-all/arm/objdump.exp ...
+Running [...]/hurd/master/binutils/testsuite/binutils-all/bfin/objdump.exp ...
+Running [...]/hurd/master/binutils/testsuite/binutils-all/compress.exp ...
+PASS: objcopy (objcopy compress debug sections)
+PASS: objcopy (objcopy decompress compressed debug sections)
+PASS: objcopy decompress debug sections in archive
+PASS: objcopy compress debug sections in archive
+Running [...]/hurd/master/binutils/testsuite/binutils-all/dlltool.exp ...
+Running [...]/hurd/master/binutils/testsuite/binutils-all/elfedit.exp ...
+UNSUPPORTED: Update ELF header 1
+PASS: Update ELF header 2
+PASS: Update ELF header 3
+UNSUPPORTED: Update ELF header 1
+Running [...]/hurd/master/binutils/testsuite/binutils-all/hppa/objdump.exp ...
+Running [...]/hurd/master/binutils/testsuite/binutils-all/i386/i386.exp ...
+PASS: objcopy on compressed debug sections
+PASS: strip on uncompressed debug sections
+PASS: strip on compressed debug sections
+Running [...]/hurd/master/binutils/testsuite/binutils-all/m68k/objdump.exp ...
+Running [...]/hurd/master/binutils/testsuite/binutils-all/nm.exp ...
+PASS: nm (no arguments)
+PASS: nm -g
+PASS: nm -g on unique symbols
+PASS: nm -P
+Running [...]/hurd/master/binutils/testsuite/binutils-all/objcopy.exp ...
+PASS: objcopy (simple copy)
+PASS: objcopy --reverse-bytes
+PASS: objcopy -i --interleave-width
+PASS: objcopy -O srec
+PASS: objcopy --set-start
+PASS: objcopy --adjust-start
+PASS: objcopy --adjust-vma
+PASS: objcopy --adjust-section-vma +
+PASS: objcopy --adjust-section-vma =
+PASS: strip preserving OS/ABI
+PASS: strip
+PASS: strip with saving a symbol
+PASS: simple objcopy of executable
+PASS: run objcopy of executable
+PASS: run stripped executable preserving OS/ABI
+PASS: run stripped executable
+PASS: run stripped executable with saving a symbol
+PASS: keep only debug data
+PASS: simple objcopy of debug data
+PASS: objcopy (ELF unknown section type)
+PASS: objcopy (ELF group)
+PASS: objcopy (ELF group)
+PASS: objcopy (ELF group)
+PASS: objcopy (ELF group)
+PASS: copy removing group member
+PASS: copy with setting section flags 1
+PASS: add notes section
+PASS: copy with setting section flags 2
+PASS: copy with setting section flags 3
+PASS: strip --strip-unneeded on common symbol
+PASS: strip with section group 1
+PASS: strip with section group 2
+PASS: strip empty file
+PASS: strip with section group 4
+PASS: strip with section group 5
+PASS: strip with section group 6
+PASS: strip with section group 7
+PASS: strip with section group 8
+PASS: strip with section group 9
+PASS: strip on STB_GNU_UNIQUE
+PASS: objcopy keeps symbols needed by relocs
+PASS: --localize-hidden test 1
+PASS: unordered .debug_info references to .debug_ranges
+UNSUPPORTED: unordered .debug_info references to .debug_ranges
+PASS: objcopy add-section
+PASS: objcopy add-empty-section
+PASS: objcopy on sections with SHF_EXCLUDE
+PASS: strip --strip-unneeded on sections with SHF_EXCLUDE
+PASS: --localize-hidden test 2
+Running [...]/hurd/master/binutils/testsuite/binutils-all/objdump.exp ...
+PASS: objdump -i
+PASS: objdump -f
+PASS: objdump -h
+PASS: objdump -t
+PASS: objdump -r
+PASS: objdump -s
+PASS: objdump -s -j .zdebug_abbrev
+PASS: objdump -W
+Running [...]/hurd/master/binutils/testsuite/binutils-all/readelf.exp ...
+PASS: finding out ELF size with readelf -h
+PASS: readelf -h
+PASS: readelf -S
+PASS: readelf -s
+PASS: readelf -r
+PASS: readelf -wi
+PASS: readelf -wa (compressed)
+PASS: readelf -p
+Running [...]/hurd/master/binutils/testsuite/binutils-all/size.exp ...
+PASS: size (no arguments)
+PASS: size -A
+Running [...]/hurd/master/binutils/testsuite/binutils-all/vax/objdump.exp ...
+Running [...]/hurd/master/binutils/testsuite/binutils-all/windres/windres.exp ...
+Running [...]/hurd/master/binutils/testsuite/binutils-all/x86-64/x86-64.exp ...
+
+ === binutils Summary ===
+
+# of expected passes 88
+# of unsupported tests 3
+Test Run By thomas on Sun Sep 4 14:45:54 2011
+Native configuration is i686-pc-linux-gnu
+
+ === ld tests ===
+
+Schedule of variations:
+ unix
+
+Running target unix
+Running [...]/hurd/master/ld/testsuite/ld-alpha/alpha.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-arm/arm-elf.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-auto-import/auto-import.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-bootstrap/bootstrap.exp ...
+UNTESTED: bootstrap
+UNTESTED: bootstrap with strip
+UNTESTED: bootstrap with --static
+UNTESTED: bootstrap with --traditional-format
+UNTESTED: bootstrap with --no-keep-memory
+UNTESTED: bootstrap with --relax
+Running [...]/hurd/master/ld/testsuite/ld-cdtest/cdtest.exp ...
+PASS: cdtest
+PASS: cdtest with -Ur
+Running [...]/hurd/master/ld/testsuite/ld-checks/checks.exp ...
+PASS: check sections 1
+PASS: check sections 2
+Running [...]/hurd/master/ld/testsuite/ld-cris/cris.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-crx/crx.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-cygwin/exe-export.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-d10v/d10v.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-discard/discard.exp ...
+PASS: ld-discard/extern
+PASS: ld-discard/start
+PASS: ld-discard/static
+PASS: ld-discard/zero-range
+PASS: ld-discard/zero-rel
+Running [...]/hurd/master/ld/testsuite/ld-elf/audit.exp ...
+PASS: Run with -paudit.so
+PASS: Run with -Paudit.so
+PASS: Run with --depaudit=audit.so
+PASS: Run with shared with --audit
+PASS: Run with shared with --audit
+PASS: Run with -lusesaudit
+PASS: Run with -lusesaudit -lusesaudit2
+Running [...]/hurd/master/ld/testsuite/ld-elf/binutils.exp ...
+PASS: strip -z max-page-size=0x200000 (maxpage1)
+PASS: strip -z max-page-size=0x200000 -z common-page-size=0x100000 (maxpage1)
+PASS: strip -z max-page-size=0x100000 (maxpage1)
+PASS: strip -z max-page-size=0x100000 -z common-page-size=0x1000 (maxpage1)
+PASS: strip (maxpage1)
+PASS: strip -shared (maxpage1)
+PASS: objcopy (maxpage1)
+PASS: objcopy -shared (maxpage1)
+PASS: strip -z relro (relro1)
+PASS: strip -z relro -shared (relro1)
+PASS: objcopy -z relro (relro1)
+PASS: objcopy -z relro -shared (relro1)
+PASS: strip -z relro -shared (relro2)
+PASS: objcopy -z relro -shared (relro2)
+PASS: strip -T [...]/hurd/master/ld/testsuite/ld-elf/lma.lnk (lma)
+PASS: objcopy (tdata1)
+PASS: objcopy -z relro (tdata1)
+PASS: objcopy -shared (tdata1)
+PASS: objcopy -shared -z relro (tdata1)
+PASS: objcopy -z max-page-size=0x100000 (tdata1)
+PASS: objcopy -z max-page-size=0x100000 -z common-page-size=0x1000 (tdata1)
+PASS: objcopy (tdata2)
+PASS: objcopy -z relro (tdata2)
+PASS: objcopy -shared (tdata2)
+PASS: objcopy -shared -z relro (tdata2)
+PASS: objcopy -z max-page-size=0x100000 (tdata2)
+PASS: objcopy -z max-page-size=0x100000 -z common-page-size=0x1000 (tdata2)
+PASS: objcopy (tdata3)
+PASS: objcopy -z relro (tdata3)
+PASS: objcopy -shared (tdata3)
+PASS: objcopy -shared -z relro (tdata3)
+PASS: objcopy -z max-page-size=0x100000 (tdata3)
+PASS: objcopy -z max-page-size=0x100000 -z common-page-size=0x1000 (tdata3)
+PASS: objcopy (tbss1)
+PASS: objcopy -z relro (tbss1)
+PASS: objcopy -shared (tbss1)
+PASS: objcopy -shared -z relro (tbss1)
+PASS: objcopy -z max-page-size=0x100000 (tbss1)
+PASS: objcopy -z max-page-size=0x100000 -z common-page-size=0x1000 (tbss1)
+PASS: objcopy (tbss2)
+PASS: objcopy -z relro (tbss2)
+PASS: objcopy -shared (tbss2)
+PASS: objcopy -shared -z relro (tbss2)
+PASS: objcopy -z max-page-size=0x100000 (tbss2)
+PASS: objcopy -z max-page-size=0x100000 -z common-page-size=0x1000 (tbss2)
+PASS: objcopy (tbss3)
+PASS: objcopy -z relro (tbss3)
+PASS: objcopy -shared (tbss3)
+PASS: objcopy -shared -z relro (tbss3)
+PASS: objcopy -z max-page-size=0x100000 (tbss3)
+PASS: objcopy -z max-page-size=0x100000 -z common-page-size=0x1000 (tbss3)
+Running [...]/hurd/master/ld/testsuite/ld-elf/compress.exp ...
+PASS: Build libfoo.so with compressed debug sections
+PASS: Build libbar.so with compressed debug sections
+PASS: Run normal with libfoo.so with compressed debug sections
+Running [...]/hurd/master/ld/testsuite/ld-elf/dwarf.exp ...
+PASS: Build libdwarf1.so
+PASS: Run with libdwarf1.so first
+PASS: Run with libdwarf1.so last
+PASS: Strip -s libdwarf1c.so
+Running [...]/hurd/master/ld/testsuite/ld-elf/eh-group.exp ...
+PASS: Guess the target size from eh-group1size.o
+PASS: Build eh-group1.o
+PASS: Link eh-group.o to eh-group
+Running [...]/hurd/master/ld/testsuite/ld-elf/elf.exp ...
+PASS: Build symbol3.a
+PASS: Build symbol3w.a
+PASS: Build shared library for next test
+PASS: Link using broken linker script
+PASS: ld-elf/commonpage1
+PASS: ld-elf/compress1a
+PASS: ld-elf/compress1b
+PASS: ld-elf/compress1c
+PASS: ld-elf/discard1
+PASS: ld-elf/discard2
+PASS: ld-elf/discard3
+PASS: ld-elf/dynamic1
+PASS: ld-elf/dynsym1
+PASS: ld-elf/eh-frame-hdr
+PASS: ld-elf/eh5
+PASS: ld-elf/eh6
+PASS: ld-elf/empty
+PASS: ld-elf/empty2
+PASS: ld-elf/exclude3a
+PASS: ld-elf/exclude3b
+PASS: ld-elf/exclude3c
+PASS: ld-elf/expr1
+PASS: --extract-symbol test 1 (sections)
+PASS: --extract-symbol test 1 (symbols)
+PASS: --set-section-flags test 1 (sections)
+PASS: ld-elf/group1
+PASS: ld-elf/group10
+PASS: ld-elf/group2
+PASS: ld-elf/group3a
+PASS: ld-elf/group3b
+PASS: ld-elf/group4
+PASS: ld-elf/group5
+PASS: ld-elf/group6
+PASS: ld-elf/group7
+PASS: ld-elf/group8a
+PASS: ld-elf/group8b
+PASS: ld-elf/group9a
+PASS: ld-elf/group9b
+PASS: ld-elf/hash
+PASS: ld-elf/header
+PASS: ld-elf/init-fini-arrays
+PASS: ld-elf/linkonce1
+PASS: ld-elf/linkonce2
+PASS: ld-elf/linkoncerdiff
+PASS: ld-elf/loadaddr1
+PASS: ld-elf/loadaddr2
+PASS: ld-elf/loadaddr3a
+PASS: ld-elf/loadaddr3b
+PASS: ld-elf/local1
+PASS: ld-elf/maxpage1
+PASS: ld-elf/maxpage2
+PASS: ld-elf/maxpage3a
+PASS: ld-elf/merge
+PASS: ld-elf/merge2
+PASS: ld-elf/multibss1
+PASS: ld-elf/nobits-1
+PASS: ld-elf/noload-1
+PASS: ld-elf/noload-2
+PASS: ld-elf/noload-3
+PASS: ld-elf/note-1
+PASS: ld-elf/note-2
+PASS: ld-elf/orphan-region
+PASS: ld-elf/orphan
+PASS: ld-elf/orphan2
+PASS: ld-elf/orphan3
+PASS: ld-elf/orphan4
+PASS: ld-elf/overlay
+PASS: ld-elf/pr11304
+PASS: ld-elf/pr12851
+PASS: ld-elf/pr349
+PASS: relocatable with script
+PASS: ld-elf/seg
+PASS: ld-elf/stab
+PASS: ld-elf/textaddr1
+PASS: ld-elf/textaddr2
+PASS: ld-elf/textaddr3
+PASS: ld-elf/textaddr4
+PASS: ld-elf/textaddr5
+PASS: ld-elf/textaddr6
+PASS: ld-elf/textaddr7
+PASS: ld-elf/unknown
+PASS: ld-elf/unknown2
+PASS: ld-elf/warn1
+PASS: ld-elf/warn2
+PASS: ld-elf/warn3
+PASS: Weak symbols in dynamic objects 1 (support)
+PASS: Weak symbols in dynamic objects 1 (main test)
+PASS: --gc-sections on tls variable
+PASS: preinit array
+PASS: init array
+PASS: fini array
+PASS: init array mixed
+PASS: PIE preinit array
+PASS: PIE init array
+PASS: PIE fini array
+PASS: PIE init array mixed
+PASS: static preinit array
+PASS: static init array
+PASS: static fini array
+PASS: static init array mixed
+Running [...]/hurd/master/ld/testsuite/ld-elf/exclude.exp ...
+PASS: ld link shared library
+PASS: ld export symbols from archive
+PASS: ld link shared library with --exclude-libs
+PASS: ld exclude symbols from archive - --exclude-libs libexclude
+PASS: ld exclude symbols from archive - --exclude-libs libexclude.a
+PASS: ld exclude symbols from archive - --exclude-libs ALL
+PASS: ld exclude symbols from archive - --exclude-libs foo:libexclude.a
+PASS: ld exclude symbols from archive - --exclude-libs foo,libexclude.a
+PASS: ld don't exclude symbols from archive - --exclude-libs foo:bar
+Running [...]/hurd/master/ld/testsuite/ld-elf/frame.exp ...
+PASS: read-only .eh_frame section
+PASS: read-only .gcc_except_table section
+Running [...]/hurd/master/ld/testsuite/ld-elf/sec-to-seg.exp ...
+PASS: assignment of ELF sections to segments (same page)
+PASS: assignment of ELF sections to segments (adjacent pages)
+PASS: assignment of ELF sections to segments (disjoint pages)
+Running [...]/hurd/master/ld/testsuite/ld-elf/sec64k.exp ...
+PASS: ld-elf/64ksec-r
+PASS: ld-elf/64ksec
+Running [...]/hurd/master/ld/testsuite/ld-elf/shared.exp ...
+PASS: Build libfoo.so
+PASS: Build versioned libfoo.so
+PASS: Build libbar.so
+PASS: Build warn libbar.so
+PASS: Build hidden libbar.so
+PASS: Build protected libbar.so
+PASS: Build libbar.so with libfoo.so
+PASS: Build libar.so with versioned libfoo.so
+PASS: Build hidden libbar.so with libfoo.so
+PASS: Build hidden libar.so with versioned libfoo.so
+PASS: Build protected libbar.so with libfoo.so
+PASS: Build protected libbar.so with versioned libfoo.so
+PASS: Build libdl1.so
+PASS: Build libdl2a.so with --dynamic-list=dl2.list
+PASS: Build libdl2a.so with --dynamic-list=dl2a.list
+PASS: Build libdl2a.so with --dynamic-list-data
+PASS: Build libdl2b.so with --dynamic-list=dl2.list and dl2xxx.list
+PASS: Build libdl2c.so with --dynamic-list-data and dl2xxx.list
+PASS: Build libdl4a.so with --dynamic-list=dl4.list
+PASS: Build libdl4b.so with --dynamic-list-data
+PASS: Build libdl4c.so with --dynamic-list=dl4.list and dl4xxx.list
+PASS: Build libdl4d.so with --dynamic-list-data and dl4xxx.list
+PASS: Build libdl4e.so with -Bsymbolic-functions --dynamic-list-cpp-new
+PASS: Build libdl4f.so with --dynamic-list-cpp-new -Bsymbolic-functions
+PASS: Build libdl6a.so
+PASS: Build libdl6b.so with -Bsymbolic --dynamic-list-data
+PASS: Build libdl6c.so with -Bsymbolic
+PASS: Build libdl6d.so with --dynamic-list-data -Bsymbolic
+PASS: Build libdata1.so
+PASS: Build libcomm1.o
+PASS: Build libfunc1.so
+PASS: Build libpr9676-1.a
+PASS: Build libpr9676-2.a
+PASS: Build libpr9676-3.so
+PASS: Build libpr9676-4.so
+PASS: Build libpr9676-4a.so
+PASS: Build libpr9679.so
+PASS: Build libpr11138-1.so
+PASS: Build libpr11138-2.o
+PASS: Run normal with libfoo.so
+PASS: Run protected with libfoo.so
+PASS: Run hidden with libfoo.so
+PASS: Run normal with versioned libfoo.so
+PASS: Run warn with versioned libfoo.so
+PASS: Run protected with versioned libfoo.so
+PASS: Run hidden with versioned libfoo.so
+PASS: Run normal libbar.so with libfoo.so
+PASS: Run protected libbar.so with libfoo.so
+PASS: Run hidden libbar.so with libfoo.so
+PASS: Run normal libbar.so with versioned libfoo.so
+PASS: Run protected libbar.so with versioned libfoo.so
+PASS: Run hidden libbar.so with versioned libfoo.so
+PASS: Run dl1a with --dynamic-list=dl1.list and dlopen on libdl1.so
+PASS: Run dl1b with --dynamic-list-data and dlopen on libdl1.so
+PASS: Run with libdl2a.so
+PASS: Run with libdl2b.so
+PASS: Run with libdl2c.so
+PASS: Run with libdl4a.so
+PASS: Run with libdl4b.so
+PASS: Run with libdl4c.so
+PASS: Run with libdl4d.so
+PASS: Run with libdl4e.so
+PASS: Run with libdl4f.so
+PASS: Run dl6a1 with --dynamic-list-data and dlopen on libdl6a.so
+PASS: Run dl6a2 with -Bsymbolic-functions and dlopen on libdl6a.so
+PASS: Run dl6a3 with -Bsymbolic and dlopen on libdl6a.so
+PASS: Run dl6a4 with -Bsymbolic --dynamic-list-data and dlopen on libdl6a.so
+PASS: Run dl6a5 with -Bsymbolic-functions --dynamic-list-cpp-new and dlopen on libdl6a.so
+PASS: Run dl6a6 with --dynamic-list-cpp-new -Bsymbolic-functions and dlopen on libdl6a.so
+PASS: Run dl6a7 with --dynamic-list-data -Bsymbolic and dlopen on libdl6a.so
+PASS: Run dl6b1 with --dynamic-list-data and dlopen on libdl6b.so
+PASS: Run dl6b2 with dlopen on libdl6b.so
+PASS: Run dl6c1 with --dynamic-list-data and dlopen on libdl6c.so
+PASS: Run dl6d1 with --dynamic-list-data and dlopen on libdl6d.so
+PASS: Run with libdata1.so
+PASS: Run with libfunc1.so comm1.o
+PASS: Run with comm1.o libfunc1.so
+PASS: Run with pr11138-2.c libpr11138-1.so
+PASS: Run with libpr11138-1.so pr11138-2.c
+PASS: Build libdl3a.so with --dynamic-list=dl3.list
+PASS: Build libdl3b.so with -Bsymbolic
+PASS: Build libdl3a.so with --dynamic-list-cpp-typeinfo
+PASS: Build libdnew1a.so with --Bsymbolic-functions --dynamic-list-cpp-new
+PASS: Build libdnew1b.so with --dynamic-list-data --dynamic-list-cpp-new
+PASS: Run with libdl3a.so
+PASS: Run with libdl3c.so
+PASS: Run with libnew1a.so
+PASS: Run with libnew1b.so
+Running [...]/hurd/master/ld/testsuite/ld-elf/tls_common.exp ...
+PASS: tls_common
+Running [...]/hurd/master/ld/testsuite/ld-elf/wrap.exp ...
+PASS: Build libwrap1a.so
+PASS: Build libwrap1b.so
+PASS: Run with libwrap1a.so and libwrap1b.so
+PASS: Run with libwrap1b.so and libwrap1a.so
+Running [...]/hurd/master/ld/testsuite/ld-elfcomm/elfcomm.exp ...
+PASS: --sort-common (descending)
+PASS: --sort-common (ascending)
+PASS: size/aligment change of common symbols (warning 1)
+PASS: size/aligment change of common symbols (change 1)
+PASS: size/aligment change of common symbols (warning 2)
+PASS: size/aligment change of common symbols (change 2)
+Running [...]/hurd/master/ld/testsuite/ld-elfvers/vers.exp ...
+PASS: vers1
+PASS: vers2
+PASS: vers3
+PASS: vers4
+PASS: vers4a
+PASS: vers4b
+PASS: vers5
+PASS: vers6
+PASS: vers7a
+PASS: vers7
+PASS: vers8
+PASS: vers9
+PASS: vers10
+PASS: vers11
+PASS: vers12
+PASS: ar with versioned solib
+PASS: vers14
+PASS: vers15
+PASS: vers16a
+PASS: vers16
+PASS: vers17
+PASS: vers18
+PASS: vers19
+PASS: vers20a
+PASS: vers20
+PASS: vers21
+PASS: vers22a
+PASS: vers22b
+PASS: vers22
+PASS: vers23a
+PASS: vers23b
+PASS: vers23c
+PASS: vers23d
+PASS: vers23
+PASS: vers24a
+PASS: vers24b
+PASS: vers24c
+PASS: vers25a
+PASS: vers25b1
+PASS: vers25b2
+PASS: vers26a
+PASS: vers26b1
+PASS: vers26b2
+PASS: vers26b3
+PASS: vers27a
+PASS: vers27b
+PASS: vers27c1
+PASS: vers27c2
+PASS: vers27d1
+PASS: vers27d2
+PASS: vers27d3
+PASS: vers27d4
+PASS: vers27d5
+PASS: vers28a
+PASS: vers28b
+PASS: vers28c
+PASS: vers29
+PASS: vers30
+PASS: vers31
+PASS: vers32a
+PASS: vers32b
+Running [...]/hurd/master/ld/testsuite/ld-elfvsb/elfvsb.exp ...
+PASS: ld-elfvsb/hidden0
+PASS: ld-elfvsb/hidden1
+PASS: ld-elfvsb/hidden2
+PASS: ld-elfvsb/internal0
+PASS: ld-elfvsb/internal1
+PASS: ld-elfvsb/protected0
+PASS: ld-elfvsb/protected1
+PASS: visibility (hidden) (non PIC)
+PASS: visibility (hidden) (non PIC, load offset)
+PASS: visibility (hidden)
+PASS: visibility (hidden) (PIC main, non PIC so)
+PASS: visibility (hidden) (PIC main)
+PASS: visibility (hidden_normal) (non PIC)
+PASS: visibility (hidden_normal) (non PIC, load offset)
+PASS: visibility (hidden_normal)
+PASS: visibility (hidden_normal) (PIC main, non PIC so)
+PASS: visibility (hidden_normal) (PIC main)
+PASS: visibility (hidden_undef) (non PIC)
+PASS: visibility (hidden_undef) (non PIC, load offset)
+PASS: visibility (hidden_undef)
+PASS: visibility (hidden_undef) (PIC main, non PIC so)
+PASS: visibility (hidden_undef) (PIC main)
+PASS: visibility (hidden_undef_def) (non PIC)
+PASS: visibility (hidden_undef_def) (non PIC, load offset)
+PASS: visibility (hidden_undef_def)
+PASS: visibility (hidden_undef_def) (PIC main, non PIC so)
+PASS: visibility (hidden_undef_def) (PIC main)
+PASS: visibility (hidden_weak) (non PIC)
+PASS: visibility (hidden_weak) (non PIC, load offset)
+PASS: visibility (hidden_weak)
+PASS: visibility (hidden_weak) (PIC main, non PIC so)
+PASS: visibility (hidden_weak) (PIC main)
+PASS: visibility (protected) (non PIC)
+PASS: visibility (protected) (non PIC, load offset)
+PASS: visibility (protected)
+PASS: visibility (protected) (PIC main, non PIC so)
+PASS: visibility (protected) (PIC main)
+PASS: visibility (protected_undef) (non PIC)
+PASS: visibility (protected_undef) (non PIC, load offset)
+PASS: visibility (protected_undef)
+PASS: visibility (protected_undef) (PIC main, non PIC so)
+PASS: visibility (protected_undef) (PIC main)
+PASS: visibility (protected_undef_def) (non PIC)
+PASS: visibility (protected_undef_def) (non PIC, load offset)
+PASS: visibility (protected_undef_def)
+PASS: visibility (protected_undef_def) (PIC main, non PIC so)
+PASS: visibility (protected_undef_def) (PIC main)
+PASS: visibility (protected_weak) (non PIC)
+PASS: visibility (protected_weak) (non PIC, load offset)
+PASS: visibility (protected_weak)
+PASS: visibility (protected_weak) (PIC main, non PIC so)
+PASS: visibility (protected_weak) (PIC main)
+PASS: visibility (normal) (non PIC)
+PASS: visibility (normal) (non PIC, load offset)
+PASS: visibility (normal)
+PASS: visibility (normal) (PIC main, non PIC so)
+PASS: visibility (normal) (PIC main)
+PASS: common hidden symbol
+PASS: weak hidden symbol DSO last
+PASS: weak hidden symbol DSO first
+Running [...]/hurd/master/ld/testsuite/ld-elfweak/elfweak.exp ...
+PASS: ELF DSO weak func first
+PASS: ELF DSO weak func last
+PASS: ELF DSO weak func first DSO
+PASS: ELF DSO weak func last DSO
+PASS: ELF weak func first
+PASS: ELF weak func last
+PASS: ELF weak func first DSO
+PASS: ELF weak func last DSO
+PASS: ELF DSO weak data first
+PASS: ELF DSO weak data last
+PASS: ELF DSO weak data first DSO
+PASS: ELF DSO weak data last DSO
+PASS: ELF DSO weak data first DSO common
+PASS: ELF DSO weak data last DSO common
+PASS: ELF weak data first
+PASS: ELF weak data last
+PASS: ELF weak data first common
+PASS: ELF weak data last common
+PASS: ELF weak data first DSO
+PASS: ELF weak data last DSO
+PASS: ELF weak data first DSO common
+PASS: ELF weak data last DSO common
+PASS: ELF DSO small bar (size)
+PASS: ELF DSO foo with small bar (size)
+PASS: ELF DSO big bar (size)
+PASS: ELF weak size
+PASS: ld-elfweak/size2
+Running [...]/hurd/master/ld/testsuite/ld-fastcall/fastcall.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-frv/fdpic.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-frv/frv-elf.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-frv/tls.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-gc/gc.exp ...
+PASS: Check --gc-section
+PASS: Check --gc-section/-q
+PASS: Check --gc-section/-r/-e
+PASS: Check --gc-section/-r/-u
+PASS: --gc-sections -r without -e
+PASS: --gc-sections with note section
+PASS: --gc-sections with __start_
+PASS: --gc-sections with shared library
+Running [...]/hurd/master/ld/testsuite/ld-h8300/h8300.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-i386/i386.exp ...
+PASS: TLS -fpic -shared transitions
+PASS: TLS descriptor -fpic -shared transitions
+PASS: Helper shared library
+PASS: TLS -fpic and -fno-pic exec transitions
+PASS: TLS descriptor -fpic and -fno-pic exec transitions
+PASS: TLS -fno-pic -shared
+PASS: TLS with global dynamic and descriptors
+PASS: TLS in debug sections
+PASS: TLS @indntpoff with %eax
+PASS: Reloc section order
+PASS: Basic --emit-relocs support
+PASS: -z combreloc relocation sections
+PASS: TLS GD->LE transition
+PASS: TLS LD->LE transition
+PASS: TLS IE->LE transition
+PASS: Absolute non-overflowing relocs
+PASS: PCREL8 overflow
+PASS: PCREL16 overflow
+PASS: PCREL16 absolute reloc
+PASS: Invalid allocated section
+PASS: --warn-shared-textrel --fatal-warnings
+PASS: TLS GD->LE transition check
+PASS: TLS IE->LE transition check (R_386_TLS_GOTIE with %eax)
+PASS: TLS IE->LE transition check (R_386_TLS_GOTIE)
+PASS: TLS IE->LE transition check (R_386_TLS_IE with %eax)
+PASS: TLS IE->LE transition check (R_386_TLS_IE)
+PASS: ld-i386/hidden1
+PASS: ld-i386/hidden2
+PASS: ld-i386/hidden3
+PASS: ld-i386/protected1
+PASS: ld-i386/protected2
+PASS: ld-i386/protected3
+PASS: TLS with PIE
+PASS: TLS with PIE
+PASS: ld-i386/nogot1
+PASS: ld-i386/nogot2
+PASS: ld-i386/discarded1
+PASS: PR ld/12718
+PASS: PR ld/12921
+PASS: undefined symbol with compressed debug sections
+PASS: PR ld/12627
+Running [...]/hurd/master/ld/testsuite/ld-ia64/ia64.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-ia64/line.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-ifunc/binutils.exp ...
+PASS: strip (ifunc-4-x86)
+PASS: objcopy (ifunc-4-x86)
+PASS: strip (ifunc-4-local-x86)
+PASS: objcopy (ifunc-4-local-x86)
+Running [...]/hurd/master/ld/testsuite/ld-ifunc/ifunc.exp ...
+PASS: Building ifunc binaries
+PASS: Checking ifunc binaries
+PASS: ld-ifunc/ifunc-1-local-x86
+PASS: ld-ifunc/ifunc-1-x86
+PASS: ld-ifunc/ifunc-10-i386
+PASS: ld-ifunc/ifunc-11-i386
+PASS: ld-ifunc/ifunc-12-i386
+PASS: ld-ifunc/ifunc-13-i386
+PASS: ld-ifunc/ifunc-14-i386
+PASS: ld-ifunc/ifunc-2-i386
+PASS: ld-ifunc/ifunc-2-local-i386
+PASS: ld-ifunc/ifunc-3a-x86
+PASS: ld-ifunc/ifunc-3b-x86
+PASS: ld-ifunc/ifunc-4-local-x86
+PASS: ld-ifunc/ifunc-4-x86
+PASS: ld-ifunc/ifunc-4a-x86
+PASS: ld-ifunc/ifunc-5a-i386
+PASS: ld-ifunc/ifunc-5a-local-i386
+PASS: ld-ifunc/ifunc-5b-i386
+PASS: ld-ifunc/ifunc-5b-local-i386
+PASS: ld-ifunc/ifunc-5r-local-i386
+PASS: ld-ifunc/ifunc-6a-i386
+PASS: ld-ifunc/ifunc-6b-i386
+PASS: ld-ifunc/ifunc-7a-i386
+PASS: ld-ifunc/ifunc-7b-i386
+PASS: ld-ifunc/ifunc-8-i386
+PASS: ld-ifunc/ifunc-9-x86
+Running [...]/hurd/master/ld/testsuite/ld-libs/libs.exp ...
+PASS: -l: test (preparation)
+PASS: -l: test
+Running [...]/hurd/master/ld/testsuite/ld-linkonce/linkonce.exp ...
+PASS: ld-linkonce/zeroehl32
+Running [...]/hurd/master/ld/testsuite/ld-m68hc11/m68hc11.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-m68k/m68k-got.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-m68k/m68k.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-mep/mep.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-mips-elf/mips-elf-flags.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-mips-elf/mips-elf.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-misc/defsym.exp ...
+PASS: ld-misc/defsym1
+Running [...]/hurd/master/ld/testsuite/ld-mmix/mmix.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-mn10300/mn10300.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-pe/pe-compile.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-pe/pe-run.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-pe/pe-run2.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-pe/pe.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-pie/pie.exp ...
+PASS: weak undefined
+PASS: weak undefined data
+PASS: missing entry symbol
+Running [...]/hurd/master/ld/testsuite/ld-plugin/plugin.exp ...
+PASS: plugin API enabled
+PASS: load plugin
+PASS: fail plugin onload
+PASS: fail plugin allsymbolsread
+PASS: fail plugin cleanup
+PASS: plugin all hooks
+PASS: plugin claimfile lost symbol
+PASS: plugin claimfile replace symbol
+PASS: plugin claimfile resolve symbol
+PASS: plugin claimfile replace file
+PASS: plugin set symbol visibility
+PASS: plugin ignore lib
+PASS: plugin claimfile replace lib
+Running [...]/hurd/master/ld/testsuite/ld-powerpc/aix52.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-powerpc/powerpc.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-s390/s390.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-scripts/align.exp ...
+PASS: align1
+PASS: ld-scripts/align2a
+PASS: ld-scripts/align2b
+PASS: ld-scripts/align2c
+Running [...]/hurd/master/ld/testsuite/ld-scripts/alignof.exp ...
+PASS: ALIGNOF
+Running [...]/hurd/master/ld/testsuite/ld-scripts/assert.exp ...
+PASS: ASSERT
+PASS: ld-scripts/assert2
+Running [...]/hurd/master/ld/testsuite/ld-scripts/crossref.exp ...
+PASS: NOCROSSREFS 1
+PASS: NOCROSSREFS 2
+PASS: NOCROSSREFS 3
+Running [...]/hurd/master/ld/testsuite/ld-scripts/data.exp ...
+PASS: ld-scripts/data
+Running [...]/hurd/master/ld/testsuite/ld-scripts/default-script.exp ...
+PASS: ld-scripts/default-script1
+PASS: ld-scripts/default-script2
+PASS: ld-scripts/default-script3
+PASS: ld-scripts/default-script4
+Running [...]/hurd/master/ld/testsuite/ld-scripts/defined.exp ...
+PASS: DEFINED (PRMS 5699)
+PASS: ld-scripts/defined2
+PASS: ld-scripts/defined3
+PASS: ld-scripts/defined4
+PASS: ld-scripts/defined5
+Running [...]/hurd/master/ld/testsuite/ld-scripts/dynamic-sections.exp ...
+PASS: dynamic sections
+Running [...]/hurd/master/ld/testsuite/ld-scripts/empty-address.exp ...
+PASS: ld-scripts/empty-address-1
+PASS: ld-scripts/empty-address-2a
+PASS: ld-scripts/empty-address-2b
+PASS: ld-scripts/empty-address-3a
+PASS: ld-scripts/empty-address-3b
+PASS: ld-scripts/empty-address-3c
+Running [...]/hurd/master/ld/testsuite/ld-scripts/empty-aligned.exp ...
+PASS: ld-scripts/empty-aligned
+Running [...]/hurd/master/ld/testsuite/ld-scripts/empty-orphan.exp ...
+PASS: ld-scripts/empty-orphan
+Running [...]/hurd/master/ld/testsuite/ld-scripts/expr.exp ...
+PASS: ld-scripts/expr1
+PASS: ld-scripts/expr2
+PASS: ld-scripts/sane1
+Running [...]/hurd/master/ld/testsuite/ld-scripts/extern.exp ...
+PASS: EXTERN
+Running [...]/hurd/master/ld/testsuite/ld-scripts/include.exp ...
+PASS: include-1
+Running [...]/hurd/master/ld/testsuite/ld-scripts/map-address.exp ...
+PASS: map addresses
+Running [...]/hurd/master/ld/testsuite/ld-scripts/overlay-size.exp ...
+PASS: overlay size
+PASS: overlay size (map check)
+Running [...]/hurd/master/ld/testsuite/ld-scripts/phdrs.exp ...
+PASS: PHDRS
+Running [...]/hurd/master/ld/testsuite/ld-scripts/phdrs2.exp ...
+PASS: PHDRS2
+Running [...]/hurd/master/ld/testsuite/ld-scripts/phdrs3.exp ...
+PASS: PHDRS headers
+PASS: PHDRS headers 3a
+Running [...]/hurd/master/ld/testsuite/ld-scripts/provide.exp ...
+PASS: ld-scripts/provide-1
+PASS: ld-scripts/provide-2
+XFAIL: ld-scripts/provide-3
+Running [...]/hurd/master/ld/testsuite/ld-scripts/rgn-at.exp ...
+PASS: rgn-at1
+PASS: rgn-at2
+PASS: rgn-at3
+PASS: rgn-at4
+PASS: rgn-at5
+Running [...]/hurd/master/ld/testsuite/ld-scripts/rgn-over.exp ...
+PASS: rgn-over1
+PASS: rgn-over1 (map check)
+PASS: rgn-over2
+PASS: rgn-over2 (map check)
+PASS: rgn-over3
+PASS: rgn-over3 (map check)
+PASS: rgn-over4
+PASS: rgn-over4 (map check)
+PASS: rgn-over5
+PASS: rgn-over5 (map check)
+PASS: rgn-over6
+PASS: rgn-over6 (map check)
+PASS: rgn-over7
+PASS: rgn-over7 (map check)
+PASS: rgn-over8
+Running [...]/hurd/master/ld/testsuite/ld-scripts/script.exp ...
+PASS: script
+PASS: MRI script
+PASS: MEMORY
+XFAIL: REGION_ALIAS: region-alias-1.t
+XFAIL: REGION_ALIAS: region-alias-2.t
+XFAIL: REGION_ALIAS: region-alias-3.t
+XFAIL: REGION_ALIAS: region-alias-4.t
+Running [...]/hurd/master/ld/testsuite/ld-scripts/section-flags.exp ...
+PASS: section-flags-1
+PASS: section-flags-2
+Running [...]/hurd/master/ld/testsuite/ld-scripts/section-match.exp ...
+PASS: ld-scripts/section-match-1
+Running [...]/hurd/master/ld/testsuite/ld-scripts/size.exp ...
+PASS: ld-scripts/size-1
+PASS: ld-scripts/size-2
+Running [...]/hurd/master/ld/testsuite/ld-scripts/sizeof.exp ...
+PASS: SIZEOF
+Running [...]/hurd/master/ld/testsuite/ld-scripts/sort.exp ...
+PASS: --sort-section alignment
+PASS: SORT_BY_ALIGNMENT
+PASS: SORT_BY_ALIGNMENT(SORT_BY_ALIGNMENT())
+PASS: SORT_BY_ALIGNMENT(SORT_BY_ALIGNMENT()) --sort-section alignment
+PASS: SORT_BY_ALIGNMENT(SORT_BY_ALIGNMENT()) --sort-section name
+PASS: SORT_BY_ALIGNMENT(SORT_BY_NAME())
+PASS: SORT_BY_ALIGNMENT(SORT_BY_NAME()) --sort-section name
+PASS: SORT_BY_ALIGNMENT(SORT_BY_NAME()) --sort-section alignment
+PASS: --sort-section name
+PASS: SORT_BY_NAME
+PASS: SORT_BY_NAME(SORT_BY_ALIGNMENT())
+PASS: SORT_BY_NAME(SORT_BY_ALIGNMENT()) --sort-section alignment
+PASS: SORT_BY_NAME(SORT_BY_ALIGNMENT()) --sort-section alignment
+PASS: SORT_BY_NAME(SORT_BY_NAME())
+PASS: SORT_BY_NAME(SORT_BY_NAME()) --sort-section name
+PASS: SORT_BY_NAME(SORT_BY_NAME()) --sort-section alignment
+PASS: no SORT_BY_NAME/SORT_BY_ALIGNMENT/SORT
+PASS: no SORT_BY_NAME/SORT_BY_ALIGNMENT/SORT
+Running [...]/hurd/master/ld/testsuite/ld-scripts/weak.exp ...
+PASS: weak symbols
+Running [...]/hurd/master/ld/testsuite/ld-selective/sel-dump.exp ...
+PASS: Preserve default . = 0
+PASS: Preserve explicit . = 0
+Running [...]/hurd/master/ld/testsuite/ld-selective/selective.exp ...
+PASS: selective1
+PASS: selective2
+PASS: selective3
+XFAIL: selective4
+XFAIL: selective5
+XFAIL: selective6
+Running [...]/hurd/master/ld/testsuite/ld-sh/arch/arch.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-sh/rd-sh.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-sh/sh-vxworks.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-sh/sh.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-sh/sh64/rd-sh64.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-sh/sh64/relax.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-sh/sh64/relfail.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-sh/sh64/sh64.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-shared/shared.exp ...
+PASS: shared (non PIC)
+PASS: shared (non PIC, load offset)
+PASS: shared
+PASS: shared -Bsymbolic
+PASS: shared (PIC main, non PIC so)
+PASS: shared (PIC main)
+Running [...]/hurd/master/ld/testsuite/ld-sparc/sparc.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-spu/spu.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-srec/srec.exp ...
+PASS: S-records
+PASS: S-records with constructors
+Running [...]/hurd/master/ld/testsuite/ld-tic6x/tic6x.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-tilegx/tilegx.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-tilepro/tilepro.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-undefined/entry.exp ...
+PASS: Build libentry.a
+PASS: --entry foo archive
+PASS: --entry foo -u foo archive
+PASS: -shared --entry foo archive
+PASS: -shared --entry foo -u foo archive
+PASS: --entry foo
+PASS: --entry foo -u foo
+PASS: --entry 0x0
+Running [...]/hurd/master/ld/testsuite/ld-undefined/undefined.exp ...
+PASS: undefined
+PASS: undefined function
+PASS: undefined line
+Running [...]/hurd/master/ld/testsuite/ld-undefined/weak-undef.exp ...
+PASS: weak undefined symbols
+Running [...]/hurd/master/ld/testsuite/ld-unique/unique.exp ...
+PASS: Checking unique object
+PASS: Checking unique executable
+PASS: Checking empty unique object
+PASS: Checking unique PIC object
+PASS: Checking unique PIC object
+PASS: Checking shared empty executable
+Running [...]/hurd/master/ld/testsuite/ld-v850/v850.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-versados/versados.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-vxworks/vxworks.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-x86-64/dwarfreloc.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-x86-64/line.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-x86-64/x86-64.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-xc16x/xc16x.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-xstormy16/xstormy16.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-xtensa/coalesce.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-xtensa/lcall.exp ...
+Running [...]/hurd/master/ld/testsuite/ld-xtensa/xtensa.exp ...
+
+ === ld Summary ===
+
+# of expected passes 662
+# of expected failures 8
+# of untested testcases 6
+[...]/hurd/master.build/ld/ld-new 2.21.53.20110904
+
+Test Run By thomas on Sun Sep 4 14:45:29 2011
+Native configuration is i686-pc-linux-gnu
+
+ === gas tests ===
+
+Schedule of variations:
+ unix
+
+Running target unix
+Running [...]/hurd/master/gas/testsuite/gas/all/gas.exp ...
+PASS: pcrel values in assignment
+PASS: simplifiable double subtraction
+PASS: simplifiable double subtraction (-a)
+PASS: simple FP constants
+PASS: difference of two undefined symbols
+PASS: .equiv for symbol already set to another one
+PASS: .equiv for symbol already set to an expression
+PASS: .equ for symbol already set
+PASS: .equ for symbol already set through .eqv
+PASS: .eqv support
+PASS: .eqv for symbol already set
+PASS: == assignment support
+PASS: == assignment for symbol already set
+PASS: forward references
+PASS: forward expression
+PASS: .equ redefinitions
+PASS: .equ redefinitions (2)
+PASS: .equ redefinitions (3)
+PASS: .set for symbol already used as label
+PASS: .set for symbol already defined through .comm
+PASS: comment.s: comments in listings
+PASS: general info section in listings
+PASS: difference between forward references
+PASS: struct
+PASS: align
+PASS: align2
+PASS: alternate macro syntax
+PASS: alternate macro syntax (escape)
+PASS: evaluation of simple expressions
+PASS: conditional listings
+PASS: incbin
+PASS: assignment tests
+PASS: .sleb128 tests
+PASS: relax .uleb128
+PASS: bad byte directive
+PASS: .quad tests
+PASS: octa bignum
+PASS: weakref tests, relocations
+PASS: weakref tests, global syms
+PASS: weakref tests, local syms
+PASS: weakref tests, strong undefined syms
+PASS: weakref tests, weak undefined syms
+PASS: e: would close weakref loop: e => a => b => c => d => e
+PASS: a: would close weakref loop: a => b => c => d => e => a
+PASS: is already defined
+PASS: .strings tests
+PASS: gas/all/err-1.s (test for errors, line 3)
+PASS: gas/all/err-1.s (test for errors, line 4)
+PASS: gas/all/err-1.s (test for errors, line 5)
+PASS: gas/all/err-1.s (test for errors, line 6)
+PASS: gas/all/err-1.s (test for errors, line 7)
+PASS: gas/all/err-1.s (test for excess errors)
+PASS: gas/all/warn-1.s (test for warnings, line 3)
+PASS: gas/all/warn-1.s (test for errors, line 4)
+PASS: gas/all/warn-1.s (test for warnings, line 5)
+PASS: gas/all/warn-1.s (test for warnings, line 6)
+PASS: gas/all/warn-1.s (test for warnings, line 7)
+PASS: gas/all/warn-1.s (test for excess errors)
+Running [...]/hurd/master/gas/testsuite/gas/alpha/alpha.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/arc/arc.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/arc/warn.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/arm/arm.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/bfin/bfin.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/bfin/error.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/cfi/cfi.exp ...
+PASS: CFI on i386
+PASS: cfi cfi-diag-1
+PASS: CFI common 1
+PASS: CFI common 2
+PASS: CFI common 3
+PASS: CFI common 4
+PASS: CFI common 5
+PASS: CFI common 6
+PASS: CFI common 7
+Running [...]/hurd/master/gas/testsuite/gas/cr16/cr16.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/cr16/pic.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/cris/cris.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/crx/allinsn.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/d10v/d10v.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/d30v/d30.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/dlx/alltests.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/elf/elf.exp ...
+PASS: elf ehopt0
+PASS: .file file names
+PASS: group section
+PASS: group section
+PASS: group section name
+PASS: group section with multiple sections of same name
+PASS: group section with multiple sections of same name
+PASS: automatic section group a
+PASS: automatic section group b
+PASS: .equ redefinitions (ELF)
+PASS: elf equate relocs
+PASS: Ill-formed directives
+PASS: elf section0
+PASS: elf section1
+PASS: elf section2 list
+PASS: note section
+PASS: label arithmetic with multiple same-name sections
+PASS: elf section5 list
+PASS: ELF struct
+PASS: .set with expression
+PASS: ELF symbol versioning
+PASS: .set with IFUNC
+PASS: elf type list
+PASS: elf section6
+PASS: elf section7
+PASS: section flags
+PASS: section flags
+PASS: DWARF2 1
+PASS: DWARF2 2
+PASS: DWARF2 3
+PASS: DWARF2 4
+PASS: Check bad section flag
+PASS: Check bad size directive
+PASS: Check bad group
+PASS: gas/elf/warn-2.s (test for warnings, line )
+PASS: gas/elf/warn-2.s (test for excess errors)
+Running [...]/hurd/master/gas/testsuite/gas/fr30/allinsn.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/fr30/fr30.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/frv/allinsn.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/h8300-coff.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/h8300-elf.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/h8300.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t01_mov.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t02_mova.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t03_add.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t04_sub.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t05_cmp.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t06_ari2.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t07_ari3.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t08_or.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t09_xor.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t10_and.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t11_logs.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t12_bit.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/h8300/t13_otr.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/hppa/basic/basic.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/hppa/parse/parse.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/hppa/reloc/reloc.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/hppa/unsorted/unsorted.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/i386/i386.exp ...
+PASS: i386 float
+PASS: i386 general
+PASS: i386 inval
+PASS: i386 segment
+PASS: i386 inval-seg
+PASS: i386 inval-reg
+PASS: i386 modrm
+PASS: i386 naked reg
+PASS: i386 opcodes
+PASS: i386 opcodes (Intel disassembly)
+PASS: i386 opcodes (w/ suffix)
+PASS: i386 intel
+PASS: i386 intel16
+PASS: i386 intelbad
+PASS: i386 intel-ok
+PASS: i386 prefix
+PASS: i386 amd
+PASS: i386 katmai
+PASS: i386 jump
+PASS: i386 relax 1
+PASS: i386 relax 2
+PASS: i386 ssemmx2
+PASS: i386 sse2
+PASS: i386 sub
+PASS: i386 SSE3
+PASS: i386 SIB
+PASS: i386 SIB (Intel mode)
+PASS: i386 displacement
+PASS: i386 displacement (Intel mode)
+PASS: i386 32bit displacement
+PASS: i386 VMX
+PASS: i386 SMX
+PASS: i386 suffix
+PASS: i386 immed
+PASS: i386 equates
+PASS: i386 divide
+PASS: i386 padlock
+PASS: i386 cr8+
+PASS: i386 cr-err
+PASS: 32-bit SVME
+PASS: i386 amdfam10
+PASS: i386 SSSE3
+PASS: i386 rep prefix
+PASS: i386 rep prefix (with suffixes)
+PASS: i386 lockable insns
+PASS: i386 lockable insns (Intel disassembly)
+PASS: i386 lockbad-1
+PASS: i386 long insns
+PASS: i386 long insns (Intel disassembly)
+PASS: i386 fp
+PASS: i386 nops
+PASS: i386 nops 16bit 1
+PASS: i386 nops 1
+PASS: i386 -mtune=i386 nops 1
+PASS: i386 nops -march=i386 -mtune=i686 1
+PASS: i386 -mtune=i686 nops 1
+PASS: i386 -mtune=k8 nops 1
+PASS: i386 -mtune=core2 nops 1
+PASS: i386 -mtune=bdver1 nops 1
+PASS: i386 -mtune=bdver2 nops 1
+PASS: i386 nops 2
+PASS: i386 nops -mtune=i386 2
+PASS: i386 -march=i386 -mtune=core2 nops 2
+PASS: i386 nops 3
+PASS: i386 nops -mtune=i386 3
+PASS: i386 -mtune=i686 nops 3
+PASS: i386 nops 4
+PASS: i386 nops -mtune=i386 4
+PASS: i386 -mtune=i686 nops 4
+PASS: i386 -march=i686+nop nops 4a
+PASS: i386 nops 5
+PASS: i386 -march=i686 nops 5
+PASS: i386 nops 6
+PASS: i386 16-bit addressing in 32-bit mode.
+PASS: i386 32-bit addressing in 16-bit mode.
+PASS: i386 SSE4.1
+PASS: i386 SSE4.1 (Intel disassembly)
+PASS: i386 SSE4.2
+PASS: i386 SSE4.2 (Intel disassembly)
+PASS: i386 crc32
+PASS: i386 crc32 (Intel disassembly)
+PASS: i386 inval-crc32
+PASS: i386 SIMD
+PASS: i386 SIMD (Intel mode)
+PASS: i386 SIMD (with suffixes)
+PASS: i386 mem
+PASS: i386 mem (Intel mode)
+PASS: i386 reg
+PASS: i386 reg (Intel mode)
+PASS: i386
+PASS: i386 float AT&T mnemonic
+PASS: i386 float Intel mnemonic
+PASS: i386 arch 1
+PASS: i386 arch 2
+PASS: i386 arch 3
+PASS: i386 arch 4
+PASS: i386 arch 5
+PASS: i386 arch 6
+PASS: i386 arch 7
+PASS: i386 arch 9
+PASS: i386 arch 10
+PASS: i386 arch 10 (lzcnt)
+PASS: i386 arch-10-1
+PASS: i386 arch-10-2
+PASS: i386 arch-10-3
+PASS: i386 arch-10-4
+PASS: i386 arch 11
+PASS: i386 arch 12
+PASS: i386 8087
+PASS: i386 287
+PASS: i386 387 (cmdline)
+PASS: i386 no87
+PASS: i386 no87-2
+PASS: i386 xsave
+PASS: i386 xsave (Intel mode)
+PASS: i386 AES
+PASS: i386 AES (Intel mode)
+PASS: i386 PCLMUL
+PASS: i386 PCLMUL (Intel mode)
+PASS: i386 AVX
+PASS: i386 AVX (Intel disassembly)
+PASS: i386 AVX scalar insns
+PASS: i386 AVX scalar insns (Intel disassembly)
+PASS: i386 256bit integer AVX insns
+PASS: i386 256bit integer AVX insns (Intel disassembly)
+PASS: i386 AVX2 insns
+PASS: i386 AVX2 insns (Intel disassembly)
+PASS: i386 AVX GATHER insns
+PASS: i386 AVX GATHER insns (Intel disassembly)
+PASS: i386 SSE with AVX encoding
+PASS: i386 inval-avx
+PASS: i386 SSE check (none)
+PASS: i386 SSE check (.sse_check none)
+PASS: i386 SSE check (warning)
+PASS: i386 sse-check-error
+PASS: i386 SSE without AVX equivalent
+PASS: i386 movbe
+PASS: i386 movbe (Intel disassembly)
+PASS: i386 inval-movbe
+PASS: i386 EPT
+PASS: i386 EPT (Intel disassembly)
+PASS: i386 inval-ept
+PASS: i386 INVPCID insns
+PASS: i386 INVPCID insns (Intel disassembly)
+PASS: i386 inval-invpcid
+PASS: i386 arch avx 1
+PASS: i386 arch-avx-1-1
+PASS: i386 arch-avx-1-2
+PASS: i386 arch-avx-1-3
+PASS: i386 arch-avx-1-4
+PASS: i386 arch-avx-1-5
+PASS: i386 arch-avx-1-6
+PASS: encoding option
+PASS: encoding option (Intel mode)
+PASS: encoding option with -msse2avx
+PASS: encoding option with -msse2avx (Intel mode)
+PASS: i386 BMI2 insns
+PASS: i386 BMI2 insns (Intel disassembly)
+PASS: i386 FMA
+PASS: i386 FMA (Intel disassembly)
+PASS: i386 FMA scalar insns
+PASS: i386 FMA scalar insns (Intel disassembly)
+PASS: i386 FMA4
+PASS: i386 LWP
+PASS: i386 XOP
+PASS: i386 BMI insns
+PASS: i386 BMI insns (Intel disassembly)
+PASS: i386 TBM
+PASS: i386 TBM insns (Intel disassembly)
+PASS: i386 F16C
+PASS: i386 F16C (Intel disassembly)
+PASS: i386 FSGSBase
+PASS: i386 FSGSBase (Intel disassembly)
+PASS: i386 RdRnd
+PASS: i386 RdRnd (Intel disassembly)
+PASS: i386 reloc
+PASS: i386 jump16
+PASS: i386 white
+PASS: i386 pcrel reloc
+PASS: i386 abs reloc
+PASS: i386 intelpic
+PASS: i386 relax
+PASS: i386 gotpc
+PASS: i386 dynamic tls
+PASS: i386 pic tls
+PASS: i386 non-pic tls
+PASS: i386 .bss
+PASS: i386 relocs
+PASS: i386 reloc32
+PASS: x86 mixed mode relocs (32-bit object)
+PASS: i386 AT&T register names
+PASS: i386 intel-got
+PASS: i386 Intel register names
+PASS: i386 inval-equ-1
+PASS: i386 inval-equ-2
+PASS: i386 ifunc
+PASS: i386 ifunc-2
+PASS: i386 ifunc 3
+PASS: i386 l1om-inval
+PASS: i386 k1om-inval
+PASS: i386 local PIC
+PASS: DWARF2 debugging information 1
+PASS: DWARF2 debugging information 2
+PASS: Check bad size directive
+PASS: i386 jump
+PASS: x86 Intel expressions
+PASS: string insn operands
+PASS: i386 string-bad
+PASS: i386 space1
+PASS: i386 list-1
+PASS: i386 list-2
+PASS: i386 list-3
+PASS: DWARF2 debugging information 1
+Running [...]/hurd/master/gas/testsuite/gas/i386/ilp32/cfi/ilp32.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/i386/ilp32/elf/ilp32.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/i386/ilp32/ilp32.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/i386/ilp32/lns/ilp32.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/i860/i860.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/ia64/ia64.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/ieee-fp/x930509a.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/iq2000/allinsn.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/iq2000/load-hazards.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/iq2000/odd-ldw.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/iq2000/odd-sdw.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/iq2000/yield.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/lm32/all.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/lns/lns.exp ...
+PASS: lns lns-diag-1
+PASS: lns-duplicate
+PASS: lns-common-1
+Running [...]/hurd/master/gas/testsuite/gas/m32r/allinsn.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/m32r/error.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/m32r/m32r.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/m32r/m32r2.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/m32r/m32rx.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/m32r/pic.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/m32r/rel32.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/m68hc11/m68hc11.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/m68k-coff/gas.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/m68k/all.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/macros/macros.exp ...
+PASS: macro test 1
+PASS: macro test 2
+PASS: macro test 3
+PASS: macro irp
+PASS: macro rept
+PASS: nested irp/irpc/rept
+PASS: macro vararg
+PASS: macro infinite recursion
+PASS: logical and in macro definition
+PASS: semi
+PASS: strings
+PASS: APP with macro without NO_APP
+PASS: APP with macro then NO_APP
+PASS: APP with macro then NO_APP then more code
+PASS: included file with .if 0 wrapped in APP/NO_APP, no final NO_APP, macro in main file
+PASS: macros badarg
+PASS: macros dot
+PASS: macros end
+PASS: macros purge
+PASS: macros redef
+PASS: gas/macros/paren
+PASS: .exitm outside of a macro
+Running [...]/hurd/master/gas/testsuite/gas/mcore/allinsn.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/mep/allinsn.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/mep/complex-relocs.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/mips/mips.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/mmix/mmix-err.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/mmix/mmix-list.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/mmix/mmix.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/mn10200/basic.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/mn10300/basic.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/mri/mri.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/msp430/msp430.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/mt/errors.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/mt/mt.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/mt/relocs.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/openrisc/allinsn.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/pdp11/pdp11.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/pe/pe.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/pj/pj.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/ppc/aix.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/ppc/ppc.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/rx/rx.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/s390/s390.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/score/relax.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/score/relax_32.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/sh/arch/arch.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/sh/basic.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/sh/err.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/sh/sh64/err.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/sh/sh64/sh64.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/sparc-solaris/addend.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/sparc-solaris/gas.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/sparc/mismatch.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/sparc/sparc.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/sun4/addend.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/symver/symver.exp ...
+PASS: symver symver0
+PASS: symver symver1
+PASS: symver symver2
+PASS: symver symver3
+PASS: symver symver6
+Running [...]/hurd/master/gas/testsuite/gas/tic4x/tic4x.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/tic54x/tic54x.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/tic6x/tic6x.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/tilegx/tilegx.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/tilepro/tilepro.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/v850/basic.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/vax/vax.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/xc16x/xc16x.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/xstormy16/allinsn.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/xtensa/all.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/xtensa/xtensa-err.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/z80/z80.exp ...
+Running [...]/hurd/master/gas/testsuite/gas/z8k/z8k.exp ...
+
+ === gas Summary ===
+
+# of expected passes 346
+../as-new 2.21.53.20110904
+
diff --git a/open_issues/binutils_gold.mdwn b/open_issues/binutils_gold.mdwn
new file mode 100644
index 00000000..aa6843a3
--- /dev/null
+++ b/open_issues/binutils_gold.mdwn
@@ -0,0 +1,187 @@
+[[!meta copyright="Copyright © 2010, 2011 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_binutils]]
+
+Have a look at GOLD / port as needed.
+
+
+# teythoon's try / `mremap` issue
+
+IRC, #hurd, 2011-01-12
+
+ <teythoon> I've been looking into building gold on hurd and it built fine
+ with one minor tweak
+ <teythoon> and it's working fine according to its test suite
+ <teythoon> the only problem is that the build system is failing to detect
+ the hurdish mremap which lives in libmemusage
+ <teythoon> on linux it is in the libc so the check succeeds
+ <teythoon> any hints on how to fix this properly?
+ <antrik> hm... it's strange that it's a different library on the Hurd
+ <antrik> are the implementations compatible?
+ <teythoon> antrik: it seems so, though the declarations differ slightly
+ <antrik> I guess the best thing is to ask on the appropriate list(s) why
+ they are different...
+ <teythoon> teythoon@ganymede:~/build/gold/binutils-2.21/gold$ grep -A1
+ mremap /usr/include/sys/mman.h
+ <teythoon> extern void *mremap (void *__addr, size_t __old_len, size_t
+ __new_len, int __flags, ...) __THROW;
+ <teythoon> vs
+ <antrik> of course it would be possible to modify the configure script to
+ check for the Hurd variant too; but first we should establish whether
+ here is actually any reason for being different, or it's just some
+ historical artefact that should be fixed...
+ <teythoon> teythoon@ganymede:~/build/gold/binutils-2.21/gold$ fgrep 'extern
+ void *mremap' mremap.c
+ <teythoon> extern void *mremap (void *, size_t, size_t, int, ...);
+ <teythoon> the problem is that the test fails to link due to the fact that
+ mremap isn't in the libc on hurd
+ <antrik> yeah, it would be possible for the configure script to check
+ whether it works when the hurdish extra library is added explicitely
+ <antrik> but again, I don't see any good reason for being different here in
+ the first place...
+ <teythoon> so should I create a patch to move mremap?
+ <antrik> if it's not too complicated, that would be nice... it's always
+ easier to discuss when you already have code :-)
+ <antrik> OTOH, asking first might spare you some useless work if it turns
+ out there *is* some reason for being different after all...
+ so where is the right place to discuss this?
+ <antrik> bug-hurd mailing list and/or glibc mailing list. not sure which
+ one is better -- I guess it doesn't hurt to crosspost...
+
+[[mailing_lists/libc-alpha]] is the correct list, and cross-posting to
+[[mailing_lists/bug-hurd]] would be fine, too.
+
+ <teythoon> antrik: some further digging revealed that mremap belongs to
+ /lib/libmemusage.so on both hurd and linux
+ <teythoon> the only difference is that on linux there is a weak reference
+ to that function in /lib/libc-2.11.2.so
+ <teythoon> $ objdump -T /lib/libc-2.11.2.so | fgrep mremap
+ <teythoon> 00000000000cf7e0 w DF .text 0000000000000028 GLIBC_2.2.5
+ mremap
+ <antrik> ah, it's probably simply a bug that we don't have this weak
+ reference too
+ <antrik> IIRC we had similar bugs before
+ <antrik> teythoon: can you provide a patch for that?
+ <teythoon> antrik: unfortunately I have no idea how that weak ref ended up
+ there
+
+ <guillem> teythoon: also the libmemusage.s seems to be just a debugging
+ library to be used by LD_PRELOAD or similar
+ <guillem> which override those memory functions
+ <guillem> the libc should provide actual code for those functions, even if
+ the symbol is declared weak (so overridable)
+ <guillem> teythoon: are you sure that's the actual problem? can you paste
+ somewhere the build logs with the error?
+ <teythoon> guillem: sure
+ <teythoon> http://paste.debian.net/104437/
+ <teythoon> that's the part of config.log that shows the detection (or the
+ failure to detect it) of mremap
+ <teythoon> this results in HAVE_MREMAP not being defined
+ <teythoon> as a consequence it is declared in gold.h and this declaration
+ conflicts with the one from sys/mman.h http://paste.debian.net/104438/
+ <teythoon> on linux the test for mremap succeeds
+ <guillem> teythoon: hmm oh I guess it's just what that, mremap is linux
+ specific so it's not available on the hurd
+ <guillem> teythoon: I just checked glibc and seems to confirm that
+ <braunr> CONFORMING TO This call is Linux-specific, and should not be used
+ in programs intended to be portable.
+ <teythoon> ah okay
+ <teythoon> so I guess we shouldn't ship an header with that declaration...
+ <guillem> teythoon: yeah :/ good luck telling that to drepper :)
+ <guillem> teythoon: I guess he'll suggest that everyone else needs to get
+ our own copy of sys/mman.h
+ <guillem> s/our/their/
+ <teythoon> hm, so how should I proceed?
+ <braunr> what's your goal ?
+ <braunr> detecting mremap ?
+ <teythoon> making binutils/gold compile ootb on hurd
+ <teythoon> I picked it from the open issues page ;)
+ <braunr> well, if there is no mremap, you need a replacement
+ <teythoon> gold has a replacement
+ <braunr> ok
+ <braunr> so your problem is fixing the detection of mremap right ?
+ <teythoon> yes
+ <braunr> ok, that's a build system question then :/
+ <braunr> you need to ask an autotools guy
+ <teythoon> well, actually the build system correctly detects the absence of
+ mremap
+ <braunr> (gold does use the autotools right ?)
+ <teythoon> yes
+ <braunr> oh, i'm lost now (i admit i didn't read the whole issue :/)
+ <teythoon> it is just that the declaration in sys/mman.h conflicts with
+ their own declaration
+ <braunr> ah
+ <braunr> so in the absence of mremap, they use their own builtin function
+ <teythoon> yes
+ <teythoon> and according to the test suite it is working perfectly
+ <teythoon> gold that is
+ <teythoon> the declaration in mman.h has an extra __THROW
+ <guillem> a workaround would be to rename gold's mremap to something else,
+ gold_mremap for example
+ <braunr> that's really the kind of annoying issue
+ <braunr> you either have to change glibc, or gold
+ <guillem> yeah
+ <braunr> you'll face difficulty changing glibc, as guillem told you
+ <guillem> the correct solution though IMO is to fix glibc
+ <braunr> but this may be true for gold too
+ <braunr> guillem: i agree
+ <antrik> maybe it would be easiest actually to implement mremap()?...
+ <braunr> but as this is something quite linux specific, it makes sense to
+ use another internal name, and wrap that to the linux mremap if it's
+ detected
+ <braunr> antrik: i'm nto sure
+ <antrik> braunr: I don't think using such workarounds is a good
+ idea. clearly there would be no issue if the header file wouldn't be
+ incorrect on Hurd
+ <braunr> antrik: that's why i said i agree with guillem when he says "the
+ correct solution though IMO is to fix glibc"
+ <teythoon> what exactly is the problem with getting a patch into glibc?
+ <braunr> the people involved
+ <guillem> teythoon: and touching a generic header file
+ <braunr> but feel free to try, you could be lucky
+ <teythoon> but glibc is not an linux specific piece of software, right?
+ <braunr> teythoon: no, it's not
+ <guillem> erm...
+ <braunr> teythoon: but in practice, it is
+ <guillem> supposedly not :)
+ <antrik> braunr: BTW, by "easiest" I don't mean coding alone, but
+ coding+pushing upstream :-)
+ <guillem> so the problem is, misc/sys/mman.h should be a generic header and
+ as such not include linux specific parts, which are not present on hurd,
+ kfreebsd, etc etc
+ <braunr> antrik: yes, that's why guillem and i suggested the workaround
+ thing in gold
+ <antrik> that also requires pushing upstream. and quite frankly, if I were
+ the gold maintainer, I wouldn't accept it.
+ <guillem> but the easiest (and wrong) solution in glibc to avoid maintainer
+ conflict will probably be copying that file under hurd's glibc tree and
+ install that instead
+ <braunr> antrik: implementing mremap could be relatively easy to do
+ actually
+ <braunr> antrik: IIRC, vm_map() supports overlapping
+ <antrik> well, actually the easiest solution would be to create a patch
+ that never goes upstream but is included in Debian, like many
+ others... but that's obviously not a good long-term plan
+ <antrik> braunr: yes, I think so too
+ <antrik> braunr: haven't checked, but I have a vague recollection that the
+ fundamentals are pretty much there
+ <antrik> teythoon: so, apart from an ugly workaround in gold, there are
+ essentially three options: 1. implement mremap; 2. make parts of mman.h
+ conditional; 3. use our own copy of mman.h
+ <antrik> 1. would be ideal, but might be non-trivial; 2. would might be
+ tricky to get right, and even more tricky to get upstream; 3. would be
+ simple, but a maintenance burden in the long term
+ <teythoon> looking at golds replacement code (mmap & memcpy) 1 sounds like
+ the best option performance wise
+
+[[!taglink open_issue_glibc]]: check if it is possible to implement `mremap`.
+[[I|tschwinge]] remember some discussion about this, but have not yet worked on
+locating it. [[Talk to me|tschwinge]] if you'd like to have a look at this.
diff --git a/open_issues/blkrrpart_ioctl.mdwn b/open_issues/blkrrpart_ioctl.mdwn
new file mode 100644
index 00000000..b3a91bfb
--- /dev/null
+++ b/open_issues/blkrrpart_ioctl.mdwn
@@ -0,0 +1,32 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="BLKRRPART IOCTL"]]
+
+[[!tag open_issue_glibc open_issue_hurd open_issue_gnumach]]
+
+Just like in other Unix systems one can, for example, use `fdisk` or `parted`
+to manage hard disks' partition tables. After doing changes to a disk's
+partition table, the kernel has to be instructed to reinitialize its internal
+data structures: where does a partition begin, where does it end, etc.
+
+With `fdisk` and friends this is done on Linux with the `BLKRRPART` IOCTL,
+which is used to tell the kernel to reread the disk's partition table.
+
+`parted` also uses this interface on Linux, but for GNU Hurd, the corresponding
+function, `libparted/arch/gnu.c (gnu_disk_commit)`, doesn't do anything at all.
+The infrastructure in [[GNU_Mach|microkernel/mach/gnumach]] is already there,
+`linux/src/drivers/block/ide.c (ide_ioctl) <BLKRRPART>` and
+`linux/src/drivers/scsi/sd_ioctl.c (sd_ioctl) <BLKRRPART>`, but the IOCTL needs
+to be routed from `libparted` through [[hurd/glibc]]'s Hurd IOCTL interface,
+through Hurd's [[hurd/libstore]], to [[GNU_Mach|microkernel/mach/gnumach]].
+
+This is not a huge project, and actually one that is suitable for someone who
+wants to start with hacking the system.
diff --git a/open_issues/boehm_gc.mdwn b/open_issues/boehm_gc.mdwn
new file mode 100644
index 00000000..19bd1b21
--- /dev/null
+++ b/open_issues/boehm_gc.mdwn
@@ -0,0 +1,283 @@
+[[!meta copyright="Copyright © 2010 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's what's to be done for maintaining Boehm GC.
+
+This one does need Hurd-specific configuration.
+
+It is, for example, used by [[/GCC]] (which has its own fork), so any changes
+committed upstream should very like also be made there.
+
+
+# [[General information|/boehm_gc]]
+
+
+# [[Sources|source_repositories/boehm_gc]]
+
+
+# Configuration
+
+[[tschwinge]] reviewed its GNU/Hurd port's configuration on 2010-12-08, based
+on CVS HEAD sources from 2010-12-02, converted to [[Git, correspondingly
+1c2455988a8f59a5f83b986b9156f03be395b3b6|source_repositories/boehm_gc]].
+
+ * `configure.ac`
+
+ * `PARALLEL_MARK` is not enabled; doesn't make sense so far.
+
+ * `*-*-kfreebsd*-gnu` defines `USE_COMPILER_TLS`. What's this, and
+ why does not other config?
+
+ * TODO
+
+ [ if test "$enable_gc_debug" = "yes"; then
+ AC_MSG_WARN("Should define GC_DEBUG and use debug alloc. in clients.")
+ AC_DEFINE([KEEP_BACK_PTRS], 1,
+ [Define to save back-pointers in debugging headers.])
+ keep_back_ptrs=true
+ AC_DEFINE([DBG_HDRS_ALL], 1,
+ [Define to force debug headers on all objects.])
+ case $host in
+ x86-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* )
+ AC_DEFINE(MAKE_BACK_GRAPH)
+ AC_MSG_WARN("Client must not use -fomit-frame-pointer.")
+ AC_DEFINE(SAVE_CALL_COUNT, 8)
+ ;;
+ AM_CONDITIONAL([KEEP_BACK_PTRS], [test x"$keep_back_ptrs" = xtrue])
+
+ * `configure.host`
+
+ Nothing.
+
+ * `Makefile.am`, `include/include.am`, `cord/cord.am`, `doc/doc.am`,
+ `tests/tests.am`
+
+ Nothing.
+
+ * `include/gc_config_macros.h`
+
+ Should be OK.
+
+ * `include/private/gcconfig.h`
+
+ Hairy. But should be OK. Search for *HURD*, compare to *LINUX*,
+ *I386* case.
+
+ See `doc/porting.html` and `doc/README.macros` (and others) for
+ documentation.
+
+ *LINUX* has:
+
+ * `#define LINUX_STACKBOTTOM`
+
+ Defined instead of `STACKBOTTOM` to have the value read from `/proc/`.
+
+ * `#define HEAP_START (ptr_t)0x1000`
+
+ May want to define it for us, too?
+
+ * `#ifdef USE_I686_PREFETCH`, `USE_3DNOW_PREFETCH` --- [...]
+
+ Apparently these are optimization that we also could use. Have a
+ look at *LINUX* for *X86_64*, which uses `__builtin_prefetch`
+ (which Linux x86 could use, too?).
+
+ * TODO
+
+ #if defined(LINUX) && defined(USE_MMAP)
+ /* The kernel may do a somewhat better job merging mappings etc. */
+ /* with anonymous mappings. */
+ # define USE_MMAP_ANON
+ #endif
+
+ * TODO
+
+ #if defined(GC_LINUX_THREADS) && defined(REDIRECT_MALLOC)
+ /* Nptl allocates thread stacks with mmap, which is fine. But it */
+ /* keeps a cache of thread stacks. Thread stacks contain the */
+ /* thread control blocks. These in turn contain a pointer to */
+ /* (sizeof (void *) from the beginning of) the dtv for thread-local */
+ /* storage, which is calloc allocated. If we don't scan the cached */
+ /* thread stacks, we appear to lose the dtv. This tends to */
+ /* result in something that looks like a bogus dtv count, which */
+ /* tends to result in a memset call on a block that is way too */
+ /* large. Sometimes we're lucky and the process just dies ... */
+ /* There seems to be a similar issue with some other memory */
+ /* allocated by the dynamic loader. */
+ /* This should be avoidable by either: */
+ /* - Defining USE_PROC_FOR_LIBRARIES here. */
+ /* That performs very poorly, precisely because we end up */
+ /* scanning cached stacks. */
+ /* - Have calloc look at its callers. */
+ /* In spite of the fact that it is gross and disgusting. */
+ /* In fact neither seems to suffice, probably in part because */
+ /* even with USE_PROC_FOR_LIBRARIES, we don't scan parts of stack */
+ /* segments that appear to be out of bounds. Thus we actually */
+ /* do both, which seems to yield the best results. */
+
+ # define USE_PROC_FOR_LIBRARIES
+ #endif
+
+ * TODO
+
+ # if defined(GC_LINUX_THREADS) && defined(REDIRECT_MALLOC) \
+ && !defined(INCLUDE_LINUX_THREAD_DESCR)
+ /* Will not work, since libc and the dynamic loader use thread */
+ /* locals, sometimes as the only reference. */
+ # define INCLUDE_LINUX_THREAD_DESCR
+ # endif
+
+ * TODO
+
+ # if defined(UNIX_LIKE) && defined(THREADS) && !defined(NO_CANCEL_SAFE) \
+ && !defined(PLATFORM_ANDROID)
+ /* Make the code cancellation-safe. This basically means that we */
+ /* ensure that cancellation requests are ignored while we are in */
+ /* the collector. This applies only to Posix deferred cancellation;*/
+ /* we don't handle Posix asynchronous cancellation. */
+ /* Note that this only works if pthread_setcancelstate is */
+ /* async-signal-safe, at least in the absence of asynchronous */
+ /* cancellation. This appears to be true for the glibc version, */
+ /* though it is not documented. Without that assumption, there */
+ /* seems to be no way to safely wait in a signal handler, which */
+ /* we need to do for thread suspension. */
+ /* Also note that little other code appears to be cancellation-safe.*/
+ /* Hence it may make sense to turn this off for performance. */
+ # define CANCEL_SAFE
+ # endif
+
+ * `CAN_SAVE_CALL_ARGS` vs. -fomit-frame-pointer now being on by
+ default for Linux x86 IIRC? (Which is an [[!taglink
+ open_issue_gcc]] for not including us.)
+
+ * TODO
+
+ # if defined(REDIRECT_MALLOC) && defined(THREADS) && !defined(LINUX)
+ # error "REDIRECT_MALLOC with THREADS works at most on Linux."
+ # endif
+
+
+ *HURD* has:
+
+ * `#define STACK_GROWS_DOWN`
+
+ * `#define HEURISTIC2`
+
+ Defined instead of `STACKBOTTOM` to have the value probed.
+
+ Linux also has this:
+
+ #if defined(LINUX_STACKBOTTOM) && defined(NO_PROC_STAT) \
+ && !defined(USE_LIBC_PRIVATES)
+ /* This combination will fail, since we have no way to get */
+ /* the stack base. Use HEURISTIC2 instead. */
+ # undef LINUX_STACKBOTTOM
+ # define HEURISTIC2
+ /* This may still fail on some architectures like IA64. */
+ /* We tried ... */
+ #endif
+
+ Being on [[glibc]], we could perhaps do similar as `USE_LIBC_PRIVATES`
+ instead of `HEURISTIC2`. Pro: avoid `SIGSEGV` (and general fragility)
+ during probing at startup (if I'm understanding this correctly). Con:
+ rely on glibc internals. Or we instead add support to parse
+ [[`/proc/`|hurd/translator/procfs]] (can even use the same as Linux?),
+ or use some other interface. [[!tag open_issue_glibc]]
+
+ * `#define SIG_SUSPEND SIGUSR1`, `#define SIG_THR_RESTART SIGUSR2`
+
+ * We don't `#define MPROTECT_VDB` (WIP comment); but Linux neither.
+
+ * Where does our `GETPAGESIZE` come from? Should we `#include
+ <unistd.h>` like it is done for *LINUX*?
+
+ * `include/gc_pthread_redirects.h`
+
+ * TODO
+
+ Cancellation stuff is Linux-only. In other places, too.
+
+ * `mach_dep.c`
+
+ * `#define NO_GETCONTEXT`
+
+ [[!taglink open_issue_glibc]], but this is not a real problem here,
+ because we can use the following GCC internal function without much
+ overhead:
+
+ * `GC_with_callee_saves_pushed`
+
+ The `HAVE_BUILTIN_UNWIND_INIT` case is ours.
+
+ * `os_dep.c`
+
+ * `read`
+
+ Sure that it doesn't internally (in [[glibc]]) use `malloc`. Probably
+ only / mostly (?) a problem for `--enable-redirect-malloc`
+ configurations? Linux with threads uses `readv`.
+
+ * TODO.
+
+ * `dyn_load.c`
+
+ For `DYNAMIC_LOADING`. TODO.
+
+ * `pthread_support.c`, `pthread_stop_world.c`
+
+ TODO.
+
+ * TODO.
+
+ Other files also contain *LINUX* and other conditionals.
+
+ * `libatomic_ops/`
+
+ * `configure.ac`
+
+ Nothing.
+
+ * `Makefile`, `src/Makefile`, `src/atomic_ops/Makefile`,
+ `src/atomic_ops/sysdeps/Makefile`, `doc/Makefile`, `tests/Makefile`
+
+ Nothing.
+
+ * `src/atomic_ops/sysdeps/gcc/x86.h`
+
+ Nothing.
+
+
+# Testsuite
+
+There are different configurations possible, but in general, the testsuite
+restults of GNU/Linux and GNU/Hurd look very similar.
+
+It has last been run and compared on 2010-11-10, based on CVS HEAD sources from
+2010-11-04, converted to [[Git, correspondingly
+9abb37b2e581b415bb1f482085891a289c2c0be1|source_repositories/boehm_gc]].
+
+## `--enable-cplusplus --enable-gc-debug`
+
+ * GNU/Hurd is missing *Call chain at allocation: [...] output*.
+
+ `os_dep.c`:`GC_print_callers`
+
+
+# TODO
+
+ * Port stuff to [[GCC]], and test it there.
+
+ * What are other applications to test Boehm GC? Also especially in
+ combination with [[/libpthread]] and dynamic loading of shared libraries?
+
+ * There's been some talking about it on GNU guile mailing lists, and two
+ Git branches (2010-12-15: last change 2009-09).
+
+ * <http://www.hpl.hp.com/personal/Hans_Boehm/gc/#users>
diff --git a/open_issues/bpf.mdwn b/open_issues/bpf.mdwn
new file mode 100644
index 00000000..73f73093
--- /dev/null
+++ b/open_issues/bpf.mdwn
@@ -0,0 +1,72 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title=BPF]]
+
+[[!tag open_issue_gnumach open_issue_hurd]]
+
+This is a collection of resources concerning *Berkeley Packet Filter*s.
+
+
+# Documentation
+
+ * Wikipedia: [[!wikipedia "Berkeley Packet Filter"]]
+
+ * [The Packet Filter: An Efficient Mechanism for User-level Network
+ Code](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.36.8755),
+ 1987, Jeffrey C. Mogul, Richard F. Rashid, Michael J. Accetta
+
+ * [The BSD Packet Filter: A New Architecture for User-level Packet
+ Capture](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.43.7849),
+ 1992, Steven Mccanne, Van Jacobson
+
+ * [Protocol Service Decomposition for High-Performance
+ Networking](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.30.8387),
+ 1993, Chris Maeda, Brian N. Bershad
+
+ * [Efficient Packet Demultiplexing for Multiple Endpoints and Large
+ Messages](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.46.44),
+ 1994, Masanobu Yuhara Fujitsu, Masanobu Yuhara, Brian N. Bershad, Chris
+ Maeda, J. Eliot, B. Moss
+
+ * ... and many more
+
+
+# Implementation
+
+ * [[community/HurdFr]]
+
+ * <http://wiki.hurdfr.org/index.php/BPF>
+
+ * <http://wiki.hurdfr.org/index.php/Reseau_dans_gnumach>
+
+ * Git repository: <http://rcs-git.duckcorp.org/hurdfr/bpf.git/>
+
+ The patch for [[GNU Mach|microkernel/mach/gnumach]] is expected to be
+ complete and functional, the [[hurd/translator]] less so -- amongst others,
+ there are unresolved issues concerning support of [[hurd/glibc/IOCTL]]s.
+
+ * <http://lists.gnu.org/archive/html/bug-hurd/2006-03/msg00025.html>
+
+ * [[zhengda]]
+
+ * [[!GNU_Savannah_bug 25054]] -- Kernel panic with eth-multiplexer
+
+ * [[!GNU_Savannah_patch 6619]] -- pfinet uses the virtual interface
+
+ * [[!GNU_Savannah_patch 6620]] -- pfinet changes its filter rules with
+ its IP address
+
+ * [[!GNU_Savannah_patch 6621]] -- pfinet sets the mach device into the
+ promiscuous mode
+
+ * [[!GNU_Savannah_patch 6622]] -- pfinet uses the BPF filter
+
+ * [[!GNU_Savannah_patch 6851]] -- fix a bug in BPF
diff --git a/open_issues/chroot_difference_from_linux.mdwn b/open_issues/chroot_difference_from_linux.mdwn
new file mode 100644
index 00000000..f2009bd8
--- /dev/null
+++ b/open_issues/chroot_difference_from_linux.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+\#hurd, freenode, 2010
+
+ <cfhammar> weird, even fd = open("/"), chroot("/tmp/chroot"), openat(fd, "/tmp/chroot/..) opens /tmp/chroot in linux
+ <pochu> cfhammar: isn't that expected?
+ <cfhammar> pochu: well, i didn't expect it :-)
+ <cfhammar> pochu: in hurd, /tmp gets opened, which i think is more natural
+ <pochu> cfhammar: oh right, didn't notice the ".." :-)
diff --git a/open_issues/clock_gettime.mdwn b/open_issues/clock_gettime.mdwn
new file mode 100644
index 00000000..5345ed6b
--- /dev/null
+++ b/open_issues/clock_gettime.mdwn
@@ -0,0 +1,71 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta title="clock_gettime"]]
+
+[[!tag open_issue_glibc open_issue_gnumach]]
+
+Missing `clock_gettime(CLOCK_MONOTONIC)` (e.g. for iceweasel)
+
+It could be a mere matter of extending the mappable clock: add it to
+`mapped_time_value_t` in gnumach, handle it in `gnumach/kern/mach_clock.c`, and
+make `clock_gettime` use it.
+
+BTW, also make `gettimeofday()` use it, since it's way more efficient and some
+applications assume that it is.
+
+What about adding a nanosecond-precision clock, too? --[[tschwinge]]
+
+IRC, freenode, #hurd, 2011-08-26:
+
+ < pinotree> youpi: thing is: apparently i found a simple way to have a
+ monotonic clock as mmap-able device inside gnumach
+ < pinotree> currently, in kern/mach_clock.c there's a variable 'time',
+ which gets increased on clock interrupt, and optionally modified by
+ host_set_time
+ < pinotree> ()
+ < pinotree> if i add a new variable next to it, only increasing it on
+ interrupt but not modifying it at all otherwise, would that give me a
+ monotonic clock?
+ < pinotree> at least on sme basic tests i did, it seems it could work that
+ way
+ < youpi> yes, it should work
+ < braunr> sure
+ < youpi> and that's the way I was considering implementing it
+
+IRC, freenode, #hurd, 2011-09-06:
+
+ <pinotree> yeah, i had a draft of improved idea for also handling
+ nanoseconds
+ <tschwinge> pinotree: Ah, nice, I thought about nanoseconds as well.
+ <tschwinge> pinotree, youpi: This memory page is all-zero by default,
+ right?
+ <tschwinge> Can't we then say that its last int is a version code, and if
+ it is 0 (as it is now), we only have the normal mapped time field, if it
+ is 1, we also have the monotonic cliock and ns precision on address 8 and
+ 16 (or whatever)?
+ <tschwinge> In case that isn't your plan anyway.
+ <youpi> it's all-zero, yes
+ <tschwinge> Or, we say if a field is != 0 it is valid.
+ <youpi> making the last int a version code limits the size to one page
+ <youpi> I was thinking a field != 0 being valid is simpler
+ <youpi> but it's probably a problem too
+ <youpi> in that glibc usually caches whether interfaces are supported
+ <tschwinge> Wrap-around?
+ <youpi> for some clocks, it may be valid that the value is 0
+ <youpi> wrap-around is another issue too
+ <tschwinge> Well, then we can do the version-field thing, but put it right
+ after the current time field (address 8, I think)?
+ <youpi> yes
+ <youpi> it's a bit ugly, but it's hidden behind the structure
+ <tschwinge> It's not too bad, I think.
+ <youpi> yes
+ <tschwinge> And it will forever be a witness of the evolving of this
+ map_time interface. :-)
diff --git a/open_issues/code_analysis.mdwn b/open_issues/code_analysis.mdwn
new file mode 100644
index 00000000..7495221b
--- /dev/null
+++ b/open_issues/code_analysis.mdwn
@@ -0,0 +1,98 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+In the topic of *code analysis* or *program analysis* ([[!wikipedia
+Program_analysis_(computer_science) desc="Wikipedia article"]]), there is
+static code analysis ([[!wikipedia Static_code_analysis desc="Wikipedia
+article"]]) and dynamic program analysis ([[!wikipedia Dynamic_program_analysis
+desc="Wikipedia article"]]). This topic overlaps with [[performance
+analysis|performance]], [[formal_verification]], as well as general
+[[debugging]].
+
+[[!toc]]
+
+
+# Bounty
+
+There is a [[!FF_project 276]][[!tag bounty]] on some of these tasks.
+
+
+# Static
+
+ * [[GCC]]'s warnings. Yes, really.
+
+ * [Static Source Code Analysis Tools for C](http://spinroot.com/static/)
+
+ * [[!wikipedia List_of_tools_for_static_code_analysis]]
+
+ * [Cppcheck](http://sourceforge.net/apps/mediawiki/cppcheck/)
+
+ For example, [Debian's hurd_20110319-2
+ package](http://qa.debian.org/daca/cppcheck/sid/hurd_20110319-2.html)
+ (Samuel Thibault, 2011-08-05: *I had a look at those, some are spurious;
+ the realloc issues are for real*).
+
+ * Coccinelle
+
+ * <http://lwn.net/Articles/315686/>
+
+ * <http://www.google.com/search?q=coccinelle+analysis>
+
+ * clang
+
+ * <http://www.google.com/search?q=clang+analysis>
+
+ * Linux' sparse
+
+ * <https://sparse.wiki.kernel.org/>
+
+ * <http://klee.llvm.org/>
+
+ * <http://blog.llvm.org/2010/04/whats-wrong-with-this-code.html>
+
+ * [Smatch](http://smatch.sourceforge.net/)
+
+ * [Parfait](http://labs.oracle.com/projects/parfait/)
+
+ * <http://lwn.net/Articles/344003/>
+
+ * [Saturn](http://saturn.stanford.edu/)
+
+ * [Flawfinder](http://www.dwheeler.com/flawfinder/)
+
+ * [sixgill](http://sixgill.org/)
+
+ * [Coverity](http://www.coverity.com/) (nonfree?)
+
+
+# Dynamic
+
+ * [[community/gsoc/project_ideas/Valgrind]]
+
+ * <http://en.wikipedia.org/wiki/Electric_Fence>
+
+ * <http://sourceforge.net/projects/duma/>
+
+ * <http://wiki.debian.org/Hardening>
+
+ * <https://wiki.ubuntu.com/CompilerFlags>
+
+ * IRC, freenode, #glibc, 2011-09-28
+
+ <vsrinivas> two things you can do -- there is an environment variable
+ (DEBUG_MALLOC_ iirc?) that can be set to 2 to make ptmalloc (glibc's
+ allocator) more forceful and verbose wrt error checking
+ <vsrinivas> another is to grab a copy of Tor's source tree and copy out
+ OpenBSD's allocator (its a clearly-identifyable file in the tree);
+ LD_PRELOAD it or link it into your app, it is even more aggressive
+ about detecting memory misuse.
+ <vsrinivas> third, Red hat has a gdb python plugin that can instrument
+ glibc's heap structure. its kinda handy, might help?
+ <vsrinivas> MALLOC_CHECK_ was the envvar you want, sorry.
diff --git a/open_issues/contributing.mdwn b/open_issues/contributing.mdwn
new file mode 100644
index 00000000..7ae742f0
--- /dev/null
+++ b/open_issues/contributing.mdwn
@@ -0,0 +1,44 @@
+[[!meta copyright="Copyright © 2010 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_documentation]]
+
+This should be integrated into [[/contributing]].
+
+---
+
+Every now and then, people show up who have an inward urge to contribute to the
+GNU Hurd, but have some difficulties about how to do that.
+
+For example, IRC, #hurd, 2010-10-06:
+
+ <rah> I find it difficult to find the will to contribute to the hurd while hurd != hurd-ng
+ <pochu> hurd-ng?
+ <pochu> ah, http://www.gnu.org/software/hurd/hurd/ng.html
+ <pochu> rah: you may want to work on achieving that then
+ <rah> pochu: I'm not in a position to do OS research
+ <antrik> rah: if you are not into OS research, why do you need it to be ngHurd? :-)
+ <rah> antrik: I don't want to work on software which I know is already obsolete
+ <tschwinge> rah: My position on that can be found here; you may want to think about it. http://lists.gnu.org/archive/html/bug-hurd/2007-07/msg00111.html
+ <antrik> rah: the existing Hurd implementation is not any more obsolete than any other large software project
+ <antrik> there are always things that could be redone in a better way some time in the future
+ <antrik> but we have to start somewhere
+ <antrik> software development is a dynamic process
+ <antrik> trying to come up with a perfect design before you write any code will never lead anywhere, ever
+ <rah> antrik: of course, but when you know your start is wrong, have identified its problems, and are in the process of designing a second attempt, working on the first seems pointless
+ <antrik> rah: well, do you know all these things? because I do not
+ <antrik> what the experiments with new Hurd designs proved so far is that nobody is in a position to claim, "I have a better design"
+ <antrik> it's not hard to come up with a design that is better in some points -- but it's damn hard to come up with one that's not lacking in others
+ <antrik> the existing Hurd design is actually the only one which we *know* to work
+ <antrik> while research on improving the design is certainly beneficial, it's not like there is something new ready to replace the existing design at any moment
+ <antrik> and frankly, I'm more and more convinced that only iterative changes can ever result in any real improvement
+ <antrik> (and doing these changes requires a certain momentum, which we will never gain unless we actually have something usable first)
+ <LarstiQ> rah: afaik, not much is being done of designing another attempt
+ <rah> antrik: yes, I know all these things
diff --git a/open_issues/crash_server.mdwn b/open_issues/crash_server.mdwn
new file mode 100644
index 00000000..7ed4afbf
--- /dev/null
+++ b/open_issues/crash_server.mdwn
@@ -0,0 +1,195 @@
+[[!meta copyright="Copyright © 2009, 2010, 2011 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_hurd]]
+
+Given an `a.out` executable that only does `raise (SIGABRT)`, invoking that
+one...
+
+ * ... against `crash-dump-core` will...
+
+ * ... not overwrite existing `core` files.
+
+ Is this reasonable? Linux does overwrite them, for example.
+
+ * ... show big variances in running-time behavior:
+
+ $ TIMEFORMAT='real %R user %U system %S'
+ $ rm -f core; time env CRASHSERVER=/servers/crash-dump-core ./a.out; ls -l core
+ Aborted (core dumped)
+ real 1.350 user 0.000 system 0.010
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 21:59 core
+ $ rm -f core; time env CRASHSERVER=/servers/crash-dump-core ./a.out; ls -l core
+ Aborted (core dumped)
+ real 22.771 user 0.000 system 0.010
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 21:59 core
+ $ rm -f core; time env CRASHSERVER=/servers/crash-dump-core ./a.out; ls -l core
+ Aborted (core dumped)
+ real 1.367 user 0.000 system 0.010
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:00 core
+ $ rm -f core; time env CRASHSERVER=/servers/crash-dump-core ./a.out; ls -l core
+ Aborted (core dumped)
+ real 5.789 user 0.000 system 0.010
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:00 core
+ $ rm -f core; time env CRASHSERVER=/servers/crash-dump-core ./a.out; ls -l core
+ Aborted (core dumped)
+ real 22.664 user 0.010 system 0.000
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:01 core
+
+ * ... produce a huge `core` file:
+
+ $ du -hs core
+ 17M core
+
+ On Linux, the `core` file occupies 76 KiB of disk space, which seems
+ much more reasonable. This is possibly related with the default 128MiB
+ heap preallocation.
+
+ * ... does not always produce a useful backtrace:
+
+ `abort();`
+
+ $ gdb test core
+ warning: core file may not match specified executable file.
+ [New Thread 86678]
+ warning: Wrong size fpregset in core file.
+ ...
+ Core was generated by `./test'.
+ Program terminated with signal 6, Aborted.
+ warning: Wrong size fpregset in core file.
+ (gdb) bt
+ #0 0x00000000 in ?? ()
+ #1 0x011f593f in __msg_sig_post (process=72, signal=6, sigcode=0, refport=1)
+ at /build/buildd-eglibc_2.10.2-7-hurd-i386-iGL6op/eglibc-2.10.2/build-tree/hurd-i386-libc/hurd/RPC_msg_sig_post.c:144
+ #2 0x0109a433 in kill_port (pid=<value optimized out>)
+ at ../sysdeps/mach/hurd/kill.c:68
+ #3 kill_pid (pid=<value optimized out>) at ../sysdeps/mach/hurd/kill.c:105
+ #4 0x0109a69f in __kill (pid=21142, sig=6) at ../sysdeps/mach/hurd/kill.c:139
+ #5 0x01099af6 in raise (sig=6) at ../sysdeps/posix/raise.c:27
+ #6 0x0109de59 in abort () at abort.c:88
+ #7 0x0804849f in main ()
+
+ `char *foo = 0; *foo = 1;`
+
+ $ gdb test core
+ Program terminated with signal 11, Segmentation fault.
+ warning: Wrong size fpregset in core file.
+ #0 0x00000000 in ?? ()
+ (gdb) bt
+ #0 0x00000000 in ?? ()
+ #1 0x0108565b in __libc_start_main (main=0x8048464 <main>, argc=1, ubp_av=0x1023e64,
+ init=0x8048490 <__libc_csu_init>, fini=0x8048480 <__libc_csu_fini>, rtld_fini=0xea20 <_dl_fini>,
+ stack_end=0x1023e5c) at libc-start.c:251
+ #2 0x080483d1 in _start ()
+
+ `raise (SIGABRT);`
+
+ $ gdb a.out core
+ warning: core file may not match specified executable file.
+ [New Thread 76651]
+
+ warning: Wrong size fpregset in core file.
+ Reading symbols from /lib/libc.so.0.3...[...]
+ Core was generated by `./a.out'.
+ Program terminated with signal 6, Aborted.
+
+ warning: Wrong size fpregset in core file.
+ #0 0x00000000 in ?? ()
+ (gdb) bt
+ #0 0x00000000 in ?? ()
+ Cannot access memory at address 0x17
+
+ [[!tag open_issue_gdb]] Probably [[GDB]] doesn't manage to dig in the stack properly.
+
+ * ... against `crash-suspend` will...
+
+ * ... not work at all:
+
+ $ CRASHSERVER=/servers/crash-suspend ./a.out
+ $ [returns to the shell and doesn't suspended]
+
+ * ... show big variances in running-time behavior:
+
+ $ TIMEFORMAT='real %R user %U system %S'
+ $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core
+ Aborted (core dumped)
+ real 1.381 user 0.000 system 0.010
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:04 core
+ $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core
+ Aborted (core dumped)
+ real 1.332 user 0.000 system 0.010
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:04 core
+ $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core
+ Aborted (core dumped)
+ real 21.228 user 0.000 system 0.010
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:04 core
+ $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core
+ Aborted (core dumped)
+ real 1.323 user 0.000 system 0.010
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:05 core
+ $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core
+ Aborted (core dumped)
+ real 22.279 user 0.000 system 0.010
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:05 core
+ $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core
+ Aborted (core dumped)
+ real 1.362 user 0.000 system 0.000
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:08 core
+ $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core
+ Aborted (core dumped)
+ real 21.110 user 0.000 system 0.000
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:08 core
+ $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core
+ Aborted (core dumped)
+ real 1.350 user 0.000 system 0.020
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:08 core
+
+ * ... can reliably crash GNU Mach:
+
+ This happens if a `core` file is already present (and won't get
+ overwritten; see above). I reproduced this three times.
+
+ $ TIMEFORMAT='real %R user %U system %S'
+ $ time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core
+ Aborted
+ real 2.856 user 0.000 system 0.010
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:08 core
+
+ panic: zalloc: zone kalloc.8192 exhausted
+ Kernel Breakpoint trap, eip 0x20020a77
+ Stopped at 0x20020a76: int $3
+ db> trace
+ 0x20020a76(2006aba8,4d0f7e9c,200209b0,0,0)
+ 0x20020a4d(2006b094,2006ae40,2000,20016803,4a5f4114)
+ 0x2002bca5(49a03564,1,0,9,1000)
+ 0x20022f4c(2000,4a5f45d4,4a84879c,49a46564,4ac43e78)
+ 0x20021e65(4ac43e78,4a5f45d4,4a5f4114,0,0)
+ 0x2005309d(2106ba9c,3,38,28,1783)
+ Bad frame pointer: 0x2106ba78
+
+ $ addr2line -i -f -e /boot/gnumach-xen 0x20020a76 0x20020a4d 0x2002bca5 0x20022f4c 0x20021e65 0x2005309d
+ Debugger
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/debug.c:105
+ panic
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/debug.c:148
+ zalloc
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/zalloc.c:470
+ kalloc
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/kalloc.c:185
+ ipc_kobject_server
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/ipc_kobject.c:76
+ mach_msg_trap
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/ipc/mach_msg.c:1367
+
+---
+
+If someone is working in this area, they may want to have a look at
+[[GDB_gcore]], and port <http://code.google.com/p/google-coredumper/>, too.
diff --git a/open_issues/crashes_vs_system_load_cpu_load_rpc_load.mdwn b/open_issues/crashes_vs_system_load_cpu_load_rpc_load.mdwn
new file mode 100644
index 00000000..4076d8d0
--- /dev/null
+++ b/open_issues/crashes_vs_system_load_cpu_load_rpc_load.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+IRC, unknown channel, unknown date:
+
+ <antrik> I have a theory
+ <antrik> when the system is under CPU load, the ext2 locking issues are more likely to happen
+ <antrik> I'm under the impression, that when doing something disk-intensive (like a compile job) *considerably* more often causes crashes, when doing *any* other activity in parallel -- be it other compile jobs, or CPU-only activities
+ <antrik> thinking about it, I'm not sure whether CPU-intensive is the decisive criterium, or maybe RPC-intensive...
+ <antrik> CPU load doesn't seem to have any effect -- neither alone, nor in combination with other testcases
diff --git a/open_issues/crt0_o_crt1_o_debug_info_relocation_invalid_symbol_index.mdwn b/open_issues/crt0_o_crt1_o_debug_info_relocation_invalid_symbol_index.mdwn
new file mode 100644
index 00000000..b94c0c1d
--- /dev/null
+++ b/open_issues/crt0_o_crt1_o_debug_info_relocation_invalid_symbol_index.mdwn
@@ -0,0 +1,41 @@
+[[!meta copyright="Copyright © 2010 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_glibc open_issue_gcc]]
+
+ $ gcc -o /dev/null -x c /dev/null
+ /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 0 has invalid symbol index 12
+ /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 1 has invalid symbol index 13
+ /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 2 has invalid symbol index 2
+ /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 3 has invalid symbol index 2
+ /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 4 has invalid symbol index 12
+ /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 5 has invalid symbol index 14
+ /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 6 has invalid symbol index 14
+ /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 7 has invalid symbol index 14
+ /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 8 has invalid symbol index 2
+ /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 9 has invalid symbol index 2
+ /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 10 has invalid symbol index 13
+ /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 11 has invalid symbol index 14
+ /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 12 has invalid symbol index 14
+ /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 13 has invalid symbol index 14
+ /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 14 has invalid symbol index 14
+ /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 15 has invalid symbol index 14
+ /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 16 has invalid symbol index 14
+ /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 17 has invalid symbol index 14
+ /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 18 has invalid symbol index 14
+ /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 19 has invalid symbol index 14
+ /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 20 has invalid symbol index 14
+ /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 21 has invalid symbol index 14
+ /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 22 has invalid symbol index 22
+ /usr/lib/gcc/i486-gnu/4.4.5/../../../crt1.o: In function `_start':
+ (.text+0x18): undefined reference to `main'
+ collect2: ld returned 1 exit status
+
+Likewise for `-static`, `crt0.o`.
diff --git a/open_issues/cvs_tasks_file.mdwn b/open_issues/cvs_tasks_file.mdwn
new file mode 100644
index 00000000..67b64651
--- /dev/null
+++ b/open_issues/cvs_tasks_file.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 2002, 2003, 2004, 2005, 2006, 2007, 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]]."]]"""]]
+
+[[!meta title="CVS tasks file"]]
+
+[[!tag open_issue_hurd]]
+
+The canonical [tasks
+file](http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/hurd/hurd/tasks?rev=HEAD&content-type=text/plain)
+from the CVS archive.
diff --git a/open_issues/cvs_todo_file.mdwn b/open_issues/cvs_todo_file.mdwn
new file mode 100644
index 00000000..a42e6dca
--- /dev/null
+++ b/open_issues/cvs_todo_file.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 2002, 2003, 2004, 2005, 2006, 2007, 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]]."]]"""]]
+
+[[!meta title="CVS TODO file"]]
+
+[[!tag open_issue_hurd]]
+
+The canonical [TODO
+file](http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/hurd/hurd/TODO?rev=HEAD&content-type=text/plain)
+from the CVS archive.
diff --git a/open_issues/dbus_in_linux_kernel.mdwn b/open_issues/dbus_in_linux_kernel.mdwn
new file mode 100644
index 00000000..a94e1fed
--- /dev/null
+++ b/open_issues/dbus_in_linux_kernel.mdwn
@@ -0,0 +1,64 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+Might be interesting to watch how this develops.
+
+IRC, #hurd, August / September 2010
+
+ <neal> check this out:
+ <neal> someone is working on implementing dbus in linux
+ <neal> linux finally gets mach ipc ;-)
+ <marcusb> it's old news though, unless there is an update
+ <marcusb> and I think it was only the client?
+ <neal> youpi : someone is adding dbus ipc to the linux kernel
+ <neal> marcusb: I just heard about it.
+ <youpi> (it's crazy how this drives backward compared to a hurdish approach)
+ <youpi> what is the motivation for moving to the kernel?
+ <neal> context switch overhead
+ <azeem_> they wanna use it to talk to device drivers? :)
+ <kilobug> well, they did that with the in-kernel web server, but they
+ abandonned it later on
+ <neal> azeem: I don't think so.
+ <neal> dbus in the kernel is actually good for the Hurd as dbus IPC is
+ basically neutered Mach IPC
+ <marcusb> I don't think anybody wants to put the dbus server in the kernel
+ <neal> well, there is at least one person
+ <marcusb> maybe this is a different news from the one I read
+ <neal> Alban Crequy (albanc) is working out. He works for collabora, fwiw
+
+<http://alban.apinc.org/blog/2010/09/15/d-bus-in-the-kernel-faster/>
+
+ <marcusb> what I read was about hal etc
+ <marcusb> so that you don't need a user space daemon to glue the kernel to the
+ dbus world
+ <neal> I don't think that is what he is talking about
+ <marcusb> I can't find it anymore though. I mentioned it in this channel at
+ the time though, so it should be in the backlog
+ <marcusb> neal, yeah could very well be a separate thing
+ <marcusb> neal, dbus does have marginal support for fd passing though, and some
+ attempts on the mailing list to make "fds" an official type in the message
+ failed (as far as I could see, I didn't read the whole discussion)
+ <marcusb> so no mach ipc just yet
+ <neal> wrong
+ <neal> FD handling is in 1.4
+ <neal> type o, if I'm not mistaken
+ <marcusb> then the discussion moved on from initial rejection
+ <neal> no, 'h'
+ <marcusb> I'm out of date by two months
+ <marcusb> ok
+ <guillem> neal: AFAIR Marcel Holtmann talked about dbus in-kernel several years
+ ago, but he never ended up implementing it, or there were rumors he had
+ private "working code"
+
+ * Related Mailing List Discussion
+
+ * [\[PATCH 0/5\] RFC: Multicast and filtering features on
+ AF_UNIX](http://article.gmane.org/gmane.linux.kernel/1040481),
+ 2010-09-24
diff --git a/open_issues/dde.mdwn b/open_issues/dde.mdwn
new file mode 100644
index 00000000..ef319a5c
--- /dev/null
+++ b/open_issues/dde.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta redir=/dde]]
diff --git a/open_issues/debian_cross_toolchain.mdwn b/open_issues/debian_cross_toolchain.mdwn
new file mode 100644
index 00000000..e0665466
--- /dev/null
+++ b/open_issues/debian_cross_toolchain.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2011 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_hurd]]
+
+Have a look at the Debian *Cross Toolchain* project,
+<https://alioth.debian.org/projects/crosstoolchain/>,
+<http://wiki.debian.org/ToolChain/Cross>.
diff --git a/open_issues/debootstrap.mdwn b/open_issues/debootstrap.mdwn
new file mode 100644
index 00000000..8e6c4900
--- /dev/null
+++ b/open_issues/debootstrap.mdwn
@@ -0,0 +1,24 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+\#hurd, freenode, 2010
+
+ <azeem_> you know, you would really help the Hurd if you tried debootstrap instead
+ <tschwinge> Oh? Does that have everying in place by now?
+ <azeem_> applying the patch in http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=498731#25
+ <azeem_> they are waiting for feedbacl
+ <azeem_> feedback*
+
+\#hurd, freenode, June (?) 2010
+
+ <azeem_> jd823592: if you want to use debootstrap, you should apply a patch
+ <azeem_> and test
+ <azeem_> http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=25;filename=debootstrap_hurd.patch;att=1;bug=498731
+ <azeem_> we desperately need somebody to test the patch
diff --git a/open_issues/debugging.mdwn b/open_issues/debugging.mdwn
new file mode 100644
index 00000000..b2d49b26
--- /dev/null
+++ b/open_issues/debugging.mdwn
@@ -0,0 +1,53 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+
+# Existing
+
+We have debugging infrastructure. For example:
+
+ * [[GDB]]
+
+ * [[GNU Mach debugging|microkernel/mach/gnumach/debugging]]
+
+ * [[GNU Hurd debugging|hurd/debugging]], including
+ [[hurd/debugging/rpctrace]], and more.
+
+
+# To Do
+
+ * [[ltrace]]
+
+ * [[latrace]]
+
+ * [[profiling]]
+
+ * *Checkpoint/restart allows the state of a set of processes to be saved to
+ persistent storage, then restarted at some future time* -- quoting from
+ Jonathan Corbet's [2010 Linux Kernel Summit
+ report](http://lwn.net/Articles/412749/).
+
+ This is surely a very useful facility to have for reproducing failures, for
+ example. But on the other hand it's questionable how it can help with
+ debugging failures in [[GNU Hurd server|hurd/translator]]s' interactions,
+ as their state is typically spread between several processes.
+
+ Continues: <http://lwn.net/Articles/414264/>, which introduces
+ <http://dmtcp.sourceforge.net/>.
+
+ * [[crash_server}}, [[GDB_gcore]],
+ <http://code.google.com/p/google-coredumper/>
+
+ * [[community/gsoc/project_ideas/libdiskfs_locking]]
+
+ * <http://lwn.net/Articles/415728/>, or <http://lwn.net/Articles/415471/> --
+ just two examples; there's a lot of such stuff for Linux.
+
+ * [[debugging_gnumach_startup_QEMU_GDB]]
diff --git a/open_issues/debugging_gnumach_startup_qemu_gdb.mdwn b/open_issues/debugging_gnumach_startup_qemu_gdb.mdwn
new file mode 100644
index 00000000..e3a6b648
--- /dev/null
+++ b/open_issues/debugging_gnumach_startup_qemu_gdb.mdwn
@@ -0,0 +1,116 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta title="Debugging GNU Mach's startup in QEMU with GDB"]]
+
+[[!tag open_issue_gdb open_issue_gnumach]]
+
+
+# IRC, freenode, #hurd, 2011-07-14
+
+ <mcsim> Hello. I have problem with debugging gnumach. I set 2 brakepoints
+ in file i386/i386at/model_dep.c on functions gdt_init and idt_init. Then
+ I start qemu with patched gnumach kernel and stop at gdt_init. When I
+ enter command "continue" in gdb, qemu hangs. But when I go step by step,
+ using command "next", I freely reach idt_init. What can cause this
+ problem?
+ <braunr> hm
+ <braunr> not sure
+ <braunr> let me try
+ <braunr> mcsim: works for me :/
+ <mcsim> it works without my patch, but with it qemu hangs
+ <braunr> oh, i thought it worked when not using continue
+ <mcsim> with my patch I can reach idt_init only using next
+ <mcsim> and without all works fine
+ <braunr> mcsim: are you sure you correctly built it with debugging symbols
+ ?
+ <mcsim> I've written in /etc/dpkg/buildflags.conf SET CFLAGS -g3 -O0
+ <braunr> hm
+ <braunr> i have internal kvm errors actually
+ <braunr> mcsim: do you use kvm ?
+ <braunr> mcsim: and why break on those functions ?
+ <braunr> i'm not sure the address space is already fine at this point
+ <mcsim> no. I don't have hardware virtualisation support.
+ <braunr> hm actually, you won't be able to use gdb
+ <braunr> i just remembered how gnumach is linked and mapped :/
+ <braunr> the addresses in the elf image are low addresses, matching the
+ image as it is loaded by the boot loader
+ <mcsim> I was wondering why qemu hangs.
+ <braunr> then the kernel uses segmentation to map itself at 2 (or 3
+ previously) GiB
+ <braunr> well, if the addresses are wrong, your breakpoints are wrong
+ <braunr> i even wonder how it can work when stepping
+ <braunr> i don't have the issue with x15 because of its linker script
+ <mcsim> Are there any ways of such debugging without qemu?
+ <braunr> i don't think so
+ <braunr> as antrik told you, the in kernel debugger needs many services
+ running before being usable
+ <braunr> you'll have to use printf, and there may be steps during bootstrap
+ when even that isn't available
+ <mcsim> So I need computer with hardware virtualisation?
+ <braunr> well, of course stepping works, since the breakpoints are relative
+ <braunr> no
+ <braunr> kvm has nothing to do with the problem
+ <braunr> it's just that the problem appears differently with kvm enabled
+ <mcsim> ok. thank you.
+ <braunr> good luck
+ <antrik> braunr: would it be hard to "fix" gnumach to avoid the
+ segmentation magic?...
+ <braunr> antrik: because of the linux drivers, it may
+ <antrik> or alternatively, implement something in GDB to deal with that?...
+ <braunr> antrik: i didn't study that part enough to know for sure
+ <antrik> uhm... why would the Linux drivers depend on that? does Linux also
+ do such magic?...
+ <braunr> well it should simply be a matter of shifting the address by a
+ fixed offset
+ <braunr> antrik: linux drivers rely on physical memory being allocated
+ through kmalloc
+ <braunr> so there must be a direct mapping between virtual kernel memory
+ and physical memory
+ <braunr> they don't specifically need that segmentation settings
+ <braunr> so if you remove the offset implemented through segmentation, you
+ have to replace it with page mapping
+ <braunr> and i don't know how much needs to be done for that
+ <braunr> you also need to link the kernel differently
+ <antrik> hm, OK
+ <antrik> so adding GDB support for the offset would probably be easier...
+ <braunr> yes
+ <braunr> but using the offset must only be done once segmentation is set up
+ <braunr> so you must break after gdt_init
+ <braunr> not on it
+ <braunr> mcsim: why do you break on these functions btw ?
+ <mcsim> I just wanted to find out why qemu hangs
+ <braunr> yes but why those ?
+ <mcsim> I found out that before gdt_init all workes fine, but after qemu
+ hangs. So idt_init is just the next function
+ <braunr> ok
+ <braunr> and does your patch change something to how segmentation is
+ initialized ?
+ <mcsim> now
+ <mcsim> no
+ <braunr> try to build it with the regular cflags
+ <braunr> i don't know if gnumach can work with -O0
+ <mcsim> I've tried. But all the same
+ <mcsim> Regular are -g -O2
+ <braunr> can you make your patch available ?
+ <mcsim> yes
+ <mcsim> it is available in gnumach repository at savannah
+ <mcsim> tree mplaneta/libbraunr/master
+ <antrik> well, if the segmentation stuff is the thing GDB has problems
+ with, I don't see how it can work without your patch...
+ <braunr> without ?
+ <antrik> well, the patch shouldn't affect the segmentation... so I don't
+ see how it can make a difference
+ <braunr> he said qemu hanged
+ <braunr> so let's not introduce gdb yet
+ <braunr> qemu can hang for other reasons
+ <antrik> oh, right, without GDB...
+ <antrik> though if that's what he meant, his statement was very misleading
+ at least
diff --git a/open_issues/default_pager.mdwn b/open_issues/default_pager.mdwn
new file mode 100644
index 00000000..18670c75
--- /dev/null
+++ b/open_issues/default_pager.mdwn
@@ -0,0 +1,31 @@
+[[!meta copyright="Copyright © 2011 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_gnumach]]
+
+IRC, freenode, #hurd, 2011-08-31:
+
+ <antrik> braunr: do you have any idea what could cause the paging errors
+ long before swap is exhausted?
+ <braunr> antrik: not really, but i know every project based on the mach vm
+ have rewritten their swap pager
+ <antrik> (and also I/O performance steadily dropping before that point is
+ reached?)
+
+[[performance/degradation]] (?).
+
+ <antrik> hm
+ <braunr> there could too many things
+ <antrik> perhaps we could "borrow" from one of them? :-)
+ <braunr> map entry fragmentation for example
+ <braunr> the freebsd one is the only possible candidate
+ <braunr> uvm is too different
+ <braunr> dragonflybsd maybe, but it's very close to freebsd
+ <braunr> i didn't look at darwin/xnu
diff --git a/open_issues/device_drivers_and_io_systems.mdwn b/open_issues/device_drivers_and_io_systems.mdwn
new file mode 100644
index 00000000..ce50d93e
--- /dev/null
+++ b/open_issues/device_drivers_and_io_systems.mdwn
@@ -0,0 +1,94 @@
+[[!meta copyright="Copyright © 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_gnumach open_issue_hurd]]
+
+This is a collection of resources concerning *device drivers* and *I/O systems*
+in general.
+
+Also see [[user-space device drivers]].
+[[community/gsoc/project ideas/driver glue code]].
+
+[[!toc levels=2]]
+
+
+# Documentation
+
+ * [An I/O System for Mach
+ 3.0](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.56.3210),
+ 1991, Alessandro Forin, David Golub, Brian Bershad
+
+ * [Linux Device Driver Emulation in
+ Mach](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.53.7252),
+ 1996, Shantanu Goel, Dan Duchamp
+
+ * [Eliminating receive livelock in an interrupt-driven
+ kernel](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.127.8257),
+ 1997, Jeffrey Mogul, Dec Western, Jeffrey C. Mogul, K. K. Ramakrishnan
+
+ * [IO-Lite: A Unified I/O Buffering and Caching
+ System](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.29.4224),
+ 1997, Vivek S. Pai, Peter Druschel, Willy Zwaenepoel
+
+ * [The Flux OSKit: A substrate for kernel and language
+ research](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.118.534),
+ 1997, Bryan Ford, Godmar Back, Greg Benson, Jay Lepreau, Albert Lin, Olin
+ Shivers
+
+ * [Reuse Linux Device Drivers in Embedded
+ Systems](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.26.6951),
+ 1998, Chi-wei Yang, Paul C. H. Lee, Ruei-Chuan Chang
+
+ * [THINK: A Software Framework for Component-based Operating System
+ Kernels](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.133.9239),
+ 2002, Jean-Philippe Fassino, Jean-Bernard Stefani, Julia Lawall, Gilles
+ Muller
+
+ * [An I/O Architecture for Microkernel-Based Operating
+ Systems](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.5.4337),
+ 2003, Hermann Haertig, Jork Loeser, Jork Löser, Frank Mehnert, Lars
+ Reuther, Martin Pohlack, Alexander Warg
+
+ * [High-Speed I/O: The Operating System as a Signalling
+ Mechanism](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.9.6991),
+ 2003, Matthew Burnside, Angelos D. Keromytis
+
+ * [Unmodified device driver reuse and improved system dependability via
+ virtual
+ machines](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.108.5317),
+ 2004, Joshua Levasseur, Volkmar Uhlig, Jan Stoess, Stefan Götz
+
+
+# External Projects
+
+ * [[DDE]]
+
+ * [Building Linux Device Drivers on
+ FreeBSD](http://info.iet.unipi.it/~luigi/FreeBSD/linux_bsd_kld.html)
+
+ * [Project UDI](http://www.projectudi.org/), a multi-company effort to define
+ a Uniform Driver Interface
+
+ * [The Free Software Movement and
+ UDI](http://www.gnu.org/philosophy/udi.html)
+
+ * [OSKit](http://www.cs.utah.edu/flux/oskit/)
+
+ * [Unofficial OSKit source](http://www.nongnu.org/oskit/) on Savannah
+
+ * [[microkernel/Mach]]-like
+
+ It might be possible to integrate these systems' device drivers, as they're
+ expected to mostly be using the same interfaces as the current in-kernel
+ Mach drivers are.
+
+ * OSF Mach
+
+ * Darwin
diff --git a/open_issues/dir-lookup_authority.mdwn b/open_issues/dir-lookup_authority.mdwn
new file mode 100644
index 00000000..64866eb5
--- /dev/null
+++ b/open_issues/dir-lookup_authority.mdwn
@@ -0,0 +1,68 @@
+[[!meta copyright="Copyright © 2010 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_hurd]]
+
+IRC, unknown channel, unknown date.
+
+ <cfhammar> I have discovered a bug in the dir-lookup protocol though
+ <cfhammar> Currently, I'm investigating the bug a bit further
+ <cfhammar> when doing dir-lookups with several path components, the look-up is done with the authority of the user who opened the directory, as opposed to the user doing the lookup
+ <cfhammar> e.g, consider foo/bar/baz, where bar can only be used by its owner and foo and baz are world readable
+ <cfhammar> if foo is opened, then transferred to another user, he can open baz, which he shouldn't be able to
+ <cfhammar> this is possible where foo/bar/baz is within a single translator, and the lookup is done in a single dir-lookup
+ <antrik> cfhammar: I'm not sure this is a bug
+ <cfhammar> I have a test case that triggers the bug, and another that doesn't which currently confuses me
+ <antrik> cfhammar: it's probably not very usual to pass around open directory ports; but if somebody does it, it's probably actually desired that it keeps the authority
+ <antrik> it's kinda consistent with passing normal FDs
+ <cfhammar> antrik: it should only allow accesses to entries not sub-entries
+ <cfhammar> antrik: it isn't allowed in Linux atleast, and I'm guessing it's mandated by posix
+ <cfhammar> also note that a more common scenario is a process that opens a directory and then drops authority
+ <cfhammar> probably more common, that is
+ <antrik> cfhammar: I'm not really familiar with directory access functions... I wasn't even aware that it's possible to pass around directory FDs
+ <antrik> but if it is, it would indeed be good to know what POSIX says about this
+ <antrik> cfhammar: I don't see how this is related?...
+ <cfhammar> antrik: after the process has dropped authority it can still make lookups in directories that it should no longer be able to
+ <antrik> cfhammar: interesting point...
+ <antrik> cfhammar: do you think this is fixable?
+ <cfhammar> antrik: Not without (defacto) changing the interface
+ <cfhammar> e.g only looking up a singe path component at a time
+ <cfhammar> or doing the auth check lazily on io_reauthenticate
+ <antrik> cfhammar: yeah, obviously it's not possible without an API change. I just wonder whether it's possible without throwing the current auth/lookup mechanism overboard alltogether...
+ <cfhammar> antrik: both my solutions are only minor changes to the API, but fairly major in the sense that we need to change all callers :-(
+ <cfhammar> diskfs_S_dir_lookup is a very large function, for example
+ <antrik> cfhammar: OK
+ <antrik> cfhammar: I wonder whether there is a possible transition path without breaking all existing installations...
+ <cfhammar> we could provide a new RPC while supporting the old one
+ <cfhammar> note that changing fs.defs only affects glibc and the Hurd, normal apps should be fine
+ <antrik> cfhammar: have you posted your findings to the ML yet?
+ <cfhammar> No, I'm still investigating why my second test-case doesn't trigger the bug
+ <cfhammar> Intrestingly it's the one using all POSIX functions...
+ <cfhammar> Perhaps its a bug that maskes the lookup bug ;-)
+ <antrik> I guess there is some quirk which you do not fully understand yet :-)
+ <cfhammar> Oh, there's always a new quirk to find in the Hurd :-)
+ <cfhammar> antrik: seems that dir_lookup isn't buggy after all
+ <cfhammar> antrik: as all FDs are reauthenticated on setauth
+ <antrik> ah
+ <cfhammar> antrik: and (presumably) ports are unauthenticated and reauthenticated when transfered
+ <antrik> yeah, that's the idea behind the auth protocol...
+ <antrik> users obtain specific capabilities by authenticating generic ports against their own ID
+ <cfhammar> I didn't really have a coherent view on how open flags are handled on reauth
+ <cfhammar> it seems open flags always win, so that a O_READ port that is unauthed is still readable
+ <antrik> not sure what you mean
+ <cfhammar> if I open a file to read it, then reauth it with a user that isn't permitted to read it, I can still read from it
+ <cfhammar> (as it should be)
+ <cfhammar> by contrast permission to do lookups in a directory is determined by who authed it
+ <cfhammar> so I won't be able to do lookups after a reauth, if it's not permitted by the file bits
+ <youpi> Mmm, openat should however be able to
+ <youpi> since you've first opened the directory with the auth
+ <cfhammar> it isn't since open FDs are reauthed on setauth
+ <cfhammar> not sure whether it should though, Linux behaves the same way atleast
+ <cfhammar> though it could be done with POSIX.2008's O_SEARCH open flag
diff --git a/open_issues/duplicate_inclusion_guards.mdwn b/open_issues/duplicate_inclusion_guards.mdwn
new file mode 100644
index 00000000..1bb8fc36
--- /dev/null
+++ b/open_issues/duplicate_inclusion_guards.mdwn
@@ -0,0 +1,16 @@
+[[!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_mig]]
+
+E.g., both `/usr/include/hurd/process.h` and
+`/usr/include/hurd/process_request.h` use `_process_user_` as an inclusion
+guard. This leads to problems when both are needed, as is the case in
+[[GDB]]'s `gdb/gnu-nat.c`.
diff --git a/open_issues/e2fsck_i_file_acl_hi.mdwn b/open_issues/e2fsck_i_file_acl_hi.mdwn
new file mode 100644
index 00000000..d03b733c
--- /dev/null
+++ b/open_issues/e2fsck_i_file_acl_hi.mdwn
@@ -0,0 +1,38 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+IRC, unknown channel, unknown date.
+
+ <Duck> something's broken in ext2, fsck, or the like
+ <Duck> /dev/hd0s1: i_file_acl_hi for inode 81872 (/proc) is 32, shoud be 0.
+ <Duck> youpi: the other problem is probably related to http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=526524
+ <Duck> i'll just check when it is fixed
+ <antrik> youpi: I've seen a lot of these fsck errors since the upgrade to 1.41.x
+ <antrik> youpi: seems to happen whenever a passive translator is still active while the machine reboots
+ <Duck> antrik: ho, so in my example this could be related to procfs then
+ <antrik> Duck: don't know... I got it with various terminal-related nodes
+ <antrik> other translators get terminated before ext2 it seems, so the problem doesn't happen there
+ <antrik> unless the machine crashes of course
+ <antrik> ah, right, it told you that it's the /proc node :-)
+ <antrik> was it the only node it complained about?
+ <antrik> Duck: ^
+ <Duck> antrik: yes, the only one
+ <youpi> so it's most probably i
+ <youpi> t
+ <Duck> but currently i don't have much translators around besides the base install
+ <antrik> that's strange... my theory about translators active at reboot seems wrong then
+ <youpi> well, maybe procps is not behaving properly
+ <youpi> procfs*
+ <antrik> youpi: I doubt it. I regularily get the same issue with various term nodes; and when the machine crashes rather than rebooting cleanly, many other nodes as well
+ <youpi> k
+ <antrik> but it's always passive translator nodes
+
+This is due to an erroneous read/write from e2fsck, see
+<http://sourceforge.net/tracker/?func=detail&aid=3379227&group_id=2406&atid=102406>.
diff --git a/open_issues/elinks.mdwn b/open_issues/elinks.mdwn
new file mode 100644
index 00000000..ee372971
--- /dev/null
+++ b/open_issues/elinks.mdwn
@@ -0,0 +1,28 @@
+[[!meta copyright="Copyright © 2010 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]]
+
+IRC, unknown channel, 2008-05-26 and later
+
+ <paakku> In elinks/src/network/state.h, there is an assumption that values of errno are between 0 and 100000. Now looking at glibc-2.5/sysdeps/mach/hurd/bits/errno.h, I see that you're using values outside this range. Have there been problems because of this?
+ <youpi> eeerf
+ <youpi> I had never seen a program assuming that
+ <youpi> that sucks
+ <paakku> It can be fixed, but that'd require some work, so I'd like to first have a clear idea of the effects.
+ <youpi> fixed where ?
+ <paakku> in elinks
+ <youpi> k
+ <paakku> by allocating just one number from our enum connection_state for system errors, and then stashing the errno value in a separate variable.
+ <paakku> Anyway, if you see this cause any user-visible bugs in ELinks, please report.
+
+ <kahmalo> I mentioned here on 2008-05-26 that ELinks assumes errno values are between 0 and 100000 whereas the Hurd uses other values. I fixed this in ELinks last weekend; the most recent 0.12 and 0.13 snapshots should include the fix. If you find any remaining errno assumptions, please post to: http://bugzilla.elinks.cz/show_bug.cgi?id=1013
+ <kahmalo> or to one of our mailing lists.
+ <kahmalo> I guess the pflocal select() bug http://savannah.gnu.org/bugs/?22861 is the primary hindrance to running ELinks on the Hurd. Has any decision been made on how that will be fixed?
diff --git a/open_issues/emacs.mdwn b/open_issues/emacs.mdwn
new file mode 100644
index 00000000..cdd1b10d
--- /dev/null
+++ b/open_issues/emacs.mdwn
@@ -0,0 +1,1527 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="GNU Emacs"]]
+
+[[!tag open_issue_porting]]
+
+GNU Emacs mostly does work, however there are a few issues.
+
+ * `dired` on a directory hangs. (Use `C-g C-g` to break the unresponsive
+ operation.)
+
+ * Configuration in `src/s/`: `gnu.h` uses `bsd-common.h`. `gnu-kfreebsd.h`
+ uses `gnu-linux.h` -- we probably should too.
+
+ * `gnu-linux.h` makes a few things depend on `/proc` (also see
+ `HAVE_PROCFS`) -- either resort to our own ways, or enhance our
+ [[hurd/translator/procfs]] accordingly.
+
+ * `sysdep.c`
+
+ * Got a hang when compiling GNU Emacs 23, when it was compiling `.el` to
+ `.elc` files. Looked like busy-looping inside glibc. This was not
+ reproducible so far.
+
+ * Debian emacs23_23.1+1-2, grubber, (probably) busy-looping in `ext2fs` on
+ `/media/data` when resuming emacs23 build in `~/tmp/emacs/emacs23-*/`
+ (`dpkg-buildpackage -B -uc -nc 2>&1 | tee L`). No modifications to
+ `emacs23-*` so far, I think. Hangs always in the same place, it seems, and
+ reproducible. Tarred to `emacs23-23.1+1.tar.bz2` (beware: empty and
+ zero-permission files:
+ `emacs23-23.1+1/.pc/debian-site-init-el.diff/lisp/site-init.el`,
+ `emacs23-23.1+1/.pc/autofiles.diff/src/config.in~`). At hang-time: the
+ rootfs is fine (`syncfs -c -s /` works; `syncfs` involving `/media/data`
+ hangs). Plan: GDB on that ext2fs, and see what's hanging / locked. [[!tag
+ open_issue_hurd]]
+
+
+---
+
+# 2010-10-11
+
+Apparently, none of the Debian emacs packages are installable at the moment.
+
+Try to compile bzr trunk.
+
+System (sort-of) crashed during build. Perhaps while / or shortly after
+dumping `src/emacs`, as there was such a zero-sized file. (Log file doesn't
+show anything useful.) Removed the truncated `src/emacs`, continued build:
+
+ [...]
+ Compiling /home/tschwinge/tmp/emacs/trunk/lisp/cedet/srecode/mode.el
+ Parsing *srecode-map-tmp* (LALR)...
+ Parsing *srecode-map-tmp* (LALR)...done
+ Segmentation fault
+ make[2]: *** [cedet/srecode/mode.elc] Error 139
+ make[2]: Leaving directory `/media/data/home/tschwinge/tmp/emacs/trunk.build/lisp'
+ make[1]: *** [compile-main] Error 2
+ make[1]: Leaving directory `/media/data/home/tschwinge/tmp/emacs/trunk.build/lisp'
+ make: *** [lisp] Error 2
+
+Command line:
+
+ $ EMACSLOADPATH=/home/tschwinge/tmp/emacs/trunk/lisp LC_ALL=C /home/tschwinge/tmp/emacs/trunk.build/src/emacs -batch --no-site-file -f batch-byte-compile /home/tschwinge/tmp/emacs/trunk/lisp/cedet/srecode/mode.el
+
+GDB:
+
+ Program received signal SIGSEGV, Segmentation fault.
+ mark_object (arg=1) at /home/tschwinge/tmp/emacs/trunk/src/alloc.c:5343
+ 5343 if (STRING_MARKED_P (ptr))
+ (gdb) bt
+ #0 mark_object (arg=1) at /home/tschwinge/tmp/emacs/trunk/src/alloc.c:5343
+ #1 0x0818080f in Fgarbage_collect () at /home/tschwinge/tmp/emacs/trunk/src/alloc.c:4993
+ #2 0x08196db3 in Ffuncall (nargs=1, args=0x23fce70) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:2987
+ #3 0x081ce8e1 in Fbyte_code (bytestr=139696577, vector=141708997, maxdepth=28) at /home/tschwinge/tmp/emacs/trunk/src/bytecode.c:679
+ #4 0x08196894 in funcall_lambda (fun=<value optimized out>, nargs=<value optimized out>, arg_vector=0x1) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3174
+ #5 0x08196bb3 in Ffuncall (nargs=1, args=0x23fcff0) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3047
+ #6 0x081ce8e1 in Fbyte_code (bytestr=139922913, vector=141583493, maxdepth=28) at /home/tschwinge/tmp/emacs/trunk/src/bytecode.c:679
+ #7 0x08196894 in funcall_lambda (fun=<value optimized out>, nargs=<value optimized out>, arg_vector=0x1) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3174
+ #8 0x08196bb3 in Ffuncall (nargs=3, args=0x23fd170) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3047
+ #9 0x081ce8e1 in Fbyte_code (bytestr=140515737, vector=141583205, maxdepth=24) at /home/tschwinge/tmp/emacs/trunk/src/bytecode.c:679
+ #10 0x08196894 in funcall_lambda (fun=<value optimized out>, nargs=<value optimized out>, arg_vector=0x1) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3174
+ #11 0x08196bb3 in Ffuncall (nargs=2, args=0x23fd2f0) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3047
+ #12 0x081ce8e1 in Fbyte_code (bytestr=139911193, vector=139312997, maxdepth=12) at /home/tschwinge/tmp/emacs/trunk/src/bytecode.c:679
+ #13 0x08196894 in funcall_lambda (fun=<value optimized out>, nargs=<value optimized out>, arg_vector=0x1) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3174
+ #14 0x08196bb3 in Ffuncall (nargs=3, args=0x23fd460) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3047
+ #15 0x081ce8e1 in Fbyte_code (bytestr=136508105, vector=136508125, maxdepth=20) at /home/tschwinge/tmp/emacs/trunk/src/bytecode.c:679
+ #16 0x08196894 in funcall_lambda (fun=<value optimized out>, nargs=<value optimized out>, arg_vector=0x1) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3174
+ #17 0x08196bb3 in Ffuncall (nargs=3, args=0x23fd5e0) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3047
+ #18 0x081ce8e1 in Fbyte_code (bytestr=136508849, vector=136508869, maxdepth=20) at /home/tschwinge/tmp/emacs/trunk/src/bytecode.c:679
+ #19 0x08196894 in funcall_lambda (fun=<value optimized out>, nargs=<value optimized out>, arg_vector=0x1) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3174
+ #20 0x08195bff in apply_lambda (fun=136508805, args=139814646, eval_flag=1) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3100
+ #21 0x08195ef4 in Feval (form=139814582) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:2412
+ #22 0x081bb206 in readevalloop (readcharfun=138475290, stream=<value optimized out>, sourcename=139636697, printflag=0, unibyte=138364586, readfun=138364586,
+ start=138364586, end=138364586, evalfun=<value optimized out>) at /home/tschwinge/tmp/emacs/trunk/src/lread.c:1734
+ #23 0x081bbad7 in Fload (file=140023529, noerror=138364586, nomessage=138364610, nosuffix=138364586, must_suffix=138364586)
+ at /home/tschwinge/tmp/emacs/trunk/src/lread.c:1225
+ #24 0x081a1357 in Frequire (feature=141037690, filename=138364586, noerror=138364586) at /home/tschwinge/tmp/emacs/trunk/src/fns.c:2694
+ #25 0x08196d83 in Ffuncall (nargs=2, args=0x23fdb90) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:2996
+ #26 0x081ce8e1 in Fbyte_code (bytestr=140023705, vector=141489853, maxdepth=8) at /home/tschwinge/tmp/emacs/trunk/src/bytecode.c:679
+ #27 0x08196304 in Feval (form=141177630) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:2358
+ #28 0x081bb206 in readevalloop (readcharfun=138475290, stream=<value optimized out>, sourcename=140023785, printflag=0, unibyte=138364586, readfun=138364586,
+ start=138364586, end=138364586, evalfun=<value optimized out>) at /home/tschwinge/tmp/emacs/trunk/src/lread.c:1734
+ #29 0x081bbad7 in Fload (file=139743441, noerror=138364586, nomessage=138364610, nosuffix=138364586, must_suffix=138364586)
+ at /home/tschwinge/tmp/emacs/trunk/src/lread.c:1225
+ #30 0x081a1357 in Frequire (feature=140528330, filename=138364586, noerror=138364586) at /home/tschwinge/tmp/emacs/trunk/src/fns.c:2694
+ #31 0x08196d83 in Ffuncall (nargs=2, args=0x23fe030) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:2996
+ #32 0x081ce8e1 in Fbyte_code (bytestr=139743489, vector=139592949, maxdepth=8) at /home/tschwinge/tmp/emacs/trunk/src/bytecode.c:679
+ #33 0x08196304 in Feval (form=139785254) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:2358
+ #34 0x081bb206 in readevalloop (readcharfun=138475290, stream=<value optimized out>, sourcename=139743569, printflag=0, unibyte=138364586, readfun=138364586,
+ start=138364586, end=138364586, evalfun=<value optimized out>) at /home/tschwinge/tmp/emacs/trunk/src/lread.c:1734
+ #35 0x081bbad7 in Fload (file=139985769, noerror=138364586, nomessage=138364610, nosuffix=138364586, must_suffix=138364586)
+ at /home/tschwinge/tmp/emacs/trunk/src/lread.c:1225
+ #36 0x081a1357 in Frequire (feature=140528282, filename=138364586, noerror=138364586) at /home/tschwinge/tmp/emacs/trunk/src/fns.c:2694
+ #37 0x08196d83 in Ffuncall (nargs=2, args=0x23fe5c4) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:2996
+ #38 0x0819879e in Fapply (nargs=2, args=0x23fe5c4) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:2453
+ #39 0x08196e26 in Ffuncall (nargs=3, args=0x23fe5c0) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:2971
+ #40 0x081ce8e1 in Fbyte_code (bytestr=139665665, vector=140243293, maxdepth=12) at /home/tschwinge/tmp/emacs/trunk/src/bytecode.c:679
+ #41 0x08196894 in funcall_lambda (fun=<value optimized out>, nargs=<value optimized out>, arg_vector=0x1) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3174
+ #42 0x08196bb3 in Ffuncall (nargs=2, args=0x23fe730) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3047
+ #43 0x081ce8e1 in Fbyte_code (bytestr=139663633, vector=140113917, maxdepth=16) at /home/tschwinge/tmp/emacs/trunk/src/bytecode.c:679
+ #44 0x08196894 in funcall_lambda (fun=<value optimized out>, nargs=<value optimized out>, arg_vector=0x1) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3174
+ #45 0x08196bb3 in Ffuncall (nargs=2, args=0x23fe8a0) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3047
+ #46 0x081ce8e1 in Fbyte_code (bytestr=139651313, vector=141733317, maxdepth=16) at /home/tschwinge/tmp/emacs/trunk/src/bytecode.c:679
+ #47 0x08196894 in funcall_lambda (fun=<value optimized out>, nargs=<value optimized out>, arg_vector=0x1) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3174
+ #48 0x08196bb3 in Ffuncall (nargs=1, args=0x23fea20) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3047
+ #49 0x081961cd in Feval (form=142062606) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:2324
+ #50 0x08198ec2 in internal_lisp_condition_case (var=139619738, bodyform=142062606, handlers=142059126) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:1407
+ #51 0x081cdb3a in Fbyte_code (bytestr=139651065, vector=138947149, maxdepth=64) at /home/tschwinge/tmp/emacs/trunk/src/bytecode.c:869
+ #52 0x08196894 in funcall_lambda (fun=<value optimized out>, nargs=<value optimized out>, arg_vector=0x1) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3174
+ #53 0x08196bb3 in Ffuncall (nargs=3, args=0x23fed10) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3047
+ #54 0x081ce8e1 in Fbyte_code (bytestr=139638617, vector=140190309, maxdepth=32) at /home/tschwinge/tmp/emacs/trunk/src/bytecode.c:679
+ #55 0x08196894 in funcall_lambda (fun=<value optimized out>, nargs=<value optimized out>, arg_vector=0x1) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3174
+ #56 0x08195bff in apply_lambda (fun=141815293, args=139024998, eval_flag=1) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3100
+ #57 0x08195ef4 in Feval (form=139025038) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:2412
+ #58 0x08198ec2 in internal_lisp_condition_case (var=138727490, bodyform=139025038, handlers=138994086) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:1407
+ #59 0x081cdb3a in Fbyte_code (bytestr=141397873, vector=139422605, maxdepth=12) at /home/tschwinge/tmp/emacs/trunk/src/bytecode.c:869
+ #60 0x08196894 in funcall_lambda (fun=<value optimized out>, nargs=<value optimized out>, arg_vector=0x1) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3174
+ #61 0x08196bb3 in Ffuncall (nargs=2, args=0x23ff150) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3047
+ #62 0x081ce8e1 in Fbyte_code (bytestr=141396361, vector=138448733, maxdepth=20) at /home/tschwinge/tmp/emacs/trunk/src/bytecode.c:679
+ #63 0x08196894 in funcall_lambda (fun=<value optimized out>, nargs=<value optimized out>, arg_vector=0x1) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3174
+ #64 0x08196bb3 in Ffuncall (nargs=1, args=0x23ff2d0) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3047
+ #65 0x081ce8e1 in Fbyte_code (bytestr=136699577, vector=136699597, maxdepth=40) at /home/tschwinge/tmp/emacs/trunk/src/bytecode.c:679
+ #66 0x08196894 in funcall_lambda (fun=<value optimized out>, nargs=<value optimized out>, arg_vector=0x1) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3174
+ #67 0x08196bb3 in Ffuncall (nargs=2, args=0x23ff460) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3047
+ #68 0x081ce8e1 in Fbyte_code (bytestr=136685793, vector=136685813, maxdepth=28) at /home/tschwinge/tmp/emacs/trunk/src/bytecode.c:679
+ #69 0x08196894 in funcall_lambda (fun=<value optimized out>, nargs=<value optimized out>, arg_vector=0x1) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3174
+ #70 0x08196bb3 in Ffuncall (nargs=1, args=0x23ff5e0) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3047
+ #71 0x081ce8e1 in Fbyte_code (bytestr=136683265, vector=136683285, maxdepth=24) at /home/tschwinge/tmp/emacs/trunk/src/bytecode.c:679
+ #72 0x08196894 in funcall_lambda (fun=<value optimized out>, nargs=<value optimized out>, arg_vector=0x1) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3174
+ #73 0x08195bff in apply_lambda (fun=136683245, args=138364586, eval_flag=1) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:3100
+ #74 0x08195ef4 in Feval (form=138740766) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:2412
+ #75 0x0812dd83 in top_level_2 () at /home/tschwinge/tmp/emacs/trunk/src/keyboard.c:1336
+ #76 0x081951dc in internal_condition_case (bfun=0x812dd70 <top_level_2>, handlers=138394034, hfun=0x8132020 <cmd_error>)
+ at /home/tschwinge/tmp/emacs/trunk/src/eval.c:1460
+ #77 0x08131de5 in top_level_1 (ignore=138364586) at /home/tschwinge/tmp/emacs/trunk/src/keyboard.c:1344
+ #78 0x081952a9 in internal_catch (tag=138392170, func=0x8131d80 <top_level_1>, arg=138364586) at /home/tschwinge/tmp/emacs/trunk/src/eval.c:1204
+ #79 0x08131e53 in command_loop () at /home/tschwinge/tmp/emacs/trunk/src/keyboard.c:1299
+ #80 0x0813220a in recursive_edit_1 () at /home/tschwinge/tmp/emacs/trunk/src/keyboard.c:929
+ #81 0x08132332 in Frecursive_edit () at /home/tschwinge/tmp/emacs/trunk/src/keyboard.c:991
+ #82 0x0812727b in main (argc=<value optimized out>, argv=0x23ffad8) at /home/tschwinge/tmp/emacs/trunk/src/emacs.c:1718
+
+Next: restarted from scratch, rebuilt without optimizations.
+`--prefix=$PWD.install --build=i686-pc-gnu --enable-asserts
+--enable-checking=all CFLAGS=-g`
+
+ $ make
+ [...]
+ Dumping under the name emacs [sits here for a long time]
+
+ $ vmstat
+ pagesize: 4K
+ size: 324M
+ free: 9.16M
+ active: 56M
+ inactive: 242M
+ wired: 17.6M
+ zero filled: 8.75G
+ reactivated: 0
+ pageins: 289M
+ pageouts: 371M
+ page faults: 12508128
+ cow faults: 1411724
+ memobj hit ratio: 99%
+ swap size: 512M
+ swap free: 512M
+
+Apparently low memory, but doesn't swap out.
+
+Uses a lot of CPU time, as observed with `xm top`.
+
+Creating another `screen` window as user tschwinge doesn't get to the shell
+prompt.
+
+Running `vmstat` works in a `screen` window that is already open, but running
+`ps -Af` just hangs; adding `-M` helps.
+
+Perhaps the /media/data/ file system (which backs /home/) is in a inconsistent
+state / deadlocked?
+
+More specifically, this does not work / does not exit:
+
+ login> syncfs -s -c /media/data/ &
+ [2] 10785
+
+But this works:
+
+ login> syncfs -s -c / &
+ [3] 10786
+ login>
+ [3]+ Done syncfs -s -c /
+
+Thus, the rootfs still is responsive; /media/data/ is not.
+
+ login> ps -F hurd-long -T -M -w -A &
+ [4] 10796
+ login> PID TH# UID PPID PGrp Sess TH Vmem RSS %CPU User System Args
+ 0 0 1 1 1 16 132M 1M 0.0 0:04.84 0:54.84 /hurd/proc
+ 0 0.0 0:00.00 0:00.13
+ 1 0.0 0:00.30 0:03.55
+ 2 0.0 0:00.30 0:04.21
+ 3 0.0 0:00.65 0:06.88
+ 4 0.0 0:00.02 0:00.31
+ 5 0.0 0:00.32 0:03.72
+ 6 0.0 0:00.00 0:00.23
+ 7 0.0 0:00.00 0:00.03
+ 8 0.0 0:00.30 0:03.17
+ 9 0.0 0:00.47 0:04.69
+ 10 0.0 0:00.62 0:06.42
+ 11 0.0 0:00.40 0:05.91
+ 12 0.0 0:00.47 0:04.18
+ 13 0.0 0:00.10 0:00.73
+ 14 0.0 0:00.56 0:05.97
+ 15 0.0 0:00.26 0:04.61
+ 1 0 1 1 1 1 146M 368K 0.0 0:00.00 0:00.03 /hurd/init root=device:hd0
+ 0 0.0 0:00.00 0:00.03
+ 2 - 1 1 1 7 418M 19.5M 0.0 0:00.00 0:12.16 root=device:hd0
+ 0 0.0 0:00.00 0:00.00
+ 1 92.6 0:00.00 46:33.66
+ 2 0.0 0:00.00 0:12.07
+ 3 0.0 0:00.00 0:00.05
+ 4 0.0 0:00.00 0:00.02
+ 5 0.0 0:00.00 0:00.00
+ 6 0.0 0:00.00 0:00.01
+ 3 0 1 1 1 173 409M 15.7M 0.2 4:39.39 34:08.86 ext2fs -A --multiboot-command-line=root=device:hd0 --host-priv-port=1 --device-master-port=2 --
+ M-exec-server-task=3 -T typed device:hd0
+ 0 0.0 0:00.00 0:00.02
+ 1 0.0 0:21.78 2:32.67
+ 2 0.0 0:00.15 0:01.33
+ 3 0.0 0:00.07 0:01.13
+ 4 0.0 0:22.09 2:32.56
+ 5 0.0 0:00.11 0:01.30
+ 6 0.0 0:21.57 2:32.78
+ 7 0.2 0:04.10 0:54.37
+ 8 0.0 0:00.00 0:00.01
+ 9 0.0 0:20.96 2:30.00
+ 10 0.0 0:00.09 0:01.05
+ 11 0.0 0:00.09 0:00.94
+ 12 0.0 0:21.59 2:32.40
+ 13 0.0 0:21.50 2:32.02
+ 14 0.0 0:00.00 0:00.92
+ 15 0.0 0:00.07 0:00.60
+ 16 0.0 0:00.09 0:00.86
+ 17 0.0 0:00.04 0:00.88
+ 18 0.0 0:00.13 0:00.91
+ 19 0.0 0:00.04 0:00.91
+ 20 0.0 0:00.02 0:00.89
+ 21 0.0 0:00.08 0:00.97
+ 22 0.0 0:00.05 0:00.84
+ 23 0.0 0:00.04 0:00.86
+ 24 0.0 0:00.09 0:00.86
+ 25 0.0 0:00.11 0:00.88
+ 26 0.0 0:00.04 0:00.64
+ 27 0.0 0:21.10 2:32.22
+ 28 0.0 0:20.32 2:29.92
+ 29 0.0 0:20.58 2:31.51
+ 30 0.0 0:20.50 2:32.72
+ 31 0.0 0:21.05 2:30.05
+ 32 0.0 0:19.78 2:33.40
+ 33 0.0 0:20.55 2:31.88
+ 34 0.0 0:00.00 0:00.06
+ 35 0.0 0:00.00 0:00.07
+ 36 0.0 0:00.00 0:00.02
+ 37 0.0 0:00.01 0:00.05
+ 38 0.0 0:00.00 0:00.03
+ 39 0.0 0:00.00 0:00.02
+ 40 0.0 0:00.00 0:00.06
+ 41 0.0 0:00.02 0:00.02
+ 42 0.0 0:00.00 0:00.03
+ 43 0.0 0:00.00 0:00.05
+ 44 0.0 0:00.00 0:00.07
+ 45 0.0 0:00.00 0:00.02
+ 46 0.0 0:00.00 0:00.02
+ 47 0.0 0:00.00 0:00.04
+ 48 0.0 0:00.00 0:00.03
+ 49 0.0 0:00.00 0:00.03
+ 50 0.0 0:00.00 0:00.05
+ 51 0.0 0:00.00 0:00.05
+ 52 0.0 0:00.00 0:00.04
+ 53 0.0 0:00.00 0:00.04
+ 54 0.0 0:00.00 0:00.02
+ 55 0.0 0:00.00 0:00.03
+ 56 0.0 0:00.01 0:00.01
+ 57 0.0 0:00.03 0:00.01
+ 58 0.0 0:00.01 0:00.00
+ 59 0.0 0:00.00 0:00.00
+ 60 0.0 0:00.00 0:00.00
+ 61 0.0 0:00.00 0:00.03
+ 62 0.0 0:00.00 0:00.00
+ 63 0.0 0:00.00 0:00.08
+ 64 0.0 0:00.00 0:00.06
+ 65 0.0 0:00.01 0:00.00
+ 66 0.0 0:00.00 0:00.07
+ 67 0.0 0:00.00 0:00.01
+ 68 0.0 0:00.02 0:00.02
+ 69 0.0 0:00.01 0:00.02
+ 70 0.0 0:00.01 0:00.01
+ 71 0.0 0:00.01 0:00.04
+ 72 0.0 0:00.00 0:00.01
+ 73 0.0 0:00.01 0:00.00
+ 74 0.0 0:00.00 0:00.06
+ 75 0.0 0:00.00 0:00.04
+ 76 0.0 0:00.02 0:00.05
+ 77 0.0 0:00.00 0:00.03
+ 78 0.0 0:00.00 0:00.02
+ 79 0.0 0:00.00 0:00.05
+ 80 0.0 0:00.01 0:00.00
+ 81 0.0 0:00.00 0:00.02
+ 82 0.0 0:00.00 0:00.03
+ 83 0.0 0:00.00 0:00.00
+ 84 0.0 0:00.00 0:00.00
+ 85 0.0 0:00.00 0:00.04
+ 86 0.0 0:00.00 0:00.04
+ 87 0.0 0:00.00 0:00.02
+ 88 0.0 0:00.01 0:00.00
+ 89 0.0 0:00.00 0:00.04
+ 90 0.0 0:00.00 0:00.04
+ 91 0.0 0:00.00 0:00.05
+ 92 0.0 0:00.00 0:00.02
+ 93 0.0 0:00.00 0:00.03
+ 94 0.0 0:00.00 0:00.02
+ 95 0.0 0:00.00 0:00.01
+ 96 0.0 0:00.00 0:00.02
+ 97 0.0 0:00.00 0:00.03
+ 98 0.0 0:00.00 0:00.05
+ 99 0.0 0:00.00 0:00.04
+ 100 0.0 0:00.00 0:00.03
+ 101 0.0 0:00.00 0:00.01
+ 102 0.0 0:00.00 0:00.01
+ 103 0.0 0:00.00 0:00.05
+ 104 0.0 0:00.00 0:00.06
+ 105 0.0 0:00.01 0:00.04
+ 106 0.0 0:00.00 0:00.00
+ 107 0.0 0:00.01 0:00.02
+ 108 0.0 0:00.00 0:00.00
+ 109 0.0 0:00.00 0:00.02
+ 110 0.0 0:00.00 0:00.01
+ 111 0.0 0:00.00 0:00.02
+ 112 0.0 0:00.01 0:00.04
+ 113 0.0 0:00.01 0:00.01
+ 114 0.0 0:00.00 0:00.02
+ 115 0.0 0:00.01 0:00.02
+ 116 0.0 0:00.01 0:00.03
+ 117 0.0 0:00.00 0:00.03
+ 118 0.0 0:00.01 0:00.01
+ 119 0.0 0:00.00 0:00.01
+ 120 0.0 0:00.00 0:00.05
+ 121 0.0 0:00.00 0:00.02
+ 122 0.0 0:00.00 0:00.02
+ 123 0.0 0:00.00 0:00.04
+ 124 0.0 0:00.00 0:00.04
+ 125 0.0 0:00.00 0:00.02
+ 126 0.0 0:00.00 0:00.02
+ 127 0.0 0:00.01 0:00.01
+ 128 0.0 0:00.00 0:00.01
+ 129 0.0 0:00.01 0:00.03
+ 130 0.0 0:00.01 0:00.05
+ 131 0.0 0:00.00 0:00.02
+ 132 0.0 0:00.00 0:00.03
+ 133 0.0 0:00.00 0:00.03
+ 134 0.0 0:00.00 0:00.02
+ 135 0.0 0:00.00 0:00.00
+ 136 0.0 0:00.00 0:00.01
+ 137 0.0 0:00.01 0:00.03
+ 138 0.0 0:00.00 0:00.03
+ 139 0.0 0:00.00 0:00.02
+ 140 0.0 0:00.01 0:00.01
+ 141 0.0 0:00.01 0:00.02
+ 142 0.0 0:00.00 0:00.00
+ 143 0.0 0:00.00 0:00.02
+ 144 0.0 0:00.01 0:00.00
+ 145 0.0 0:00.00 0:00.01
+ 146 0.0 0:00.00 0:00.00
+ 147 0.0 0:00.00 0:00.00
+ 148 0.0 0:00.00 0:00.03
+ 149 0.0 0:00.00 0:00.00
+ 150 0.0 0:00.00 0:00.01
+ 151 0.0 0:00.00 0:00.00
+ 152 0.0 0:00.00 0:00.01
+ 153 0.0 0:00.00 0:00.00
+ 154 0.0 0:00.00 0:00.00
+ 155 0.0 0:00.00 0:00.00
+ 156 0.0 0:00.00 0:00.00
+ 157 0.0 0:00.00 0:00.01
+ 158 0.0 0:00.00 0:00.00
+ 159 0.0 0:00.00 0:00.01
+ 160 0.0 0:00.00 0:00.01
+ 161 0.0 0:00.00 0:00.00
+ 162 0.0 0:00.00 0:00.00
+ 163 0.0 0:00.00 0:00.00
+ 164 0.0 0:00.00 0:00.01
+ 165 0.0 0:00.00 0:00.00
+ 166 0.0 0:00.00 0:00.00
+ 167 0.0 0:00.00 0:00.00
+ 168 0.0 0:00.00 0:00.00
+ 169 0.0 0:00.00 0:00.00
+ 170 0.0 0:00.00 0:00.00
+ 171 0.0 0:00.00 0:00.00
+ 172 0.0 0:00.00 0:00.00
+ 4 0 3 1 1 6 131M 1.32M 0.0 0:02.20 0:26.26 /hurd/exec
+ 0 0.0 0:00.43 0:05.32
+ 1 0.0 0:00.41 0:05.54
+ 2 0.0 0:00.44 0:05.38
+ 3 0.0 0:00.00 0:00.00
+ 4 0.0 0:00.45 0:05.05
+ 5 0.0 0:00.44 0:04.95
+ 5 0 1 1 1 6 130M 580K 0.0 0:01.17 0:14.92 /hurd/auth
+ 0 0.0 0:00.20 0:02.99
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.24 0:03.03
+ 3 0.0 0:00.18 0:02.86
+ 4 0.0 0:00.22 0:03.01
+ 5 0.0 0:00.31 0:03.01
+ 6 0 1 6 6 2 147M 1.09M 0.0 0:00.01 0:00.13 /bin/bash /libexec/runsystem root=device:hd0
+ 0 0.0 0:00.01 0:00.13
+ 1 0.0 0:00.00 0:00.00
+ 7 0 3 1 1 7 130M 880K 0.1 0:00.35 0:10.10 /hurd/term /dev/console device console
+ 0 0.0 0:00.07 0:01.15
+ 1 0.0 0:00.00 0:00.01
+ 2 0.0 0:00.14 0:03.10
+ 3 0.1 0:00.10 0:01.87
+ 4 0.0 0:00.01 0:00.50
+ 5 0.0 0:00.00 0:01.54
+ 6 0.0 0:00.02 0:01.91
+ 9 0 3 1 1 19 131M 1.13M 0.0 0:05.41 1:17.29 /hurd/pflocal
+ 0 0.0 0:00.06 0:00.48
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.05 0:00.48
+ 3 0.0 0:00.78 0:09.10
+ 4 0.0 0:00.49 0:06.13
+ 5 0.0 0:00.56 0:07.07
+ 6 0.0 0:00.30 0:03.41
+ 7 0.0 0:00.47 0:05.58
+ 8 0.0 0:00.27 0:06.00
+ 9 0.0 0:00.04 0:00.47
+ 10 0.0 0:00.43 0:06.17
+ 11 0.0 0:00.70 0:09.21
+ 12 0.0 0:00.00 0:00.04
+ 13 0.0 0:00.59 0:10.75
+ 14 0.0 0:00.14 0:01.86
+ 15 0.0 0:00.04 0:01.49
+ 16 0.0 0:00.02 0:00.76
+ 17 0.0 0:00.22 0:05.59
+ 18 0.0 0:00.16 0:02.62
+ 12 0 1 12 12 6 129M 1.2M 0.0 0:00.00 0:00.06 /hurd/mach-defpager
+ 0 0.0 0:00.00 0:00.06
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.00 0:00.00
+ 3 0.0 0:00.00 0:00.00
+ 4 0.0 0:00.00 0:00.00
+ 5 0.0 0:00.00 0:00.00
+ 14 0 3 1 1 3 131M 504K 0.0 0:00.00 0:00.05 /hurd/storeio hd1
+ 0 0.0 0:00.00 0:00.05
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.00 0:00.00
+ 18 0 3 1 1 3 131M 512K 0.0 0:00.39 0:06.71 /hurd/storeio hd0
+ 0 0.0 0:00.13 0:01.66
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.25 0:05.04
+ 19 0 3 1 1 3 131M 656K 0.0 0:00.27 0:04.89 /hurd/storeio hd2
+ 0 0.0 0:00.10 0:01.48
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.16 0:03.41
+ 21 0 3 1 1 4 130M 648K 0.0 0:00.55 0:06.94 /hurd/null
+ 0 0.0 0:00.24 0:02.09
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.08 0:02.16
+ 3 0.0 0:00.22 0:02.68
+ 22 0 3 1 1 4 130M 820K 0.0 0:00.00 0:00.05 /hurd/procfs
+ 0 0.0 0:00.00 0:00.04
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.00 0:00.00
+ 3 0.0 0:00.00 0:00.00
+ 71 1 1 71 71 2 146M 728K 0.0 0:00.00 0:00.03 /usr/sbin/atd
+ 0 0.0 0:00.00 0:00.02
+ 1 0.0 0:00.00 0:00.00
+ 77 0 3 1 1 4 130M 896K 0.0 0:00.00 0:00.02 /hurd/streamio kmsg
+ 0 0.0 0:00.00 0:00.02
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.00 0:00.00
+ 3 0.0 0:00.00 0:00.00
+ 117 0 1 117 117 2 146M 1.02M 0.0 0:00.00 0:00.04 /usr/sbin/cron
+ 0 0.0 0:00.00 0:00.04
+ 1 0.0 0:00.00 0:00.00
+ 122 101 1 122 122 2 7.75M 1.07M 0.0 0:00.00 0:00.05 /usr/bin/dbus-daemon --system
+ 0 0.0 0:00.00 0:00.05
+ 1 0.0 0:00.00 0:00.00
+ 128 0 3 1 1 4 130M 908K 0.0 0:00.00 0:00.02 /hurd/fifo
+ 0 0.0 0:00.00 0:00.02
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.00 0:00.00
+ 3 0.0 0:00.00 0:00.00
+ 131 8 1 6 6 2 147M 880K 0.0 0:00.01 0:00.07 /usr/sbin/nullmailer-send -d
+ 0 0.0 0:00.01 0:00.07
+ 1 0.0 0:00.00 0:00.00
+ 139 0 3 1 1 19 133M 2.19M 0.3 0:18.66 1:17.98 /hurd/pfinet -i eth0 -a 192.168.10.63 -g 192.168.10.1 -m 255.255.255.0
+ 0 0.0 0:00.01 0:00.03
+ 1 0.0 0:00.00 0:00.00
+ 2 0.1 0:12.72 0:14.56
+ 3 0.2 0:01.65 0:12.23
+ 4 0.0 0:01.67 0:18.56
+ 5 0.0 0:00.50 0:05.93
+ 6 0.0 0:00.40 0:06.16
+ 7 0.0 0:00.57 0:05.95
+ 8 0.0 0:00.30 0:04.15
+ 9 0.0 0:00.15 0:01.92
+ 10 0.0 0:00.13 0:01.45
+ 11 0.0 0:00.14 0:01.47
+ 12 0.0 0:00.07 0:01.06
+ 13 0.0 0:00.08 0:01.23
+ 14 0.0 0:00.08 0:00.92
+ 15 0.0 0:00.03 0:00.63
+ 16 0.0 0:00.03 0:00.45
+ 17 0.0 0:00.05 0:00.72
+ 18 0.0 0:00.03 0:00.49
+ 140 0 3 1 1 3 131M 1.16M 0.0 0:00.00 0:00.05 /hurd/storeio --no-cache time
+ 0 0.0 0:00.00 0:00.05
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.00 0:00.00
+ 142 0 1 142 142 2 10.5M 1.23M 0.0 0:00.00 0:00.05 /usr/sbin/sshd
+ 0 0.0 0:00.00 0:00.05
+ 1 0.0 0:00.00 0:00.00
+ 157 0 3 1 1 6 130M 1M 0.0 0:00.02 0:00.01 /hurd/term /dev/tty1 hurdio /dev/vcs/1/console
+ 0 0.0 0:00.00 0:00.00
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.00 0:00.00
+ 3 0.0 0:00.00 0:00.00
+ 4 0.0 0:00.00 0:00.01
+ 5 0.0 0:00.01 0:00.00
+ 158 0 6 158 158 2 146M 824K 0.0 0:00.00 0:00.01 /libexec/runttys
+ 0 0.0 0:00.00 0:00.01
+ 1 0.0 0:00.00 0:00.00
+ 159 0 3 1 1 15 133M 1.67M 0.0 0:00.01 0:00.06 /hurd/console
+ 0 0.0 0:00.01 0:00.02
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.00 0:00.00
+ 3 0.0 0:00.00 0:00.00
+ 4 0.0 0:00.00 0:00.01
+ 5 0.0 0:00.00 0:00.00
+ 6 0.0 0:00.00 0:00.00
+ 7 0.0 0:00.00 0:00.02
+ 8 0.0 0:00.00 0:00.00
+ 9 0.0 0:00.00 0:00.00
+ 10 0.0 0:00.00 0:00.00
+ 11 0.0 0:00.00 0:00.00
+ 12 0.0 0:00.00 0:00.01
+ 13 0.0 0:00.00 0:00.00
+ 14 0.0 0:00.00 0:00.00
+ 160 - 158 160 160 2 147M 1.82M 0.0 0:00.02 0:00.16 -login prompt (bash)
+ 0 0.0 0:00.02 0:00.14
+ 1 0.0 0:00.00 0:00.02
+ 161 - 158 161 161 2 147M 1.78M 0.0 0:00.00 0:00.07 -login prompt (bash)
+ 0 0.0 0:00.00 0:00.07
+ 1 0.0 0:00.00 0:00.00
+ 162 - 158 162 162 2 147M 1.78M 0.0 0:00.01 0:00.07 -login prompt (bash)
+ 0 0.0 0:00.01 0:00.07
+ 1 0.0 0:00.00 0:00.00
+ 163 - 158 163 163 2 147M 1.78M 0.0 0:00.00 0:00.03 -login prompt (bash)
+ 0 0.0 0:00.00 0:00.03
+ 1 0.0 0:00.00 0:00.00
+ 164 - 158 164 164 2 147M 1.78M 0.0 0:00.02 0:00.03 -login prompt (bash)
+ 0 0.0 0:00.02 0:00.03
+ 1 0.0 0:00.00 0:00.00
+ 165 - 158 165 165 2 147M 1.78M 0.0 0:00.00 0:00.08 -login prompt (bash)
+ 0 0.0 0:00.00 0:00.08
+ 1 0.0 0:00.00 0:00.00
+ 166 - 158 166 166 2 147M 1.78M 0.0 0:00.01 0:00.01 -login prompt (bash)
+ 0 0.0 0:00.01 0:00.01
+ 1 0.0 0:00.00 0:00.00
+ 167 0 3 1 1 6 130M 1016K 0.0 0:00.01 0:00.11 /hurd/term /dev/tty2 hurdio /dev/vcs/2/console
+ 0 0.0 0:00.01 0:00.06
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.00 0:00.00
+ 3 0.0 0:00.00 0:00.01
+ 4 0.0 0:00.00 0:00.03
+ 5 0.0 0:00.00 0:00.00
+ 168 0 3 1 1 6 130M 1016K 0.0 0:00.00 0:00.04 /hurd/term /dev/tty3 hurdio /dev/vcs/3/console
+ 0 0.0 0:00.00 0:00.02
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.00 0:00.00
+ 3 0.0 0:00.00 0:00.01
+ 4 0.0 0:00.00 0:00.00
+ 5 0.0 0:00.00 0:00.01
+ 169 0 3 1 1 6 130M 1016K 0.0 0:00.00 0:00.04 /hurd/term /dev/tty5 hurdio /dev/vcs/5/console
+ 0 0.0 0:00.00 0:00.00
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.00 0:00.00
+ 3 0.0 0:00.00 0:00.00
+ 4 0.0 0:00.00 0:00.04
+ 5 0.0 0:00.00 0:00.00
+ 170 0 3 1 1 6 130M 1016K 0.0 0:00.00 0:00.05 /hurd/term /dev/tty4 hurdio /dev/vcs/4/console
+ 0 0.0 0:00.00 0:00.04
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.00 0:00.00
+ 3 0.0 0:00.00 0:00.00
+ 4 0.0 0:00.00 0:00.01
+ 5 0.0 0:00.00 0:00.00
+ 171 0 3 1 1 6 130M 1016K 0.0 0:00.00 0:00.01 /hurd/term /dev/tty6 hurdio /dev/vcs/6/console
+ 0 0.0 0:00.00 0:00.01
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.00 0:00.00
+ 3 0.0 0:00.00 0:00.00
+ 4 0.0 0:00.00 0:00.00
+ 5 0.0 0:00.00 0:00.00
+ 172 0 3 1 1 4 130M 892K 0.0 0:00.00 0:00.01 /hurd/password
+ 0 0.0 0:00.00 0:00.01
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.00 0:00.00
+ 3 0.0 0:00.00 0:00.00
+ 173 0 142 173 173 3 10.7M 3.09M 0.0 0:02.09 0:12.63 /usr/sbin/sshd -R
+ 0 0.0 0:02.09 0:12.63
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.00 0:00.00
+ 174 0 3 1 1 632 2.99G 27.6M 100.3 16:43.18 52:54.41 /hurd/ext2fs /dev/hd2
+ 0 0.0 0:00.01 0:00.03
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 1:34.24 6:26.66
+ 3 0.0 0:00.04 0:00.31
+ 4 0.0 0:00.13 0:00.47
+ 5 0.0 0:00.05 0:00.57
+ 6 0.0 1:36.91 6:26.41
+ 7 0.0 0:12.98 0:34.83
+ 8 0.0 1:37.85 6:26.20
+ 9 0.0 1:35.07 6:17.07
+ 10 0.0 0:00.05 0:00.50
+ 11 0.0 0:00.04 0:00.48
+ 12 0.0 0:00.07 0:00.55
+ 13 0.0 0:00.03 0:00.46
+ 14 0.0 0:00.03 0:00.42
+ 15 0.0 0:00.06 0:00.32
+ 16 0.0 0:00.05 0:00.56
+ 17 0.0 0:00.05 0:00.50
+ 18 0.0 0:00.05 0:00.48
+ 19 0.0 0:00.03 0:00.37
+ 20 0.0 0:00.08 0:00.48
+ 21 0.0 0:00.01 0:00.52
+ 22 0.0 0:00.02 0:00.44
+ 23 0.0 0:00.02 0:00.44
+ 24 0.0 0:00.03 0:00.31
+ 25 0.0 0:00.05 0:00.32
+ 26 0.0 0:00.04 0:00.37
+ 27 0.0 0:00.00 0:00.31
+ 28 0.0 0:00.03 0:00.23
+ 29 0.0 0:00.05 0:00.33
+ 30 0.0 0:00.04 0:00.31
+ 31 0.0 0:00.01 0:00.29
+ 32 0.0 0:00.07 0:00.27
+ 33 0.0 0:00.05 0:00.28
+ 34 0.0 0:00.04 0:00.23
+ 35 0.0 0:00.04 0:00.46
+ 36 0.0 0:00.02 0:00.31
+ 37 0.0 0:00.02 0:00.38
+ 38 0.0 0:00.06 0:00.29
+ 39 0.0 0:00.03 0:00.22
+ 40 0.0 0:00.02 0:00.28
+ 41 0.0 0:00.03 0:00.26
+ 42 0.0 0:00.05 0:00.39
+ 43 0.0 0:00.06 0:00.37
+ 44 0.0 0:00.03 0:00.36
+ 45 0.0 0:00.04 0:00.20
+ 46 0.0 0:00.02 0:00.28
+ 47 0.0 0:00.01 0:00.29
+ 48 0.0 0:00.03 0:00.23
+ 49 0.0 0:00.04 0:00.22
+ 50 0.0 0:00.07 0:00.25
+ 51 0.0 0:00.00 0:00.33
+ 52 0.0 0:00.05 0:00.49
+ 53 0.0 0:00.02 0:00.31
+ 54 0.0 0:00.00 0:00.27
+ 55 0.0 0:00.06 0:00.25
+ 56 0.0 0:00.05 0:00.35
+ 57 0.0 0:00.01 0:00.28
+ 58 0.0 0:00.06 0:00.25
+ 59 0.0 0:00.05 0:00.30
+ 60 0.0 0:00.03 0:00.36
+ 61 0.0 0:00.04 0:00.31
+ 62 0.0 0:00.05 0:00.18
+ 63 0.0 0:00.02 0:00.31
+ 64 0.0 0:00.00 0:00.27
+ 65 0.0 0:00.02 0:00.26
+ 66 0.0 0:00.00 0:00.31
+ 67 0.0 0:00.00 0:00.15
+ 68 0.0 0:00.04 0:00.32
+ 69 0.0 0:00.04 0:00.21
+ 70 0.0 0:00.01 0:00.31
+ 71 0.0 0:00.05 0:00.22
+ 72 0.0 0:00.01 0:00.28
+ 73 0.0 0:00.04 0:00.31
+ 74 0.0 0:00.06 0:00.20
+ 75 0.0 0:00.04 0:00.38
+ 76 0.0 0:00.03 0:00.37
+ 77 0.0 0:00.06 0:00.32
+ 78 0.0 0:00.04 0:00.22
+ 79 0.0 0:00.04 0:00.25
+ 80 0.0 0:00.04 0:00.29
+ 81 0.0 0:00.07 0:00.31
+ 82 0.0 0:00.04 0:00.27
+ 83 0.0 0:00.04 0:00.23
+ 84 0.0 0:00.02 0:00.37
+ 85 0.0 0:00.03 0:00.24
+ 86 0.0 0:00.01 0:00.29
+ 87 0.0 0:00.03 0:00.24
+ 88 0.0 0:00.01 0:00.31
+ 89 0.0 0:00.03 0:00.39
+ 90 0.0 0:00.00 0:00.30
+ 91 0.0 0:00.03 0:00.32
+ 92 0.0 0:00.00 0:00.24
+ 93 0.0 0:00.03 0:00.32
+ 94 0.0 0:00.04 0:00.30
+ 95 0.0 0:00.00 0:00.33
+ 96 0.0 0:00.02 0:00.24
+ 97 0.0 0:00.01 0:00.26
+ 98 0.0 0:00.04 0:00.33
+ 99 0.0 0:00.03 0:00.26
+ 100 0.0 0:00.05 0:00.29
+ 101 0.0 0:00.05 0:00.34
+ 102 0.0 0:00.04 0:00.38
+ 103 0.0 0:00.00 0:00.22
+ 104 0.0 0:00.03 0:00.38
+ 105 0.0 0:00.01 0:00.43
+ 106 0.0 0:00.03 0:00.37
+ 107 0.0 0:00.05 0:00.31
+ 108 0.0 0:00.02 0:00.31
+ 109 0.0 0:00.00 0:00.26
+ 110 0.0 0:00.03 0:00.27
+ 111 0.0 0:00.03 0:00.25
+ 112 0.0 0:00.02 0:00.30
+ 113 0.0 0:00.05 0:00.23
+ 114 0.0 0:00.02 0:00.32
+ 115 0.0 0:00.02 0:00.29
+ 116 0.0 0:00.04 0:00.22
+ 117 0.0 0:00.04 0:00.26
+ 118 0.0 0:00.02 0:00.36
+ 119 0.0 0:00.03 0:00.31
+ 120 0.0 0:00.04 0:00.26
+ 121 0.0 0:00.05 0:00.28
+ 122 0.0 0:00.01 0:00.27
+ 123 0.0 0:00.03 0:00.34
+ 124 0.0 0:00.03 0:00.36
+ 125 0.0 0:00.02 0:00.33
+ 126 0.0 0:00.04 0:00.36
+ 127 0.0 0:00.00 0:00.41
+ 128 0.0 0:00.02 0:00.33
+ 129 0.0 0:00.07 0:00.32
+ 130 0.0 0:00.03 0:00.29
+ 131 0.0 0:00.00 0:00.34
+ 132 0.0 0:00.04 0:00.28
+ 133 0.0 0:00.04 0:00.24
+ 134 0.0 0:00.03 0:00.35
+ 135 0.0 0:00.04 0:00.38
+ 136 0.0 0:00.04 0:00.37
+ 137 0.0 0:00.04 0:00.26
+ 138 0.0 0:00.00 0:00.26
+ 139 0.0 0:00.06 0:00.40
+ 140 0.0 1:23.58 6:28.86
+ 141 0.0 0:25.74 1:55.97
+ 142 0.0 0:00.00 0:00.00
+ 143 0.0 0:00.00 0:00.00
+ 144 0.0 0:00.00 0:00.00
+ 145 0.0 0:00.00 0:00.00
+ 146 0.0 0:00.00 0:00.00
+ 147 0.0 0:00.00 0:00.00
+ 148 0.0 0:00.00 0:00.00
+ 149 0.0 0:00.00 0:00.00
+ 150 0.0 0:00.00 0:00.00
+ 151 0.0 0:00.00 0:00.00
+ 152 0.0 0:00.00 0:00.00
+ 153 0.0 0:00.00 0:00.00
+ 154 0.0 0:00.00 0:00.00
+ 155 0.0 0:00.00 0:00.00
+ 156 0.0 0:00.00 0:00.00
+ 157 0.0 0:00.00 0:00.00
+ 158 0.0 0:00.00 0:00.00
+ 159 0.0 0:00.00 0:00.00
+ 160 0.0 0:00.00 0:00.00
+ 161 0.0 0:00.00 0:00.00
+ 162 0.0 0:00.00 0:00.00
+ 163 0.0 0:00.00 0:00.00
+ 164 0.0 0:00.00 0:00.00
+ 165 0.0 0:00.00 0:00.00
+ 166 0.0 0:00.00 0:00.00
+ 167 0.0 0:00.00 0:00.00
+ 168 0.0 0:00.00 0:00.00
+ 169 0.0 0:00.00 0:00.00
+ 170 0.0 0:00.00 0:00.00
+ 171 0.0 0:00.00 0:00.00
+ 172 0.0 0:00.00 0:00.00
+ 173 0.0 0:00.00 0:00.00
+ 174 0.0 0:00.00 0:00.00
+ 175 0.0 0:00.00 0:00.00
+ 176 0.0 0:00.00 0:00.00
+ 177 0.0 0:00.00 0:00.00
+ 178 0.0 0:00.00 0:00.00
+ 179 0.0 0:00.00 0:00.00
+ 180 0.0 0:00.00 0:00.00
+ 181 0.0 0:00.00 0:00.00
+ 182 0.0 0:00.00 0:00.00
+ 183 0.0 0:00.00 0:00.00
+ 184 0.0 0:00.00 0:00.00
+ 185 0.0 0:00.00 0:00.00
+ 186 0.0 0:00.00 0:00.00
+ 187 0.0 0:00.00 0:00.00
+ 188 0.0 0:00.00 0:00.00
+ 189 0.0 0:00.00 0:00.00
+ 190 0.0 0:00.00 0:00.00
+ 191 0.0 0:00.00 0:00.00
+ 192 0.0 0:00.00 0:00.00
+ 193 0.0 0:00.00 0:00.00
+ 194 0.0 0:00.00 0:00.00
+ 195 0.0 0:00.00 0:00.00
+ 196 0.0 0:00.00 0:00.00
+ 197 0.0 0:00.00 0:00.00
+ 198 0.0 0:00.00 0:00.00
+ 199 0.0 0:00.00 0:00.00
+ 200 0.0 0:00.00 0:00.00
+ 201 0.0 0:00.00 0:00.00
+ 202 0.0 0:00.00 0:00.00
+ 203 0.0 0:00.00 0:00.00
+ 204 0.0 0:00.00 0:00.00
+ 205 0.0 0:00.00 0:00.00
+ 206 0.0 0:00.00 0:00.00
+ 207 0.0 0:00.00 0:00.00
+ 208 0.0 0:00.00 0:00.00
+ 209 0.0 0:00.00 0:00.00
+ 210 0.0 0:00.00 0:00.00
+ 211 0.0 0:00.00 0:00.00
+ 212 0.0 0:00.00 0:00.00
+ 213 0.0 0:00.00 0:00.00
+ 214 0.0 0:00.00 0:00.00
+ 215 0.0 0:00.00 0:00.00
+ 216 0.0 0:00.00 0:00.00
+ 217 0.0 0:00.00 0:00.00
+ 218 0.0 0:00.00 0:00.00
+ 219 0.0 0:00.00 0:00.00
+ 220 0.0 0:00.00 0:00.00
+ 221 0.0 0:00.00 0:00.00
+ 222 0.0 0:00.00 0:00.00
+ 223 0.0 0:00.00 0:00.00
+ 224 0.0 0:00.00 0:00.00
+ 225 0.0 0:00.00 0:00.00
+ 226 0.0 0:00.00 0:00.00
+ 227 0.0 0:00.00 0:00.00
+ 228 0.0 0:00.00 0:00.00
+ 229 0.0 0:00.00 0:00.00
+ 230 0.0 0:00.00 0:00.00
+ 231 0.0 0:00.00 0:00.00
+ 232 0.0 0:00.00 0:00.00
+ 233 0.0 0:00.00 0:00.00
+ 234 0.0 0:00.00 0:00.00
+ 235 0.0 0:00.00 0:00.00
+ 236 0.0 0:00.00 0:00.00
+ 237 0.0 0:00.00 0:00.00
+ 238 0.0 0:00.00 0:00.00
+ 239 0.0 0:00.00 0:00.00
+ 240 0.0 0:00.00 0:00.00
+ 241 0.0 0:00.00 0:00.00
+ 242 0.0 0:00.00 0:00.00
+ 243 0.0 0:00.00 0:00.00
+ 244 0.0 0:00.00 0:00.00
+ 245 0.0 0:00.00 0:00.00
+ 246 0.0 0:00.00 0:00.00
+ 247 0.0 0:00.00 0:00.00
+ 248 0.0 0:00.00 0:00.00
+ 249 0.0 0:00.00 0:00.00
+ 250 0.0 0:00.00 0:00.00
+ 251 0.0 0:00.00 0:00.00
+ 252 0.0 0:00.00 0:00.00
+ 253 0.0 0:00.00 0:00.00
+ 254 0.0 0:00.00 0:00.00
+ 255 0.0 0:00.00 0:00.00
+ 256 0.0 0:00.00 0:00.00
+ 257 0.0 0:00.00 0:00.00
+ 258 0.0 0:00.00 0:00.00
+ 259 0.0 0:00.00 0:00.00
+ 260 0.0 0:00.00 0:00.00
+ 261 0.0 0:00.00 0:00.00
+ 262 0.0 0:00.00 0:00.00
+ 263 0.0 0:00.00 0:00.00
+ 264 0.0 0:00.00 0:00.00
+ 265 0.0 0:00.00 0:00.00
+ 266 0.0 0:00.00 0:00.00
+ 267 0.0 0:00.00 0:00.00
+ 268 0.0 0:00.00 0:00.00
+ 269 0.0 0:00.00 0:00.00
+ 270 0.0 0:00.00 0:00.00
+ 271 0.0 0:00.00 0:00.00
+ 272 0.0 0:00.00 0:00.00
+ 273 0.0 0:00.00 0:00.00
+ 274 0.0 0:00.00 0:00.00
+ 275 0.0 0:00.00 0:00.00
+ 276 0.0 0:00.00 0:00.00
+ 277 0.0 0:00.00 0:00.00
+ 278 0.0 0:00.00 0:00.00
+ 279 0.0 0:00.00 0:00.00
+ 280 0.0 0:00.00 0:00.00
+ 281 0.0 0:00.00 0:00.00
+ 282 0.0 0:00.00 0:00.00
+ 283 0.0 0:00.00 0:00.00
+ 284 0.0 0:00.00 0:00.00
+ 285 0.0 0:00.00 0:00.00
+ 286 0.0 0:00.00 0:00.00
+ 287 0.0 0:00.00 0:00.00
+ 288 0.0 0:00.00 0:00.00
+ 289 0.0 0:00.00 0:00.00
+ 290 0.0 0:00.00 0:00.00
+ 291 0.0 0:00.00 0:00.00
+ 292 0.0 0:00.00 0:00.00
+ 293 0.0 0:00.00 0:00.00
+ 294 0.0 0:00.00 0:00.00
+ 295 0.0 0:00.00 0:00.00
+ 296 0.0 0:00.00 0:00.00
+ 297 0.0 0:00.00 0:00.00
+ 298 0.0 0:00.00 0:00.00
+ 299 0.0 0:00.00 0:00.00
+ 300 0.0 0:00.00 0:00.00
+ 301 0.0 0:00.00 0:00.00
+ 302 0.0 0:00.00 0:00.00
+ 303 0.0 0:00.00 0:00.00
+ 304 0.0 0:00.00 0:00.00
+ 305 0.0 0:00.00 0:00.00
+ 306 0.0 0:00.00 0:00.00
+ 307 0.0 0:00.00 0:00.00
+ 308 0.0 0:00.00 0:00.00
+ 309 0.0 0:00.00 0:00.00
+ 310 0.0 0:00.00 0:00.00
+ 311 0.0 0:00.00 0:00.00
+ 312 0.0 0:00.00 0:00.00
+ 313 0.0 0:00.00 0:00.00
+ 314 0.0 0:00.00 0:00.00
+ 315 0.0 0:00.00 0:00.00
+ 316 0.0 0:00.00 0:00.00
+ 317 0.0 0:00.00 0:00.00
+ 318 0.0 0:00.00 0:00.00
+ 319 0.0 0:00.00 0:00.00
+ 320 0.0 0:00.00 0:00.00
+ 321 0.0 0:00.00 0:00.00
+ 322 0.0 0:00.00 0:00.00
+ 323 0.0 0:00.00 0:00.00
+ 324 0.0 0:00.00 0:00.00
+ 325 0.0 0:00.00 0:00.00
+ 326 0.0 0:00.00 0:00.00
+ 327 0.0 0:00.00 0:00.00
+ 328 0.0 0:00.00 0:00.00
+ 329 0.0 0:00.00 0:00.00
+ 330 0.0 0:00.00 0:00.00
+ 331 0.0 0:00.00 0:00.00
+ 332 0.0 0:00.00 0:00.00
+ 333 0.0 0:00.00 0:00.00
+ 334 0.0 0:00.00 0:00.00
+ 335 0.0 0:00.00 0:00.00
+ 336 0.0 0:00.00 0:00.00
+ 337 0.0 0:00.00 0:00.00
+ 338 0.0 0:00.00 0:00.00
+ 339 0.0 0:00.00 0:00.00
+ 340 0.0 0:00.00 0:00.00
+ 341 0.0 0:00.00 0:00.00
+ 342 0.0 0:00.00 0:00.00
+ 343 0.0 0:00.00 0:00.00
+ 344 0.0 0:00.00 0:00.00
+ 345 0.0 0:00.00 0:00.00
+ 346 0.0 0:00.00 0:00.00
+ 347 0.0 0:00.00 0:00.00
+ 348 0.0 0:00.00 0:00.00
+ 349 0.0 0:00.00 0:00.00
+ 350 0.0 0:00.00 0:00.00
+ 351 0.0 0:00.00 0:00.00
+ 352 0.0 0:00.00 0:00.00
+ 353 0.0 0:00.00 0:00.00
+ 354 0.0 0:00.00 0:00.00
+ 355 0.0 0:00.00 0:00.00
+ 356 0.0 0:00.00 0:00.00
+ 357 0.0 0:00.00 0:00.00
+ 358 0.0 0:00.00 0:00.00
+ 359 0.0 0:00.00 0:00.00
+ 360 0.0 0:00.00 0:00.00
+ 361 0.0 0:00.00 0:00.00
+ 362 0.0 0:00.00 0:00.00
+ 363 0.0 0:00.00 0:00.00
+ 364 0.0 0:00.00 0:00.00
+ 365 0.0 0:00.00 0:00.00
+ 366 0.0 0:00.00 0:00.00
+ 367 0.0 0:00.00 0:00.00
+ 368 0.0 0:00.00 0:00.00
+ 369 0.0 0:00.00 0:00.00
+ 370 0.0 0:00.00 0:00.00
+ 371 0.0 0:00.00 0:00.03
+ 372 0.0 0:00.00 0:00.00
+ 373 0.0 0:00.00 0:00.00
+ 374 0.0 0:00.00 0:00.00
+ 375 0.0 0:00.00 0:00.00
+ 376 0.0 0:00.00 0:00.00
+ 377 0.0 0:00.00 0:00.00
+ 378 0.0 0:00.00 0:00.00
+ 379 0.0 0:00.00 0:00.00
+ 380 0.0 0:00.00 0:00.00
+ 381 0.0 0:00.00 0:00.00
+ 382 0.0 0:00.00 0:00.00
+ 383 0.0 0:00.00 0:00.00
+ 384 0.0 0:00.00 0:00.00
+ 385 0.0 0:00.00 0:00.00
+ 386 0.0 0:00.00 0:00.00
+ 387 0.0 0:00.00 0:00.00
+ 388 0.0 0:00.00 0:00.00
+ 389 0.0 0:00.00 0:00.00
+ 390 0.0 0:00.00 0:00.00
+ 391 0.0 0:00.00 0:00.00
+ 392 0.0 0:00.00 0:00.00
+ 393 0.0 0:00.00 0:00.00
+ 394 0.0 0:00.00 0:00.00
+ 395 0.0 0:00.00 0:00.00
+ 396 0.0 0:00.00 0:00.00
+ 397 0.0 0:00.00 0:00.00
+ 398 0.0 0:00.00 0:00.00
+ 399 0.0 0:00.00 0:00.00
+ 400 0.0 0:00.00 0:00.00
+ 401 0.0 0:00.00 0:00.00
+ 402 0.0 0:00.00 0:00.00
+ 403 0.0 0:00.00 0:00.00
+ 404 0.0 0:00.00 0:00.00
+ 405 0.0 0:00.00 0:00.00
+ 406 0.0 0:00.00 0:00.00
+ 407 0.0 0:00.00 0:00.00
+ 408 0.0 0:00.00 0:00.00
+ 409 0.0 0:00.00 0:00.00
+ 410 0.0 0:00.00 0:00.00
+ 411 0.0 0:00.00 0:00.00
+ 412 0.0 0:00.00 0:00.00
+ 413 0.0 0:00.00 0:00.00
+ 414 0.0 0:00.00 0:00.00
+ 415 0.0 0:00.00 0:00.00
+ 416 0.0 0:00.00 0:00.00
+ 417 0.0 0:00.00 0:00.00
+ 418 0.0 0:00.00 0:00.00
+ 419 0.0 0:00.00 0:00.00
+ 420 0.0 0:00.00 0:00.00
+ 421 0.0 0:00.00 0:00.00
+ 422 0.0 0:00.00 0:00.00
+ 423 0.0 0:00.00 0:00.00
+ 424 0.0 0:00.00 0:00.00
+ 425 0.0 0:00.00 0:00.00
+ 426 0.0 0:00.00 0:00.00
+ 427 0.0 0:00.00 0:00.00
+ 428 0.0 0:00.00 0:00.00
+ 429 0.0 0:00.00 0:00.00
+ 430 0.0 0:00.00 0:00.00
+ 431 0.0 0:00.00 0:00.00
+ 432 0.0 0:00.00 0:00.00
+ 433 0.0 0:00.00 0:00.00
+ 434 0.0 0:00.00 0:00.00
+ 435 0.0 0:00.00 0:00.00
+ 436 0.0 0:00.00 0:00.00
+ 437 0.0 0:00.00 0:00.00
+ 438 0.0 0:00.00 0:00.00
+ 439 0.0 0:00.00 0:00.00
+ 440 0.0 0:00.00 0:00.00
+ 441 0.0 0:00.00 0:00.00
+ 442 0.0 0:00.00 0:00.00
+ 443 0.0 0:00.00 0:00.00
+ 444 0.0 0:00.00 0:00.00
+ 445 0.0 0:00.00 0:00.00
+ 446 0.0 0:00.00 0:00.00
+ 447 0.0 0:00.00 0:00.00
+ 448 0.0 0:00.00 0:00.00
+ 449 0.0 0:00.00 0:00.00
+ 450 0.0 0:00.00 0:00.00
+ 451 0.0 0:00.00 0:00.00
+ 452 0.0 0:00.00 0:00.00
+ 453 0.0 0:00.00 0:00.00
+ 454 0.0 0:00.00 0:00.00
+ 455 0.0 0:00.00 0:00.00
+ 456 0.0 0:00.00 0:00.00
+ 457 0.0 0:00.00 0:00.00
+ 458 0.0 0:00.00 0:00.00
+ 459 0.0 0:00.00 0:00.00
+ 460 0.0 0:00.00 0:00.00
+ 461 0.0 0:00.00 0:00.00
+ 462 0.0 0:00.00 0:00.00
+ 463 0.0 0:00.00 0:00.00
+ 464 0.0 0:00.00 0:00.00
+ 465 0.0 0:00.00 0:00.00
+ 466 0.0 0:00.00 0:00.00
+ 467 0.0 0:00.00 0:00.00
+ 468 0.0 0:00.00 0:00.00
+ 469 0.0 0:00.00 0:00.00
+ 470 0.0 0:00.00 0:00.00
+ 471 0.0 0:00.00 0:00.00
+ 472 0.0 0:00.00 0:00.00
+ 473 0.0 0:00.00 0:00.00
+ 474 0.0 0:00.00 0:00.00
+ 475 0.0 0:00.00 0:00.00
+ 476 0.0 0:00.00 0:00.00
+ 477 0.0 0:00.00 0:00.00
+ 478 0.0 0:00.00 0:00.00
+ 479 0.0 0:00.00 0:00.00
+ 480 0.0 0:00.00 0:00.00
+ 481 0.0 0:00.00 0:00.00
+ 482 0.0 0:00.00 0:00.00
+ 483 0.0 0:00.00 0:00.00
+ 484 0.0 0:00.00 0:00.00
+ 485 0.0 0:00.00 0:00.00
+ 486 0.0 0:00.00 0:00.00
+ 487 0.0 0:00.00 0:00.00
+ 488 0.0 0:00.00 0:00.00
+ 489 0.0 0:00.00 0:00.00
+ 490 0.0 0:00.00 0:00.00
+ 491 0.0 0:00.00 0:00.00
+ 492 0.0 0:00.00 0:00.00
+ 493 0.0 0:00.00 0:00.00
+ 494 0.0 0:00.00 0:00.00
+ 495 0.0 0:00.00 0:00.00
+ 496 0.0 0:00.00 0:00.00
+ 497 0.0 0:00.00 0:00.00
+ 498 0.0 0:00.00 0:00.00
+ 499 0.0 0:00.00 0:00.00
+ 500 0.0 0:00.00 0:00.00
+ 501 0.0 0:00.00 0:00.00
+ 502 0.0 0:00.00 0:00.00
+ 503 0.0 0:00.00 0:00.00
+ 504 0.0 0:00.00 0:00.00
+ 505 0.0 0:00.00 0:00.00
+ 506 0.0 0:00.00 0:00.00
+ 507 0.0 0:00.00 0:00.00
+ 508 0.0 0:00.00 0:00.00
+ 509 0.0 0:00.00 0:00.00
+ 510 0.0 0:00.00 0:00.00
+ 511 0.0 0:00.00 0:00.00
+ 512 0.0 0:00.00 0:00.00
+ 513 0.0 0:00.00 0:00.00
+ 514 0.0 0:00.00 0:00.00
+ 515 0.0 0:00.00 0:00.00
+ 516 0.0 0:00.00 0:00.00
+ 517 0.0 0:00.00 0:00.00
+ 518 0.0 0:00.00 0:00.00
+ 519 0.0 0:00.00 0:00.00
+ 520 0.0 0:00.00 0:00.00
+ 521 0.0 0:00.00 0:00.00
+ 522 0.0 0:00.00 0:00.00
+ 523 0.0 0:00.00 0:00.00
+ 524 0.0 0:00.00 0:00.00
+ 525 0.0 0:00.00 0:00.00
+ 526 0.0 0:00.00 0:00.00
+ 527 0.0 0:00.00 0:00.00
+ 528 0.0 0:00.00 0:00.00
+ 529 0.0 0:00.00 0:00.00
+ 530 0.0 0:00.00 0:00.00
+ 531 0.0 0:00.00 0:00.00
+ 532 0.0 0:00.00 0:00.00
+ 533 0.0 0:00.00 0:00.00
+ 534 0.0 0:00.00 0:00.00
+ 535 0.0 0:00.00 0:00.00
+ 536 0.0 0:00.00 0:00.00
+ 537 0.0 0:00.00 0:00.00
+ 538 0.0 0:00.00 0:00.00
+ 539 0.0 0:00.00 0:00.00
+ 540 0.0 0:00.00 0:00.00
+ 541 0.0 0:00.00 0:00.00
+ 542 0.0 0:00.00 0:00.00
+ 543 0.0 0:00.00 0:00.00
+ 544 0.0 0:00.00 0:00.00
+ 545 0.0 0:00.00 0:00.00
+ 546 0.0 0:00.00 0:00.00
+ 547 0.0 0:00.00 0:00.00
+ 548 0.0 0:00.00 0:00.00
+ 549 0.0 0:00.00 0:00.00
+ 550 0.0 0:00.00 0:00.00
+ 551 0.0 0:00.00 0:00.00
+ 552 0.0 0:00.00 0:00.00
+ 553 0.0 0:00.00 0:00.00
+ 554 0.0 0:00.00 0:00.00
+ 555 0.0 0:00.00 0:00.00
+ 556 0.0 0:00.00 0:00.00
+ 557 0.0 0:00.00 0:00.00
+ 558 0.0 0:00.00 0:00.00
+ 559 0.0 0:00.00 0:00.00
+ 560 0.0 0:00.00 0:00.00
+ 561 0.0 0:00.00 0:00.00
+ 562 0.0 0:00.00 0:00.00
+ 563 0.0 0:00.00 0:00.00
+ 564 0.0 0:00.00 0:00.00
+ 565 0.0 0:00.00 0:00.00
+ 566 0.0 0:00.00 0:00.00
+ 567 0.0 0:00.00 0:00.00
+ 568 0.0 0:00.00 0:00.00
+ 569 0.0 0:00.00 0:00.00
+ 570 0.0 0:00.00 0:00.00
+ 571 0.0 0:00.00 0:00.00
+ 572 0.0 0:00.00 0:00.00
+ 573 0.0 0:00.00 0:00.00
+ 574 0.0 0:00.00 0:00.00
+ 575 0.0 0:00.00 0:00.00
+ 576 0.0 0:00.00 0:00.00
+ 577 0.0 0:00.00 0:00.00
+ 578 0.0 0:00.00 0:00.00
+ 579 0.0 0:00.00 0:00.00
+ 580 0.0 0:00.00 0:00.00
+ 581 0.0 0:00.00 0:00.00
+ 582 0.0 0:00.00 0:00.00
+ 583 0.0 0:00.00 0:00.00
+ 584 0.0 0:00.00 0:00.00
+ 585 0.0 0:00.00 0:00.00
+ 586 0.0 0:00.00 0:00.00
+ 587 0.0 0:00.00 0:00.00
+ 588 0.0 0:00.00 0:00.00
+ 589 0.0 0:00.00 0:00.00
+ 590 0.0 0:00.00 0:00.00
+ 591 0.0 0:00.00 0:00.00
+ 592 0.0 0:00.00 0:00.00
+ 593 0.0 0:00.00 0:00.00
+ 594 0.0 0:00.00 0:00.00
+ 595 0.0 0:00.00 0:00.00
+ 596 0.0 0:00.00 0:00.00
+ 597 0.0 0:00.00 0:00.00
+ 598 0.0 0:00.00 0:00.00
+ 599 0.0 0:00.00 0:00.00
+ 600 0.0 0:00.00 0:00.00
+ 601 0.0 0:00.00 0:00.00
+ 602 0.0 0:00.00 0:00.00
+ 603 0.0 0:00.00 0:00.00
+ 604 0.0 0:00.00 0:00.00
+ 605 0.0 0:00.00 0:00.00
+ 606 0.0 0:00.00 0:00.00
+ 607 0.0 0:00.00 0:00.00
+ 608 0.0 0:00.00 0:00.00
+ 609 0.0 0:00.00 0:00.00
+ 610 0.0 0:00.00 0:00.00
+ 611 0.0 0:00.00 0:00.00
+ 612 0.0 0:00.00 0:00.00
+ 613 0.0 0:00.00 0:00.00
+ 614 0.0 0:00.00 0:00.00
+ 615 0.0 0:00.00 0:00.00
+ 616 0.0 0:00.00 0:00.00
+ 617 0.0 0:00.00 0:00.00
+ 618 0.0 0:00.00 0:00.00
+ 619 0.0 0:00.00 0:00.00
+ 620 0.0 0:00.00 0:00.00
+ 621 0.0 0:00.00 0:00.00
+ 622 0.0 0:00.00 0:00.00
+ 623 0.0 0:00.00 0:00.00
+ 624 0.0 0:00.00 0:00.00
+ 625 0.0 0:00.00 0:00.00
+ 626 0.0 0:00.00 0:00.00
+ 627 0.0 0:00.00 0:00.00
+ 628 0.0 0:00.00 0:00.00
+ 629 0.0 0:00.00 0:00.00
+ 630 0.0 0:00.00 0:00.00
+ 631 100.3 8:11.86 17:35.07
+ 175 0 3 1 1 6 130M 1.08M 0.0 0:03.06 0:33.84 /hurd/term /dev/ptyp0 pty-master /dev/ttyp0
+ 0 0.0 0:00.80 0:07.55
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.56 0:05.97
+ 3 0.0 0:00.50 0:06.99
+ 4 0.0 0:00.56 0:06.99
+ 5 0.0 0:00.62 0:06.32
+ 176 1000 173 176 176 2 148M 2.19M 0.0 0:00.08 0:00.54 -bash
+ 0 0.0 0:00.08 0:00.47
+ 1 0.0 0:00.00 0:00.07
+ 284 1000 1 284 284 2 20.5M 700K 0.0 0:00.00 0:00.00 ssh-agent
+ 0 0.0 0:00.00 0:00.00
+ 1 0.0 0:00.00 0:00.00
+ 302 1000 176 302 176 3 148M 1.37M 0.0 0:00.03 0:00.14 screen -S S_main
+ 0 0.0 0:00.02 0:00.07
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.01 0:00.06
+ 304 1000 302 304 304 3 148M 2.45M 0.0 0:02.86 0:13.03 SCREEN -S S_main
+ 0 0.0 0:02.86 0:12.97
+ 1 0.0 0:00.00 0:00.03
+ 2 0.0 0:00.00 0:00.02
+ 305 1000 3 1 1 5 130M 960K 0.0 0:01.57 0:15.62 /hurd/fifo
+ 0 0.0 0:00.31 0:04.04
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.31 0:03.95
+ 3 0.0 0:00.45 0:03.78
+ 4 0.0 0:00.49 0:03.84
+ 306 0 3 1 1 5 130M 1.02M 0.0 0:01.42 0:16.72 /hurd/term /dev/ptyp1 pty-master /dev/ttyp1
+ 0 0.0 0:00.43 0:06.13
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.40 0:04.77
+ 3 0.0 0:00.00 0:00.14
+ 4 0.0 0:00.59 0:05.67
+ 309 1000 304 309 309 2 148M 2.12M 0.0 0:00.02 0:00.09 /bin/bash
+ 0 0.0 0:00.02 0:00.09
+ 1 0.0 0:00.00 0:00.00
+ 319 1000 309 319 309 2 153M 7.29M 0.0 0:00.33 0:00.74 emacs
+ 0 0.0 0:00.33 0:00.74
+ 1 0.0 0:00.00 0:00.00
+ 320 0 3 1 1 6 130M 1.48M 0.0 0:03.25 0:38.79 /hurd/term /dev/ptyp2 pty-master /dev/ttyp2
+ 0 0.0 0:00.60 0:07.07
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.69 0:08.43
+ 3 0.0 0:00.78 0:07.78
+ 4 0.0 0:00.55 0:07.98
+ 5 0.0 0:00.60 0:07.52
+ 323 1000 304 323 323 2 148M 2.19M 0.0 0:00.12 0:00.60 /bin/bash
+ 0 0.0 0:00.12 0:00.54
+ 1 0.0 0:00.00 0:00.06
+ 411 0 3 1 1 5 130M 1.02M 0.0 0:01.17 0:16.40 /hurd/term /dev/ptyp3 pty-master /dev/ttyp3
+ 0 0.0 0:00.42 0:03.74
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.15 0:02.70
+ 3 0.0 0:00.24 0:05.48
+ 4 0.0 0:00.33 0:04.45
+ 414 1000 304 414 414 2 148M 2.13M 0.0 0:00.05 0:00.23 /bin/bash
+ 0 0.0 0:00.04 0:00.21
+ 1 0.0 0:00.00 0:00.02
+ 425 0 3 1 1 3 130M 872K 0.0 0:00.02 0:00.05 /hurd/proxy-defpager
+ 0 0.0 0:00.02 0:00.04
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.00 0:00.01
+ 3087 0 3 1 1 5 130M 1.02M 0.0 0:00.23 0:01.39 /hurd/term /dev/ptyp4 pty-master /dev/ttyp4
+ 0 0.0 0:00.05 0:00.39
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.07 0:00.43
+ 3 0.0 0:00.07 0:00.31
+ 4 0.0 0:00.04 0:00.26
+ 3648 0 3 1 1 3 130M 876K 0.0 0:00.00 0:00.05 /hurd/crash --kill
+ 0 0.0 0:00.00 0:00.05
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.00 0:00.00
+ 5512 0 3 1 1 5 130M 1.01M 0.0 0:00.05 0:00.70 /hurd/term /dev/ptyp5 pty-master /dev/ttyp5
+ 0 0.0 0:00.00 0:00.26
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.03 0:00.16
+ 3 0.0 0:00.02 0:00.14
+ 4 0.0 0:00.00 0:00.14
+ 10286 1000 323 10286 323 2 135M 1.28M 0.0 0:00.06 0:00.20 make
+ 0 0.0 0:00.06 0:00.20
+ 1 0.0 0:00.00 0:00.00
+ 10287 1000 323 10286 323 2 147M 884K 0.0 0:00.00 0:00.33 tee standard output L_ LC_PAPER=en_US.utf8 LC_ADDRESS=en_US.utf8 SSH_AGENT_PID=284 LC_MONETARY=
+ M=en_US.utf8 SP_REPLACE_LINKS=n SHELL=/bin/bash TERM=screen SP_STOP_AFTER=build HISTSIZE=10000 SSH_CLIENT=192.168.10.60 55972 22 LC_NUMERIC=en_US.utf8 OLDPWD=/home/tsch
+ Mhwinge SSH_TTY=/dev/ttyp0 USER=tschwinge HISTFILESIZE=10000 LD_LIBRARY_PATH= LC_TELEPHONE=en_US.utf8 SP_COMPAT=n LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;
+ M;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=0
+ M01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:
+ M:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35
+ M5:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=0
+ M01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm
+ Mm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.an
+ Mnx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.
+ M.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36: SSH_AUTH_SOCK=/home/tschwinge/.ssh/auth_sock.grubber.bddebian.com TERMCAP=SC|screen|VT 100/ANSI X3.64 virtual terminal
+ Ml:\^K^J:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:bs:bt=\E[Z:\^K^J:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:ct=\E[3g:\^K^J:do=^J:nd=\E[C:pt:rc=\E8:rs=\Ec:sc=\E7:st=\EH
+ MH:up=\EM:\^K^J:le=^H:bl=^G:cr=^M:it#8:ho=\E[H:nw=\EE:ta=^I:is=\E)0:\^K^J:li#50:co#166:am:xn:xv:LP:sr=\EM:al=\E[L:AL=\E[%dL:\^K^J:cs=\E[%i%d;%dr:dl=\E[M:DL=\E[%dM:dc=\E
+ ME[P:DC=\E[%dP:\^K^J:im=\E[4h:ei=\E[4l:mi:IC=\E[%d@:ks=\E[?1h\E=:\^K^J:ke=\E[?1l\E>:vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l:\^K^J:ti=\E[?1049h:te=\E[?1049l:us=\E[4m:ue=\E
+ ME[24m:so=\E[3m:\^K^J:se=\E[23m:mb=\E[5m:md=\E[1m:mr=\E[7m:me=\E[m:ms:\^K^J:Co#8:pa#64:AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m:AX:\^K^J:vb=\Eg:G0:as=\E(0:ae=\E(B:\^K^J:ac=\1
+ M140\140aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~..--++,,hhII00:\^K^J:po=\E[5i:pf=\E[4i:k0=\E[10~:k1=\EOP:k2=\EOQ:k3=\EOR:\^K^J:k4=\EOS:k5=\E[15~:k6=\E[17~:k7=\E
+ ME[18~:k8=\E[19~:\^K^J:k9=\E[20~:k;=\E[21~:F1=\E[23~:F2=\E[24~:F3=\E[1;2P:\^K^J:F4=\E[1;2Q:F5=\E[1;2R:F6=\E[1;2S:F7=\E[15;2~:\^K^J:F8=\E[17;2~:F9=\E[18;2~:FA=\E[19;2~:k
+ Mkb=\177:K2=\EOE:\^K^J:kB=\E[Z:kF=\E[1;2B:kR=\E[1;2A:*4=\E[3;2~:*7=\E[1;2F:\^K^J:#2=\E[1;2H:#3=\E[2;2~:#4=\E[1;2D:%c=\E[6;2~:%e=\E[5;2~:\^K^J:%i=\E[1;2C:kh=\E[1~:@1=\E[
+ M[1~:kH=\E[4~:@7=\E[4~:\^K^J:kN=\E[6~:kP=\E[5~:kI=\E[2~:kD=\E[3~:ku=\EOA:kd=\EOB:\^K^J:kr=\EOC:kl=\EOD:km: have_bash_profile=y SPF_SOURCE_DEBUG=y PATH=/home/tschwinge/c
+ Mcommand:/home/tschwinge/shared/command:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games MAIL=/var/mail/tschwinge LC_MESSAGES=en_US.utf8 SP_TARDIR=/
+ M/home/tschwinge/tmp/source/package STY=304.S_main LC_COLLATE=C LC_IDENTIFICATION=en_US.utf8 SP_FOREIGN_DIR=/home/tschwinge/shared.old/package/host/schwinge.homeip.net/
+ M/sp-foreign-snippets/snippets PWD=/home/tschwinge/tmp/emacs/trunk.build _LD_LIBRARY_PATH= EDITOR=emacsclient LANG=en_US.utf8 TZ=Europe/Berlin LC_MEASUREMENT=en_US.utf
+ Mf8 KRB5CCNAME=/tmp/krb5cc.tschwinge HISTCONTROL=ignoreboth HOME=/home/tschwinge SHLVL=2 SPF_COMPAT=n LOGNAME=tschwinge LESS=-M -R CVS_RSH=ssh WINDOW=1 SSH_CONNECTION=1
+ M192.168.10.60 55972 192.168.10.63 22 LC_CTYPE=en_US.utf8 LESSOPEN=| /usr/bin/lesspipe %s EMAIL=thomas@schwinge.name ALTERNATE_EDITOR=joe LC_TIME=en_US.utf8 LESSCLOSE=/
+ M/usr/bin/lesspipe %s %s SPF_SOURCE_DATA_DIR=/home/tschwinge/shared.old/source/package/misc/spf LC_NAME=en_US.utf8 _=/usr/bin/tee
+ 0 0.0 0:00.00 0:00.33
+ 1 0.0 0:00.00 0:00.00
+ 10377 1000 10286 10286 323 2 146M 828K 0.0 0:00.00 0:00.00 /bin/sh -c boot=bootstrap-emacs; \^Kif [ ! -x "src/$boot" ]; then
+ M \^K cd src; make all \^K CC='gcc' CFLAGS='-g' CPPFLAGS='-DXASSERTS=1' \^K LDFLA
+ MAGS='-Wl,-znocombreloc ' MAKE='make' BOOTSTRAPEMACS="$boot"; \^Kfi;
+ 0 0.0 0:00.00 0:00.00
+ 1 0.0 0:00.00 0:00.00
+ 10378 1000 10377 10286 323 2 135M 1.65M 0.0 0:00.71 0:02.12 make all CC=gcc CFLAGS=-g CPPFLAGS=-DXASSERTS=1 LDFLAGS=-Wl,-znocombreloc MAKE=make BOOTSTRAPE
+ MEMACS=bootstrap-emacs
+ 0 0.0 0:00.71 0:01.92
+ 1 0.0 0:00.00 0:00.19
+ 10770 1000 10378 10286 323 2 146M 852K 0.0 0:00.00 0:00.03 /bin/sh -c if test "no" = "yes"; then \^K ln -f temacs bootstrap-emacs; \^Kelse \^K `/bin/pwd
+ Md`/temacs --batch --load loadup bootstrap || exit 1; \^K mv -f emacs bootstrap-emacs; \^Kfi
+ 0 0.0 0:00.00 0:00.03
+ 1 0.0 0:00.00 0:00.00
+ 10772 1000 10770 10286 323 3 180M 38.8M 0.0 1:16.35 0:05.27 /media/data/home/tschwinge/tmp/emacs/trunk.build/src/temacs --batch --load loadup bootstrap
+ 0 0.0 1:16.35 0:05.27
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 0:00.00 0:00.00
+ 10778 1000 304 304 304 2 148M 396K 0.0 0:00.00 0:00.00 SCREEN -S S_main
+ 0 0.0 0:00.00 0:00.00
+ 1 0.0 0:00.00 0:00.00
+ 10784 - 160 10784 160 2 146M 672K 0.0 0:00.00 0:00.01 syncfs -s
+ 0 0.0 0:00.00 0:00.01
+ 1 0.0 0:00.00 0:00.00
+ 10785 - 160 10785 160 2 146M 672K 0.0 0:00.00 0:00.02 syncfs -s -c /media/data/
+ 0 0.0 0:00.00 0:00.02
+ 1 0.0 0:00.00 0:00.00
+ 10787 0 160 10787 160 2 146M 876K 0.0 0:00.00 0:00.06 ps -Af
+ 0 0.0 0:00.00 0:00.06
+ 1 0.0 0:00.00 0:00.00
+ 10795 8 131 6 6 2 147M 1.38M 0.1 0:00.02 0:00.04 /usr/lib/nullmailer/qmqp -d -s mail.schwinge.homeip.net
+ 0 0.1 0:00.02 0:00.04
+ 1 0.0 0:00.00 0:00.00
+ 10796 0 160 10796 160 2 146M 1.23M 0.0 0:00.00 0:00.08 ps -F hurd-long -T -M -w -A
+ 0 0.0 0:00.00 0:00.03
+ 1 0.0 0:00.00 0:00.00
+
+ [4]+ Done ps -F hurd-long -T -M -w -A
+ login>
+
+TH# 631 of PID 174 (which is indeed ext2fs for /media/data) looks very
+suspicious, likely together in combination with TH# 1 of PID 2 (GNU Mach), so
+likely some IPC ping-pong?
+
+ PID TH# UID PPID PGrp Sess TH Vmem RSS %CPU User System Args
+ 0 0 1 1 1 16 132M 1M 0.0 0:04.84 0:54.84 /hurd/proc
+ [...]
+ 2 - 1 1 1 7 418M 19.5M 0.0 0:00.00 0:12.16 root=device:hd0
+ 0 0.0 0:00.00 0:00.00
+ 1 92.6 0:00.00 46:33.66
+ 2 0.0 0:00.00 0:12.07
+ 3 0.0 0:00.00 0:00.05
+ 4 0.0 0:00.00 0:00.02
+ 5 0.0 0:00.00 0:00.00
+ 6 0.0 0:00.00 0:00.01
+ [...]
+ 174 0 3 1 1 632 2.99G 27.6M 100.3 16:43.18 52:54.41 /hurd/ext2fs /dev/hd2
+ 0 0.0 0:00.01 0:00.03
+ 1 0.0 0:00.00 0:00.00
+ 2 0.0 1:34.24 6:26.66
+ 3 0.0 0:00.04 0:00.31
+ [...]
+ 630 0.0 0:00.00 0:00.00
+ 631 100.3 8:11.86 17:35.07
+ [...]
+
+Attaching GDB hangs. Should have used noninvasive mode...
+
+Having a look again after an hour or two, GNU Mach's thread 1's (system) time
+count has gone up to nearly 120 minutes, and ext2fs' thread 631's is up to 12
+minutes user and 26 minutes system time.
+
+I was able to get another root shell via plain `ssh root@grubber`, and I'm able
+to attach GDB in noninvasive mode. Hopefully the first unsuccessful (but still
+running) GDB didn't cause any interference.
+
+Due to differences in [[thread_numbering_of_ps_and_gdb]], GDB's thread 632
+(which is the last one anyways) should be the offending one. GDB's thread 631
+and earlier ones (manually checked down to 600) are sitting in `mach_msg_trap`.
+
+ (gdb) thread apply 632 bt
+
+ Thread 632 (Thread 174.632):
+ #0 0x010e408c in syscall_vm_allocate () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/syscall_vm_allocate.S:2
+ #1 0x010e423a in __vm_allocate (target_task=1, address=0xbfffbde0, size=65536, anywhere=0)
+ at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/vm_allocate.c:54
+ #2 0x010b023a in alloc_stack (p=0x83774a8) at /home/sthibaul-guest/hurd-debian/./libthreads/stack.c:397
+ #3 0x010ae9b3 in cproc_create () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:724
+ #4 0x010afe5a in cthread_fork (func=0x133ff42, arg=0x0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:341
+ #5 0x010b505d in internal_demuxer (inp=0xbfffdf20, outheadp=0xbfffbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:72
+ #6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x133ff38, max_size=8192, rcv_name=18, option=2048, timeout=0) at msgserver.c:109
+ #7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+ #8 0x010b0058 in cthread_body (self=0x8376c50) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+ #9 0x00000000 in ?? ()
+
+ (gdb) thread apply 632 bt full
+
+ Thread 632 (Thread 174.632):
+ #0 0x010e408c in syscall_vm_allocate () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/syscall_vm_allocate.S:2
+ No locals.
+ #1 0x010e423a in __vm_allocate (target_task=1, address=0xbfffbde0, size=65536, anywhere=0)
+ at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/vm_allocate.c:54
+ err = <value optimized out>
+ #2 0x010b023a in alloc_stack (p=0x83774a8) at /home/sthibaul-guest/hurd-debian/./libthreads/stack.c:397
+ base = 321454080
+ #3 0x010ae9b3 in cproc_create () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:724
+ child = 0x83774a8
+ n = <value optimized out>
+ #4 0x010afe5a in cthread_fork (func=0x133ff42, arg=0x0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:341
+ t = 0x8377430
+ #5 0x010b505d in internal_demuxer (inp=0xbfffdf20, outheadp=0xbfffbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:72
+ status = <value optimized out>
+ pi = 0x0
+ link = {thread = 2050, next = 0x0, prevp = 0x2000, notifies = 0x12, interrupted_next = 0x0}
+ __PRETTY_FUNCTION__ = "internal_demuxer"
+ lock = -1073758644
+ nreqthreads = -1073750240
+ totalthreads = 137852072
+ bucket = 0x10b1c64
+ demuxer = 0x10b01eb <alloc_stack+11>
+ #6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x133ff38, max_size=8192, rcv_name=18, option=2048, timeout=0) at msgserver.c:109
+ request = 0xbfffdf20
+ reply = 0xbfffbf10
+ mr = 3
+ __PRETTY_FUNCTION__ = "__mach_msg_server_timeout"
+ #7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+ timeout = 0
+ err = <value optimized out>
+ hook = 0
+ global_timeout = 0
+ thread_timeout = 0
+ bucket = 0x805f6c0
+ lock = 0
+ totalthreads = 497
+ nreqthreads = 1
+ #8 0x010b0058 in cthread_body (self=0x8376c50) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+ t = 0x8376bd8
+ #9 0x00000000 in ?? ()
+ No symbol table info available.
+
+May this simply be an out-of-memory situation where Mach won't / can't satisfy
+libports / libthreads demand? (Looks like the latter library is currently
+creating a new thread.) If yes, should the code be prepared for that? Is it
+perhaps prepared (I did not yet have a look), and re-tries again and again?
+Why doesn't Mach page out some pages to make memory available?
+
+This is stock GNU Mach from Git, no patches, configured for Xen domU usage.
diff --git a/open_issues/error_message_disk_full.mdwn b/open_issues/error_message_disk_full.mdwn
new file mode 100644
index 00000000..f72cd66a
--- /dev/null
+++ b/open_issues/error_message_disk_full.mdwn
@@ -0,0 +1,14 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+IRC, unknown channel, unknown date:
+
+ <antrik> /usr/bin/install: writing `/usr/src/gnumach-20060408.dfsg.1/debian/gnumach-dbg/boot/gnumach': (os/kern) memory error
+ <antrik> interesting way to tell that the disk is full ;-)
diff --git a/open_issues/etc_fstab.mdwn b/open_issues/etc_fstab.mdwn
new file mode 100644
index 00000000..eb2a34f9
--- /dev/null
+++ b/open_issues/etc_fstab.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="/etc/fstab"]]
+
+Even though we don't need a `/etc/fstab` for mounting filesystems
+(passive [[hurd/translator]]s to the rescue; they have problems on their
+own, see the [[hurd/critique]]), we still need this file for `fsck -a`
+and `swapon -a` to function.
+
+[[!tag open_issue_hurd]]
diff --git a/open_issues/exec.mdwn b/open_issues/exec.mdwn
new file mode 100644
index 00000000..47d1560a
--- /dev/null
+++ b/open_issues/exec.mdwn
@@ -0,0 +1,23 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!open_issue_hurd]]
+
+IRC, unknown channel, unknown date.
+
+ <youpi> oh my, disabling gzip/bzip2 support makes apt preconfigure hang
+ <youpi> support in exec* I meant
+
+ <youpi> now a funny bug: if I disable gzip/bzip2 support from exec
+ <youpi> trying to run a zero-byte file hangs
+
+---
+
+May want to have a look at using BFD / libiberty/simpleobject.
diff --git a/open_issues/ext2fs_deadlock.mdwn b/open_issues/ext2fs_deadlock.mdwn
new file mode 100644
index 00000000..369875fe
--- /dev/null
+++ b/open_issues/ext2fs_deadlock.mdwn
@@ -0,0 +1,55 @@
+[[!meta copyright="Copyright © 2010 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_hurd]]
+
+On 2010-10-26, [[I|tschwinge]]'ve been doing the following: `cp -a
+../tmpdir/dump*.o ./` (65 files), changed my mind, hit `C-c`, continued with
+`cp -a ../tmpdir/dump*.o ./` (to preserve timestamps), wondered why this takes
+so long, hit `C-c` again, then found the FS deadlocked (using no CPU; but
+`syncfs -s -c` wouldn't finish, for example). Judging from the files'
+timestamps (after rebooting and `fsck`), I would assume that it already hung at
+the second `cp`'s time, and the deadlock thus is not due to the second `C-c`,
+but due to the first one.
+
+ # gdb /hurd/ext2fs
+ [...]
+ (gdb) set noninvasive on
+ (gdb) attach 177
+ [...]
+ [New Thread 177.535]
+ Reading symbols [...]
+ (gdb) info threads
+ [all the same from 177.535 down to...]
+ 11 Thread 177.11 0x010e3efc in mach_msg_trap ()
+ at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+ 10 Thread 177.10 0x010e3efc in mach_msg_trap ()
+ at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+ [doesn't continue with thread 9, but hangs, taking all CPU time]
+
+New GDB instance, again noninvasive, I'm able to continue.
+
+Here are backtraces for threads [[1 to 8|bt_1-8]] and [[10 to 535|bt_10-535]],
+I didn't succeed to get any information about thread 9 (which thus would
+probably be the most interesting one...) -- GDB would always hang when
+accessing it, no matter whether noninvasive mode or not. (Didn't have time to
+pull the information out of the process' memory manually (how to do that,
+anyways?), and also didn't have time to continue with debugging GDB itself, but
+this sounds like a [[!taglink open_issue_gdb]]...)
+
+---
+
+IRC, #hurd, 2010-10-27
+
+ <youpi> thread 8 hung on ports_begin_rpc
+ <youpi> that's probably where one could investigated first
+ <youpi> yes, a lot of threads are hung on that
+ <tschwinge> You mean 0x10b9488, right?
+ <youpi> yes
diff --git a/open_issues/ext2fs_deadlock/bt_1-8 b/open_issues/ext2fs_deadlock/bt_1-8
new file mode 100644
index 00000000..f3045fb4
--- /dev/null
+++ b/open_issues/ext2fs_deadlock/bt_1-8
@@ -0,0 +1,88 @@
+
+Thread 1 (Thread 177.1):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x131fd54, option=2, send_size=0, rcv_size=24, rcv_name=10, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af2d8 in condition_wait (c=0x10b1e80, m=0x10b1e50) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:783
+#4 0x010afc7f in cthread_exit (result=0x0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:393
+#5 0x0804e9e5 in main (argc=2, argv=0x131fec4) at /home/sthibaul-guest/hurd-debian/./ext2fs/ext2fs.c:204
+
+Thread 2 (Thread 177.2):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x132df20, option=3, send_size=40, rcv_size=4096, rcv_name=12, timeout=0, notify=0) at msg.c:110
+#2 0x010e4e29 in __mach_msg_server_timeout (demux=0x10f5930 <msgport_server>, max_size=4096, rcv_name=12, option=0, timeout=0) at msgserver.c:151
+#3 0x010e4efb in __mach_msg_server (demux=0x10f5930 <msgport_server>, max_size=4096, rcv_name=12) at msgserver.c:196
+#4 0x010f58ff in _hurd_msgport_receive () at msgportdemux.c:68
+#5 0x010b0058 in cthread_body (self=0x805ed38) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#6 0x00000000 in ?? ()
+
+Thread 3 (Thread 177.3):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x133bd18, option=2, send_size=0, rcv_size=24, rcv_name=22, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f6c0, port=6692, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x133be70, outheadp=0x133de80) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x133ff38, max_size=8192, rcv_name=18, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=1) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b4fc7 in ports_manage_port_operations_multithread (bucket=0x805f6c0, demuxer=0x103d9b0 <diskfs_demuxer>, hook=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:164
+#9 0x0104b256 in master_thread_function (demuxer=0x103d9b0) at /home/sthibaul-guest/hurd-debian/./libdiskfs/init-first.c:37
+#10 0x010b0058 in cthread_body (self=0x805f800) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#11 0x00000000 in ?? ()
+
+Thread 4 (Thread 177.4):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x134de80, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=1) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b4fc7 in ports_manage_port_operations_multithread (bucket=0x805f8f0, demuxer=0x105ad80 <pager_demuxer>, hook=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:164
+#5 0x01041904 in service_paging_requests (arg=0x805f8f0) at /home/sthibaul-guest/hurd-debian/./libdiskfs/disk-pager.c:41
+#6 0x010b0058 in cthread_body (self=0x805f9a0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#7 0x00000000 in ?? ()
+
+Thread 5 (Thread 177.5):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x135df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8060a40) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 6 (Thread 177.6):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x136bbb8, option=2, send_size=0, rcv_size=24, rcv_name=34, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x8292d98) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=11852, seqno=93, control=4806, offset=0, data=83726336, length=131072, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=11852, seqno=93, control=4806, offset=0, data=83726336, length=131072, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x136df20, OutHeadP=0x136bf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x1f, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x136df20, outp=0x136bf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x136df20, outheadp=0x136bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x80614f8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 7 (Thread 177.7):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x137bdb8, option=2, send_size=0, rcv_size=24, rcv_name=38, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f6c0, port=6692, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x137df20, outheadp=0x137bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x133ff38, max_size=8192, rcv_name=18, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8061d88) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 8 (Thread 177.8):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x138fe80, option=2, send_size=0, rcv_size=24, rcv_name=44, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4b48 in ports_begin_rpc (portstruct=0x80625a0, msg_id=0, info=0x138ff68) at /home/sthibaul-guest/hurd-debian/./libports/begin-rpc.c:33
+#5 0x01052c15 in periodic_sync (interval=5) at /home/sthibaul-guest/hurd-debian/./libdiskfs/sync-interval.c:100
+#6 0x010b0058 in cthread_body (self=0x8062698) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#7 0x00000000 in ?? ()
diff --git a/open_issues/ext2fs_deadlock/bt_10-535 b/open_issues/ext2fs_deadlock/bt_10-535
new file mode 100644
index 00000000..79ed145a
--- /dev/null
+++ b/open_issues/ext2fs_deadlock/bt_10-535
@@ -0,0 +1,5240 @@
+
+Thread 10 (Thread 177.10):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x13adf20, option=2051, send_size=48, rcv_size=8192, rcv_name=18, timeout=0, notify=0) at msg.c:110
+#2 0x010e4e29 in __mach_msg_server_timeout (demux=0x133ff38, max_size=8192, rcv_name=18, option=2048, timeout=0) at msgserver.c:151
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x806b9a0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 11 (Thread 177.11):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x13bbdb8, option=2, send_size=0, rcv_size=24, rcv_name=87, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11822, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x13bdf20, outheadp=0x13bbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x806b578) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 12 (Thread 177.12):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x13cdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8069bf8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 13 (Thread 177.13):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x13ddf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x806a4e8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 14 (Thread 177.14):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x13edf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8071118) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 15 (Thread 177.15):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x13fbdb8, option=2, send_size=0, rcv_size=24, rcv_name=46, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11881, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x13fdf20, outheadp=0x13fbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8070e60) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 16 (Thread 177.16):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x140bbb8, option=2, send_size=0, rcv_size=24, rcv_name=165, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x3a35c80) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=6731, seqno=93, control=11865, offset=0, data=68448256, length=131072, dirty=1, kcopy=1, initializing=0)
+ at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=6731, seqno=93, control=11865, offset=0, data=68448256, length=131072, dirty=1, kcopy=1)
+ at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x140df20, OutHeadP=0x140bf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x1f, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x140df20, outp=0x140bf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x140df20, outheadp=0x140bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x8070f98) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 17 (Thread 177.17):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x141bdb8, option=2, send_size=0, rcv_size=24, rcv_name=159, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11840, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x141df20, outheadp=0x141bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x80731b0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 18 (Thread 177.18):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x142bdb8, option=2, send_size=0, rcv_size=24, rcv_name=175, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f6c0, port=6692, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x142bf10, outheadp=0x142df20) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x133ff38, max_size=8192, rcv_name=18, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8073f98) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 19 (Thread 177.19):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x143df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8070df8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 20 (Thread 177.20):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x144df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8073c60) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 21 (Thread 177.21):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x145df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8073db8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 22 (Thread 177.22):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x146df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8073af0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 23 (Thread 177.23):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x147bbb8, option=2, send_size=0, rcv_size=24, rcv_name=187, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x8260de8) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=11699, seqno=93, control=6878, offset=0, data=85233664, length=131072, dirty=1, kcopy=1, initializing=0)
+ at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=11699, seqno=93, control=6878, offset=0, data=85233664, length=131072, dirty=1, kcopy=1)
+ at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x147df20, OutHeadP=0x147bf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x1f, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x147df20, outp=0x147bf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x147df20, outheadp=0x147bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+Quit
+
+Thread 10 (Thread 177.10):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x13adf20, option=2051, send_size=48, rcv_size=8192, rcv_name=18, timeout=0, notify=0) at msg.c:110
+#2 0x010e4e29 in __mach_msg_server_timeout (demux=0x133ff38, max_size=8192, rcv_name=18, option=2048, timeout=0) at msgserver.c:151
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x806b9a0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 11 (Thread 177.11):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x13bbdb8, option=2, send_size=0, rcv_size=24, rcv_name=87, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11822, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x13bdf20, outheadp=0x13bbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x806b578) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 12 (Thread 177.12):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x13cdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8069bf8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 13 (Thread 177.13):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x13ddf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x806a4e8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 14 (Thread 177.14):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x13edf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8071118) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 15 (Thread 177.15):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x13fbdb8, option=2, send_size=0, rcv_size=24, rcv_name=46, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11881, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x13fdf20, outheadp=0x13fbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8070e60) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 16 (Thread 177.16):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x140bbb8, option=2, send_size=0, rcv_size=24, rcv_name=165, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x3a35c80) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=6731, seqno=93, control=11865, offset=0, data=68448256, length=131072, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=6731, seqno=93, control=11865, offset=0, data=68448256, length=131072, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x140df20, OutHeadP=0x140bf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x1f, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x140df20, outp=0x140bf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x140df20, outheadp=0x140bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x8070f98) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 17 (Thread 177.17):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x141bdb8, option=2, send_size=0, rcv_size=24, rcv_name=159, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11840, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x141df20, outheadp=0x141bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x80731b0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 18 (Thread 177.18):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x142bdb8, option=2, send_size=0, rcv_size=24, rcv_name=175, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f6c0, port=6692, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x142bf10, outheadp=0x142df20) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x133ff38, max_size=8192, rcv_name=18, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8073f98) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 19 (Thread 177.19):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x143df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8070df8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 20 (Thread 177.20):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x144df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8073c60) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 21 (Thread 177.21):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x145df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8073db8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 22 (Thread 177.22):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x146df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8073af0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 23 (Thread 177.23):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x147bbb8, option=2, send_size=0, rcv_size=24, rcv_name=187, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x8260de8) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=11699, seqno=93, control=6878, offset=0, data=85233664, length=131072, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=11699, seqno=93, control=6878, offset=0, data=85233664, length=131072, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x147df20, OutHeadP=0x147bf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x1f, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x147df20, outp=0x147bf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x147df20, outheadp=0x147bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x8071588) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 24 (Thread 177.24):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x148df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80716e0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 25 (Thread 177.25):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x149df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8071838) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 26 (Thread 177.26):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x14adf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8071880) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 27 (Thread 177.27):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x14bdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8074d80) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 28 (Thread 177.28):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x14cbc6c, option=3, send_size=24, rcv_size=32, rcv_name=209, timeout=0, notify=0) at msg.c:110
+#2 0x012d73dc in __thread_suspend (target_thread=66) at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/RPC_thread_suspend.c:85
+#3 0x01100e07 in hurd_thread_cancel (thread=66) at thread-cancel.c:57
+#4 0x010b5b2a in ports_interrupt_rpcs (portstruct=0x8137000) at /home/sthibaul-guest/hurd-debian/./libports/interrupt-rpcs.c:35
+#5 0x010b6434 in ports_S_interrupt_operation (port=11806, seqno=7) at /home/sthibaul-guest/hurd-debian/./libports/interrupt-operation.c:37
+#6 0x010b7a40 in _Xinterrupt_operation (InHeadP=0x14cdf20, OutHeadP=0x14cbf10) at interruptServer.c:74
+#7 0x010b79b4 in ports_interrupt_server (InHeadP=0xd1, OutHeadP=0xffffffe7) at interruptServer.c:113
+#8 0x0103da44 in diskfs_demuxer (inp=0x14cdf20, outp=0x14cbf10) at /home/sthibaul-guest/hurd-debian/./libdiskfs/demuxer.c:38
+#9 0x010b5163 in internal_demuxer (inp=0x14cdf20, outheadp=0x14cbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#10 0x010e4dc6 in __mach_msg_server_timeout (demux=0x133ff38, max_size=8192, rcv_name=18, option=2048, timeout=0) at msgserver.c:109
+#11 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#12 0x010b0058 in cthread_body (self=0x8079e60) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#13 0x00000000 in ?? ()
+
+Thread 29 (Thread 177.29):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x14dbdb8, option=2, send_size=0, rcv_size=24, rcv_name=294, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4812, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x14ddf20, outheadp=0x14dbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x807fee0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 30 (Thread 177.30):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x14ebdb8, option=2, send_size=0, rcv_size=24, rcv_name=297, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11858, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x14edf20, outheadp=0x14ebf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x807f960) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 31 (Thread 177.31):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x14fdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x807f0a8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 32 (Thread 177.32):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x150bdb8, option=2, send_size=0, rcv_size=24, rcv_name=312, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6314, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x150df20, outheadp=0x150bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x807b5d8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 33 (Thread 177.33):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x151bdb8, option=2, send_size=0, rcv_size=24, rcv_name=315, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11858, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x151df20, outheadp=0x151bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8079d88) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 34 (Thread 177.34):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x152df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8082708) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 35 (Thread 177.35):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x153df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8082f60) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 36 (Thread 177.36):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x154bdb8, option=2, send_size=0, rcv_size=24, rcv_name=324, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5360, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x154df20, outheadp=0x154bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x80837b8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 37 (Thread 177.37):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x155df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8084010) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 38 (Thread 177.38):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x156bdb8, option=2, send_size=0, rcv_size=24, rcv_name=330, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6765, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x156df20, outheadp=0x156bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8084868) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 39 (Thread 177.39):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x157df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80850c0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 40 (Thread 177.40):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x158df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8085918) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 41 (Thread 177.41):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x159df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8086170) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 42 (Thread 177.42):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x15abdb8, option=2, send_size=0, rcv_size=24, rcv_name=342, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=12846, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x15adf20, outheadp=0x15abf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x80869c8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 43 (Thread 177.43):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x15bdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8087220) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 44 (Thread 177.44):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x15cdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8087a78) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 45 (Thread 177.45):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x15dbdb8, option=2, send_size=0, rcv_size=24, rcv_name=351, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11872, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x15ddf20, outheadp=0x15dbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x80882d0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 46 (Thread 177.46):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x15edf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8088b28) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 47 (Thread 177.47):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x15fdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8089380) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 48 (Thread 177.48):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x160bdb8, option=2, send_size=0, rcv_size=24, rcv_name=360, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6518, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x160df20, outheadp=0x160bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8089bd8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 49 (Thread 177.49):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x161bdb8, option=2, send_size=0, rcv_size=24, rcv_name=363, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5340, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x161df20, outheadp=0x161bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x808a430) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 50 (Thread 177.50):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x162bdb8, option=2, send_size=0, rcv_size=24, rcv_name=366, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11840, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x162df20, outheadp=0x162bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x808ac88) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 51 (Thread 177.51):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x163df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x808b4e0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 52 (Thread 177.52):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x164df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x808bd38) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 53 (Thread 177.53):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x165df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x808c590) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 54 (Thread 177.54):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x166df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x808cde8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 55 (Thread 177.55):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x167bdb8, option=2, send_size=0, rcv_size=24, rcv_name=381, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4864, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x167df20, outheadp=0x167bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x808d640) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 56 (Thread 177.56):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x168df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x808de98) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 57 (Thread 177.57):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x169df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x808e6f0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 58 (Thread 177.58):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x16adf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x808ef48) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 59 (Thread 177.59):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x16bbdb8, option=2, send_size=0, rcv_size=24, rcv_name=393, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5339, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x16bdf20, outheadp=0x16bbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x808f7a0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 60 (Thread 177.60):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x16cbdb8, option=2, send_size=0, rcv_size=24, rcv_name=396, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6731, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x16cdf20, outheadp=0x16cbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x808fff8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 61 (Thread 177.61):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x16dbdb8, option=2, send_size=0, rcv_size=24, rcv_name=399, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4785, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x16ddf20, outheadp=0x16dbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8090850) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 62 (Thread 177.62):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x16ebdb8, option=2, send_size=0, rcv_size=24, rcv_name=402, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11824, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x16edf20, outheadp=0x16ebf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x80910a8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 63 (Thread 177.63):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x16fbdb8, option=2, send_size=0, rcv_size=24, rcv_name=405, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11863, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x16fdf20, outheadp=0x16fbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8091900) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 64 (Thread 177.64):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x170df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8092158) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 65 (Thread 177.65):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x171df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80929b0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 66 (Thread 177.66):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x172bdb8, option=2, send_size=0, rcv_size=24, rcv_name=414, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11855, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x172df20, outheadp=0x172bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8093208) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 67 (Thread 177.67):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x173bdb8, option=2, send_size=0, rcv_size=24, rcv_name=417, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6308, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x173df20, outheadp=0x173bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8093a60) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 68 (Thread 177.68):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x174bdb8, option=2, send_size=0, rcv_size=24, rcv_name=420, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4830, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x174df20, outheadp=0x174bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x80942b8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 69 (Thread 177.69):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x175bdb8, option=2, send_size=0, rcv_size=24, rcv_name=423, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11875, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x175df20, outheadp=0x175bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8094b10) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 70 (Thread 177.70):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x176bdb8, option=2, send_size=0, rcv_size=24, rcv_name=426, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6876, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x176df20, outheadp=0x176bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8095368) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 71 (Thread 177.71):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x177bdb8, option=2, send_size=0, rcv_size=24, rcv_name=429, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5321, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x177df20, outheadp=0x177bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8095bc0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 72 (Thread 177.72):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x178df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8096418) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 73 (Thread 177.73):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x179df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8096c70) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 74 (Thread 177.74):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x17adf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80974c8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 75 (Thread 177.75):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x17bdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8097d20) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 76 (Thread 177.76):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x17cdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8098578) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 77 (Thread 177.77):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x17ddf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8098dd0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 78 (Thread 177.78):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x17ebdb8, option=2, send_size=0, rcv_size=24, rcv_name=450, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4859, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x17edf20, outheadp=0x17ebf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8099628) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 79 (Thread 177.79):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x17fdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8099e80) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 80 (Thread 177.80):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x180bdb8, option=2, send_size=0, rcv_size=24, rcv_name=456, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6876, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x180df20, outheadp=0x180bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x809a6d8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 81 (Thread 177.81):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x181df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x809af30) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 82 (Thread 177.82):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x182df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x809b788) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 83 (Thread 177.83):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x183df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x809bfe0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 84 (Thread 177.84):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x184df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x809c838) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 85 (Thread 177.85):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x185bdb8, option=2, send_size=0, rcv_size=24, rcv_name=471, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4834, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x185df20, outheadp=0x185bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x809d090) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 86 (Thread 177.86):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x186bdb8, option=2, send_size=0, rcv_size=24, rcv_name=474, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4845, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x186df20, outheadp=0x186bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x809d8e8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 87 (Thread 177.87):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x187bbb8, option=2, send_size=0, rcv_size=24, rcv_name=477, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x3a450d8) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=11860, seqno=93, control=11864, offset=0, data=82976768, length=131072, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=11860, seqno=93, control=11864, offset=0, data=82976768, length=131072, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x187df20, OutHeadP=0x187bf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x1f, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x187df20, outp=0x187bf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x187df20, outheadp=0x187bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x809e140) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 88 (Thread 177.88):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x188bdb8, option=2, send_size=0, rcv_size=24, rcv_name=480, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6778, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x188df20, outheadp=0x188bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x809e998) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 89 (Thread 177.89):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x189df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x809f1f0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 90 (Thread 177.90):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x18abdb8, option=2, send_size=0, rcv_size=24, rcv_name=486, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4959, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x18adf20, outheadp=0x18abf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x809fa48) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 91 (Thread 177.91):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x18bdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80a02a0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 92 (Thread 177.92):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x18cbc48, option=2, send_size=0, rcv_size=24, rcv_name=492, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x8060928) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=27, seqno=473816, control=28, offset=2453504, data=14823424, length=4096, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=27, seqno=473816, control=28, offset=2453504, data=14823424, length=4096, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x18cdf20, OutHeadP=0x18cbf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x0, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x18cdf20, outp=0x18cbf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x18cdf20, outheadp=0x18cbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x80a0af8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 93 (Thread 177.93):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x18ddf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80a1350) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 94 (Thread 177.94):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x18edf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80a1ba8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 95 (Thread 177.95):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x18fdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80a2400) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 96 (Thread 177.96):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x190bdb8, option=2, send_size=0, rcv_size=24, rcv_name=504, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4851, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x190df20, outheadp=0x190bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x80a2c58) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 97 (Thread 177.97):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x191df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80a34b0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 98 (Thread 177.98):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x192df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80a3d08) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 99 (Thread 177.99):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x193df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80a4560) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 100 (Thread 177.100):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x194bdb8, option=2, send_size=0, rcv_size=24, rcv_name=516, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11837, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x194df20, outheadp=0x194bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x80a4db8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 101 (Thread 177.101):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x195df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80a5610) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 102 (Thread 177.102):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x196df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80a5e68) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 103 (Thread 177.103):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x197df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80a66c0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 104 (Thread 177.104):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x198df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80a6f18) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 105 (Thread 177.105):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x199bdb8, option=2, send_size=0, rcv_size=24, rcv_name=531, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5402, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x199df20, outheadp=0x199bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x80a7770) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 106 (Thread 177.106):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x19abdb8, option=2, send_size=0, rcv_size=24, rcv_name=534, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11872, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x19adf20, outheadp=0x19abf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x80a7fc8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 107 (Thread 177.107):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x19bdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80a8820) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 108 (Thread 177.108):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x19cdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80a9078) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 109 (Thread 177.109):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x19ddf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80a98d0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 110 (Thread 177.110):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x19edf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80aa128) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 111 (Thread 177.111):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x19fdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8075b68) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 112 (Thread 177.112):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1a0df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80ab848) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 113 (Thread 177.113):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1a1df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80ae9a8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 114 (Thread 177.114):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1a2df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80ac0f8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 115 (Thread 177.115):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1a3df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x807f030) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 116 (Thread 177.116):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1a4df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80b2ae0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 117 (Thread 177.117):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1a5df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80b2b28) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 118 (Thread 177.118):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1a6df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80b5e78) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 119 (Thread 177.119):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1a7df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80b66d0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 120 (Thread 177.120):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1a8df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80b6f28) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 121 (Thread 177.121):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1a9df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80b7780) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 122 (Thread 177.122):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1aabdb8, option=2, send_size=0, rcv_size=24, rcv_name=692, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5327, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1aadf20, outheadp=0x1aabf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x80b7fd8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 123 (Thread 177.123):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1abbdb8, option=2, send_size=0, rcv_size=24, rcv_name=695, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11861, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1abdf20, outheadp=0x1abbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x80b8830) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 124 (Thread 177.124):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1acbdb8, option=2, send_size=0, rcv_size=24, rcv_name=698, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5595, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1acdf20, outheadp=0x1acbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x80b9088) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 125 (Thread 177.125):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1addf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80b98e0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 126 (Thread 177.126):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1aebdb8, option=2, send_size=0, rcv_size=24, rcv_name=704, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6972, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1aedf20, outheadp=0x1aebf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x80ba138) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 127 (Thread 177.127):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1afdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80ba990) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 128 (Thread 177.128):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1b0bdb8, option=2, send_size=0, rcv_size=24, rcv_name=710, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11847, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1b0df20, outheadp=0x1b0bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x80bb1e8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 129 (Thread 177.129):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1b1df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80bba40) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 130 (Thread 177.130):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1b2df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80bc298) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 131 (Thread 177.131):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1b3df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80bcaf0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 132 (Thread 177.132):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1b4df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80bd348) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 133 (Thread 177.133):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1b5df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80bdba0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 134 (Thread 177.134):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1b6df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80be3f8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 135 (Thread 177.135):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1b7df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80bec50) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 136 (Thread 177.136):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1b8bdb8, option=2, send_size=0, rcv_size=24, rcv_name=734, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4785, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1b8df20, outheadp=0x1b8bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x80bf4a8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 137 (Thread 177.137):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1b9df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80bfd00) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 138 (Thread 177.138):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1badf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80c0558) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 139 (Thread 177.139):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1bbbdb8, option=2, send_size=0, rcv_size=24, rcv_name=743, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=13223, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1bbdf20, outheadp=0x1bbbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x80c0db0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 140 (Thread 177.140):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1bcdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80c1608) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 141 (Thread 177.141):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1bddf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80c1e60) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 142 (Thread 177.142):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1bedf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80c26b8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 143 (Thread 177.143):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1bfdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81198b8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 144 (Thread 177.144):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1c0df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81196f8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 145 (Thread 177.145):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1c1df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8119848) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 146 (Thread 177.146):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1c2df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8117318) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 147 (Thread 177.147):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1c3df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8115880) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 148 (Thread 177.148):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1c4bdb8, option=2, send_size=0, rcv_size=24, rcv_name=2159, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11826, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1c4df20, outheadp=0x1c4bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81199c0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 149 (Thread 177.149):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1c5df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8115600) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 150 (Thread 177.150):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1c6df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8118b18) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 151 (Thread 177.151):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1c7bdb8, option=2, send_size=0, rcv_size=24, rcv_name=2168, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6298, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1c7df20, outheadp=0x1c7bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81197b0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 152 (Thread 177.152):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1c8df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8119ba0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 153 (Thread 177.153):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1c9df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x811d050) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 154 (Thread 177.154):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1cabdb8, option=2, send_size=0, rcv_size=24, rcv_name=2177, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6298, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1cadf20, outheadp=0x1cabf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x811d8a8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 155 (Thread 177.155):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1cbbdb8, option=2, send_size=0, rcv_size=24, rcv_name=2180, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5340, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1cbdf20, outheadp=0x1cbbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x811e100) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 156 (Thread 177.156):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1ccbdb8, option=2, send_size=0, rcv_size=24, rcv_name=2183, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4830, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1ccdf20, outheadp=0x1ccbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x811e958) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 157 (Thread 177.157):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1cdbdb8, option=2, send_size=0, rcv_size=24, rcv_name=2186, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5321, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1cddf20, outheadp=0x1cdbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x811f1b0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 158 (Thread 177.158):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1cedf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x811fa08) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 159 (Thread 177.159):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1cfdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8120260) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 160 (Thread 177.160):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1d0df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8120ab8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 161 (Thread 177.161):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1d1bdb8, option=2, send_size=0, rcv_size=24, rcv_name=2198, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11846, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1d1df20, outheadp=0x1d1bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8121310) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 162 (Thread 177.162):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1d2df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8121b68) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 163 (Thread 177.163):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1d3bdb8, option=2, send_size=0, rcv_size=24, rcv_name=2204, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5883, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1d3df20, outheadp=0x1d3bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81223c0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 164 (Thread 177.164):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1d4bdb8, option=2, send_size=0, rcv_size=24, rcv_name=2207, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4861, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1d4df20, outheadp=0x1d4bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8122c18) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 165 (Thread 177.165):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1d5df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8123470) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 166 (Thread 177.166):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1d6df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8123cc8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 167 (Thread 177.167):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1d7bbb8, option=2, send_size=0, rcv_size=24, rcv_name=2216, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x8133588) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=6841, seqno=93, control=11809, offset=0, data=66523136, length=131072, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=6841, seqno=93, control=11809, offset=0, data=66523136, length=131072, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x1d7df20, OutHeadP=0x1d7bf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x1f, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x1d7df20, outp=0x1d7bf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x1d7df20, outheadp=0x1d7bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x8124520) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 168 (Thread 177.168):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1d8df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8124d78) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 169 (Thread 177.169):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1d9df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81255d0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 170 (Thread 177.170):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1dabdb8, option=2, send_size=0, rcv_size=24, rcv_name=2225, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11849, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1dadf20, outheadp=0x1dabf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8125e28) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 171 (Thread 177.171):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1dbdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8126680) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 172 (Thread 177.172):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1dcbc48, option=2, send_size=0, rcv_size=24, rcv_name=2231, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x8060928) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=27, seqno=473817, control=28, offset=4096, data=14979072, length=4096, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=27, seqno=473817, control=28, offset=4096, data=14979072, length=4096, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x1dcdf20, OutHeadP=0x1dcbf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x0, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x1dcdf20, outp=0x1dcbf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x1dcdf20, outheadp=0x1dcbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x8126ed8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 173 (Thread 177.173):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1dddf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8127730) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 174 (Thread 177.174):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1debdb8, option=2, send_size=0, rcv_size=24, rcv_name=2237, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11878, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1dedf20, outheadp=0x1debf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8127f88) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 175 (Thread 177.175):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1dfbdb8, option=2, send_size=0, rcv_size=24, rcv_name=2240, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11869, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1dfdf20, outheadp=0x1dfbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81287e0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 176 (Thread 177.176):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1e0df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8129038) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 177 (Thread 177.177):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1e1df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8129890) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 178 (Thread 177.178):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1e2bbd8, option=2, send_size=0, rcv_size=24, rcv_name=2249, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x82c8510) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=11826, seqno=66, control=4763, offset=32768, data=66375680, length=98304, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=11826, seqno=66, control=4763, offset=32768, data=66375680, length=98304, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x1e2df20, OutHeadP=0x1e2bf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x17, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x1e2df20, outp=0x1e2bf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x1e2df20, outheadp=0x1e2bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x812a0e8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 179 (Thread 177.179):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1e3df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x812a940) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 180 (Thread 177.180):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1e4df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8159660) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 181 (Thread 177.181):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1e5df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x814c4c0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 182 (Thread 177.182):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1e6df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8137e10) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 183 (Thread 177.183):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1e7df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x813f2a0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 184 (Thread 177.184):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1e8df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8154568) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 185 (Thread 177.185):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1e9bdb8, option=2, send_size=0, rcv_size=24, rcv_name=2967, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11843, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1e9df20, outheadp=0x1e9bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8151aa8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 186 (Thread 177.186):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1eabdb8, option=2, send_size=0, rcv_size=24, rcv_name=2970, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11816, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1eadf20, outheadp=0x1eabf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x814aaa8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 187 (Thread 177.187):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1ebbdb8, option=2, send_size=0, rcv_size=24, rcv_name=2973, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11855, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1ebdf20, outheadp=0x1ebbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x80f1e70) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 188 (Thread 177.188):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1ecbdb8, option=2, send_size=0, rcv_size=24, rcv_name=2976, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4939, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1ecdf20, outheadp=0x1ecbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x814ee10) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 189 (Thread 177.189):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1edbdb8, option=2, send_size=0, rcv_size=24, rcv_name=2979, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6526, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1eddf20, outheadp=0x1edbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8135588) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 190 (Thread 177.190):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1eedf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8140a08) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 191 (Thread 177.191):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1efdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80f27e8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 192 (Thread 177.192):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1f0df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x813db08) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 193 (Thread 177.193):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1f1bbb8, option=2, send_size=0, rcv_size=24, rcv_name=2991, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x8306a00) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=4845, seqno=93, control=5059, offset=0, data=82788352, length=131072, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=4845, seqno=93, control=5059, offset=0, data=82788352, length=131072, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x1f1df20, OutHeadP=0x1f1bf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x1f, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x1f1df20, outp=0x1f1bf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x1f1df20, outheadp=0x1f1bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x81555c8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 194 (Thread 177.194):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1f2bdb8, option=2, send_size=0, rcv_size=24, rcv_name=2994, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6765, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1f2df20, outheadp=0x1f2bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x80c99e8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 195 (Thread 177.195):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1f3df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8159088) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 196 (Thread 177.196):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1f4bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3000, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11881, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1f4df20, outheadp=0x1f4bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81548f0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 197 (Thread 177.197):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1f5bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3003, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11805, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1f5df20, outheadp=0x1f5bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8153f98) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 198 (Thread 177.198):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1f6df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x814ffd0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 199 (Thread 177.199):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1f7bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3009, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5144, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1f7df20, outheadp=0x1f7bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8151548) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 200 (Thread 177.200):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1f8bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3012, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6308, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x1f8df20, outheadp=0x1f8bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8137480) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 201 (Thread 177.201):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1f9df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81450d0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 202 (Thread 177.202):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1fadf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80f2fc0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 203 (Thread 177.203):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1fbdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81565c0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 204 (Thread 177.204):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1fcdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8153f28) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 205 (Thread 177.205):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1fddf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x814b820) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 206 (Thread 177.206):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1fedf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8145130) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 207 (Thread 177.207):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x1ffdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81133e0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 208 (Thread 177.208):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x200df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8159170) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 209 (Thread 177.209):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x201df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8153628) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 210 (Thread 177.210):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x202df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8133f08) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 211 (Thread 177.211):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x203bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3045, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11831, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x203df20, outheadp=0x203bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x814f088) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 212 (Thread 177.212):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x204df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8151d20) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 213 (Thread 177.213):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x205bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3051, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4782, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x205df20, outheadp=0x205bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8154e10) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 214 (Thread 177.214):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x206bbb8, option=2, send_size=0, rcv_size=24, rcv_name=3054, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x3a1d690) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=4830, seqno=93, control=11851, offset=0, data=84103168, length=131072, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=4830, seqno=93, control=11851, offset=0, data=84103168, length=131072, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x206df20, OutHeadP=0x206bf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x1f, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x206df20, outp=0x206bf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x206df20, outheadp=0x206bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x81595f8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 215 (Thread 177.215):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x207bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3057, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11866, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x207df20, outheadp=0x207bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8138498) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 216 (Thread 177.216):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x208df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x80f1bd0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 217 (Thread 177.217):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x209df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x816a648) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 218 (Thread 177.218):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x20adf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x816aea0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 219 (Thread 177.219):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x20bbdb8, option=2, send_size=0, rcv_size=24, rcv_name=3069, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4834, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x20bdf20, outheadp=0x20bbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x816b6f8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 220 (Thread 177.220):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x20cdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x816bf50) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 221 (Thread 177.221):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x20ddf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x816c7a8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 222 (Thread 177.222):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x20ebc48, option=2, send_size=0, rcv_size=24, rcv_name=3078, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x8060928) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=27, seqno=473819, control=28, offset=0, data=15933440, length=4096, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=27, seqno=473819, control=28, offset=0, data=15933440, length=4096, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x20edf20, OutHeadP=0x20ebf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x0, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x20edf20, outp=0x20ebf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x20edf20, outheadp=0x20ebf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x816d000) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 223 (Thread 177.223):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x20fdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x816d858) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 224 (Thread 177.224):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x210df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x816e0b0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 225 (Thread 177.225):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x211bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3087, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4853, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x211df20, outheadp=0x211bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x816e908) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 226 (Thread 177.226):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x212df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x816f160) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 227 (Thread 177.227):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x213df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x816f9b8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 228 (Thread 177.228):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x214bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3096, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6841, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x214df20, outheadp=0x214bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8170210) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 229 (Thread 177.229):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x215bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3099, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6203, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x215df20, outheadp=0x215bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8170a68) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 230 (Thread 177.230):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x216bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3102, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6314, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x216df20, outheadp=0x216bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81712c0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 231 (Thread 177.231):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x217df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8171b18) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 232 (Thread 177.232):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x218bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3108, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5402, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x218df20, outheadp=0x218bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8172370) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 233 (Thread 177.233):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x219df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8172bc8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 234 (Thread 177.234):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x21abdb8, option=2, send_size=0, rcv_size=24, rcv_name=3114, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5354, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x21adf20, outheadp=0x21abf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8173420) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 235 (Thread 177.235):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x21bbdb8, option=2, send_size=0, rcv_size=24, rcv_name=3117, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4787, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x21bdf20, outheadp=0x21bbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8173c78) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 236 (Thread 177.236):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x21cbdb8, option=2, send_size=0, rcv_size=24, rcv_name=3120, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11862, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x21cdf20, outheadp=0x21cbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81744d0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 237 (Thread 177.237):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x21ddf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8174d28) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 238 (Thread 177.238):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x21edf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8175580) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 239 (Thread 177.239):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x21fbdb8, option=2, send_size=0, rcv_size=24, rcv_name=3129, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11837, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x21fdf20, outheadp=0x21fbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8175dd8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 240 (Thread 177.240):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x220bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3132, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=12846, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x220df20, outheadp=0x220bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8176630) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 241 (Thread 177.241):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x221df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8176e88) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 242 (Thread 177.242):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x222df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81776e0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 243 (Thread 177.243):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x223df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8177f38) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 244 (Thread 177.244):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x224bc48, option=2, send_size=0, rcv_size=24, rcv_name=3144, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x8060928) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=27, seqno=473818, control=28, offset=2125824, data=15642624, length=4096, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=27, seqno=473818, control=28, offset=2125824, data=15642624, length=4096, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x224df20, OutHeadP=0x224bf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x0, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x224df20, outp=0x224bf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x224df20, outheadp=0x224bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x8178790) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 245 (Thread 177.245):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x225bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3147, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4782, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x225df20, outheadp=0x225bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8178fe8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 246 (Thread 177.246):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x226df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8179840) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 247 (Thread 177.247):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x227df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x817a098) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 248 (Thread 177.248):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x228df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x817a8f0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 249 (Thread 177.249):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x229bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3159, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11805, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x229df20, outheadp=0x229bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x817b148) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 250 (Thread 177.250):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x22abdb8, option=2, send_size=0, rcv_size=24, rcv_name=3162, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11831, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x22adf20, outheadp=0x22abf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x817b9a0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 251 (Thread 177.251):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x22bdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x817c1f8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 252 (Thread 177.252):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x22cdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x817ca50) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 253 (Thread 177.253):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x22ddf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x817d2a8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 254 (Thread 177.254):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x22ebdb8, option=2, send_size=0, rcv_size=24, rcv_name=3174, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11875, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x22edf20, outheadp=0x22ebf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x817db00) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 255 (Thread 177.255):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x22fdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x817e358) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 256 (Thread 177.256):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x230df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x817ebb0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 257 (Thread 177.257):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x231df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x817f408) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 258 (Thread 177.258):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x232df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x817fc60) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 259 (Thread 177.259):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x233bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3189, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5963, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x233df20, outheadp=0x233bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81804b8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 260 (Thread 177.260):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x234df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8180d10) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 261 (Thread 177.261):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x235df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8181568) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 262 (Thread 177.262):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x236df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8181dc0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 263 (Thread 177.263):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x237df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8182618) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 264 (Thread 177.264):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x238df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8182e70) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 265 (Thread 177.265):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x239bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3207, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4859, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x239df20, outheadp=0x239bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81836c8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 266 (Thread 177.266):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x23adf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8183f20) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 267 (Thread 177.267):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x23bdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8184778) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 268 (Thread 177.268):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x23cdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8184fd0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 269 (Thread 177.269):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x23ddf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8185828) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 270 (Thread 177.270):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x23edf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8186080) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 271 (Thread 177.271):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x23fdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81868d8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 272 (Thread 177.272):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x240df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8187130) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 273 (Thread 177.273):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x241bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3231, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4814, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x241df20, outheadp=0x241bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8187988) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 274 (Thread 177.274):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x242df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81881e0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 275 (Thread 177.275):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x243df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8188a38) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 276 (Thread 177.276):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x244df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8189290) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 277 (Thread 177.277):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x245bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3243, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11843, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x245df20, outheadp=0x245bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8189ae8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 278 (Thread 177.278):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x246bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3246, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6517, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x246df20, outheadp=0x246bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x818a340) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 279 (Thread 177.279):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x247df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x818ab98) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 280 (Thread 177.280):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x248df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x818b3f0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 281 (Thread 177.281):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x249bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3255, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5315, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x249df20, outheadp=0x249bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x818bc48) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 282 (Thread 177.282):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x24adf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x818c4a0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 283 (Thread 177.283):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x24bdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x818ccf8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 284 (Thread 177.284):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x24cdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x818d550) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 285 (Thread 177.285):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x24ddf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x818dda8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 286 (Thread 177.286):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x24edf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x818e600) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 287 (Thread 177.287):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x24fbdb8, option=2, send_size=0, rcv_size=24, rcv_name=3273, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11861, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x24fdf20, outheadp=0x24fbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x818ee58) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 288 (Thread 177.288):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x250df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x818f6b0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 289 (Thread 177.289):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x251df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x818ff08) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 290 (Thread 177.290):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x252df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8190760) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 291 (Thread 177.291):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x253df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8190fb8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 292 (Thread 177.292):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x254bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3288, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11852, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x254df20, outheadp=0x254bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8191810) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 293 (Thread 177.293):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x255df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8192068) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 294 (Thread 177.294):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x256bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3294, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5144, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x256df20, outheadp=0x256bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81928c0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 295 (Thread 177.295):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x257df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8193118) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 296 (Thread 177.296):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x258df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8193970) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 297 (Thread 177.297):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x259df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81941c8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 298 (Thread 177.298):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x25adf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8194a20) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 299 (Thread 177.299):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x25bdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8195278) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 300 (Thread 177.300):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x25cbdb8, option=2, send_size=0, rcv_size=24, rcv_name=3312, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5339, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x25cdf20, outheadp=0x25cbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8195ad0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 301 (Thread 177.301):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x25dbdb8, option=2, send_size=0, rcv_size=24, rcv_name=3315, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=13223, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x25ddf20, outheadp=0x25dbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8196328) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 302 (Thread 177.302):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x25edf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8196b80) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 303 (Thread 177.303):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x25fbdb8, option=2, send_size=0, rcv_size=24, rcv_name=3321, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6517, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x25fdf20, outheadp=0x25fbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81973d8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 304 (Thread 177.304):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x260df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8197c30) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 305 (Thread 177.305):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x261bcc8, option=2, send_size=0, rcv_size=24, rcv_name=3327, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x82c8510) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059a84 in _pager_seqnos_memory_object_data_unlock (object=11826, seqno=68, control=4763, offset=131072, length=4096, access=2) at /home/sthibaul-guest/hurd-debian/./libpager/data-unlock.c:87
+#6 0x0105c1b4 in _Xmemory_object_data_unlock (InHeadP=0x261df20, OutHeadP=0x261bf10) at memory_objectServer.c:467
+#7 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x20000, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#8 0x0105adac in pager_demuxer (inp=0x261df20, outp=0x261bf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#9 0x010b5163 in internal_demuxer (inp=0x261df20, outheadp=0x261bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#10 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#11 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#12 0x010b0058 in cthread_body (self=0x8198488) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#13 0x00000000 in ?? ()
+
+Thread 306 (Thread 177.306):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x262bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3330, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11829, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x262df20, outheadp=0x262bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8198ce0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 307 (Thread 177.307):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x263df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8199538) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 308 (Thread 177.308):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x264bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3336, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11846, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x264df20, outheadp=0x264bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8199d90) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 309 (Thread 177.309):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x265bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3339, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4797, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x265df20, outheadp=0x265bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x819a5e8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 310 (Thread 177.310):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x266bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3342, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5883, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x266df20, outheadp=0x266bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x819ae40) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 311 (Thread 177.311):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x267df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x819b698) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 312 (Thread 177.312):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x268df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x819bef0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 313 (Thread 177.313):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x269df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x819c748) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 314 (Thread 177.314):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x26adf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x819cfa0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 315 (Thread 177.315):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x26bdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x819d7f8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 316 (Thread 177.316):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x26cdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x819e050) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 317 (Thread 177.317):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x26ddf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x819e8a8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 318 (Thread 177.318):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x26edf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x819f100) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 319 (Thread 177.319):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x26fdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x819f958) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 320 (Thread 177.320):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x270bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3372, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11822, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x270df20, outheadp=0x270bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81a01b0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 321 (Thread 177.321):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x271df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81a0a08) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 322 (Thread 177.322):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x272df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81a1260) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 323 (Thread 177.323):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x273df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81a1ab8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 324 (Thread 177.324):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x274bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3384, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11818, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x274df20, outheadp=0x274bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81a2310) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 325 (Thread 177.325):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x275bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3387, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11818, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x275df20, outheadp=0x275bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81a2b68) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 326 (Thread 177.326):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x276df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81a33c0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 327 (Thread 177.327):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x277df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81a3c18) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 328 (Thread 177.328):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x278df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81a4470) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 329 (Thread 177.329):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x279bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3399, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11856, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x279df20, outheadp=0x279bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81a4cc8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 330 (Thread 177.330):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x27adf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81a5520) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 331 (Thread 177.331):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x27bbdb8, option=2, send_size=0, rcv_size=24, rcv_name=3405, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5049, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x27bdf20, outheadp=0x27bbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81a5d78) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 332 (Thread 177.332):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x27cdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81a65d0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 333 (Thread 177.333):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x27dbdb8, option=2, send_size=0, rcv_size=24, rcv_name=3411, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5127, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x27ddf20, outheadp=0x27dbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81a6e28) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 334 (Thread 177.334):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x27ebdb8, option=2, send_size=0, rcv_size=24, rcv_name=3414, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6203, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x27edf20, outheadp=0x27ebf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81a7680) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 335 (Thread 177.335):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x27fdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81a7ed8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 336 (Thread 177.336):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x280bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3420, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11878, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x280df20, outheadp=0x280bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81a8730) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 337 (Thread 177.337):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x281df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81a8f88) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 338 (Thread 177.338):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x282bbb8, option=2, send_size=0, rcv_size=24, rcv_name=3426, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x3aa2370) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=10039, seqno=93, control=9839, offset=0, data=85422080, length=131072, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=10039, seqno=93, control=9839, offset=0, data=85422080, length=131072, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x282df20, OutHeadP=0x282bf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x1f, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x282df20, outp=0x282bf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x282df20, outheadp=0x282bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x81a97e0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 339 (Thread 177.339):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x283df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81aa038) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 340 (Thread 177.340):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x284df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81aa890) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 341 (Thread 177.341):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x285bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3435, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5963, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x285df20, outheadp=0x285bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81ab0e8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 342 (Thread 177.342):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x286df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81ab940) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 343 (Thread 177.343):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x287df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81ac198) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 344 (Thread 177.344):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x288df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81ac9f0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 345 (Thread 177.345):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x289bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3447, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4862, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x289df20, outheadp=0x289bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81ad248) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 346 (Thread 177.346):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x28adf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81adaa0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 347 (Thread 177.347):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x28bdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81ae2f8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 348 (Thread 177.348):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x28cdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81aeb50) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 349 (Thread 177.349):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x28ddf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81af3a8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 350 (Thread 177.350):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x28edf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81afc00) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 351 (Thread 177.351):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x28fdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81b0458) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 352 (Thread 177.352):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x290df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81b0cb0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 353 (Thread 177.353):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x291df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81b1508) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 354 (Thread 177.354):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x292df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81b1d60) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 355 (Thread 177.355):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x293df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81b25b8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 356 (Thread 177.356):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x294bbb8, option=2, send_size=0, rcv_size=24, rcv_name=3480, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x3a35f50) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=4864, seqno=93, control=11880, offset=0, data=81281024, length=131072, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=4864, seqno=93, control=11880, offset=0, data=81281024, length=131072, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x294df20, OutHeadP=0x294bf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x1f, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x294df20, outp=0x294bf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x294df20, outheadp=0x294bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x81b2e10) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 357 (Thread 177.357):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x295df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81b3668) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 358 (Thread 177.358):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x296df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81b3ec0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 359 (Thread 177.359):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x297df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81b4718) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 360 (Thread 177.360):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x298bbb8, option=2, send_size=0, rcv_size=24, rcv_name=3492, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x82156d0) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=11818, seqno=93, control=11814, offset=0, data=84856832, length=131072, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=11818, seqno=93, control=11814, offset=0, data=84856832, length=131072, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x298df20, OutHeadP=0x298bf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x1f, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x298df20, outp=0x298bf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x298df20, outheadp=0x298bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x81b4f70) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 361 (Thread 177.361):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x299bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3495, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11888, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x299df20, outheadp=0x299bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81b57c8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 362 (Thread 177.362):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x29adf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81b6020) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 363 (Thread 177.363):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x29bdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81b6878) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 364 (Thread 177.364):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x29cdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81b70d0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 365 (Thread 177.365):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x29ddf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81b7928) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 366 (Thread 177.366):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x29edf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81b8180) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 367 (Thread 177.367):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x29fdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81b89d8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 368 (Thread 177.368):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2a0df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81b9230) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 369 (Thread 177.369):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2a1df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81b9a88) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 370 (Thread 177.370):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2a2bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3522, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11829, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2a2df20, outheadp=0x2a2bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81ba2e0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 371 (Thread 177.371):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2a3bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3525, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11856, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2a3df20, outheadp=0x2a3bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81bab38) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 372 (Thread 177.372):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2a4df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81bb390) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 373 (Thread 177.373):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2a5bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3531, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4873, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2a5df20, outheadp=0x2a5bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81bbbe8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 374 (Thread 177.374):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2a6bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3534, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11862, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2a6df20, outheadp=0x2a6bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81bc440) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 375 (Thread 177.375):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2a7df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81bcc98) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 376 (Thread 177.376):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2a8df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81bd4f0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 377 (Thread 177.377):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2a9df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81bdd48) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 378 (Thread 177.378):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2aadf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81be5a0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 379 (Thread 177.379):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2abdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81bedf8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 380 (Thread 177.380):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2acbdb8, option=2, send_size=0, rcv_size=24, rcv_name=3552, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11819, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2acdf20, outheadp=0x2acbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81bf650) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 381 (Thread 177.381):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2addf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81bfea8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 382 (Thread 177.382):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2aedf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81c0700) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 383 (Thread 177.383):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2afbdb8, option=2, send_size=0, rcv_size=24, rcv_name=3561, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4845, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2afdf20, outheadp=0x2afbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81c0f58) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 384 (Thread 177.384):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2b0bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3564, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6972, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2b0df20, outheadp=0x2b0bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81c17b0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 385 (Thread 177.385):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2b1df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81c2008) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 386 (Thread 177.386):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2b2df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81c2860) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 387 (Thread 177.387):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2b3bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3573, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4959, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2b3df20, outheadp=0x2b3bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81c30b8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 388 (Thread 177.388):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2b4df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81c3910) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 389 (Thread 177.389):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2b5bbb8, option=2, send_size=0, rcv_size=24, rcv_name=3579, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x3a1d730) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=11847, seqno=93, control=6869, offset=0, data=84291584, length=131072, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=11847, seqno=93, control=6869, offset=0, data=84291584, length=131072, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x2b5df20, OutHeadP=0x2b5bf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x1f, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x2b5df20, outp=0x2b5bf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x2b5df20, outheadp=0x2b5bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x81c4168) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 390 (Thread 177.390):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2b6df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81c49c0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 391 (Thread 177.391):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2b7bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3585, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11819, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2b7df20, outheadp=0x2b7bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81c5218) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 392 (Thread 177.392):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2b8df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81c5a70) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 393 (Thread 177.393):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2b9bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3591, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11866, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2b9df20, outheadp=0x2b9bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81c62c8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 394 (Thread 177.394):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2badf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81c6b20) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 395 (Thread 177.395):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2bbdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81c7378) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 396 (Thread 177.396):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2bcbdb8, option=2, send_size=0, rcv_size=24, rcv_name=3600, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11869, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2bcdf20, outheadp=0x2bcbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81c7bd0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 397 (Thread 177.397):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2bddf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81c8428) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 398 (Thread 177.398):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2bedf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81c8c80) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 399 (Thread 177.399):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2bfdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81c94d8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 400 (Thread 177.400):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2c0df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81c9d30) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 401 (Thread 177.401):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2c1df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81ca588) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 402 (Thread 177.402):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2c2df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81cade0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 403 (Thread 177.403):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2c3bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3621, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4862, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2c3df20, outheadp=0x2c3bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81cb638) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 404 (Thread 177.404):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2c4df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81cbe90) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 405 (Thread 177.405):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2c5bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3627, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5360, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2c5df20, outheadp=0x2c5bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81cc6e8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 406 (Thread 177.406):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2c6bbb8, option=2, send_size=0, rcv_size=24, rcv_name=3630, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x82b1050) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=11824, seqno=93, control=5619, offset=0, data=84668416, length=131072, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=11824, seqno=93, control=5619, offset=0, data=84668416, length=131072, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x2c6df20, OutHeadP=0x2c6bf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x1f, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x2c6df20, outp=0x2c6bf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x2c6df20, outheadp=0x2c6bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x81ccf40) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 407 (Thread 177.407):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2c7bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3633, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5288, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2c7df20, outheadp=0x2c7bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81cd798) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 408 (Thread 177.408):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2c8df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81cdff0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 409 (Thread 177.409):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2c9df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81ce848) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 410 (Thread 177.410):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2cabdb8, option=2, send_size=0, rcv_size=24, rcv_name=3642, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4812, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2cadf20, outheadp=0x2cabf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81cf0a0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 411 (Thread 177.411):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2cbbdb8, option=2, send_size=0, rcv_size=24, rcv_name=3645, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5595, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2cbdf20, outheadp=0x2cbbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81cf8f8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 412 (Thread 177.412):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2ccbbb8, option=2, send_size=0, rcv_size=24, rcv_name=3648, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x8318a20) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=6778, seqno=93, control=4919, offset=0, data=67067904, length=131072, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=6778, seqno=93, control=4919, offset=0, data=67067904, length=131072, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x2ccdf20, OutHeadP=0x2ccbf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x1f, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x2ccdf20, outp=0x2ccbf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x2ccdf20, outheadp=0x2ccbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x81d0150) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 413 (Thread 177.413):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2cddf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81d09a8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 414 (Thread 177.414):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2cedf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81d1200) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 415 (Thread 177.415):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2cfbdb8, option=2, send_size=0, rcv_size=24, rcv_name=3657, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4939, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2cfdf20, outheadp=0x2cfbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81d1a58) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 416 (Thread 177.416):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2d0df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81d22b0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 417 (Thread 177.417):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2d1df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81d2b08) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 418 (Thread 177.418):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2d2df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81d3360) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 419 (Thread 177.419):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2d3df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81d3bb8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 420 (Thread 177.420):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2d4bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3672, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5354, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2d4df20, outheadp=0x2d4bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81d4410) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 421 (Thread 177.421):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2d5df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81d4c68) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 422 (Thread 177.422):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2d6df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81d54c0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 423 (Thread 177.423):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2d7df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81d5d18) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 424 (Thread 177.424):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2d8df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81d6570) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 425 (Thread 177.425):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2d9df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81d6dc8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 426 (Thread 177.426):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2dabdb8, option=2, send_size=0, rcv_size=24, rcv_name=3690, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5288, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2dadf20, outheadp=0x2dabf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81d7620) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 427 (Thread 177.427):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2dbdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81d7e78) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 428 (Thread 177.428):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2dcbdb8, option=2, send_size=0, rcv_size=24, rcv_name=3696, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5127, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2dcdf20, outheadp=0x2dcbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81d86d0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 429 (Thread 177.429):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2dddf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81d8f28) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 430 (Thread 177.430):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2dedf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81d9780) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 431 (Thread 177.431):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2dfdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81d9fd8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 432 (Thread 177.432):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2e0bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3708, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4797, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2e0df20, outheadp=0x2e0bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81da830) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 433 (Thread 177.433):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2e1df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81db088) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 434 (Thread 177.434):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2e2df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81db8e0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 435 (Thread 177.435):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2e3df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81dc138) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 436 (Thread 177.436):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2e4bbb8, option=2, send_size=0, rcv_size=24, rcv_name=3720, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x835c670) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=11829, seqno=93, control=11823, offset=0, data=84480000, length=131072, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=11829, seqno=93, control=11823, offset=0, data=84480000, length=131072, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x2e4df20, OutHeadP=0x2e4bf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x1f, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x2e4df20, outp=0x2e4bf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x2e4df20, outheadp=0x2e4bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x81dc990) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 437 (Thread 177.437):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2e5df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81dd1e8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 438 (Thread 177.438):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2e6bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3726, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4814, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2e6df20, outheadp=0x2e6bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81dda40) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 439 (Thread 177.439):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2e7df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81de298) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 440 (Thread 177.440):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2e8df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81deaf0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 441 (Thread 177.441):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2e9df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81df348) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 442 (Thread 177.442):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2eabdb8, option=2, send_size=0, rcv_size=24, rcv_name=3738, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6526, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2eadf20, outheadp=0x2eabf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81dfba0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 443 (Thread 177.443):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2ebdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81e03f8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 444 (Thread 177.444):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2ecdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81e0c50) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 445 (Thread 177.445):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2edbdb8, option=2, send_size=0, rcv_size=24, rcv_name=3747, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6518, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2eddf20, outheadp=0x2edbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81e14a8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 446 (Thread 177.446):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2eedf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81e1d00) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 447 (Thread 177.447):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2efdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81e2558) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 448 (Thread 177.448):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2f0df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81e2db0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 449 (Thread 177.449):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2f1df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81e3608) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 450 (Thread 177.450):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2f2df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81e3e60) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 451 (Thread 177.451):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2f3df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81e46b8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 452 (Thread 177.452):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2f4df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81e4f10) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 453 (Thread 177.453):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2f5bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3771, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5327, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2f5df20, outheadp=0x2f5bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81e5768) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 454 (Thread 177.454):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2f6df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81e5fc0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 455 (Thread 177.455):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2f7df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81e6818) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 456 (Thread 177.456):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2f8df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81e7070) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 457 (Thread 177.457):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2f9df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81e78c8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 458 (Thread 177.458):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2fabdb8, option=2, send_size=0, rcv_size=24, rcv_name=3786, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11824, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2fadf20, outheadp=0x2fabf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81e8120) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 459 (Thread 177.459):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2fbdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81e8978) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 460 (Thread 177.460):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2fcbdb8, option=2, send_size=0, rcv_size=24, rcv_name=3792, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5315, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x2fcdf20, outheadp=0x2fcbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81e91d0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 461 (Thread 177.461):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2fdbbb8, option=2, send_size=0, rcv_size=24, rcv_name=3795, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x824b9a8) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=4861, seqno=93, control=11977, offset=0, data=81657856, length=131072, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=4861, seqno=93, control=11977, offset=0, data=81657856, length=131072, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x2fddf20, OutHeadP=0x2fdbf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x1f, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x2fddf20, outp=0x2fdbf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x2fddf20, outheadp=0x2fdbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x81e9a28) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 462 (Thread 177.462):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2fedf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81ea280) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 463 (Thread 177.463):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x2ffbbb8, option=2, send_size=0, rcv_size=24, rcv_name=3801, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x82a5fa8) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=11849, seqno=93, control=6975, offset=0, data=83914752, length=131072, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=11849, seqno=93, control=6975, offset=0, data=83914752, length=131072, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x2ffdf20, OutHeadP=0x2ffbf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x1f, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x2ffdf20, outp=0x2ffbf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x2ffdf20, outheadp=0x2ffbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x81eaad8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 464 (Thread 177.464):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x300bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3804, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11860, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x300df20, outheadp=0x300bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81eb330) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 465 (Thread 177.465):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x301bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3807, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4861, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x301df20, outheadp=0x301bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81ebb88) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 466 (Thread 177.466):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x302df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81ec3e0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 467 (Thread 177.467):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x303df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81ecc38) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 468 (Thread 177.468):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x304df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81ed490) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 469 (Thread 177.469):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x305bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3819, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11816, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x305df20, outheadp=0x305bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81edce8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 470 (Thread 177.470):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x306bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3822, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11847, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x306df20, outheadp=0x306bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81ee540) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 471 (Thread 177.471):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x307bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3825, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=5049, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x307df20, outheadp=0x307bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81eed98) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 472 (Thread 177.472):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x308df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81ef5f0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 473 (Thread 177.473):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x309df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81efe48) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 474 (Thread 177.474):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x30abdb8, option=2, send_size=0, rcv_size=24, rcv_name=3834, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11852, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x30adf20, outheadp=0x30abf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81f06a0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 475 (Thread 177.475):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x30bdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81f0ef8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 476 (Thread 177.476):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x30cbdb8, option=2, send_size=0, rcv_size=24, rcv_name=3840, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11827, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x30cdf20, outheadp=0x30cbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81f1750) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 477 (Thread 177.477):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x30ddf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81f1fa8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 478 (Thread 177.478):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x30edf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81f2800) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 479 (Thread 177.479):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x30fbbb8, option=2, send_size=0, rcv_size=24, rcv_name=3849, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x81432f0) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=6765, seqno=93, control=11752, offset=0, data=67751936, length=131072, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=6765, seqno=93, control=11752, offset=0, data=67751936, length=131072, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x30fdf20, OutHeadP=0x30fbf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x1f, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x30fdf20, outp=0x30fbf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x30fdf20, outheadp=0x30fbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x81f3058) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 480 (Thread 177.480):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x310bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3852, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4853, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x310df20, outheadp=0x310bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81f38b0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 481 (Thread 177.481):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x311bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3855, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11888, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x311df20, outheadp=0x311bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81f4108) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 482 (Thread 177.482):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x312df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81f4960) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 483 (Thread 177.483):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x313df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81f51b8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 484 (Thread 177.484):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x314df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81f5a10) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 485 (Thread 177.485):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x315df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81f6268) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 486 (Thread 177.486):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x316bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3870, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4873, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x316df20, outheadp=0x316bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81f6ac0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 487 (Thread 177.487):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x317df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81f7318) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 488 (Thread 177.488):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x318df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81f7b70) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 489 (Thread 177.489):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x319bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3879, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11827, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x319df20, outheadp=0x319bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81f83c8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 490 (Thread 177.490):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x31adf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81f8c20) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 491 (Thread 177.491):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x31bdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81f9478) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 492 (Thread 177.492):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x31cbdb8, option=2, send_size=0, rcv_size=24, rcv_name=3888, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4851, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x31cdf20, outheadp=0x31cbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81f9cd0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 493 (Thread 177.493):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x31ddf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81fa528) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 494 (Thread 177.494):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x31edf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81fad80) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 495 (Thread 177.495):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x31fbdb8, option=2, send_size=0, rcv_size=24, rcv_name=3897, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11849, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x31fdf20, outheadp=0x31fbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81fb5d8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 496 (Thread 177.496):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x320df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81fbe30) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 497 (Thread 177.497):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x321df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81fc688) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 498 (Thread 177.498):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x322df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81fcee0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 499 (Thread 177.499):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x323df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81fd738) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 500 (Thread 177.500):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x324df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81fdf90) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 501 (Thread 177.501):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x325df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81fe7e8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 502 (Thread 177.502):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x326bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3918, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6841, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x326df20, outheadp=0x326bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x81ff040) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 503 (Thread 177.503):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x327df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x81ff898) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 504 (Thread 177.504):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x328bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3924, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4864, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x328df20, outheadp=0x328bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x82000f0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 505 (Thread 177.505):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x329df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8200948) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 506 (Thread 177.506):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x32adf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x82011a0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 507 (Thread 177.507):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x32bdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x82019f8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 508 (Thread 177.508):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x32cdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8202250) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 509 (Thread 177.509):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x32ddf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8202aa8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 510 (Thread 177.510):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x32ebdb8, option=2, send_size=0, rcv_size=24, rcv_name=3942, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6778, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x32edf20, outheadp=0x32ebf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8203300) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 511 (Thread 177.511):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x32fbbb8, option=2, send_size=0, rcv_size=24, rcv_name=3945, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x8133628) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=4787, seqno=93, control=2767, offset=0, data=85045248, length=131072, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=4787, seqno=93, control=2767, offset=0, data=85045248, length=131072, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x32fdf20, OutHeadP=0x32fbf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x1f, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x32fdf20, outp=0x32fbf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x32fdf20, outheadp=0x32fbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x8203b58) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 512 (Thread 177.512):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x330df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x82043b0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 513 (Thread 177.513):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x331bbb8, option=2, send_size=0, rcv_size=24, rcv_name=3951, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x8260d48) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=11856, seqno=91, control=5370, offset=0, data=83353600, length=131072, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=11856, seqno=91, control=5370, offset=0, data=83353600, length=131072, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x331df20, OutHeadP=0x331bf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x1f, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x331df20, outp=0x331bf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x331df20, outheadp=0x331bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x8204c08) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 514 (Thread 177.514):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x332df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8205460) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 515 (Thread 177.515):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x333df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8205cb8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 516 (Thread 177.516):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x334df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8206510) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 517 (Thread 177.517):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x335df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8206d68) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 518 (Thread 177.518):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x336df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x82075c0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 519 (Thread 177.519):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x337df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8207e18) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 520 (Thread 177.520):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x338df20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8208670) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 521 (Thread 177.521):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x339bdb8, option=2, send_size=0, rcv_size=24, rcv_name=3975, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11863, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x339df20, outheadp=0x339bf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8208ec8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 522 (Thread 177.522):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x33abdb8, option=2, send_size=0, rcv_size=24, rcv_name=3978, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=4787, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x33adf20, outheadp=0x33abf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x8209720) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 523 (Thread 177.523):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x33bbc48, option=2, send_size=0, rcv_size=24, rcv_name=3981, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b475a in ports_port_deref (portstruct=0x8060928) at /home/sthibaul-guest/hurd-debian/./libports/port-deref.c:33
+#5 0x01059331 in _pager_do_write_request (object=27, seqno=473815, control=28, offset=14811136, data=12541952, length=4096, dirty=1, kcopy=1, initializing=0) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:257
+#6 0x010599d6 in _pager_seqnos_memory_object_data_return (object=27, seqno=473815, control=28, offset=14811136, data=12541952, length=4096, dirty=1, kcopy=1) at /home/sthibaul-guest/hurd-debian/./libpager/data-return.c:272
+#7 0x0105bee7 in _Xmemory_object_data_return (InHeadP=0x33bdf20, OutHeadP=0x33bbf10) at memory_objectServer.c:837
+#8 0x0105bd4f in _pager_seqnos_memory_object_server (InHeadP=0x0, OutHeadP=0xffffffe7) at memory_objectServer.c:947
+#9 0x0105adac in pager_demuxer (inp=0x33bdf20, outp=0x33bbf10) at /home/sthibaul-guest/hurd-debian/./libpager/demuxer.c:34
+#10 0x010b5163 in internal_demuxer (inp=0x33bdf20, outheadp=0x33bbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:101
+#11 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#12 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#13 0x010b0058 in cthread_body (self=0x8209f78) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#14 0x00000000 in ?? ()
+
+Thread 524 (Thread 177.524):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x33cbdb8, option=2, send_size=0, rcv_size=24, rcv_name=3984, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=11860, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x33cdf20, outheadp=0x33cbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x820a7d0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 525 (Thread 177.525):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x33ddf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x820b028) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 526 (Thread 177.526):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x33ebdb8, option=2, send_size=0, rcv_size=24, rcv_name=3990, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f8f0, port=6731, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x33edf20, outheadp=0x33ebf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x820b880) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 527 (Thread 177.527):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x33fdf20, option=2050, send_size=0, rcv_size=8192, rcv_name=24, timeout=0, notify=0) at msg.c:110
+#2 0x010e4db4 in __mach_msg_server_timeout (demux=0x134ff38, max_size=8192, rcv_name=24, option=2048, timeout=0) at msgserver.c:101
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x820c0d8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 528 (Thread 177.528):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x395bdb8, option=2, send_size=0, rcv_size=24, rcv_name=8764, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f6c0, port=11800, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x395bf10, outheadp=0x395df20) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x133ff38, max_size=8192, rcv_name=18, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x3a006a0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 529 (Thread 177.529):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x39bbdb8, option=2, send_size=0, rcv_size=24, rcv_name=8881, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f6c0, port=6692, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x39bbf10, outheadp=0x39bdf20) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x133ff38, max_size=8192, rcv_name=18, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x3a016f0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 530 (Thread 177.530):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x40ebf10, option=2051, send_size=48, rcv_size=8192, rcv_name=18, timeout=0, notify=0) at msg.c:110
+#2 0x010e4e29 in __mach_msg_server_timeout (demux=0x133ff38, max_size=8192, rcv_name=18, option=2048, timeout=0) at msgserver.c:151
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x83a9420) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 531 (Thread 177.531):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x43adf20, option=2051, send_size=40, rcv_size=8192, rcv_name=18, timeout=0, notify=0) at msg.c:110
+#2 0x010e4e29 in __mach_msg_server_timeout (demux=0x133ff38, max_size=8192, rcv_name=18, option=2048, timeout=0) at msgserver.c:151
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x3a4efc0) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 532 (Thread 177.532):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x47abdb8, option=2, send_size=0, rcv_size=24, rcv_name=13165, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f6c0, port=11806, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x47adf20, outheadp=0x47abf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x133ff38, max_size=8192, rcv_name=18, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x3a31a48) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 533 (Thread 177.533):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x48cdf20, option=2051, send_size=40, rcv_size=8192, rcv_name=18, timeout=0, notify=0) at msg.c:110
+#2 0x010e4e29 in __mach_msg_server_timeout (demux=0x133ff38, max_size=8192, rcv_name=18, option=2048, timeout=0) at msgserver.c:151
+#3 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#4 0x010b0058 in cthread_body (self=0x8400f30) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#5 0x00000000 in ?? ()
+
+Thread 534 (Thread 177.534):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x4bbbdb8, option=2, send_size=0, rcv_size=24, rcv_name=4850, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f6c0, port=13460, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x4bbdf20, outheadp=0x4bbbf10) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x133ff38, max_size=8192, rcv_name=18, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x83bb9c8) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
+
+Thread 535 (Thread 177.535):
+#0 0x010e3efc in mach_msg_trap () at /build/buildd-eglibc_2.11.2-6+b1-hurd-i386-sWVQAp/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+#1 0x010e46f9 in __mach_msg (msg=0x4bcbdb8, option=2, send_size=0, rcv_size=24, rcv_name=5058, timeout=0, notify=0) at msg.c:110
+#2 0x010aecef in cproc_block () at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:638
+#3 0x010af17a in __mutex_lock_solid (ptr=0x10b9488) at /home/sthibaul-guest/hurd-debian/./libthreads/cprocs.c:950
+#4 0x010b4565 in ports_lookup_port (bucket=0x805f6c0, port=6692, class=0x0) at /home/sthibaul-guest/hurd-debian/./libports/lookup-port.c:32
+#5 0x010b50d0 in internal_demuxer (inp=0x4bcbf10, outheadp=0x4bcdf20) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:86
+#6 0x010e4dc6 in __mach_msg_server_timeout (demux=0x133ff38, max_size=8192, rcv_name=18, option=2048, timeout=0) at msgserver.c:109
+#7 0x010b4eb0 in thread_function (master=0) at /home/sthibaul-guest/hurd-debian/./libports/manage-multithread.c:136
+#8 0x010b0058 in cthread_body (self=0x82b9038) at /home/sthibaul-guest/hurd-debian/./libthreads/cthreads.c:300
+#9 0x00000000 in ?? ()
diff --git a/open_issues/ext2fs_page_cache_swapping_leak.mdwn b/open_issues/ext2fs_page_cache_swapping_leak.mdwn
new file mode 100644
index 00000000..c0d0867b
--- /dev/null
+++ b/open_issues/ext2fs_page_cache_swapping_leak.mdwn
@@ -0,0 +1,175 @@
+[[!meta copyright="Copyright © 2011 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_hurd]]
+
+There is a [[!FF_project 272]][[!tag bounty]] on this task.
+
+IRC, OFTC, #debian-hurd, 2011-03-24
+
+ <youpi> I still believe we have an ext2fs page cache swapping leak, however
+ <youpi> as the 1.8GiB swap was full, yet the ld process was only 1.5GiB big
+ <pinotree> a leak at swapping time, you mean?
+ <youpi> I mean the ext2fs page cache being swapped out instead of simply
+ dropped
+ <pinotree> ah
+ <pinotree> so the swap tends to accumulate unuseful stuff, i see
+ <youpi> yes
+ <youpi> the disk content, basicallyt :)
+
+IRC, freenode, #hurd, 2011-04-18
+
+ <antrik> damn, a cp -a simply gobbles down swap space...
+ <braunr> really ?
+ <braunr> that's weird
+ <braunr> why would a copy use so much anonymous memory ?
+ <braunr> unless the external pager is so busy that the kernel falls back to
+ its default pager
+ <youpi> that's what I suggested some time ago
+ <braunr> maybe this case should be traced in the kernel
+ <braunr> a simple message in the kernel buffer to warn that this condition
+ happened may help
+ <youpi> I'm seeing swap space being kept used on buildds for no real reason
+ except possibly backing ext2fs pages
+ <youpi> that could help, yes
+ <antrik> youpi: I think it was actually slpz who suggested that...
+ <youpi> I think we're generally missing feedback from memory behavior
+ <antrik> youpi: do you think andrei's kernel instrumentation work might be
+ helpful with analyzing such things?
+ <youpi> antrik: I think I suggested it too, but never mind
+ <youpi> antrik: no, because it's not a trace of events that you want
+ <youpi> some specific events would be useful
+ <youpi> but then we don't really need a whole framework for that
+ <antrik> apt-get upgrade eats swap too
+ <youpi> the upgrade itself, or the computation of the ugprade?
+ <youpi> apt is a memory eater nowadays
+ <antrik> installing the packages
+ <antrik> seems to have stabilized though after a while...
+ <antrik> so perhaps it's not a leak in this case
+ <youpi> ideally we should have a way to know what was put in the swap
+ <braunr> how would you represent what's in the swap ?
+ <antrik> the apt-get process has 46M of virtual memory above the 128 M
+ baseline
+ <braunr> mostly libraries i guess
+ <braunr> are trheads stacks 8 MiB like on Linux ?
+ <youpi> braunr: at least knowing how much of each process is in the swap
+ <youpi> braunr: 2MiB
+ <braunr> ok
+ <youpi> vminfo could also report which parts of the address space are in
+ the swap
+ <antrik> youpi: would be nice to have some simple utility reporting how
+ much of a process' address space is anonymous
+ <antrik> (in fact, I wonder why it's not reported by standard tools such as
+ ps or top... this shouldn't be too difficult I would think?)
+ <antrik> it would be much more useful information than the total virt size,
+ which includes rather meaningless disk and device mappings...
+ <youpi> agreed
+ <braunr> well
+ <braunr> there are tools like pmap for this
+ <braunr> unfortunately, it's difficult in mach to know what backs a
+ non-anonymous mapping
+ <braunr> pagers should be able to name their mappings
+ <youpi> that'd be helpful for debugging yes
+ <braunr> there is almost no overhead in doing that, and it would be very
+ useful
+ <youpi> and could lead to /proc/pid/maps
+ <braunr> yes
+ <braunr> isn't there a maps already ?
+ <youpi> nope
+ <braunr> ok
+ <youpi> (probably not very useful without the names)
+ <braunr> ithought i remembered maps without names, and guessed it might
+ have been on the hurd for that reason
+ <braunr> but i'm not sure
+ <youpi> there's the vminfo command, yes
+ <braunr> 14:06 < youpi> braunr: at least knowing how much of each process
+ is in the swap
+ <braunr> wouldn't it be clearer to do it the other way around ?
+ <braunr> like a swapinfo tool indicating what it contains ?
+ <youpi> sure, but it's a lot more difficult
+ <braunr> really ?
+ <braunr> why ?
+ <youpi> because you have to traverse all the mappings
+ <youpi> etc
+ <youpi> (in all processes, I mean)
+ <youpi> and you have to name what is waht
+ <braunr> there are other ways
+ <braunr> the swap is a central structure
+ <youpi> while simply introducing the swap % in vminfo
+ <youpi> for a given process you know what is what
+ <braunr> right
+ <youpi> and doing that introduction is probably very simple
+ <braunr> that's a good point
+ <braunr> top-down is effectively easier than bottom-up resolution in Mach
+ VM
+ <antrik> hm... the memory use caused by cp doesn't seem to be reflected in
+ the virtual size of any particular process
+ <antrik> ghost memory
+ <braunr> what's cp vmsize at the time of the problem ?
+ <antrik> it's at 134 M right now... so considering the 128 M baseline,
+ nothing worth speaking of
+ <braunr> right
+ <braunr> maybe a copy map during I/O
+ <braunr> but I don't know Mach copy maps in detail, as they have been
+ eliminated from UVM
+ <antrik> BTW, the memory eatup happens even before swap comes into
+ play... swapping seems to be a result of the problem, not the cause
+ <braunr> what do you mean ?
+ <braunr> I thought swapping was the issue
+ <braunr> you mean RAM is full before swapping ?
+ <antrik> well, I don't know what the actual problem is... I just don't
+ understand why the memory use increases without any particular process
+ seeing an increase in size
+ <antrik> the "free" size in vmstat decreses
+ <antrik> once it's eatun up, swap space use increases
+ <braunr> well it doesn't change much of it
+ <braunr> the anonymous memory pager will use RAM before resorting to the
+ external default-pager
+ <antrik> I would suspect normal block caching... but then, shouldn't this
+ show up in the memory info of the ext2 process?
+ <braunr> although, again, I'm not sure of the behaviour of the anonymous
+ memory pager
+ <braunr> antrik: I don't know how block caching behaves
+ <antrik> BTW, is it a know problem that doing ^C on a "cp -a" seems to hang
+ the whole system?...
+ <antrik> (the whole hurd instance that is... the other instance is not
+ affected)
+ <youpi> not that I know of
+ <braunr> seems like a deadlock in the anonymous memory handling
+ <youpi> (and I've never seen that)
+ <antrik> happens both in my main system (using ancient hurd/libc) and in my
+ subhurd (recently upgraded to current stuff)
+ <antrik> this make testing this stuff quite a lot harder... [sigh]
+ <antrik> any suggestions how to debug this hang?
+ <braunr> antrik: no :/
+
+2011-04-28: [[!taglink open_issue_documentation]]
+
+ <antrik> hm... is it normal that "swap free" doesn't increase as a process'
+ memory is paged back in?
+ <youpi> yes
+ <youpi> there's no real use cleaning swap
+ <youpi> on the contrary, it makes paging the process out again longer
+ <antrik> hm... so essentially, after swapping back and forth a bit, a part
+ of the swap equal to the size of physical RAM will be occupied with stuff
+ that is actually in RAM?
+ <youpi> yes
+ <youpi> so that that RAM can be freed immediately if needed
+ <antrik> hm... that means my effective swap size is only like 300 MB... no
+ wonder I see crashes under load
+ <antrik> err... make that 230 actually
+ <antrik> indeed, quitting the application freed both the physical RAM and
+ swap space
+ <braunr> 02:28 < antrik> hm... is it normal that "swap free" doesn't
+ increase as a process' memory is paged back in?
+ <braunr> swap is the backing store of anonymous memory, like ext2fs is the
+ backing store of memory objects created from its pager
+ <braunr> so you can view swap as the file system for everything that isn't
+ an external memory object
diff --git a/open_issues/extern_inline.mdwn b/open_issues/extern_inline.mdwn
new file mode 100644
index 00000000..a56d4902
--- /dev/null
+++ b/open_issues/extern_inline.mdwn
@@ -0,0 +1,74 @@
+[[!meta copyright="Copyright © 2010 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_hurd]]
+
+IRC, unknown channel, unknown date.
+
+ <tschwinge> youpi: Did you ever review the Savannah hurd branch master-fix_extern_inline?
+ <youpi> why static inlines instead of extern lines ?
+ <youpi> +in
+ <youpi> static inlines can lead to space waste where it isn't inlined
+ <tschwinge> Are you sure about that -- I don't think so.
+ <tschwinge> At least with 99 inlining.
+ <youpi> what can the compiler do where it isn't inlined ?
+ <youpi> include a copy
+ <youpi> thus space waste
+ <youpi> 00000000004004b1 t f
+ <youpi> 00000000004004d5 t f
+ <youpi> I've juste checked
+ <youpi> two copies of my inline function
+ <youpi> one per .o
+ <tschwinge> Yes, but isn't it expected tobe that way? ARen't these functions those that are never included in a libarary, as opposed to those which I switched to __extern_inline in the next patch?
+ <tschwinge> It's been a long time that I had a look at this...
+ <tschwinge> The problem with the patch from the Debian package is that the functions didn't end up in the libraries anymore.
+ <youpi> ah you mean these are private functions and thus shouldn't be exposed (unexpected_reply for instance)
+ <youpi> but the duplication issue still holds
+ <youpi> the functions not ending up in the library is a concern indeed
+ <tschwinge> That's what my second patch fixes, I think.
+ <youpi> grah, callisto rebooted for no reason
+ <youpi> ah, indeed the second patch fixes things correctly
+ <youpi> uh, indeed it's --dbg-package=hurd in there
+ <youpi> how odd
+ <youpi> tschwinge: for the libftpconn case, yes unexpected_reply should probably be a static inline
+ <tschwinge> Is this true:
+ <tschwinge> static inline -- either inline or emit a local symbol vs. extern inline -- either inline or emit a reference to an external symbol.
+ <youpi> so as to not expose it
+ <youpi> for other cases we can keep an extern inline as they are just programs
+ <tschwinge> Then everything that's not expected to end up in a libarary must be static inline, as otherwise, when the compiler can't inline, there wouldn't be a reference to it available.
+ <youpi> and that avoids duplicate code
+ <youpi> yes
+ <youpi> but as long as you provide the extern inlines by compiling an xinl.c there's no problem
+ <tschwinge> Sure, that'd be the alternative.
+ <youpi> for libraries you need to take care of the symbols you want to export (which can thus be in xinl.c), and those you don't want to export (and thus keep static inlines)
+ <tschwinge> So you say it'd be better to do that (xinl.c) instead of static inline?
+ <youpi> for programs, you can just keep them all extern inlines
+ <youpi> yes, it shares code
+ <youpi> it's only in the case of symbols that shouldn't be exported by the library that we need to use static inlines
+ <tschwinge> ANd in .c files that are part of programs I'd also use extern inline or static inline?
+ <youpi> for programs just always use extern lines
+ <youpi> +in
+ <youpi> as you don't care about symbol exposure
+ <youpi> unless the inline is defined in a .c file of course, in that case it's useless to make it extern
+ <tschwinge> But then I also always need xinl.c files for those, which we apparently don't have in a few places.
+ <youpi> yes
+ <tschwinge> But probably didn't notice so far, as the functions could always be inlined.
+ <youpi> probably because we used to have luck
+ <youpi> yes
+ <tschwinge> Yes, I was thinking about the term/munge.c thing.
+ <tschwinge> OK, I think I get it now. Then I'll try to fix this accordingly.
+ <tschwinge> But not now. Thanks for the help!
+ <youpi> ok, thanks
+ <tschwinge> It was quite a bit confusing to me.
+ <tschwinge> Due to the mostly reversed definition of extern inline in glibc (I think).
+ <youpi> inline definitely is confusing
+ <youpi> especially since the semantic has changed over time and according to standards :)
+ <tschwinge> And then GCC changing that according to C99.
+ <tschwinge> Yes.
diff --git a/open_issues/fdisk.mdwn b/open_issues/fdisk.mdwn
new file mode 100644
index 00000000..ece8fc89
--- /dev/null
+++ b/open_issues/fdisk.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+ Command (m for help): w
+ The partition table has been altered!
+
+ Calling ioctl() to re-read partition table.
+ *Segmentation fault*
+
+Changes have been saved, though.
+
+Perhaps realted to the [[BLKRRPART_IOCTL]]?
diff --git a/open_issues/file_locking.mdwn b/open_issues/file_locking.mdwn
new file mode 100644
index 00000000..563307a4
--- /dev/null
+++ b/open_issues/file_locking.mdwn
@@ -0,0 +1,74 @@
+[[!meta copyright="Copyright © 2010, 2011 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_hurd open_issue_glibc]]
+
+IRC, #hurd, 2010-12-31.
+
+ <pinotree> youpi: i found the issue with python-apt
+ <pinotree> s/with/of/
+ <youpi> good!
+ <pinotree> lock file issue, though :/
+ <youpi> :/
+ <pinotree> this is the sample test case, derived from apt's code:
+ http://paste.debian.net/103536/
+ <pinotree> basically, it seems asking for a file lock in the same process
+ where there's already such lock on the file, fails
+ <pinotree> youpi: ↑
+ <youpi> uh, posix doesn't even define some nesting
+ <pinotree> it seems it just talks about concurrency with other processes
+ <youpi> posix tells more about it later
+ <youpi> saying that if a lock already exists, then it is replaced by the
+ new
+ <youpi> (when inside the same process)
+ <pinotree> yay, found a bug in hurd :p
+ <youpi> well, actually it's known
+ <youpi> i.e. setlk is completely bogus, based on flock
+ <youpi> and flock doesn't have the same semantic in that regard
+ <youpi> so we can't fix it without really implementing setlk
+ <pinotree> the XXX comment in glibc/sysdeps/mach/hurd/fcntl.c, by chance?
+ :)
+ <youpi> of course :)
+ <pinotree> youpi: hm, flock's man page says:
+ <pinotree> "A process may only hold one type of lock (shared or exclusive)
+ on a file. Subsequent flock() calls on an already locked file will
+ convert an existing lock to the new lock mode."
+ <pinotree> so a new lock in the same process over the original lock should
+ replace the old one?
+ <youpi> uh, that's not what I had seen
+ <pinotree> http://linux.die.net/man/2/flock
+ <youpi> An attempt to lock the file using one of these file descrip-
+ <youpi> tors may be denied by a lock that the calling process
+ has already
+ <youpi> placed via another descriptor.
+ <youpi> so it's really not that easy
+ <pinotree> that's in case of trying to create a lock on a file with a
+ different fd than the existing lock
+ <youpi> that's what your testcase does
+ <pinotree> which, hm, is python-apt's case
+ <youpi> that being said, the sentence I pasted does not seem to appear in
+ posix
+ <pinotree> flock() does not seem posix
+ <youpi> it may have been the behavior of Linux at some point in the past
+ <youpi> it's not , but F_SETLK is
+ <youpi> and in linux world, flock <=> F_SETLK, iirc
+ <youpi> in glibc world, even
+ <youpi> (just checked it, see sysdeps/posix/flock.c
+ <youpi> pinotree: I guess your testcase works on Linux?
+ <pinotree> which means we should get a proper F_SETLK working, and then
+ just use this flock version (instead of the custom one), no?
+ <pinotree> yes, it works on linux (and on kfreebsd, see that python-apt
+ builds)
+ <youpi> no, I mean our flock() should probably be happy with locking part
+ of a file several times
+ <youpi> (that is, hurd's file_lock() RPC)
+ <youpi> ah, no, on Linux flock is its own system call
+ <youpi> (which is independant from lockf from the locking point of view,
+ iirc)
diff --git a/open_issues/file_system_exerciser.mdwn b/open_issues/file_system_exerciser.mdwn
new file mode 100644
index 00000000..4277e5e7
--- /dev/null
+++ b/open_issues/file_system_exerciser.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2011 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_hurd]]
+
+Test our file system implementations with the File System Exerciser.
+
+ * <http://codemonkey.org.uk/projects/fsx/>
diff --git a/open_issues/fork_mach_port_mod_refs_ekern_urefs_owerflow.mdwn b/open_issues/fork_mach_port_mod_refs_ekern_urefs_owerflow.mdwn
new file mode 100644
index 00000000..39003ae4
--- /dev/null
+++ b/open_issues/fork_mach_port_mod_refs_ekern_urefs_owerflow.mdwn
@@ -0,0 +1,185 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+[[!meta title="fork: mach_port_mod_refs: EKERN_UREFS_OWERFLOW"]]
+
+[[!toc]]
+
+
+# Original Report
+
+In the [[GCC testsuite|gcc]], at this point:
+
+ Running /home/tschwinge/tmp/gcc/hurd/gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp ...
+
+... `expect` had gone bonkers:
+
+ $ ps --all --format=hurd-long -w
+ PID UID PPID PGrp Sess TH Vmem RSS %CPU User System Args
+ [...]
+ 3567 1000 10295 3567 3567 2 137M 856K 98.2 5hrs 28 hours expect -- /usr/share/dejagnu/runtest.exp --tool gcc
+ [...]
+
+Last lines of `gcc/testsuite/gcc/gcc.sum`:
+
+ PASS: gcc.c-torture/unsorted/q.c, -O2 -flto -flto-partition=none
+ PASS: gcc.c-torture/unsorted/q.c, -O2 -flto
+ PASS: gcc.c-torture/unsorted/r.c, -O0
+ PASS: gcc.c-torture/unsorted/r.c, -O1
+ PASS: gcc.c-torture/unsorted/r.c, -O2
+ PASS: gcc.c-torture/unsorted/r.c, -O3 -fomit-frame-pointer
+ PASS: gcc.c-torture/unsorted/r.c, -O3 -g
+ PASS: gcc.c-torture/unsorted/r.c, -Os
+ PASS: gcc.c-torture/unsorted/r.c, -O2 -flto -flto-partition=none
+
+Last lines of `gcc/testsuite/gcc/gcc.log`:
+
+ Executing on host: /media/data/home/tschwinge/tmp/gcc/hurd.build/gcc/xgcc -B/media/data/home/tschwinge/tmp/gcc/hurd.build/gcc/ -w -O2 -flto -flto-partition=none -c -o /home/tschwinge/tmp/gcc/hurd.build/gcc/testsuite/gcc/r.o /home/tschwinge/tmp/gcc/hurd/gcc/testsuite/gcc.c-torture/unsorted/r.c (timeout = 300)
+ spawn /media/data/home/tschwinge/tmp/gcc/hurd.build/gcc/xgcc -B/media/data/home/tschwinge/tmp/gcc/hurd.build/gcc/ -w -O2 -flto -flto-partition=none -c -o /home/tschwinge/tmp/gcc/hurd.build/gcc/testsuite/gcc/r.o /home/tschwinge/tmp/gcc/hurd/gcc/testsuite/gcc.c-torture/unsorted/r.c
+ PASS: gcc.c-torture/unsorted/r.c, -O2 -flto -flto-partition=none
+ Executing on host: /media/data/home/tschwinge/tmp/gcc/hurd.build/gcc/xgcc -B/media/data/home/tschwinge/tmp/gcc/hurd.build/gcc/ -w -O2 -flto -c -o /home/tschwinge/tmp/gcc/hurd.build/gcc/testsuite/gcc/r.o /home/tschwinge/tmp/gcc/hurd/gcc/testsuite/gcc.c-torture/unsorted/r.c (timeout = 300)
+ spawn /media/data/home/tschwinge/tmp/gcc/hurd.build/gcc/xgcc -B/media/data/home/tschwinge/tmp/gcc/hurd.build/gcc/ -w -O2 -flto -c -o /home/tschwinge/tmp/gcc/hurd.build/gcc/testsuite/gcc/r.o /home/tschwinge/tmp/gcc/hurd/gcc/testsuite/gcc.c-torture/unsorted/r.c
+
+The root filesystem is sort-of deadlocked: `syncfs -c /` doesn't finish
+-- even without `-s`. But it is fine to spawn new processes, execute new
+commands, etc.
+
+GDB on 3567:
+
+ (gdb) info threads
+ 2 Thread 3567.2 0x011aaf4c in mach_msg_trap () at /build/buildd-eglibc_2.11.2-7-hurd-i386-6JVoJz/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+ * 1 Thread 3567.1 0x011aaf9c in swtch_pri () at /build/buildd-eglibc_2.11.2-7-hurd-i386-6JVoJz/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/swtch_pri.S:2
+ (gdb) bt
+ #0 0x011aaf9c in swtch_pri () at /build/buildd-eglibc_2.11.2-7-hurd-i386-6JVoJz/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/swtch_pri.S:2
+ #1 0x011ac824 in __spin_lock_solid (lock=0x131e8e0) at spin-solid.c:27
+ #2 0x011aca1d in __mutex_lock_solid (lock=0x131e8e0) at mutex-solid.c:31
+ #3 0x0122dd0b in __mutex_lock (oldmem=0x8076458, bytes=94) at ../mach/lock-intern.h:89
+ #4 __libc_realloc (oldmem=0x8076458, bytes=94) at malloc.c:3814
+ #5 0x0121de62 in _IO_vasprintf (result_ptr=0x15f40c0, format=0x13098a8 "%s%s%s:%u: %s%sUnexpected error: %s.\n", args=0x15f3c9c "") at vasprintf.c:86
+ #6 0x01206d1b in ___asprintf (string_ptr=0x15f40c0, format=0x13098a8 "%s%s%s:%u: %s%sUnexpected error: %s.\n") at asprintf.c:37
+ #7 0x011e2fc8 in __assert_perror_fail (errnum=19, file=0x1305a98 "../sysdeps/mach/hurd/fork.c", line=466, function=0x1305acf "__fork") at assert-perr.c:62
+ #8 0x012586c8 in __fork () at ../sysdeps/mach/hurd/fork.c:466
+ #9 0x011f92e9 in do_system (line=0x15f42dc "/bin/stty sane > /dev/ttypa") at ../sysdeps/posix/system.c:119
+ #10 0x0105bea6 in ?? () from /usr/lib/libexpect.so.5.44.1.15
+ #11 0x0105bf6d in ?? () from /usr/lib/libexpect.so.5.44.1.15
+ #12 0x0105c229 in exp_getptyslave () from /usr/lib/libexpect.so.5.44.1.15
+ #13 0x0103e4b2 in ?? () from /usr/lib/libexpect.so.5.44.1.15
+ #14 0x01087d79 in ?? () from /usr/lib/libtcl8.5.so.0
+ #15 0x01088beb in ?? () from /usr/lib/libtcl8.5.so.0
+ #16 0x0108826a in Tcl_EvalEx () from /usr/lib/libtcl8.5.so.0
+ #17 0x0108985f in TclEvalObjEx () from /usr/lib/libtcl8.5.so.0
+ [...]
+ (gdb) bt full
+ #0 0x011aaf9c in swtch_pri () at /build/buildd-eglibc_2.11.2-7-hurd-i386-6JVoJz/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/swtch_pri.S:2
+ No locals.
+ #1 0x011ac824 in __spin_lock_solid (lock=0x131e8e0) at spin-solid.c:27
+ No locals.
+ #2 0x011aca1d in __mutex_lock_solid (lock=0x131e8e0) at mutex-solid.c:31
+ No locals.
+ #3 0x0122dd0b in __mutex_lock (oldmem=0x8076458, bytes=94) at ../mach/lock-intern.h:89
+ No locals.
+ #4 __libc_realloc (oldmem=0x8076458, bytes=94) at malloc.c:3814
+ ar_ptr = <value optimized out>
+ nb = 104
+ newp = 0x68
+ oldp = 0x8076450
+ oldsize = 104
+ __func__ = "__libc_realloc"
+ #5 0x0121de62 in _IO_vasprintf (result_ptr=0x15f40c0, format=0x13098a8 "%s%s%s:%u: %s%sUnexpected error: %s.\n", args=0x15f3c9c "") at vasprintf.c:86
+ sf = {_sbf = {_f = {_flags = -72515584,
+ _IO_read_ptr = 0x8076458 "expect: ../sysdeps/mach/hurd/fork.c:466: __fork: Unexpected error: (os/kern) urefs overflow.\n",
+ _IO_read_end = 0x8076458 "expect: ../sysdeps/mach/hurd/fork.c:466: __fork: Unexpected error: (os/kern) urefs overflow.\n",
+ _IO_read_base = 0x8076458 "expect: ../sysdeps/mach/hurd/fork.c:466: __fork: Unexpected error: (os/kern) urefs overflow.\n",
+ _IO_write_base = 0x8076458 "expect: ../sysdeps/mach/hurd/fork.c:466: __fork: Unexpected error: (os/kern) urefs overflow.\n",
+ _IO_write_ptr = 0x80764b5 "", _IO_write_end = 0x80764bc "\201\004",
+ _IO_buf_base = 0x8076458 "expect: ../sysdeps/mach/hurd/fork.c:466: __fork: Unexpected error: (os/kern) urefs overflow.\n",
+ _IO_buf_end = 0x80764bc "\201\004", _IO_save_base = 0x0, _IO_backup_base = 0x0, _IO_save_end = 0x0, _markers = 0x0, _chain = 0x0, _fileno = 20046008,
+ _flags2 = 0, _old_offset = 23018464, _cur_column = 0, _vtable_offset = 49 '1', _shortbuf = "\001", _lock = 0x0, _offset = 85643859813466072,
+ _codecvt = 0x1304583, _wide_data = 0x15f3bc0, _freeres_list = 0x0, _freeres_buf = 0x15f3c58, _freeres_size = 0, _mode = -1,
+ _unused2 = "\240;_\001\236D0\001\005\000\000\000\340;_\001(K3\001\000\000\000\000\005\000\000\000\000\000\000\000\250\230\060\001\260\303\031\001"},
+ vtable = 0x131b9c0}, _s = {_allocate_buffer = 0x122cdf0 <__libc_malloc>, _free_buffer = 0x122cd20 <__libc_free>}}
+ ret = <value optimized out>
+ needed = 94
+ #6 0x01206d1b in ___asprintf (string_ptr=0x15f40c0, format=0x13098a8 "%s%s%s:%u: %s%sUnexpected error: %s.\n") at asprintf.c:37
+ done = 1
+ #7 0x011e2fc8 in __assert_perror_fail (errnum=19, file=0x1305a98 "../sysdeps/mach/hurd/fork.c", line=466, function=0x1305acf "__fork") at assert-perr.c:62
+ errbuf = "\334\r", '\000' <repeats 14 times>, "\f\265\032\001\000\000\000\000x\262\004\b\000\000\000\000\000\000\000\000\377\377\377\377 \262\004\b\250\065\063\001\070A_\001k\000\000\000\000\000\000\000ı2\001\002", '\000' <repeats 11 times>"\366, \377\377\377\270\235\004\bk\000\000\000X=_\001\037\343\037\001\377\377\377\377\000\000\000\000s=_\001\361\t\006\001\070A_\001\362\t\006\001\350\t\006\001\000\000\000\000\304B_\001\350\t\006\001\330\377_\001\033\000\000\000)\036\024\001\364\267\025\001x=_\001Bq\022\001\000\000\000\000\350:\b\b\230=_\001\364\267\025\001X\313\031\b S\005\b\230=_\001\004\334\f\001X\313\031\b\000\022\030\b\300L\005\b\364\267\025\001\370\021\030\b S\005\b\bB_\001\a\365\f\001 S\005\b\320\021\030\b\001\000\000\000\274A_\001,\316\024\001\001\000\000\000\001\000\000\000\344"...
+ buf = <value optimized out>
+ #8 0x012586c8 in __fork () at ../sysdeps/mach/hurd/fork.c:466
+ newproc = 122
+ sigthread_refs = 4
+ portnames = 0x63000
+ porttypes = 0x64000
+ sigthread = 130
+ state = {gs = 1, fs = 18236712, es = 20390776, ds = 17004532, edi = 1, esi = 143348, ebp = 23020160, esp = 0, ebx = 23020088, edx = 23020016,
+ ecx = 23020028, eax = 3966371413, eip = 23020088, cs = 18236712, efl = 0, uesp = 20138312, ss = 18488015}
+ newtask = 121
+ thread = 139
+ thread_refs = 65534
+ statecount = <value optimized out>
+ nportnames = 142
+ nporttypes = 142
+ env = {{__jmpbuf = {20037620, 23068628, 23020252, 23020128, 23019736, 19231503}, __mask_was_saved = 0, __saved_mask = 4222451713}}
+ pid = <value optimized out>
+ err = EKERN_INVALID_ADDRESS
+ __PRETTY_FUNCTION__ = "__fork"
+ ss = 0x1376808
+ threads = 0x65000
+ nthreads = 2
+ stopped = 0
+ i = 2
+ #9 0x011f92e9 in do_system (line=0x15f42dc "/bin/stty sane > /dev/ttypa") at ../sysdeps/posix/system.c:119
+ status = <value optimized out>
+ save = <value optimized out>
+ pid = <value optimized out>
+ sa = {__sigaction_handler = {sa_handler = 0x1, sa_sigaction = 0x1}, sa_mask = 524288, sa_flags = 0}
+ omask = 0
+ [...]
+
+`fork` failed here:
+
+ 458 /* We have one extra user reference created at the beginning of this
+ 459 function, accounted for by mach_port_names (and which will thus be
+ 460 accounted for in the child below). This extra right gets consumed
+ 461 in the child by the store into _hurd_sigthread in the child fork. */
+ 462 if (thread_refs > 1 &&
+ 463 (err = __mach_port_mod_refs (newtask, ss->thread,
+ 464 MACH_PORT_RIGHT_SEND,
+ 465 thread_refs)))
+ 466 LOSE;
+
+This is in the parent, before signal thread setup, registering with the
+proc server, and starting the new process.
+
+The error is 19, `EKERN_UREFS_OVERFLOW`.
+
+(This is likely also the reason why the error path did not execute
+successfully.)
+
+[[!tag open_issue_glibc]]
+
+On 2010-11-30 and 2010-12-04, when I had again started the GCC testsuite, it
+failed again, but at another position (understandably), but with the same
+symptoms as shown below. In particular, the `thread_refs` values were the same
+ones.
+
+
+# Discussion
+
+ * <http://lists.gnu.org/archive/html/bug-hurd/2010-11/msg00028.html>
+
+ * <http://lists.gnu.org/archive/html/bug-hurd/2010-12/msg00002.html>
+
+This is likely *simply* a programming error in glibc's fork implementation.
+
+
+# Bounty
+
+There is a [[!FF_project 273]][[!tag bounty]] on this task.
diff --git a/open_issues/formal_verification.mdwn b/open_issues/formal_verification.mdwn
new file mode 100644
index 00000000..b7db76ee
--- /dev/null
+++ b/open_issues/formal_verification.mdwn
@@ -0,0 +1,30 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+*Formal verification* ([[!wikipedia Formal_verification desc="Wikipedia
+article"]]) deals with formally reasoning about a program's correctness.
+
+Especially in the field of [[DSL]]s, this is used for asserting program codes'
+correctness, as explained in {{$microkernel/barrelfish#fof_plos09}}, for
+example.
+
+[[!toc]]
+
+
+# Issues
+
+ * [[locking_issues]]
+
+ * [[term_blocking]]
+
+
+# Bounty
+
+There is a [[!FF_project 276]][[!tag bounty]] on some of these tasks.
diff --git a/open_issues/fsync.mdwn b/open_issues/fsync.mdwn
new file mode 100644
index 00000000..d36a75ad
--- /dev/null
+++ b/open_issues/fsync.mdwn
@@ -0,0 +1,22 @@
+[[!meta copyright="Copyright © 2010 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_hurd]]
+
+IRC, unknown channel, unknown date
+
+ <youpi> azeem: I think I found why apt-get throws Hurd down sometimes
+ <youpi> the problem is that it basically write(file, 20MB); fsync();
+ <youpi> i.e. it throws a storm of dirty-writeback to ext2fs
+ <youpi> which thus goes into throttling threads
+ <youpi> since posix explicitely says that fsync() can be void, I think I'll patch apt-get on the buildd
+ <youpi> (that bug has bitten me too many times in the past days to let it go further)
+ <youpi> for now it works
+ * youpi crosses fingers
diff --git a/open_issues/gcc.mdwn b/open_issues/gcc.mdwn
new file mode 100644
index 00000000..04c111fd
--- /dev/null
+++ b/open_issues/gcc.mdwn
@@ -0,0 +1,435 @@
+[[!meta copyright="Copyright © 2007, 2008, 2009, 2010, 2011 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_gcc]]
+
+Here's what's to be done for maintaining GCC.
+
+Apart from the target-specific configuration machinery, there shouldn't be any
+major differences within GCC between the GNU/Hurd and GNU/Linux ports, for
+example. Especially all the compiler magic is all the same.
+
+[[!toc levels=2]]
+
+
+# [[General information|/gcc]]
+
+
+# [[Sources|source_repositories/gcc]]
+
+
+## Boehm GC
+
+GCC includes an own variant of [[/Boehm_GC]] that is based on an upstream
+version, but with own patches, etc. This is used for Java. (There are patches
+(apparently not committed) that GCC itself can use it, too:
+<http://gcc.gnu.org/wiki/Garbage_collection_tuning>.)
+
+Patches to GCC's fork should be contributed back to upstream [[/Boehm_GC]].
+
+[[tschwinge]] reviewed (but only briefly for large parts) the differences on
+2010-12-08, based on the [[GCC Git mirror's
+8e79e9d43f32c8852f068da91d655297d92ac0f4 (2010-11-29)
+sources|source_repositories/GCC]] and Boehm GC's CVS HEAD sources from
+2010-12-02, converted to [[Git, correspondingly
+1c2455988a8f59a5f83b986b9156f03be395b3b6|source_repositories/boehm_gc]].
+
+On 2010-11-17,
+[[tschwinge]] reviewed the Debian GCC Boehm GC changes, compared them to the
+upstream code, and put it into the local *hurd/boehm-gc/config_backport*
+branch, planning to submit it to gcc-patches after testing with the GCC
+testsuite.
+
+ * Check
+
+ * 02e191ba495b4ec87aeb961ff9afdb666287104a
+
+ * ce062771587f6637ce09f79c36e24de691032919
+
+ * a9cc177ef514d6eb39db72c82911fcea2cd70dba
+
+ * 7b8d306d18986cd98808c9ed5d3a696a186dc213
+
+ Looks generally OK.
+
+ * a3a3fd06ae58af9591a95c94245809b0359289ff
+
+ Looks OK.
+
+ * fe5ef4a01870545d0344e670cd528ad096ebab1d
+
+ OK.
+
+
+# Configuration
+
+Last reviewed up to the [[Git mirror's 3d83581faf4eaf52c1cf52cc0d11cc7dd1264275
+(2011-09-05) sources|source_repositories/gcc]].
+
+<http://gcc.gnu.org/install/configure.html> has documentation for the
+`configure` switches.
+
+ * Configure fragments that have `*linux*` cases might/should often contain
+ those for us (and GNU/k*BSD) as well.
+
+ * `configure.ac`
+
+ * `libgomp/configure.tgt`
+
+ * `libstdc++-v3/configure.host`
+
+ `abi_baseline_pair` etc. setting.
+
+ * `libstdc++-v3/config/os/gnu-linux/*`
+
+ Is used for all GNU systems, as per `libstdc++-v3/configure.host`.
+ Should rename to `gnu` to reflect this?
+
+ * `gcc/acinclude.m4`:`gcc_GAS_FLAGS`: always pass `--32` to assembler for
+ x86 Linux. (Why?)
+
+ * [[`libmudflap`|libmudflap]].
+
+ * Might [`-fsplit-stack`](http://nickclifton.livejournal.com/6889.html) be
+ worthwhile w.r.t. our [[multithreaded|multithreading]] libraries?
+
+ * Also see `libgcc/config/i386/morestack.S`: comments w.r.t
+ `TARGET_THREAD_SPLIT_STACK_OFFSET`; likely needs porting.
+
+ As per `libgcc/config/i386/t-stack-i386`, the former file is only used for
+ `-fsplit-stack` support -- which is currently enabled for us in
+ `libgcc/config.host`, but not usable via GCC proper.
+
+ * `gcc/config/gnu-user.h` defines `*SPLIT_STACK*` macros -- which aren't
+ valid for us (yet), I think.
+
+ * `--enable-languages=[...]`
+
+ * GNAT is not yet ported / bootstrapped?
+
+ * The Google Go's libgo (introduced in
+ e440a3286bc89368b8d3a8fd6accd47191790bf2 (2010-12-03)) needs
+ OS configuration / support.
+
+ * `--enable-frame-pointer`
+
+ `gcc/configure.ac`: `enable_frame_pointer=no`
+
+ * `--with-dwarf2`?
+
+ * `--enable-werror`
+
+ * `--enable-checking`
+
+ * `--enable-linker-build-id`
+
+ * `--enable-gnu-unique-object`
+
+ * `--enable-lto`, `--enable-gold`
+
+ [[binutils_gold]]
+
+ * `--enable-indirect-function`
+
+ [[IFUNC]]
+
+ * <http://gcc.gnu.org/ml/gcc/2007-11/msg00289.html>,
+ <http://gcc.gnu.org/ml/gcc-patches/2010-12/msg00672.html>
+
+ * `gcc/config/t-linux` should be named `gcc/config/t-gnu-user` or
+ similar. Likewise for `gcc/config/i386/t-linux`.
+
+ * Debian's GCC package has Hurd-specific patches. Some have been forwarded
+ upstream (and have been ignored). [[Thomas_Schwinge|tschwinge]] is working
+ on getting them integrated.
+
+ * [\[meta-bug\] bootstrap bugs for
+ \*-gnu\*](http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21824)
+
+ * [build system: gcc\_cv\_libc\_provides\_ssp and
+ NATIVE\_SYSTEM\_HEADER\_DIR](http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html)
+
+ * [-fstack-protector shouldn't use TLS in freestanding
+ mode](http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29838)
+
+ * Check before/after Joseph changes. (Should be fine.)
+
+ * 34618b3190c110b8926cc2b1db4b4eac95451995
+
+ What's this used for? (Check ML.) Ask to include i686-pc-gnu (once it is
+ buildable out of the box)? See also
+ 73905b5de0d9a086f22ded7638bb1c0ae1b91326.
+
+ * [low, testsuite] 5c7992866145620ffd0bc75b4f23298162b2c17f
+
+ `check_effective_target_pie` should include `*-*-gnu*`, too.
+
+ * [low] [[toolchain/cross-gnu]] toolchain bootstrap vs. `fenv.h` in libgcc's
+ libbid:
+
+ [...]/xgcc [...] -DIN_LIBGCC2 -fbuilding-libgcc [...] -Dinhibit_libc [...] -o bid_decimal_globals.o [...] -c [...]/libgcc/config/libbid/bid_decimal_globals.c
+ [...]/libgcc/config/libbid/bid_decimal_globals.c:47:18: fatal error: fenv.h: No such file or directory
+ compilation terminated.
+ make[1]: *** [bid_decimal_globals.o] Error 1
+ make[1]: Leaving directory `/media/boole-data/thomas/tmp/gnu-0/src/gcc.obj/i686-pc-gnu/libgcc'
+ make: *** [all-target-libgcc] Error 2
+
+ See threads at
+ *id:"AANLkTinY1Cd4_qO_9euYJN8zev4hdr7_ANpjNG+yGRMn@mail.gmail.com"*,
+ *id:"20110328225532.GE5293@synopsys.com"*,
+ *id:"4D52D522.1040804@gmail.com"*. Can simply configure the first GCC with
+ `--disable-decimal-float`.
+
+ Alternatively, can we use `#ifndef inhibit_libc` for this (these?) file(s)?
+ See `generic-nonstrack.c`, for example. The latter (and also
+ `generic-morestack-thread.c`) also has a nice explanation of `inhibit_libc`
+ which could be centralized at one place, for example definition of
+ `inhibit_libc`.
+
+ * [low] [[toolchain/cross-gnu]]
+
+ The directory that should contain system headers does not exist:
+ /media/boole-data/thomas/tmp/gnu-0/sys_root/usr/include
+ make[2]: *** [stmp-fixinc] Error 1
+ make[2]: Leaving directory `/media/boole-data/thomas/tmp/gnu-0/src/gcc.obj/gcc'
+ make[1]: *** [all-gcc] Error 2
+ make[1]: Leaving directory `/media/boole-data/thomas/tmp/gnu-0/src/gcc.obj'
+
+ `mkdir` the directory for now, but what is really going on? GCC has *use
+ `/usr/include` patch*, but glibc still installs into `/include/`?
+
+
+# Build
+
+Here's a log of a GCC build run; this is from our [[Git repository's
+93608b32ee627438dbe8a1844254bf8c305c5dc1 (2011-09-05)
+sources|source_repositories/gcc]], run on kepler.SCHWINGE and coulomb.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 2>&1 | tee log_build
+ [...]
+ $ make 2>&1 | tee log_build_
+ [...]
+
+Different hosts may default to different shells and compiler versions; thus
+harmonized.
+
+This takes up around 2.9 GiB, and needs roughly 2.75 h on kepler.SCHWINGE and
+13.25 h on coulomb.SCHWINGE.
+
+
+## Analysis
+
+ $ diff -wu <(ssh kepler.SCHWINGE 'cd tmp/source/gcc/ && cat hurd/master.build/log_build* | sed -e "s%\(/media/data\)\?${PWD}%[...]%g"' | sed -f open_issues/gcc/log_build-linux.sed) <(ssh coulomb.SCHWINGE 'cd tmp/gcc/ && cat hurd/master.build/log_build* | sed -e "s%\(/media/erich\)\?${PWD}%[...]%g"' | sed -f open_issues/gcc/log_build-hurd.sed) > open_issues/gcc/log_build.diff
+
+[[log_build.diff]].
+
+ * [[`checking if gcc static flag -static
+ works... no`|glibc_madvise_vs_static_linking]]
+
+ Addressed in Debian glibc.
+
+ * DFP
+
+ Addressed in *hurd/decimal_floating_point* branch.
+
+ +configure: WARNING: decimal float is not supported for this target, ignored
+
+ ... and later on:
+
+ -checking for decimal floating point... bid
+ +checking for decimal floating point... configure: WARNING: decimal float is not supported for this target, ignored
+ +dpd
+
+ ... and later on:
+
+ -checking whether decimal floating point is supported... yes
+ +checking whether decimal floating point is supported... no
+ +configure: WARNING: decimal float is not supported for this target, ignored
+
+ * `libstdc++-v3/acinclude.m4`: ISO/IEC TR 24733
+
+ -checking for ISO/IEC TR 24733 ... yes
+ +checking for ISO/IEC TR 24733 ... no
+
+ * `--enable-decimal-float`, `--enable-fixed-point`, `--with-long-double-128`
+
+ `configure: WARNING: decimal float is not supported for this target,
+ ignored`
+
+ * `libgcc/configure.ac` [might
+ need](http://gcc.gnu.org/ml/gcc-patches/2008-10/msg00315.html) to be
+ aligned for us to the `*linux*` cases. As well as at the end of
+ `libgcc/config.host`. Check.
+
+ checking whether decimal floating point is supported... no
+ checking whether fixed-point is supported... no
+
+ * `host-linux.c` vs. `host-default.c`
+
+ * *fixincludes* stuff
+
+ * malloc?
+
+ -cat ../../hurd/gcc/config/i386/pmm_malloc.h > mm_malloc.h
+ +cat ../../hurd/gcc/config/i386/gmm_malloc.h > mm_malloc.h
+
+ Comes from `gcc/config.gcc`: `i386/t-pmm_malloc` vs. `i386/t-gmm_malloc`
+ for `i[34567]86-*-linux*` vs. `i[34567]86-*-*`.
+
+ * *libgomp*
+
+ * `libgomp/config/linux/`, `libgomp/config/linux/x86`
+
+ * `-ftls-model=initial-exec -march=i486 -mtune=i686`
+
+ * Missing `EOWNERDEAD`, `ENOTRECOVERABLE`. What're they used for?
+
+ * `RLIMIT_VMEM`. Usage kosher?
+
+ * `basic_file.cc`
+
+ +basic_file.cc: In member function 'std::streamsize std::__basic_file<char>::showmanyc()':
+ +basic_file.cc:347:33: warning: enumeral and non-enumeral type in conditional expression [enabled by default]
+
+ * `libtool: link: ar rc .libs/libstdc++.a [...]`
+
+ Just different order of object files, or another problem? TODO
+
+ * `libobjc/encoding.c`:
+
+ libtool: compile: [...]/hurd/master.build/./gcc/xgcc [...] [...]/hurd/master/libobjc/encoding.c -c [...]
+ +[...]/hurd/master/libobjc/encoding.c:128:1: warning: '_darwin_rs6000_special_round_type_align' defined but not used [-Wunused-function]
+
+ * `libobjc/thr.c`: `gcc/gthr-posix.h`
+
+ libtool: compile: [...]/hurd/master.build/./gcc/xgcc [...] [...]/hurd/master/libobjc/thr.c -c [...]
+ +In file included from ../.././gcc/gthr-default.h:1:0,
+ + from [...]/hurd/master/libobjc/../gcc/gthr.h:160,
+ + from [...]/hurd/master/libobjc/thr.c:45:
+ +[...]/hurd/master/libobjc/../gcc/gthr-posix.h: In function '__gthread_objc_thread_set_priority':
+ +[...]/hurd/master/libobjc/../gcc/gthr-posix.h:389:41: warning: unused parameter 'priority' [-Wunused-parameter]
+
+ * `/proc/self/*`
+
+ -checking for /proc/self/exe... yes
+ -checking for /proc/self/maps... yes
+ +checking for /proc/self/exe... no
+ +checking for /proc/self/maps... no
+
+ * GCJ: `java-signal.h`, `java-signal-aux.h`
+
+ -config.status: linking ../../../hurd/libjava/include/i386-signal.h to include/java-signal.h
+ -config.status: linking ../../../hurd/libjava/include/i386-signal.h to include/java-signal-aux.h
+ +config.status: linking ../../../hurd/libjava/include/default-signal.h to include/java-signal.h
+ +config.status: linking ../../../hurd/libjava/include/default-signal.h to include/java-signal-aux.h
+
+ * GCJ: `jni_md.h`
+
+ -checking jni_md.h support... yes
+ +checking jni_md.h support... configure: WARNING: no
+
+ * *default library search path*
+
+ -checking for the default library search path... /lib /usr/lib /lib/i386-linux-gnu /usr/lib/i386-linux-gnu /lib/i486-linux-gnu /usr/lib/i486-linux-gnu /usr/local/lib /lib64 /usr/lib64
+ +checking for the default library search path... /lib /usr/lib
+
+ * `./classpath/[...]/*.properties`
+
+ Just different order of files, or another problem?
+
+ * `libjava/gnu/gcj/util/natGCInfo.cc`
+
+ libtool: compile: [...]/hurd/master.build/./gcc/xgcc [...] -c ../../../master/libjava/gnu/gcj/util/natGCInfo.cc [...]
+ +../../../master/libjava/gnu/gcj/util/natGCInfo.cc:440:1: warning: unused parameter 'name' [-Wunused-parameter]
+ +../../../master/libjava/gnu/gcj/util/natGCInfo.cc:446:1: warning: unused parameter 'name' [-Wunused-parameter]
+ +../../../master/libjava/gnu/gcj/util/natGCInfo.cc:452:1: warning: unused parameter 'name' [-Wunused-parameter]
+
+ * `gnu/java/net/natPlainSocketImpl.cc`
+
+ libtool: compile: [...]/hurd/master.build/./gcc/xgcc [...] -c gnu/java/net/natPlainSocketImpl.cc [...]
+ +gnu/java/net/natPlainSocketImpl.cc: In member function 'virtual jint gnu::java::net::PlainSocketImpl::available()':
+ +gnu/java/net/natPlainSocketImpl.cc:515:27: warning: enumeral and non-enumeral type in conditional expression [enabled by default]
+
+ * `gnu/java/nio/channels/natFileChannelImpl.cc`
+
+ libtool: compile: [...]/hurd/master.build/./gcc/xgcc [...] -c gnu/java/nio/channels/natFileChannelImpl.cc [...]
+ +gnu/java/nio/channels/natFileChannelImpl.cc: In member function 'jint gnu::java::nio::channels::FileChannelImpl::available()':
+ +gnu/java/nio/channels/natFileChannelImpl.cc:388:20: warning: enumeral and non-enumeral type in conditional expression [enabled by default]
+
+ * `libgcj.la`
+
+ Just different order of object files, or another problem?
+
+ Is there a pattern that GNU/Hurd hands out the files alphabetically sorted
+ where it wouldn't need to ([[!taglink open_issue_hurd]])?
+
+ * `libjvm.la`, `.libs/libjvm.so`, `libgij.la`, `.libs/libgij.so.12.0.0`
+
+ `-Wl,-Bsymbolic` vs. `-Wl,-Bsymbolic-functions`
+
+
+# Install
+
+ $ make install 2>&1 | tee log_install
+ [...]
+
+This takes up around 630 MiB, and needs roughly 4 min on kepler.SCHWINGE and 35
+min on coulomb.SCHWINGE.
+
+
+## Analysis
+
+ $ diff -wu <(ssh kepler.SCHWINGE 'cd tmp/source/gcc/ && cat hurd/master.build/log_install | sed -e "s%\(/media/data\)\?${PWD}%[...]%g"' | sed -f open_issues/gcc/log_install-linux.sed) <(ssh coulomb.SCHWINGE 'cd tmp/gcc/ && cat hurd/master.build/log_install | sed -e "s%\(/media/erich\)\?${PWD}%[...]%g"' | sed -f open_issues/gcc/log_install-hurd.sed) > open_issues/gcc/log_install.diff
+
+[[log_install.diff]].
+
+ * `libtool: finish`: `ldconfig` is not run for the Hurd.
+
+ * `libjvm.la`, `.libs/libjvm.so`, `libgij.la`, `.libs/libgij.so.12.0.0`
+
+ `-Wl,-Bsymbolic` vs. `-Wl,-Bsymbolic-functions` (as above)
+
+
+# Testsuite
+
+<http://gcc.gnu.org/install/test.html>
+
+Testing on GNU/Hurd is blocked on
+[[fork_mach_port_mod_refs_ekern_urefs_owerflow]].
+
+ $ make -k check 2>&1 | tee log_check
+ [...]
+
+This needs roughly TODO min on kepler.SCHWINGE and TODO min on
+coulomb.SCHWINGE.
+
+ $ ssh kepler.SCHWINGE 'cd tmp/source/gcc/ && sed < hurd/master.build/gcc/TODO -e "s%\(/media/data\)\?${PWD}%[...]%g"' > open_issues/gcc/sum_linux
+ $ ssh coulomb.SCHWINGE 'cd tmp/gcc/ && sed < hurd/master.build/gcc/TODO -e "s%\(/media/erich\)\?${PWD}%[...]%g"' > open_issues/gcc/sum_hurd
+
+Comparing the results files, [[sum_linux]] to [[sum_hurd]]:
+
+ $ diff -u -F ^Running open_issues/gcc/sum_linux open_issues/gcc/sum_hurd > open_issues/gcc/sum.diff
+
+[[open_issues/gcc/sum.diff]].
+
+
+## Analysis
+
+TODO.
+
+
+# Specific Languages
+
+ * [[GNAT]]
+
+ * [[gccgo]]
diff --git a/open_issues/gcc/libmudflap.mdwn b/open_issues/gcc/libmudflap.mdwn
new file mode 100644
index 00000000..f14ca1bc
--- /dev/null
+++ b/open_issues/gcc/libmudflap.mdwn
@@ -0,0 +1,74 @@
+[[!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/gcc/log_build-hurd.sed b/open_issues/gcc/log_build-hurd.sed
new file mode 100644
index 00000000..129b2107
--- /dev/null
+++ b/open_issues/gcc/log_build-hurd.sed
@@ -0,0 +1,9 @@
+s%i686-unknown-gnu0\.3%[ARCH]%g
+
+
+
+
+
+s%libgomp/config/posix/%libgomp/config/[SYSDEP]/%g
+
+s%/i386-gnu%/[ARCH]%g
diff --git a/open_issues/gcc/log_build-linux.sed b/open_issues/gcc/log_build-linux.sed
new file mode 100644
index 00000000..834913bb
--- /dev/null
+++ b/open_issues/gcc/log_build-linux.sed
@@ -0,0 +1,9 @@
+s%i686-pc-linux-gnu%[ARCH]%g
+
+s%-I../../../master/libgomp/config/linux/x86 -I../../../master/libgomp/config/linux %%
+s%-ftls-model=initial-exec -march=i486 -mtune=i686 %%
+s%-Werror -ftls-model=initial-exec -march=i486 -pthread -mtune=i686%-pthread -Werror%
+s%libgomp/config/linux/%libgomp/config/[SYSDEP]/%g
+s%libgomp/config/posix/%libgomp/config/[SYSDEP]/%g
+
+s%/i386-linux-gnu%/[ARCH]%g
diff --git a/open_issues/gcc/log_build.diff b/open_issues/gcc/log_build.diff
new file mode 100644
index 00000000..a2c1bff2
--- /dev/null
+++ b/open_issues/gcc/log_build.diff
@@ -0,0 +1,2980 @@
+--- /dev/fd/63 2011-09-06 09:02:29.090253783 +0200
++++ /dev/fd/62 2011-09-06 09:02:29.090253783 +0200
+@@ -60,7 +60,7 @@
+ checking for cc... cc
+ checking for c++... c++
+ checking for gcc... gcc
+-checking for gcj... gcj
++checking for gcj... no
+ checking for gfortran... no
+ checking for gccgo... no
+ checking for ar... no
+@@ -147,7 +147,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... nm
+ checking the name lister (nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for ld option to reload object files... -r
+@@ -179,7 +179,7 @@
+ checking if gcc-4.6 supports -c -o file.o... (cached) yes
+ checking whether the gcc-4.6 linker (ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -258,12 +258,12 @@
+ checking for sys/sysinfo.h... yes
+ checking for machine/hal_sysinfo.h... no
+ checking for sys/table.h... no
+-checking for sys/sysctl.h... yes
++checking for sys/sysctl.h... no
+ checking for sys/systemcfg.h... no
+ checking for stdint.h... (cached) yes
+ checking for stdio_ext.h... yes
+ checking for process.h... no
+-checking for sys/prctl.h... yes
++checking for sys/prctl.h... no
+ checking for sys/wait.h that is POSIX.1 compatible... yes
+ checking whether time.h and sys/time.h may both be included... yes
+ checking whether errno must be declared... no
+@@ -333,13 +333,13 @@
+ checking for working fork... yes
+ checking for working vfork... (cached) yes
+ checking for _doprnt... no
+-checking for sys_errlist... yes
+-checking for sys_nerr... yes
++checking for sys_errlist... no
++checking for sys_nerr... no
+ checking for sys_siglist... yes
+ checking for external symbol _system_configuration... no
+ checking for __fsetlocking... yes
+ checking for canonicalize_file_name... yes
+-checking for dup3... yes
++checking for dup3... no
+ checking for getrlimit... yes
+ checking for getrusage... yes
+ checking for getsysinfo... no
+@@ -356,7 +356,7 @@
+ checking for strerror... yes
+ checking for strsignal... yes
+ checking for sysconf... yes
+-checking for sysctl... yes
++checking for sysctl... no
+ checking for sysmp... no
+ checking for table... no
+ checking for times... yes
+@@ -1022,18 +1022,17 @@
+ Using the following target machine macro files:
+ ../../master/gcc/config/vxworks-dummy.h
+ ../../master/gcc/config/i386/i386.h
+- ../../master/gcc/config/linux-android.h
+ ../../master/gcc/config/i386/unix.h
+ ../../master/gcc/config/i386/att.h
+ ../../master/gcc/config/dbxelf.h
+ ../../master/gcc/config/elfos.h
+ ../../master/gcc/config/gnu-user.h
+ ../../master/gcc/config/glibc-stdint.h
+- ../../master/gcc/config/linux.h
+ ../../master/gcc/config/i386/gnu-user.h
+- ../../master/gcc/config/i386/linux.h
++ ../../master/gcc/config/gnu.h
++ ../../master/gcc/config/i386/gnu.h
+ ../../master/gcc/config/initfini-array.h
+-Using host-linux.o for host machine hooks.
++Using host-default.o for host machine hooks.
+ checking for __cxa_atexit... yes
+ checking whether NLS is requested... yes
+ checking for catalogs to be installed... be da de el es fi fr id ja nl ru sr sv tr vi zh_CN zh_TW
+@@ -1045,7 +1044,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... nm
+ checking the name lister (nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for ld option to reload object files... -r
+@@ -1066,7 +1065,7 @@
+ checking if gcc-4.6 supports -c -o file.o... (cached) yes
+ checking whether the gcc-4.6 linker (ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -1082,7 +1081,7 @@
+ checking if g++-4.6 supports -c -o file.o... yes
+ checking if g++-4.6 supports -c -o file.o... (cached) yes
+ checking whether the g++-4.6 linker (ld) supports shared libraries... yes
+-checking dynamic linker characteristics... (cached) GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking for as... /usr/bin/as
+ checking what assembler to use... /usr/bin/as
+@@ -1095,7 +1094,7 @@
+ checking what objdump to use... /usr/bin/objdump
+ checking for readelf... /usr/bin/readelf
+ checking what readelf to use... /usr/bin/readelf
+-checking assembler flags... --32
++checking assembler flags...
+ checking assembler for .balign and .p2align... yes
+ checking assembler for .p2align with maximum skip... yes
+ checking assembler for .literal16... no
+@@ -1240,12 +1239,12 @@
+ checking for sys/sysinfo.h... yes
+ checking for machine/hal_sysinfo.h... no
+ checking for sys/table.h... no
+-checking for sys/sysctl.h... yes
++checking for sys/sysctl.h... no
+ checking for sys/systemcfg.h... no
+ checking for stdint.h... (cached) yes
+ checking for stdio_ext.h... yes
+ checking for process.h... no
+-checking for sys/prctl.h... yes
++checking for sys/prctl.h... no
+ checking for sys/wait.h that is POSIX.1 compatible... yes
+ checking whether time.h and sys/time.h may both be included... yes
+ checking whether errno must be declared... no
+@@ -1315,13 +1314,13 @@
+ checking for working fork... yes
+ checking for working vfork... (cached) yes
+ checking for _doprnt... no
+-checking for sys_errlist... yes
+-checking for sys_nerr... yes
++checking for sys_errlist... no
++checking for sys_nerr... no
+ checking for sys_siglist... yes
+ checking for external symbol _system_configuration... no
+ checking for __fsetlocking... yes
+ checking for canonicalize_file_name... yes
+-checking for dup3... yes
++checking for dup3... no
+ checking for getrlimit... yes
+ checking for getrusage... yes
+ checking for getsysinfo... no
+@@ -1338,7 +1337,7 @@
+ checking for strerror... yes
+ checking for strsignal... yes
+ checking for sysconf... yes
+-checking for sysctl... yes
++checking for sysctl... no
+ checking for sysmp... no
+ checking for table... no
+ checking for times... yes
+@@ -1766,7 +1765,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... nm
+ checking the name lister (nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for ld option to reload object files... -r
+@@ -1798,7 +1797,7 @@
+ checking if gcc-4.6 supports -c -o file.o... (cached) yes
+ checking whether the gcc-4.6 linker (ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -2194,9 +2193,9 @@
+ HEADERS="auto-host.h ansidecl.h" DEFINES="" \
+ /bin/dash ../../master/gcc/mkconfig.sh config.h
+ TARGET_CPU_DEFAULT="" \
+- HEADERS="options.h insn-constants.h config/vxworks-dummy.h config/i386/i386.h config/linux-android.h config/i386/unix.h config/i386/att.h config/dbxelf.h config/elfos.h config/gnu-user.h config/glibc-stdint.h config/linux.h config/i386/gnu-user.h config/i386/linux.h config/initfini-array.h defaults.h" DEFINES="LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 DEFAULT_LIBC=LIBC_GLIBC ANDROID_DEFAULT=0" \
++ HEADERS="options.h insn-constants.h config/vxworks-dummy.h config/i386/i386.h config/i386/unix.h config/i386/att.h config/dbxelf.h config/elfos.h config/gnu-user.h config/glibc-stdint.h config/i386/gnu-user.h config/gnu.h config/i386/gnu.h config/initfini-array.h defaults.h" DEFINES="LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 DEFAULT_LIBC=LIBC_GLIBC ANDROID_DEFAULT=0" \
+ /bin/dash ../../master/gcc/mkconfig.sh tm.h
+-gawk -f ../../master/gcc/opt-gather.awk ../../master/gcc/ada/gcc-interface/lang.opt ../../master/gcc/fortran/lang.opt ../../master/gcc/go/lang.opt ../../master/gcc/java/lang.opt ../../master/gcc/lto/lang.opt ../../master/gcc/c-family/c.opt ../../master/gcc/common.opt ../../master/gcc/config/fused-madd.opt ../../master/gcc/config/i386/i386.opt ../../master/gcc/config/gnu-user.opt ../../master/gcc/config/linux.opt ../../master/gcc/config/linux-android.opt > tmp-optionlist
++gawk -f ../../master/gcc/opt-gather.awk ../../master/gcc/ada/gcc-interface/lang.opt ../../master/gcc/fortran/lang.opt ../../master/gcc/go/lang.opt ../../master/gcc/java/lang.opt ../../master/gcc/lto/lang.opt ../../master/gcc/c-family/c.opt ../../master/gcc/common.opt ../../master/gcc/config/fused-madd.opt ../../master/gcc/config/i386/i386.opt ../../master/gcc/config/gnu-user.opt > tmp-optionlist
+ /bin/dash ../../master/gcc/../move-if-change tmp-optionlist optionlist
+ echo timestamp > s-options
+ gawk -f ../../master/gcc/opt-functions.awk -f ../../master/gcc/opt-read.awk \
+@@ -2227,7 +2226,7 @@
+ /bin/dash ../../master/gcc/../move-if-change tmp-constants.h insn-constants.h
+ echo timestamp > s-constants
+ TARGET_CPU_DEFAULT="" \
+- HEADERS="../libgcc/config/i386/value-unwind.h" DEFINES="" \
++ HEADERS="" DEFINES="" \
+ /bin/dash ../../master/gcc/mkconfig.sh libgcc_tm.h
+ gcc-4.6 -c -g -fkeep-inline-functions -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Wold-style-definition -Wc++-compat -fno-common -DHAVE_CONFIG_H -DGENERATOR_FILE -I. -Ibuild -I../../master/gcc -I../../master/gcc/build -I../../master/gcc/../include -I../../master/gcc/../libcpp/include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber \
+ -o build/genmodes.o ../../master/gcc/genmodes.c
+@@ -2354,11 +2353,11 @@
+ "" \
+ "" \
+ "" \
+- "i386-linux-gnu" \
++ "i386-gnu" \
+ "yes" \
+ > tmp-mlib.h; \
+ else \
+- /bin/dash ../../master/gcc/genmultilib '' '' '' '' '' '' '' "i386-linux-gnu" no \
++ /bin/dash ../../master/gcc/genmultilib '' '' '' '' '' '' '' "i386-gnu" no \
+ > tmp-mlib.h; \
+ fi
+ /bin/dash ../../master/gcc/../move-if-change tmp-mlib.h multilib.h
+@@ -2845,10 +2844,9 @@
+ echo timestamp > s-i386-bt
+ gcc-4.6 -c -g -fkeep-inline-functions -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Wold-style-definition -Wc++-compat -fno-common -DHAVE_CONFIG_H -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libcpp/include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber \
+ ../../master/gcc/config/i386/i386.c -o i386.o
+-gcc-4.6 -c -g -fkeep-inline-functions -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Wold-style-definition -Wc++-compat -fno-common -DHAVE_CONFIG_H -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libcpp/include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libcpp/include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber \
+- ../../master/gcc/config/host-linux.c
++gcc-4.6 -c -g -fkeep-inline-functions -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Wold-style-definition -Wc++-compat -fno-common -DHAVE_CONFIG_H -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libcpp/include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber ../../master/gcc/host-default.c -o host-default.o
+ rm -rf libbackend.a
+-ar rc libbackend.a insn-attrtab.o insn-automata.o insn-emit.o insn-extract.o insn-modes.o insn-opinit.o insn-output.o insn-peep.o insn-preds.o insn-recog.o insn-enums.o ggc-page.o alias.o alloc-pool.o auto-inc-dec.o bb-reorder.o bitmap.o bt-load.o builtins.o caller-save.o calls.o cfg.o cfganal.o cfgbuild.o cfgcleanup.o cfgexpand.o cfghooks.o cfglayout.o cfgloop.o cfgloopanal.o cfgloopmanip.o cfgrtl.o cgraph.o cgraphbuild.o cgraphunit.o combine.o combine-stack-adj.o compare-elim.o convert.o coverage.o cppbuiltin.o cppdefault.o cprop.o cse.o cselib.o data-streamer.o data-streamer-in.o data-streamer-out.o dbxout.o dbgcnt.o dce.o ddg.o debug.o df-core.o df-problems.o df-scan.o dfp.o dojump.o dominance.o domwalk.o double-int.o dse.o dwarf2asm.o dwarf2cfi.o dwarf2out.o ebitmap.o emit-rtl.o et-forest.o except.o explow.o expmed.o expr.o final.o fixed-value.o fold-const.o function.o fwprop.o gcse.o ggc-common.o gimple.o gimple-iterator.o gimple-fold.o gimple-low.o gimple-pretty-print.o gimple-streamer-in.o gimple-streamer-out.o gimplify.o godump.o graph.o graphds.o graphite.o graphite-blocking.o graphite-clast-to-gimple.o graphite-cloog-util.o graphite-dependences.o graphite-flattening.o graphite-interchange.o graphite-poly.o graphite-ppl.o graphite-scop-detection.o graphite-sese-to-poly.o gtype-desc.o haifa-sched.o hw-doloop.o hwint.o ifcvt.o implicit-zee.o incpath.o init-regs.o integrate.o internal-fn.o ipa-cp.o ipa-split.o ipa-inline.o ipa-inline-analysis.o ipa-inline-transform.o ipa-prop.o ipa-pure-const.o ipa-reference.o ipa-ref.o ipa-utils.o ipa.o ira.o ira-build.o ira-costs.o ira-conflicts.o ira-color.o ira-emit.o ira-lives.o jump.o langhooks.o lcm.o lists.o loop-doloop.o loop-init.o loop-invariant.o loop-iv.o loop-unroll.o loop-unswitch.o lower-subreg.o lto-cgraph.o lto-streamer.o lto-streamer-in.o lto-streamer-out.o lto-section-in.o lto-section-out.o lto-symtab.o lto-opts.o lto-compress.o matrix-reorg.o mcf.o mode-switching.o modulo-sched.o omega.o omp-low.o optabs.o options-save.o opts-global.o passes.o plugin.o pointer-set.o postreload-gcse.o postreload.o predict.o print-rtl.o print-tree.o profile.o real.o realmpfr.o recog.o reg-stack.o regcprop.o reginfo.o regmove.o regrename.o regstat.o reload.o reload1.o reorg.o resource.o rtl-error.o rtl.o rtlanal.o rtlhooks.o sbitmap.o sched-deps.o sched-ebb.o sched-rgn.o sched-vis.o sdbout.o sel-sched-ir.o sel-sched-dump.o sel-sched.o sese.o simplify-rtx.o sparseset.o sreal.o stack-ptr-mod.o statistics.o stmt.o stor-layout.o store-motion.o streamer-hooks.o stringpool.o target-globals.o targhooks.o timevar.o toplev.o tracer.o tree-affine.o tree-call-cdce.o tree-cfg.o tree-cfgcleanup.o tree-chrec.o tree-complex.o tree-data-ref.o tree-dfa.o tree-diagnostic.o tree-dump.o tree-eh.o tree-emutls.o tree-if-conv.o tree-inline.o tree-into-ssa.o tree-iterator.o tree-loop-distribution.o tree-nested.o tree-nomudflap.o tree-nrv.o tree-object-size.o tree-optimize.o tree-outof-ssa.o tree-parloops.o tree-phinodes.o tree-predcom.o tree-pretty-print.o tree-profile.o tree-scalar-evolution.o tree-sra.o tree-switch-conversion.o tree-ssa-address.o tree-ssa-alias.o tree-ssa-ccp.o tree-ssa-coalesce.o tree-ssa-copy.o tree-ssa-copyrename.o tree-ssa-dce.o tree-ssa-dom.o tree-ssa-dse.o tree-ssa-forwprop.o tree-ssa-ifcombine.o tree-ssa-live.o tree-ssa-loop-ch.o tree-ssa-loop-im.o tree-ssa-loop-ivcanon.o tree-ssa-loop-ivopts.o tree-ssa-loop-manip.o tree-ssa-loop-niter.o tree-ssa-loop-prefetch.o tree-ssa-loop-unswitch.o tree-ssa-loop.o tree-ssa-math-opts.o tree-ssa-operands.o tree-ssa-phiopt.o tree-ssa-phiprop.o tree-ssa-pre.o tree-ssa-propagate.o tree-ssa-reassoc.o tree-ssa-sccvn.o tree-ssa-sink.o tree-ssa-structalias.o tree-ssa-ter.o tree-ssa-threadedge.o tree-ssa-threadupdate.o tree-ssa-uncprop.o tree-ssa-uninit.o tree-ssa.o tree-ssanames.o tree-stdarg.o tree-streamer.o tree-streamer-in.o tree-streamer-out.o tree-tailcall.o tree-vect-generic.o tree-vect-patterns.o tree-vect-data-refs.o tree-vect-stmts.o tree-vect-loop.o tree-vect-loop-manip.o tree-vect-slp.o tree-vectorizer.o tree-vrp.o tree.o value-prof.o var-tracking.o varasm.o varpool.o vmsdbgout.o web.o xcoffout.o i386.o host-linux.o
++ar rc libbackend.a insn-attrtab.o insn-automata.o insn-emit.o insn-extract.o insn-modes.o insn-opinit.o insn-output.o insn-peep.o insn-preds.o insn-recog.o insn-enums.o ggc-page.o alias.o alloc-pool.o auto-inc-dec.o bb-reorder.o bitmap.o bt-load.o builtins.o caller-save.o calls.o cfg.o cfganal.o cfgbuild.o cfgcleanup.o cfgexpand.o cfghooks.o cfglayout.o cfgloop.o cfgloopanal.o cfgloopmanip.o cfgrtl.o cgraph.o cgraphbuild.o cgraphunit.o combine.o combine-stack-adj.o compare-elim.o convert.o coverage.o cppbuiltin.o cppdefault.o cprop.o cse.o cselib.o data-streamer.o data-streamer-in.o data-streamer-out.o dbxout.o dbgcnt.o dce.o ddg.o debug.o df-core.o df-problems.o df-scan.o dfp.o dojump.o dominance.o domwalk.o double-int.o dse.o dwarf2asm.o dwarf2cfi.o dwarf2out.o ebitmap.o emit-rtl.o et-forest.o except.o explow.o expmed.o expr.o final.o fixed-value.o fold-const.o function.o fwprop.o gcse.o ggc-common.o gimple.o gimple-iterator.o gimple-fold.o gimple-low.o gimple-pretty-print.o gimple-streamer-in.o gimple-streamer-out.o gimplify.o godump.o graph.o graphds.o graphite.o graphite-blocking.o graphite-clast-to-gimple.o graphite-cloog-util.o graphite-dependences.o graphite-flattening.o graphite-interchange.o graphite-poly.o graphite-ppl.o graphite-scop-detection.o graphite-sese-to-poly.o gtype-desc.o haifa-sched.o hw-doloop.o hwint.o ifcvt.o implicit-zee.o incpath.o init-regs.o integrate.o internal-fn.o ipa-cp.o ipa-split.o ipa-inline.o ipa-inline-analysis.o ipa-inline-transform.o ipa-prop.o ipa-pure-const.o ipa-reference.o ipa-ref.o ipa-utils.o ipa.o ira.o ira-build.o ira-costs.o ira-conflicts.o ira-color.o ira-emit.o ira-lives.o jump.o langhooks.o lcm.o lists.o loop-doloop.o loop-init.o loop-invariant.o loop-iv.o loop-unroll.o loop-unswitch.o lower-subreg.o lto-cgraph.o lto-streamer.o lto-streamer-in.o lto-streamer-out.o lto-section-in.o lto-section-out.o lto-symtab.o lto-opts.o lto-compress.o matrix-reorg.o mcf.o mode-switching.o modulo-sched.o omega.o omp-low.o optabs.o options-save.o opts-global.o passes.o plugin.o pointer-set.o postreload-gcse.o postreload.o predict.o print-rtl.o print-tree.o profile.o real.o realmpfr.o recog.o reg-stack.o regcprop.o reginfo.o regmove.o regrename.o regstat.o reload.o reload1.o reorg.o resource.o rtl-error.o rtl.o rtlanal.o rtlhooks.o sbitmap.o sched-deps.o sched-ebb.o sched-rgn.o sched-vis.o sdbout.o sel-sched-ir.o sel-sched-dump.o sel-sched.o sese.o simplify-rtx.o sparseset.o sreal.o stack-ptr-mod.o statistics.o stmt.o stor-layout.o store-motion.o streamer-hooks.o stringpool.o target-globals.o targhooks.o timevar.o toplev.o tracer.o tree-affine.o tree-call-cdce.o tree-cfg.o tree-cfgcleanup.o tree-chrec.o tree-complex.o tree-data-ref.o tree-dfa.o tree-diagnostic.o tree-dump.o tree-eh.o tree-emutls.o tree-if-conv.o tree-inline.o tree-into-ssa.o tree-iterator.o tree-loop-distribution.o tree-nested.o tree-nomudflap.o tree-nrv.o tree-object-size.o tree-optimize.o tree-outof-ssa.o tree-parloops.o tree-phinodes.o tree-predcom.o tree-pretty-print.o tree-profile.o tree-scalar-evolution.o tree-sra.o tree-switch-conversion.o tree-ssa-address.o tree-ssa-alias.o tree-ssa-ccp.o tree-ssa-coalesce.o tree-ssa-copy.o tree-ssa-copyrename.o tree-ssa-dce.o tree-ssa-dom.o tree-ssa-dse.o tree-ssa-forwprop.o tree-ssa-ifcombine.o tree-ssa-live.o tree-ssa-loop-ch.o tree-ssa-loop-im.o tree-ssa-loop-ivcanon.o tree-ssa-loop-ivopts.o tree-ssa-loop-manip.o tree-ssa-loop-niter.o tree-ssa-loop-prefetch.o tree-ssa-loop-unswitch.o tree-ssa-loop.o tree-ssa-math-opts.o tree-ssa-operands.o tree-ssa-phiopt.o tree-ssa-phiprop.o tree-ssa-pre.o tree-ssa-propagate.o tree-ssa-reassoc.o tree-ssa-sccvn.o tree-ssa-sink.o tree-ssa-structalias.o tree-ssa-ter.o tree-ssa-threadedge.o tree-ssa-threadupdate.o tree-ssa-uncprop.o tree-ssa-uninit.o tree-ssa.o tree-ssanames.o tree-stdarg.o tree-streamer.o tree-streamer-in.o tree-streamer-out.o tree-tailcall.o tree-vect-generic.o tree-vect-patterns.o tree-vect-data-refs.o tree-vect-stmts.o tree-vect-loop.o tree-vect-loop-manip.o tree-vect-slp.o tree-vectorizer.o tree-vrp.o tree.o value-prof.o var-tracking.o varasm.o varpool.o vmsdbgout.o web.o xcoffout.o i386.o host-default.o
+ ranlib libbackend.a
+ build/genhooks "Common Target Hook" \
+ > tmp-common-target-hooks-def.h
+@@ -3055,92 +3053,46 @@
+ done; \
+ fi
+ Fixing headers into [...]/hurd/master.build/gcc/include-fixed for [ARCH] target
+-Forbidden identifiers: i386 linux unix
++Forbidden identifiers: MACH i386 unix
+ Finding directories and links to directories
+ Searching /usr/include/.
+- Searching /usr/include/./libpng
++ Searching /usr/include/./mach/machine
+ Searching /usr/include/./c++/4.6.1
++ Searching /usr/include/./libpng
+ Making symbolic directory links
+ Fixing directory /usr/include into [...]/hurd/master.build/gcc/include-fixed
+-Applying machine_name to openssl/bn.h
+-Fixed: openssl/bn.h
+-Applying machine_name to openssl/e_os2.h
+-Applying sysv68_string to string.h
+-Applying sun_malloc to malloc.h
+-Applying pthread_incomplete_struct_argument to pthread.h
+-Applying io_quotes_use to sound/asound.h
+-Applying io_quotes_use to sound/asequencer.h
+-Applying io_quotes_use to sound/emu10k1.h
+-Applying glibc_stdint to stdint.h
+-Applying io_quotes_def to glib-2.0/gio/gdbusmethodinvocation.h
+-Applying io_quotes_def to glib-2.0/gio/gdbusconnection.h
+-Applying io_quotes_def to glib-2.0/gio/gmountoperation.h
+-Applying io_quotes_use to linux/i2o-dev.h
+-Applying io_quotes_use to linux/raw.h
+-Applying io_quotes_use to linux/fs.h
+-Applying io_quotes_use to linux/vhost.h
+-Applying io_quotes_use to linux/spi/spidev.h
+-Applying io_quotes_use to linux/gigaset_dev.h
+-Applying io_quotes_use to linux/aufs_type.h
+-Applying io_quotes_use to linux/mmtimer.h
+-Applying io_quotes_use to linux/cm4000_cs.h
+-Applying io_quotes_use to linux/phantom.h
+-Applying io_quotes_use to linux/ipmi.h
+-Applying io_quotes_use to linux/usb/tmc.h
+-Applying io_quotes_use to linux/random.h
+-Applying io_quotes_use to linux/if_pppox.h
+-Applying io_quotes_use to linux/fd.h
+-Applying io_quotes_use to linux/auto_fs4.h
+-Applying io_quotes_use to linux/blkpg.h
+-Applying io_quotes_use to linux/ppdev.h
+-Applying io_quotes_use to linux/input.h
+-Applying io_quotes_use to linux/media.h
+-Applying io_quotes_use to linux/dm-ioctl.h
+-Applying io_quotes_use to linux/ptp_clock.h
+-Applying io_quotes_use to linux/cciss_ioctl.h
+-Applying io_quotes_use to linux/mmc/ioctl.h
+-Applying io_quotes_use to linux/raid/md_u.h
+-Applying io_quotes_use to linux/agpgart.h
+-Applying io_quotes_use to linux/dn.h
+-Applying io_quotes_use to linux/rfkill.h
+-Applying io_quotes_use to linux/auto_fs.h
+-Applying io_quotes_def to linux/soundcard.h
+-Applying io_quotes_def to linux/version.h
+-Applying io_quotes_use to linux/atmbr2684.h
+-Applying io_quotes_use to linux/nbd.h
+-Applying io_quotes_use to linux/omapfb.h
+-Applying io_quotes_use to linux/uinput.h
+-Applying io_quotes_use to linux/reiserfs_fs.h
+-Applying io_quotes_use to linux/synclink.h
+-Applying io_quotes_use to linux/kvm.h
+-Applying machine_name to linux/a.out.h
+-Fixed: linux/a.out.h
+-Applying io_quotes_def to linux/pci_regs.h
+-Applying io_quotes_use to linux/watchdog.h
+-Applying io_quotes_def to linux/ppp-comp.h
+-Applying io_quotes_use to linux/pktcdvd.h
+-Applying io_quotes_use to linux/suspend_ioctls.h
++Applying io_quotes_def to i386-gnu/bits/ioctls.h
++Applying io_quotes_def to sudo_plugin.h
++Applying io_quotes_use to sudo_plugin.h
++Applying hpux8_bogus_inlines to math.h
+ Applying machine_name to X11/Xw32defs.h
+ Fixed: X11/Xw32defs.h
+-Applying io_quotes_use to i386-linux-gnu/sys/raw.h
+-Applying io_quotes_use to i386-linux-gnu/sys/mount.h
+-Applying io_quotes_use to i386-linux-gnu/asm/mtrr.h
+-Applying io_quotes_use to video/sisfb.h
+-Applying ctrl_quotes_def to dialog.h
+-Applying io_quotes_use to sys/raw.h
+-Applying io_quotes_use to sys/mount.h
+-Applying hpux8_bogus_inlines to math.h
++Applying io_quotes_def to X11/Xmu/Atoms.h
++Applying ctrl_quotes_def to readline/chardefs.h
+ Applying stdio_va_list_clients to krb5.h
++Applying strict_ansi_only to ident.h
++Fixed: ident.h
++Applying machine_name to mysql/my_global.h
++Applying io_quotes_def to mach/i386/ioccom.h
++Fixed: mach/i386/ioccom.h
++Applying machine_name to a.out.h
++Fixed: a.out.h
++Applying io_quotes_def to glib-2.0/gio/gmountoperation.h
++Applying io_quotes_def to glib-2.0/gio/gdbusconnection.h
++Applying io_quotes_def to glib-2.0/gio/gdbusmethodinvocation.h
++Applying io_quotes_def to at-spi-1.0/libspi/application.h
++Applying sun_malloc to malloc.h
+ Applying io_quotes_def to gtk-2.0/gtk/gtkmountoperation.h
+-Applying io_quotes_use to rdma/ib_user_mad.h
+-Applying io_quotes_use to mtd/ubi-user.h
+-Applying io_quotes_def to sudo_plugin.h
+-Applying io_quotes_use to sudo_plugin.h
++Applying glibc_stdint to stdint.h
++Applying io_quotes_def to libIDL-2.0/libIDL/IDL.h
++Applying io_quotes_use to libIDL-2.0/libIDL/IDL.h
++Applying io_quotes_def to libbonobo-2.0/bonobo/bonobo-application.h
++Applying sysv68_string to string.h
+ Cleaning up unneeded directories:
+ fixincludes is done
+ echo timestamp > stmp-fixinc
+ rm -f mm_malloc.h
+-cat ../../master/gcc/config/i386/pmm_malloc.h > mm_malloc.h
++cat ../../master/gcc/config/i386/gmm_malloc.h > mm_malloc.h
+ if [ -d include ] ; then true; else mkdir include; chmod a+rx include; fi
+ if [ -d include-fixed ] ; then true; else mkdir include-fixed; chmod a+rx include-fixed; fi
+ for file in .. ../../master/gcc/ginclude/float.h ../../master/gcc/ginclude/iso646.h ../../master/gcc/ginclude/stdarg.h ../../master/gcc/ginclude/stdbool.h ../../master/gcc/ginclude/stddef.h ../../master/gcc/ginclude/varargs.h ../../master/gcc/ginclude/stdfix.h ../../master/gcc/ginclude/stdnoreturn.h ../../master/gcc/config/i386/cpuid.h ../../master/gcc/config/i386/mmintrin.h ../../master/gcc/config/i386/mm3dnow.h ../../master/gcc/config/i386/xmmintrin.h ../../master/gcc/config/i386/emmintrin.h ../../master/gcc/config/i386/pmmintrin.h ../../master/gcc/config/i386/tmmintrin.h ../../master/gcc/config/i386/ammintrin.h ../../master/gcc/config/i386/smmintrin.h ../../master/gcc/config/i386/nmmintrin.h ../../master/gcc/config/i386/bmmintrin.h ../../master/gcc/config/i386/fma4intrin.h ../../master/gcc/config/i386/wmmintrin.h ../../master/gcc/config/i386/immintrin.h ../../master/gcc/config/i386/x86intrin.h ../../master/gcc/config/i386/avxintrin.h ../../master/gcc/config/i386/xopintrin.h ../../master/gcc/config/i386/ia32intrin.h ../../master/gcc/config/i386/cross-stdarg.h ../../master/gcc/config/i386/lwpintrin.h ../../master/gcc/config/i386/popcntintrin.h ../../master/gcc/config/i386/lzcntintrin.h ../../master/gcc/config/i386/bmiintrin.h ../../master/gcc/config/i386/bmi2intrin.h ../../master/gcc/config/i386/tbmintrin.h ../../master/gcc/config/i386/avx2intrin.h ../../master/gcc/config/i386/fmaintrin.h mm_malloc.h; do \
+@@ -3287,7 +3239,7 @@
+ mv -f doc/fsf-funding.7.T$$ doc/fsf-funding.7) || \
+ (rm -f doc/fsf-funding.7.T$$ && exit 1)
+ cp doc/gcc.1 doc/g++.1
+-rm gfdl.pod cpp.pod gcov.pod fsf-funding.pod gcc.pod
++rm gcov.pod cpp.pod gfdl.pod fsf-funding.pod gcc.pod
+ make[3]: Leaving directory `[...]/hurd/master.build/gcc'
+ mkdir -p -- [ARCH]/libgcc
+ Checking multilib configuration for libgcc...
+@@ -3337,7 +3289,7 @@
+ config.status: creating Makefile
+ config.status: linking ../../../master/libgcc/enable-execute-stack-empty.c to enable-execute-stack.c
+ config.status: linking ../../../master/libgcc/unwind-generic.h to unwind.h
+-config.status: linking ../../../master/libgcc/config/i386/linux-unwind.h to md-unwind-support.h
++config.status: linking ../../../master/libgcc/config/no-unwind.h to md-unwind-support.h
+ config.status: linking ../../../master/libgcc/config/i386/sfp-machine.h to sfp-machine.h
+ config.status: executing default commands
+ Adding multilib support to Makefile in ../../../master/libgcc
+@@ -3677,10 +3629,13 @@
+ ../../../master/libgcc/soft-fp/divtf3.c:45:3: warning: 'R_e' may be used uninitialized in this function [-Wmaybe-uninitialized]
+ [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -g -O2 -O2 -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I../../master/gcc/../libgcc -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -I. -I. -I../.././gcc -I../../../master/libgcc -I../../../master/libgcc/. -I../../../master/libgcc/../gcc -I../../../master/libgcc/../include -I../../../master/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o eqtf2.o -MT eqtf2.o -MD -MP -MF eqtf2.dep -c ../../../master/libgcc/soft-fp/eqtf2.c -fvisibility=hidden -DHIDE_EXPORTS
+ ../../../master/libgcc/soft-fp/eqtf2.c:35:9: warning: no previous prototype for '__eqtf2' [-Wmissing-prototypes]
++../../../master/libgcc/soft-fp/eqtf2.c:51:1: warning: no previous prototype for '__netf2' [-Wmissing-prototypes]
+ [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -g -O2 -O2 -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I../../master/gcc/../libgcc -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -I. -I. -I../.././gcc -I../../../master/libgcc -I../../../master/libgcc/. -I../../../master/libgcc/../gcc -I../../../master/libgcc/../include -I../../../master/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o getf2.o -MT getf2.o -MD -MP -MF getf2.dep -c ../../../master/libgcc/soft-fp/getf2.c -fvisibility=hidden -DHIDE_EXPORTS
+ ../../../master/libgcc/soft-fp/getf2.c:35:9: warning: no previous prototype for '__getf2' [-Wmissing-prototypes]
++../../../master/libgcc/soft-fp/getf2.c:51:1: warning: no previous prototype for '__gttf2' [-Wmissing-prototypes]
+ [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -g -O2 -O2 -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I../../master/gcc/../libgcc -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -I. -I. -I../.././gcc -I../../../master/libgcc -I../../../master/libgcc/. -I../../../master/libgcc/../gcc -I../../../master/libgcc/../include -I../../../master/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o letf2.o -MT letf2.o -MD -MP -MF letf2.dep -c ../../../master/libgcc/soft-fp/letf2.c -fvisibility=hidden -DHIDE_EXPORTS
+ ../../../master/libgcc/soft-fp/letf2.c:35:9: warning: no previous prototype for '__letf2' [-Wmissing-prototypes]
++../../../master/libgcc/soft-fp/letf2.c:51:1: warning: no previous prototype for '__lttf2' [-Wmissing-prototypes]
+ [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -g -O2 -O2 -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I../../master/gcc/../libgcc -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -I. -I. -I../.././gcc -I../../../master/libgcc -I../../../master/libgcc/. -I../../../master/libgcc/../gcc -I../../../master/libgcc/../include -I../../../master/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o multf3.o -MT multf3.o -MD -MP -MF multf3.dep -c ../../../master/libgcc/soft-fp/multf3.c -fvisibility=hidden -DHIDE_EXPORTS
+ ../../../master/libgcc/soft-fp/multf3.c:35:8: warning: no previous prototype for '__multf3' [-Wmissing-prototypes]
+ ../../../master/libgcc/soft-fp/multf3.c: In function '__multf3':
+@@ -3889,10 +3844,13 @@
+ ../../../master/libgcc/soft-fp/divtf3.c:45:3: warning: 'R_e' may be used uninitialized in this function [-Wmaybe-uninitialized]
+ [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -g -O2 -O2 -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I../../master/gcc/../libgcc -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -I. -I. -I../.././gcc -I../../../master/libgcc -I../../../master/libgcc/. -I../../../master/libgcc/../gcc -I../../../master/libgcc/../include -I../../../master/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o eqtf2_s.o -MT eqtf2_s.o -MD -MP -MF eqtf2_s.dep -DSHARED -c ../../../master/libgcc/soft-fp/eqtf2.c
+ ../../../master/libgcc/soft-fp/eqtf2.c:35:9: warning: no previous prototype for '__eqtf2' [-Wmissing-prototypes]
++../../../master/libgcc/soft-fp/eqtf2.c:51:1: warning: no previous prototype for '__netf2' [-Wmissing-prototypes]
+ [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -g -O2 -O2 -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I../../master/gcc/../libgcc -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -I. -I. -I../.././gcc -I../../../master/libgcc -I../../../master/libgcc/. -I../../../master/libgcc/../gcc -I../../../master/libgcc/../include -I../../../master/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o getf2_s.o -MT getf2_s.o -MD -MP -MF getf2_s.dep -DSHARED -c ../../../master/libgcc/soft-fp/getf2.c
+ ../../../master/libgcc/soft-fp/getf2.c:35:9: warning: no previous prototype for '__getf2' [-Wmissing-prototypes]
++../../../master/libgcc/soft-fp/getf2.c:51:1: warning: no previous prototype for '__gttf2' [-Wmissing-prototypes]
+ [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -g -O2 -O2 -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I../../master/gcc/../libgcc -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -I. -I. -I../.././gcc -I../../../master/libgcc -I../../../master/libgcc/. -I../../../master/libgcc/../gcc -I../../../master/libgcc/../include -I../../../master/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o letf2_s.o -MT letf2_s.o -MD -MP -MF letf2_s.dep -DSHARED -c ../../../master/libgcc/soft-fp/letf2.c
+ ../../../master/libgcc/soft-fp/letf2.c:35:9: warning: no previous prototype for '__letf2' [-Wmissing-prototypes]
++../../../master/libgcc/soft-fp/letf2.c:51:1: warning: no previous prototype for '__lttf2' [-Wmissing-prototypes]
+ [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -g -O2 -O2 -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I../../master/gcc/../libgcc -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -I. -I. -I../.././gcc -I../../../master/libgcc -I../../../master/libgcc/. -I../../../master/libgcc/../gcc -I../../../master/libgcc/../include -I../../../master/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o multf3_s.o -MT multf3_s.o -MD -MP -MF multf3_s.dep -DSHARED -c ../../../master/libgcc/soft-fp/multf3.c
+ ../../../master/libgcc/soft-fp/multf3.c:35:8: warning: no previous prototype for '__multf3' [-Wmissing-prototypes]
+ ../../../master/libgcc/soft-fp/multf3.c: In function '__multf3':
+@@ -4085,7 +4043,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... [...]/hurd/master.build/./gcc/nm
+ checking the name lister ([...]/hurd/master.build/./gcc/nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for [...]/hurd/master.build/./gcc/collect-ld option to reload object files... -r
+@@ -4116,7 +4074,7 @@
+ checking if [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -4217,7 +4175,7 @@
+ checking if the linker ([...]/hurd/master.build/./gcc/collect-ld) is GNU ld... yes
+ checking for BSD- or MS-compatible name lister (nm)... [...]/hurd/master.build/./gcc/nm
+ checking the name lister ([...]/hurd/master.build/./gcc/nm) interface... BSD nm
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for [...]/hurd/master.build/./gcc/collect-ld option to reload object files... -r
+@@ -4247,7 +4205,7 @@
+ checking if [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking for shl_load... no
+ checking for shl_load in -ldld... no
+@@ -4269,7 +4227,7 @@
+ checking if [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... yes
+ checking if [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+-checking dynamic linker characteristics... (cached) GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking for exception model to use... call frame
+ checking for compiler with PCH support... yes
+@@ -4317,8 +4275,8 @@
+ checking for parallel mode support... yes
+ checking for extra compiler flags for building...
+ checking for extern template support... yes
+-checking for EOWNERDEAD... yes
+-checking for ENOTRECOVERABLE... yes
++checking for EOWNERDEAD... no
++checking for ENOTRECOVERABLE... no
+ checking for ENOLINK... yes
+ checking for EPROTO... yes
+ checking for ENODATA... yes
+@@ -4581,7 +4539,7 @@
+ checking for sys/resource.h... (cached) yes
+ checking for RLIMIT_DATA... yes
+ checking for RLIMIT_RSS... yes
+-checking for RLIMIT_VMEM... no
++checking for RLIMIT_VMEM... yes
+ checking for RLIMIT_AS... yes
+ checking for RLIMIT_FSIZE... yes
+ checking for testsuite resource limits support... yes
+@@ -4987,6 +4945,8 @@
+ ln -s [...]/hurd/master/libstdc++-v3/config/io/basic_file_stdio.cc ./basic_file.cc || true
+ /bin/dash ../libtool --tag CXX --mode=compile [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -frandom-seed=basic_file.lo -g -O2 -D_GNU_SOURCE -c -o basic_file.lo basic_file.cc
+ libtool: compile: [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -frandom-seed=basic_file.lo -g -O2 -D_GNU_SOURCE -c basic_file.cc -fPIC -DPIC -o .libs/basic_file.o
++basic_file.cc: In member function 'std::streamsize std::__basic_file<char>::showmanyc()':
++basic_file.cc:347:33: warning: enumeral and non-enumeral type in conditional expression [enabled by default]
+ libtool: compile: [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -frandom-seed=basic_file.lo -g -O2 -D_GNU_SOURCE -c basic_file.cc -o basic_file.o >/dev/null 2>&1
+ ln -s [...]/hurd/master/libstdc++-v3/config/locale/gnu/c_locale.cc ./c++locale.cc || true
+ /bin/dash ../libtool --tag CXX --mode=compile [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -frandom-seed=c++locale.lo -g -O2 -D_GNU_SOURCE -c -o c++locale.lo c++locale.cc
+@@ -5064,7 +5024,7 @@
+ libtool: link: (cd ".libs" && rm -f "libstdc++.so.6" && ln -s "libstdc++.so.6.0.17" "libstdc++.so.6")
+ libtool: link: (cd ".libs" && rm -f "libstdc++.so" && ln -s "libstdc++.so.6.0.17" "libstdc++.so")
+ libtool: link: (cd .libs/libstdc++.lax/libsupc++convenience.a && ar x "[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/../libsupc++/.libs/libsupc++convenience.a")
+-libtool: link: ar rc .libs/libstdc++.a atomic.o bitmap_allocator.o pool_allocator.o mt_allocator.o codecvt.o compatibility.o compatibility-c++0x.o compatibility-debug_list.o compatibility-debug_list-2.o compatibility-list.o compatibility-list-2.o complex_io.o ctype.o debug.o functexcept.o functional.o globals_io.o hash_c++0x.o hash_tr1.o hashtable_c++0x.o hashtable_tr1.o ios.o ios_failure.o ios_init.o ios_locale.o limits.o list.o locale.o locale_init.o locale_facets.o localename.o math_stubs_float.o math_stubs_long_double.o stdexcept.o strstream.o system_error.o tree.o istream.o placeholders.o regex.o shared_ptr.o streambuf.o mutex.o condition_variable.o chrono.o thread.o future.o valarray.o atomicity.o codecvt_members.o collate_members.o ctype_configure_char.o ctype_members.o messages_members.o monetary_members.o numeric_members.o time_members.o basic_file.o c++locale.o allocator-inst.o concept-inst.o ext-inst.o fstream-inst.o ios-inst.o iostream-inst.o istream-inst.o locale-inst.o misc-inst.o ostream-inst.o sstream-inst.o streambuf-inst.o string-inst.o wlocale-inst.o wstring-inst.o parallel_settings.o compatibility-parallel_list.o compatibility-parallel_list-2.o .libs/libstdc++.lax/libsupc++convenience.a/new_opv.o .libs/libstdc++.lax/libsupc++convenience.a/si_class_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/del_op.o .libs/libstdc++.lax/libsupc++convenience.a/eh_globals.o .libs/libstdc++.lax/libsupc++convenience.a/enum_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/bad_alloc.o .libs/libstdc++.lax/libsupc++convenience.a/eh_call.o .libs/libstdc++.lax/libsupc++convenience.a/vterminate.o .libs/libstdc++.lax/libsupc++convenience.a/function_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/cp-demangle.o .libs/libstdc++.lax/libsupc++convenience.a/guard_error.o .libs/libstdc++.lax/libsupc++convenience.a/atexit_arm.o .libs/libstdc++.lax/libsupc++convenience.a/eh_throw.o .libs/libstdc++.lax/libsupc++convenience.a/eh_terminate.o .libs/libstdc++.lax/libsupc++convenience.a/guard.o .libs/libstdc++.lax/libsupc++convenience.a/eh_catch.o .libs/libstdc++.lax/libsupc++convenience.a/fundamental_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/hash_bytes.o .libs/libstdc++.lax/libsupc++convenience.a/nested_exception.o .libs/libstdc++.lax/libsupc++convenience.a/del_opvnt.o .libs/libstdc++.lax/libsupc++convenience.a/tinfo.o .libs/libstdc++.lax/libsupc++convenience.a/new_handler.o .libs/libstdc++.lax/libsupc++convenience.a/tinfo2.o .libs/libstdc++.lax/libsupc++convenience.a/pointer_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/eh_ptr.o .libs/libstdc++.lax/libsupc++convenience.a/pmem_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/vec.o .libs/libstdc++.lax/libsupc++convenience.a/eh_arm.o .libs/libstdc++.lax/libsupc++convenience.a/class_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/eh_type.o .libs/libstdc++.lax/libsupc++convenience.a/eh_unex_handler.o .libs/libstdc++.lax/libsupc++convenience.a/del_opv.o .libs/libstdc++.lax/libsupc++convenience.a/eh_personality.o .libs/libstdc++.lax/libsupc++convenience.a/pbase_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/eh_aux_runtime.o .libs/libstdc++.lax/libsupc++convenience.a/eh_term_handler.o .libs/libstdc++.lax/libsupc++convenience.a/array_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/new_opnt.o .libs/libstdc++.lax/libsupc++convenience.a/del_opnt.o .libs/libstdc++.lax/libsupc++convenience.a/vmi_class_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/new_op.o .libs/libstdc++.lax/libsupc++convenience.a/bad_cast.o .libs/libstdc++.lax/libsupc++convenience.a/eh_exception.o .libs/libstdc++.lax/libsupc++convenience.a/bad_typeid.o .libs/libstdc++.lax/libsupc++convenience.a/dyncast.o .libs/libstdc++.lax/libsupc++convenience.a/eh_alloc.o .libs/libstdc++.lax/libsupc++convenience.a/new_opvnt.o .libs/libstdc++.lax/libsupc++convenience.a/pure.o
++libtool: link: ar rc .libs/libstdc++.a atomic.o bitmap_allocator.o pool_allocator.o mt_allocator.o codecvt.o compatibility.o compatibility-c++0x.o compatibility-debug_list.o compatibility-debug_list-2.o compatibility-list.o compatibility-list-2.o complex_io.o ctype.o debug.o functexcept.o functional.o globals_io.o hash_c++0x.o hash_tr1.o hashtable_c++0x.o hashtable_tr1.o ios.o ios_failure.o ios_init.o ios_locale.o limits.o list.o locale.o locale_init.o locale_facets.o localename.o math_stubs_float.o math_stubs_long_double.o stdexcept.o strstream.o system_error.o tree.o istream.o placeholders.o regex.o shared_ptr.o streambuf.o mutex.o condition_variable.o chrono.o thread.o future.o valarray.o atomicity.o codecvt_members.o collate_members.o ctype_configure_char.o ctype_members.o messages_members.o monetary_members.o numeric_members.o time_members.o basic_file.o c++locale.o allocator-inst.o concept-inst.o ext-inst.o fstream-inst.o ios-inst.o iostream-inst.o istream-inst.o locale-inst.o misc-inst.o ostream-inst.o sstream-inst.o streambuf-inst.o string-inst.o wlocale-inst.o wstring-inst.o parallel_settings.o compatibility-parallel_list.o compatibility-parallel_list-2.o .libs/libstdc++.lax/libsupc++convenience.a/array_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/atexit_arm.o .libs/libstdc++.lax/libsupc++convenience.a/bad_alloc.o .libs/libstdc++.lax/libsupc++convenience.a/bad_cast.o .libs/libstdc++.lax/libsupc++convenience.a/bad_typeid.o .libs/libstdc++.lax/libsupc++convenience.a/class_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/del_op.o .libs/libstdc++.lax/libsupc++convenience.a/del_opnt.o .libs/libstdc++.lax/libsupc++convenience.a/del_opv.o .libs/libstdc++.lax/libsupc++convenience.a/del_opvnt.o .libs/libstdc++.lax/libsupc++convenience.a/dyncast.o .libs/libstdc++.lax/libsupc++convenience.a/eh_alloc.o .libs/libstdc++.lax/libsupc++convenience.a/eh_arm.o .libs/libstdc++.lax/libsupc++convenience.a/eh_aux_runtime.o .libs/libstdc++.lax/libsupc++convenience.a/eh_call.o .libs/libstdc++.lax/libsupc++convenience.a/eh_catch.o .libs/libstdc++.lax/libsupc++convenience.a/eh_exception.o .libs/libstdc++.lax/libsupc++convenience.a/eh_globals.o .libs/libstdc++.lax/libsupc++convenience.a/eh_personality.o .libs/libstdc++.lax/libsupc++convenience.a/eh_ptr.o .libs/libstdc++.lax/libsupc++convenience.a/eh_term_handler.o .libs/libstdc++.lax/libsupc++convenience.a/eh_terminate.o .libs/libstdc++.lax/libsupc++convenience.a/eh_throw.o .libs/libstdc++.lax/libsupc++convenience.a/eh_type.o .libs/libstdc++.lax/libsupc++convenience.a/eh_unex_handler.o .libs/libstdc++.lax/libsupc++convenience.a/enum_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/function_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/fundamental_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/guard.o .libs/libstdc++.lax/libsupc++convenience.a/guard_error.o .libs/libstdc++.lax/libsupc++convenience.a/hash_bytes.o .libs/libstdc++.lax/libsupc++convenience.a/nested_exception.o .libs/libstdc++.lax/libsupc++convenience.a/new_handler.o .libs/libstdc++.lax/libsupc++convenience.a/new_op.o .libs/libstdc++.lax/libsupc++convenience.a/new_opnt.o .libs/libstdc++.lax/libsupc++convenience.a/new_opv.o .libs/libstdc++.lax/libsupc++convenience.a/new_opvnt.o .libs/libstdc++.lax/libsupc++convenience.a/pbase_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/pmem_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/pointer_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/pure.o .libs/libstdc++.lax/libsupc++convenience.a/si_class_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/tinfo.o .libs/libstdc++.lax/libsupc++convenience.a/tinfo2.o .libs/libstdc++.lax/libsupc++convenience.a/vec.o .libs/libstdc++.lax/libsupc++convenience.a/vmi_class_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/vterminate.o .libs/libstdc++.lax/libsupc++convenience.a/cp-demangle.o
+ libtool: link: ranlib .libs/libstdc++.a
+ libtool: link: rm -fr .libs/libstdc++.lax
+ libtool: link: ( cd ".libs" && rm -f "libstdc++.la" && ln -s "../libstdc++.la" "libstdc++.la" )
+@@ -5244,7 +5204,7 @@
+ libtool: compile: [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -DHAVE_CONFIG_H -I. -I../../../master/libgomp -I../../../master/libgomp/config/posix -I../../../master/libgomp -Wall -pthread -Werror -g -O2 -MT affinity.lo -MD -MP -MF .deps/affinity.Tpo -c ../../../master/libgomp/config/[SYSDEP]/affinity.c -o affinity.o >/dev/null 2>&1
+ mv -f .deps/affinity.Tpo .deps/affinity.Plo
+ /bin/dash ./libtool --tag CC --mode=link [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -Wall -Werror -Wc,-pthread -g -O2 -Wl,-O1 -o libgomp.la -version-info 1:0:0 -Wl,--version-script,../../../master/libgomp/libgomp.map -rpath [...]/hurd/master.build.install/lib/ alloc.lo barrier.lo critical.lo env.lo error.lo iter.lo iter_ull.lo loop.lo loop_ull.lo ordered.lo parallel.lo sections.lo single.lo task.lo team.lo work.lo lock.lo mutex.lo proc.lo sem.lo bar.lo ptrlock.lo time.lo fortran.lo affinity.lo -lrt
+-libtool: link: [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -shared .libs/alloc.o .libs/barrier.o .libs/critical.o .libs/env.o .libs/error.o .libs/iter.o .libs/iter_ull.o .libs/loop.o .libs/loop_ull.o .libs/ordered.o .libs/parallel.o .libs/sections.o .libs/single.o .libs/task.o .libs/team.o .libs/work.o .libs/lock.o .libs/mutex.o .libs/proc.o .libs/sem.o .libs/bar.o .libs/ptrlock.o .libs/time.o .libs/fortran.o .libs/affinity.o -lrt -march=i486 -mtune=i686 -pthread -Wl,-O1 -Wl,--version-script -Wl,../../../master/libgomp/libgomp.map -Wl,-soname -Wl,libgomp.so.1 -o .libs/libgomp.so.1.0.0
++libtool: link: [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -shared .libs/alloc.o .libs/barrier.o .libs/critical.o .libs/env.o .libs/error.o .libs/iter.o .libs/iter_ull.o .libs/loop.o .libs/loop_ull.o .libs/ordered.o .libs/parallel.o .libs/sections.o .libs/single.o .libs/task.o .libs/team.o .libs/work.o .libs/lock.o .libs/mutex.o .libs/proc.o .libs/sem.o .libs/bar.o .libs/ptrlock.o .libs/time.o .libs/fortran.o .libs/affinity.o -lrt -pthread -Wl,-O1 -Wl,--version-script -Wl,../../../master/libgomp/libgomp.map -Wl,-soname -Wl,libgomp.so.1 -o .libs/libgomp.so.1.0.0
+ libtool: link: (cd ".libs" && rm -f "libgomp.so.1" && ln -s "libgomp.so.1.0.0" "libgomp.so.1")
+ libtool: link: (cd ".libs" && rm -f "libgomp.so" && ln -s "libgomp.so.1.0.0" "libgomp.so")
+ libtool: link: ar rc .libs/libgomp.a alloc.o barrier.o critical.o env.o error.o iter.o iter_ull.o loop.o loop_ull.o ordered.o parallel.o sections.o single.o task.o team.o work.o lock.o mutex.o proc.o sem.o bar.o ptrlock.o time.o fortran.o affinity.o
+@@ -5342,7 +5302,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... nm
+ checking the name lister (nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for ld option to reload object files... -r
+@@ -5374,7 +5334,7 @@
+ checking if [...]/hurd/master.build/./prev-gcc/xgcc -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./prev-gcc/xgcc -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker (ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -5453,12 +5413,12 @@
+ checking for sys/sysinfo.h... yes
+ checking for machine/hal_sysinfo.h... no
+ checking for sys/table.h... no
+-checking for sys/sysctl.h... yes
++checking for sys/sysctl.h... no
+ checking for sys/systemcfg.h... no
+ checking for stdint.h... (cached) yes
+ checking for stdio_ext.h... yes
+ checking for process.h... no
+-checking for sys/prctl.h... yes
++checking for sys/prctl.h... no
+ checking for sys/wait.h that is POSIX.1 compatible... yes
+ checking whether time.h and sys/time.h may both be included... yes
+ checking whether errno must be declared... no
+@@ -5528,13 +5488,13 @@
+ checking for working fork... yes
+ checking for working vfork... (cached) yes
+ checking for _doprnt... no
+-checking for sys_errlist... yes
+-checking for sys_nerr... yes
++checking for sys_errlist... no
++checking for sys_nerr... no
+ checking for sys_siglist... yes
+ checking for external symbol _system_configuration... no
+ checking for __fsetlocking... yes
+ checking for canonicalize_file_name... yes
+-checking for dup3... yes
++checking for dup3... no
+ checking for getrlimit... yes
+ checking for getrusage... yes
+ checking for getsysinfo... no
+@@ -5551,7 +5511,7 @@
+ checking for strerror... yes
+ checking for strsignal... yes
+ checking for sysconf... yes
+-checking for sysctl... yes
++checking for sysctl... no
+ checking for sysmp... no
+ checking for table... no
+ checking for times... yes
+@@ -6223,18 +6183,17 @@
+ Using the following target machine macro files:
+ ../../master/gcc/config/vxworks-dummy.h
+ ../../master/gcc/config/i386/i386.h
+- ../../master/gcc/config/linux-android.h
+ ../../master/gcc/config/i386/unix.h
+ ../../master/gcc/config/i386/att.h
+ ../../master/gcc/config/dbxelf.h
+ ../../master/gcc/config/elfos.h
+ ../../master/gcc/config/gnu-user.h
+ ../../master/gcc/config/glibc-stdint.h
+- ../../master/gcc/config/linux.h
+ ../../master/gcc/config/i386/gnu-user.h
+- ../../master/gcc/config/i386/linux.h
++ ../../master/gcc/config/gnu.h
++ ../../master/gcc/config/i386/gnu.h
+ ../../master/gcc/config/initfini-array.h
+-Using host-linux.o for host machine hooks.
++Using host-default.o for host machine hooks.
+ checking for __cxa_atexit... yes
+ checking whether NLS is requested... yes
+ checking for catalogs to be installed... be da de el es fi fr id ja nl ru sr sv tr vi zh_CN zh_TW
+@@ -6246,7 +6205,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... nm
+ checking the name lister (nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for ld option to reload object files... -r
+@@ -6267,7 +6226,7 @@
+ checking if [...]/hurd/master.build/./prev-gcc/xgcc -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./prev-gcc/xgcc -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker (ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -6283,7 +6242,7 @@
+ checking if [...]/hurd/master.build/./prev-gcc/g++ -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -nostdinc++ -B[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/libsupc++/.libs -I[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -L[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/src/.libs -L[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/libsupc++/.libs supports -c -o file.o... yes
+ checking if [...]/hurd/master.build/./prev-gcc/g++ -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -nostdinc++ -B[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/libsupc++/.libs -I[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -L[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/src/.libs -L[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/libsupc++/.libs supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./prev-gcc/g++ -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -nostdinc++ -B[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/libsupc++/.libs -I[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -L[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/src/.libs -L[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/libsupc++/.libs linker (ld) supports shared libraries... yes
+-checking dynamic linker characteristics... (cached) GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking for as... /usr/bin/as
+ checking what assembler to use... /usr/bin/as
+@@ -6296,7 +6255,7 @@
+ checking what objdump to use... /usr/bin/objdump
+ checking for readelf... /usr/bin/readelf
+ checking what readelf to use... /usr/bin/readelf
+-checking assembler flags... --32
++checking assembler flags...
+ checking assembler for .balign and .p2align... yes
+ checking assembler for .p2align with maximum skip... yes
+ checking assembler for .literal16... no
+@@ -6416,7 +6375,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... nm
+ checking the name lister (nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for ld option to reload object files... -r
+@@ -6448,7 +6407,7 @@
+ checking if [...]/hurd/master.build/./prev-gcc/xgcc -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./prev-gcc/xgcc -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker (ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -6844,9 +6803,9 @@
+ HEADERS="auto-host.h ansidecl.h" DEFINES="" \
+ /bin/dash ../../master/gcc/mkconfig.sh config.h
+ TARGET_CPU_DEFAULT="" \
+- HEADERS="options.h insn-constants.h config/vxworks-dummy.h config/i386/i386.h config/linux-android.h config/i386/unix.h config/i386/att.h config/dbxelf.h config/elfos.h config/gnu-user.h config/glibc-stdint.h config/linux.h config/i386/gnu-user.h config/i386/linux.h config/initfini-array.h defaults.h" DEFINES="LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 DEFAULT_LIBC=LIBC_GLIBC ANDROID_DEFAULT=0" \
++ HEADERS="options.h insn-constants.h config/vxworks-dummy.h config/i386/i386.h config/i386/unix.h config/i386/att.h config/dbxelf.h config/elfos.h config/gnu-user.h config/glibc-stdint.h config/i386/gnu-user.h config/gnu.h config/i386/gnu.h config/initfini-array.h defaults.h" DEFINES="LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 DEFAULT_LIBC=LIBC_GLIBC ANDROID_DEFAULT=0" \
+ /bin/dash ../../master/gcc/mkconfig.sh tm.h
+-gawk -f ../../master/gcc/opt-gather.awk ../../master/gcc/ada/gcc-interface/lang.opt ../../master/gcc/fortran/lang.opt ../../master/gcc/go/lang.opt ../../master/gcc/java/lang.opt ../../master/gcc/lto/lang.opt ../../master/gcc/c-family/c.opt ../../master/gcc/common.opt ../../master/gcc/config/fused-madd.opt ../../master/gcc/config/i386/i386.opt ../../master/gcc/config/gnu-user.opt ../../master/gcc/config/linux.opt ../../master/gcc/config/linux-android.opt > tmp-optionlist
++gawk -f ../../master/gcc/opt-gather.awk ../../master/gcc/ada/gcc-interface/lang.opt ../../master/gcc/fortran/lang.opt ../../master/gcc/go/lang.opt ../../master/gcc/java/lang.opt ../../master/gcc/lto/lang.opt ../../master/gcc/c-family/c.opt ../../master/gcc/common.opt ../../master/gcc/config/fused-madd.opt ../../master/gcc/config/i386/i386.opt ../../master/gcc/config/gnu-user.opt > tmp-optionlist
+ /bin/dash ../../master/gcc/../move-if-change tmp-optionlist optionlist
+ echo timestamp > s-options
+ gawk -f ../../master/gcc/opt-functions.awk -f ../../master/gcc/opt-read.awk \
+@@ -6877,7 +6836,7 @@
+ /bin/dash ../../master/gcc/../move-if-change tmp-constants.h insn-constants.h
+ echo timestamp > s-constants
+ TARGET_CPU_DEFAULT="" \
+- HEADERS="../libgcc/config/i386/value-unwind.h" DEFINES="" \
++ HEADERS="" DEFINES="" \
+ /bin/dash ../../master/gcc/mkconfig.sh libgcc_tm.h
+ [...]/hurd/master.build/./prev-gcc/xgcc -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -c -g -O2 -gtoggle -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror -Wold-style-definition -Wc++-compat -fno-common -DHAVE_CONFIG_H -DGENERATOR_FILE -I. -Ibuild -I../../master/gcc -I../../master/gcc/build -I../../master/gcc/../include -I../../master/gcc/../libcpp/include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber \
+ -o build/genmodes.o ../../master/gcc/genmodes.c
+@@ -7004,11 +6963,11 @@
+ "" \
+ "" \
+ "" \
+- "i386-linux-gnu" \
++ "i386-gnu" \
+ "yes" \
+ > tmp-mlib.h; \
+ else \
+- /bin/dash ../../master/gcc/genmultilib '' '' '' '' '' '' '' "i386-linux-gnu" no \
++ /bin/dash ../../master/gcc/genmultilib '' '' '' '' '' '' '' "i386-gnu" no \
+ > tmp-mlib.h; \
+ fi
+ /bin/dash ../../master/gcc/../move-if-change tmp-mlib.h multilib.h
+@@ -7495,10 +7454,9 @@
+ echo timestamp > s-i386-bt
+ [...]/hurd/master.build/./prev-gcc/g++ -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -nostdinc++ -B[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/libsupc++/.libs -I[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -L[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/src/.libs -L[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/libsupc++/.libs -c -g -O2 -gtoggle -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror -fno-common -DHAVE_CONFIG_H -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libcpp/include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber \
+ ../../master/gcc/config/i386/i386.c -o i386.o
+-[...]/hurd/master.build/./prev-gcc/g++ -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -nostdinc++ -B[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/libsupc++/.libs -I[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -L[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/src/.libs -L[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/libsupc++/.libs -c -g -O2 -gtoggle -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror -fno-common -DHAVE_CONFIG_H -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libcpp/include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libcpp/include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber \
+- ../../master/gcc/config/host-linux.c
++[...]/hurd/master.build/./prev-gcc/g++ -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -nostdinc++ -B[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/libsupc++/.libs -I[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -L[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/src/.libs -L[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/libsupc++/.libs -c -g -O2 -gtoggle -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror -fno-common -DHAVE_CONFIG_H -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libcpp/include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber ../../master/gcc/host-default.c -o host-default.o
+ rm -rf libbackend.a
+-ar rc libbackend.a insn-attrtab.o insn-automata.o insn-emit.o insn-extract.o insn-modes.o insn-opinit.o insn-output.o insn-peep.o insn-preds.o insn-recog.o insn-enums.o ggc-page.o alias.o alloc-pool.o auto-inc-dec.o bb-reorder.o bitmap.o bt-load.o builtins.o caller-save.o calls.o cfg.o cfganal.o cfgbuild.o cfgcleanup.o cfgexpand.o cfghooks.o cfglayout.o cfgloop.o cfgloopanal.o cfgloopmanip.o cfgrtl.o cgraph.o cgraphbuild.o cgraphunit.o combine.o combine-stack-adj.o compare-elim.o convert.o coverage.o cppbuiltin.o cppdefault.o cprop.o cse.o cselib.o data-streamer.o data-streamer-in.o data-streamer-out.o dbxout.o dbgcnt.o dce.o ddg.o debug.o df-core.o df-problems.o df-scan.o dfp.o dojump.o dominance.o domwalk.o double-int.o dse.o dwarf2asm.o dwarf2cfi.o dwarf2out.o ebitmap.o emit-rtl.o et-forest.o except.o explow.o expmed.o expr.o final.o fixed-value.o fold-const.o function.o fwprop.o gcse.o ggc-common.o gimple.o gimple-iterator.o gimple-fold.o gimple-low.o gimple-pretty-print.o gimple-streamer-in.o gimple-streamer-out.o gimplify.o godump.o graph.o graphds.o graphite.o graphite-blocking.o graphite-clast-to-gimple.o graphite-cloog-util.o graphite-dependences.o graphite-flattening.o graphite-interchange.o graphite-poly.o graphite-ppl.o graphite-scop-detection.o graphite-sese-to-poly.o gtype-desc.o haifa-sched.o hw-doloop.o hwint.o ifcvt.o implicit-zee.o incpath.o init-regs.o integrate.o internal-fn.o ipa-cp.o ipa-split.o ipa-inline.o ipa-inline-analysis.o ipa-inline-transform.o ipa-prop.o ipa-pure-const.o ipa-reference.o ipa-ref.o ipa-utils.o ipa.o ira.o ira-build.o ira-costs.o ira-conflicts.o ira-color.o ira-emit.o ira-lives.o jump.o langhooks.o lcm.o lists.o loop-doloop.o loop-init.o loop-invariant.o loop-iv.o loop-unroll.o loop-unswitch.o lower-subreg.o lto-cgraph.o lto-streamer.o lto-streamer-in.o lto-streamer-out.o lto-section-in.o lto-section-out.o lto-symtab.o lto-opts.o lto-compress.o matrix-reorg.o mcf.o mode-switching.o modulo-sched.o omega.o omp-low.o optabs.o options-save.o opts-global.o passes.o plugin.o pointer-set.o postreload-gcse.o postreload.o predict.o print-rtl.o print-tree.o profile.o real.o realmpfr.o recog.o reg-stack.o regcprop.o reginfo.o regmove.o regrename.o regstat.o reload.o reload1.o reorg.o resource.o rtl-error.o rtl.o rtlanal.o rtlhooks.o sbitmap.o sched-deps.o sched-ebb.o sched-rgn.o sched-vis.o sdbout.o sel-sched-ir.o sel-sched-dump.o sel-sched.o sese.o simplify-rtx.o sparseset.o sreal.o stack-ptr-mod.o statistics.o stmt.o stor-layout.o store-motion.o streamer-hooks.o stringpool.o target-globals.o targhooks.o timevar.o toplev.o tracer.o tree-affine.o tree-call-cdce.o tree-cfg.o tree-cfgcleanup.o tree-chrec.o tree-complex.o tree-data-ref.o tree-dfa.o tree-diagnostic.o tree-dump.o tree-eh.o tree-emutls.o tree-if-conv.o tree-inline.o tree-into-ssa.o tree-iterator.o tree-loop-distribution.o tree-nested.o tree-nomudflap.o tree-nrv.o tree-object-size.o tree-optimize.o tree-outof-ssa.o tree-parloops.o tree-phinodes.o tree-predcom.o tree-pretty-print.o tree-profile.o tree-scalar-evolution.o tree-sra.o tree-switch-conversion.o tree-ssa-address.o tree-ssa-alias.o tree-ssa-ccp.o tree-ssa-coalesce.o tree-ssa-copy.o tree-ssa-copyrename.o tree-ssa-dce.o tree-ssa-dom.o tree-ssa-dse.o tree-ssa-forwprop.o tree-ssa-ifcombine.o tree-ssa-live.o tree-ssa-loop-ch.o tree-ssa-loop-im.o tree-ssa-loop-ivcanon.o tree-ssa-loop-ivopts.o tree-ssa-loop-manip.o tree-ssa-loop-niter.o tree-ssa-loop-prefetch.o tree-ssa-loop-unswitch.o tree-ssa-loop.o tree-ssa-math-opts.o tree-ssa-operands.o tree-ssa-phiopt.o tree-ssa-phiprop.o tree-ssa-pre.o tree-ssa-propagate.o tree-ssa-reassoc.o tree-ssa-sccvn.o tree-ssa-sink.o tree-ssa-structalias.o tree-ssa-ter.o tree-ssa-threadedge.o tree-ssa-threadupdate.o tree-ssa-uncprop.o tree-ssa-uninit.o tree-ssa.o tree-ssanames.o tree-stdarg.o tree-streamer.o tree-streamer-in.o tree-streamer-out.o tree-tailcall.o tree-vect-generic.o tree-vect-patterns.o tree-vect-data-refs.o tree-vect-stmts.o tree-vect-loop.o tree-vect-loop-manip.o tree-vect-slp.o tree-vectorizer.o tree-vrp.o tree.o value-prof.o var-tracking.o varasm.o varpool.o vmsdbgout.o web.o xcoffout.o i386.o host-linux.o
++ar rc libbackend.a insn-attrtab.o insn-automata.o insn-emit.o insn-extract.o insn-modes.o insn-opinit.o insn-output.o insn-peep.o insn-preds.o insn-recog.o insn-enums.o ggc-page.o alias.o alloc-pool.o auto-inc-dec.o bb-reorder.o bitmap.o bt-load.o builtins.o caller-save.o calls.o cfg.o cfganal.o cfgbuild.o cfgcleanup.o cfgexpand.o cfghooks.o cfglayout.o cfgloop.o cfgloopanal.o cfgloopmanip.o cfgrtl.o cgraph.o cgraphbuild.o cgraphunit.o combine.o combine-stack-adj.o compare-elim.o convert.o coverage.o cppbuiltin.o cppdefault.o cprop.o cse.o cselib.o data-streamer.o data-streamer-in.o data-streamer-out.o dbxout.o dbgcnt.o dce.o ddg.o debug.o df-core.o df-problems.o df-scan.o dfp.o dojump.o dominance.o domwalk.o double-int.o dse.o dwarf2asm.o dwarf2cfi.o dwarf2out.o ebitmap.o emit-rtl.o et-forest.o except.o explow.o expmed.o expr.o final.o fixed-value.o fold-const.o function.o fwprop.o gcse.o ggc-common.o gimple.o gimple-iterator.o gimple-fold.o gimple-low.o gimple-pretty-print.o gimple-streamer-in.o gimple-streamer-out.o gimplify.o godump.o graph.o graphds.o graphite.o graphite-blocking.o graphite-clast-to-gimple.o graphite-cloog-util.o graphite-dependences.o graphite-flattening.o graphite-interchange.o graphite-poly.o graphite-ppl.o graphite-scop-detection.o graphite-sese-to-poly.o gtype-desc.o haifa-sched.o hw-doloop.o hwint.o ifcvt.o implicit-zee.o incpath.o init-regs.o integrate.o internal-fn.o ipa-cp.o ipa-split.o ipa-inline.o ipa-inline-analysis.o ipa-inline-transform.o ipa-prop.o ipa-pure-const.o ipa-reference.o ipa-ref.o ipa-utils.o ipa.o ira.o ira-build.o ira-costs.o ira-conflicts.o ira-color.o ira-emit.o ira-lives.o jump.o langhooks.o lcm.o lists.o loop-doloop.o loop-init.o loop-invariant.o loop-iv.o loop-unroll.o loop-unswitch.o lower-subreg.o lto-cgraph.o lto-streamer.o lto-streamer-in.o lto-streamer-out.o lto-section-in.o lto-section-out.o lto-symtab.o lto-opts.o lto-compress.o matrix-reorg.o mcf.o mode-switching.o modulo-sched.o omega.o omp-low.o optabs.o options-save.o opts-global.o passes.o plugin.o pointer-set.o postreload-gcse.o postreload.o predict.o print-rtl.o print-tree.o profile.o real.o realmpfr.o recog.o reg-stack.o regcprop.o reginfo.o regmove.o regrename.o regstat.o reload.o reload1.o reorg.o resource.o rtl-error.o rtl.o rtlanal.o rtlhooks.o sbitmap.o sched-deps.o sched-ebb.o sched-rgn.o sched-vis.o sdbout.o sel-sched-ir.o sel-sched-dump.o sel-sched.o sese.o simplify-rtx.o sparseset.o sreal.o stack-ptr-mod.o statistics.o stmt.o stor-layout.o store-motion.o streamer-hooks.o stringpool.o target-globals.o targhooks.o timevar.o toplev.o tracer.o tree-affine.o tree-call-cdce.o tree-cfg.o tree-cfgcleanup.o tree-chrec.o tree-complex.o tree-data-ref.o tree-dfa.o tree-diagnostic.o tree-dump.o tree-eh.o tree-emutls.o tree-if-conv.o tree-inline.o tree-into-ssa.o tree-iterator.o tree-loop-distribution.o tree-nested.o tree-nomudflap.o tree-nrv.o tree-object-size.o tree-optimize.o tree-outof-ssa.o tree-parloops.o tree-phinodes.o tree-predcom.o tree-pretty-print.o tree-profile.o tree-scalar-evolution.o tree-sra.o tree-switch-conversion.o tree-ssa-address.o tree-ssa-alias.o tree-ssa-ccp.o tree-ssa-coalesce.o tree-ssa-copy.o tree-ssa-copyrename.o tree-ssa-dce.o tree-ssa-dom.o tree-ssa-dse.o tree-ssa-forwprop.o tree-ssa-ifcombine.o tree-ssa-live.o tree-ssa-loop-ch.o tree-ssa-loop-im.o tree-ssa-loop-ivcanon.o tree-ssa-loop-ivopts.o tree-ssa-loop-manip.o tree-ssa-loop-niter.o tree-ssa-loop-prefetch.o tree-ssa-loop-unswitch.o tree-ssa-loop.o tree-ssa-math-opts.o tree-ssa-operands.o tree-ssa-phiopt.o tree-ssa-phiprop.o tree-ssa-pre.o tree-ssa-propagate.o tree-ssa-reassoc.o tree-ssa-sccvn.o tree-ssa-sink.o tree-ssa-structalias.o tree-ssa-ter.o tree-ssa-threadedge.o tree-ssa-threadupdate.o tree-ssa-uncprop.o tree-ssa-uninit.o tree-ssa.o tree-ssanames.o tree-stdarg.o tree-streamer.o tree-streamer-in.o tree-streamer-out.o tree-tailcall.o tree-vect-generic.o tree-vect-patterns.o tree-vect-data-refs.o tree-vect-stmts.o tree-vect-loop.o tree-vect-loop-manip.o tree-vect-slp.o tree-vectorizer.o tree-vrp.o tree.o value-prof.o var-tracking.o varasm.o varpool.o vmsdbgout.o web.o xcoffout.o i386.o host-default.o
+ ranlib libbackend.a
+ build/genhooks "Common Target Hook" \
+ > tmp-common-target-hooks-def.h
+@@ -7800,7 +7758,7 @@
+ make[4]: Leaving directory `[...]/hurd/master.build/prev-gcc'
+ echo timestamp > stmp-fixinc
+ rm -f mm_malloc.h
+-cat ../../master/gcc/config/i386/pmm_malloc.h > mm_malloc.h
++cat ../../master/gcc/config/i386/gmm_malloc.h > mm_malloc.h
+ if [ -d include ] ; then true; else mkdir include; chmod a+rx include; fi
+ if [ -d include-fixed ] ; then true; else mkdir include-fixed; chmod a+rx include-fixed; fi
+ for file in .. ../../master/gcc/ginclude/float.h ../../master/gcc/ginclude/iso646.h ../../master/gcc/ginclude/stdarg.h ../../master/gcc/ginclude/stdbool.h ../../master/gcc/ginclude/stddef.h ../../master/gcc/ginclude/varargs.h ../../master/gcc/ginclude/stdfix.h ../../master/gcc/ginclude/stdnoreturn.h ../../master/gcc/config/i386/cpuid.h ../../master/gcc/config/i386/mmintrin.h ../../master/gcc/config/i386/mm3dnow.h ../../master/gcc/config/i386/xmmintrin.h ../../master/gcc/config/i386/emmintrin.h ../../master/gcc/config/i386/pmmintrin.h ../../master/gcc/config/i386/tmmintrin.h ../../master/gcc/config/i386/ammintrin.h ../../master/gcc/config/i386/smmintrin.h ../../master/gcc/config/i386/nmmintrin.h ../../master/gcc/config/i386/bmmintrin.h ../../master/gcc/config/i386/fma4intrin.h ../../master/gcc/config/i386/wmmintrin.h ../../master/gcc/config/i386/immintrin.h ../../master/gcc/config/i386/x86intrin.h ../../master/gcc/config/i386/avxintrin.h ../../master/gcc/config/i386/xopintrin.h ../../master/gcc/config/i386/ia32intrin.h ../../master/gcc/config/i386/cross-stdarg.h ../../master/gcc/config/i386/lwpintrin.h ../../master/gcc/config/i386/popcntintrin.h ../../master/gcc/config/i386/lzcntintrin.h ../../master/gcc/config/i386/bmiintrin.h ../../master/gcc/config/i386/bmi2intrin.h ../../master/gcc/config/i386/tbmintrin.h ../../master/gcc/config/i386/avx2intrin.h ../../master/gcc/config/i386/fmaintrin.h mm_malloc.h; do \
+@@ -8019,7 +7977,7 @@
+ (pod2man --center="GNU" --release="gcc-4.7.0" --date=2011-09-05 --section=1 rebuild-gcj-db.pod > doc/rebuild-gcj-db.1.T$$ && \
+ mv -f doc/rebuild-gcj-db.1.T$$ doc/rebuild-gcj-db.1) || \
+ (rm -f doc/rebuild-gcj-db.1.T$$ && exit 1)
+-rm gcj-dbtool.pod jcf-dump.pod jv-convert.pod grmic.pod gcj.pod gc-analyze.pod gfdl.pod cpp.pod gij.pod gcov.pod gfortran.pod fsf-funding.pod gcc.pod
++rm gcj-dbtool.pod jcf-dump.pod jv-convert.pod grmic.pod gcov.pod gcj.pod gc-analyze.pod cpp.pod gfdl.pod gij.pod gfortran.pod fsf-funding.pod gcc.pod
+ make[3]: Leaving directory `[...]/hurd/master.build/gcc'
+ mkdir -p -- [ARCH]/libgcc
+ Checking multilib configuration for libgcc...
+@@ -8069,7 +8027,7 @@
+ config.status: creating Makefile
+ config.status: linking ../../../master/libgcc/enable-execute-stack-empty.c to enable-execute-stack.c
+ config.status: linking ../../../master/libgcc/unwind-generic.h to unwind.h
+-config.status: linking ../../../master/libgcc/config/i386/linux-unwind.h to md-unwind-support.h
++config.status: linking ../../../master/libgcc/config/no-unwind.h to md-unwind-support.h
+ config.status: linking ../../../master/libgcc/config/i386/sfp-machine.h to sfp-machine.h
+ config.status: executing default commands
+ Adding multilib support to Makefile in ../../../master/libgcc
+@@ -8409,10 +8367,13 @@
+ ../../../master/libgcc/soft-fp/divtf3.c:45:3: warning: 'R_e' may be used uninitialized in this function [-Wmaybe-uninitialized]
+ [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -g -O2 -O2 -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I../../master/gcc/../libgcc -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -I. -I. -I../.././gcc -I../../../master/libgcc -I../../../master/libgcc/. -I../../../master/libgcc/../gcc -I../../../master/libgcc/../include -I../../../master/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o eqtf2.o -MT eqtf2.o -MD -MP -MF eqtf2.dep -c ../../../master/libgcc/soft-fp/eqtf2.c -fvisibility=hidden -DHIDE_EXPORTS
+ ../../../master/libgcc/soft-fp/eqtf2.c:35:9: warning: no previous prototype for '__eqtf2' [-Wmissing-prototypes]
++../../../master/libgcc/soft-fp/eqtf2.c:51:1: warning: no previous prototype for '__netf2' [-Wmissing-prototypes]
+ [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -g -O2 -O2 -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I../../master/gcc/../libgcc -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -I. -I. -I../.././gcc -I../../../master/libgcc -I../../../master/libgcc/. -I../../../master/libgcc/../gcc -I../../../master/libgcc/../include -I../../../master/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o getf2.o -MT getf2.o -MD -MP -MF getf2.dep -c ../../../master/libgcc/soft-fp/getf2.c -fvisibility=hidden -DHIDE_EXPORTS
+ ../../../master/libgcc/soft-fp/getf2.c:35:9: warning: no previous prototype for '__getf2' [-Wmissing-prototypes]
++../../../master/libgcc/soft-fp/getf2.c:51:1: warning: no previous prototype for '__gttf2' [-Wmissing-prototypes]
+ [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -g -O2 -O2 -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I../../master/gcc/../libgcc -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -I. -I. -I../.././gcc -I../../../master/libgcc -I../../../master/libgcc/. -I../../../master/libgcc/../gcc -I../../../master/libgcc/../include -I../../../master/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o letf2.o -MT letf2.o -MD -MP -MF letf2.dep -c ../../../master/libgcc/soft-fp/letf2.c -fvisibility=hidden -DHIDE_EXPORTS
+ ../../../master/libgcc/soft-fp/letf2.c:35:9: warning: no previous prototype for '__letf2' [-Wmissing-prototypes]
++../../../master/libgcc/soft-fp/letf2.c:51:1: warning: no previous prototype for '__lttf2' [-Wmissing-prototypes]
+ [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -g -O2 -O2 -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I../../master/gcc/../libgcc -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -I. -I. -I../.././gcc -I../../../master/libgcc -I../../../master/libgcc/. -I../../../master/libgcc/../gcc -I../../../master/libgcc/../include -I../../../master/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o multf3.o -MT multf3.o -MD -MP -MF multf3.dep -c ../../../master/libgcc/soft-fp/multf3.c -fvisibility=hidden -DHIDE_EXPORTS
+ ../../../master/libgcc/soft-fp/multf3.c:35:8: warning: no previous prototype for '__multf3' [-Wmissing-prototypes]
+ ../../../master/libgcc/soft-fp/multf3.c: In function '__multf3':
+@@ -8621,10 +8582,13 @@
+ ../../../master/libgcc/soft-fp/divtf3.c:45:3: warning: 'R_e' may be used uninitialized in this function [-Wmaybe-uninitialized]
+ [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -g -O2 -O2 -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I../../master/gcc/../libgcc -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -I. -I. -I../.././gcc -I../../../master/libgcc -I../../../master/libgcc/. -I../../../master/libgcc/../gcc -I../../../master/libgcc/../include -I../../../master/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o eqtf2_s.o -MT eqtf2_s.o -MD -MP -MF eqtf2_s.dep -DSHARED -c ../../../master/libgcc/soft-fp/eqtf2.c
+ ../../../master/libgcc/soft-fp/eqtf2.c:35:9: warning: no previous prototype for '__eqtf2' [-Wmissing-prototypes]
++../../../master/libgcc/soft-fp/eqtf2.c:51:1: warning: no previous prototype for '__netf2' [-Wmissing-prototypes]
+ [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -g -O2 -O2 -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I../../master/gcc/../libgcc -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -I. -I. -I../.././gcc -I../../../master/libgcc -I../../../master/libgcc/. -I../../../master/libgcc/../gcc -I../../../master/libgcc/../include -I../../../master/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o getf2_s.o -MT getf2_s.o -MD -MP -MF getf2_s.dep -DSHARED -c ../../../master/libgcc/soft-fp/getf2.c
+ ../../../master/libgcc/soft-fp/getf2.c:35:9: warning: no previous prototype for '__getf2' [-Wmissing-prototypes]
++../../../master/libgcc/soft-fp/getf2.c:51:1: warning: no previous prototype for '__gttf2' [-Wmissing-prototypes]
+ [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -g -O2 -O2 -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I../../master/gcc/../libgcc -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -I. -I. -I../.././gcc -I../../../master/libgcc -I../../../master/libgcc/. -I../../../master/libgcc/../gcc -I../../../master/libgcc/../include -I../../../master/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o letf2_s.o -MT letf2_s.o -MD -MP -MF letf2_s.dep -DSHARED -c ../../../master/libgcc/soft-fp/letf2.c
+ ../../../master/libgcc/soft-fp/letf2.c:35:9: warning: no previous prototype for '__letf2' [-Wmissing-prototypes]
++../../../master/libgcc/soft-fp/letf2.c:51:1: warning: no previous prototype for '__lttf2' [-Wmissing-prototypes]
+ [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -g -O2 -O2 -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I../../master/gcc/../libgcc -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -I. -I. -I../.././gcc -I../../../master/libgcc -I../../../master/libgcc/. -I../../../master/libgcc/../gcc -I../../../master/libgcc/../include -I../../../master/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o multf3_s.o -MT multf3_s.o -MD -MP -MF multf3_s.dep -DSHARED -c ../../../master/libgcc/soft-fp/multf3.c
+ ../../../master/libgcc/soft-fp/multf3.c:35:8: warning: no previous prototype for '__multf3' [-Wmissing-prototypes]
+ ../../../master/libgcc/soft-fp/multf3.c: In function '__multf3':
+@@ -8817,7 +8781,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... [...]/hurd/master.build/./gcc/nm
+ checking the name lister ([...]/hurd/master.build/./gcc/nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for [...]/hurd/master.build/./gcc/collect-ld option to reload object files... -r
+@@ -8848,7 +8812,7 @@
+ checking if [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -8867,7 +8831,7 @@
+ checking if [...]/hurd/master.build/./gcc/gfortran -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... yes
+ checking if [...]/hurd/master.build/./gcc/gfortran -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/gfortran -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+-checking dynamic linker characteristics... (cached) GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking for ANSI C header files... (cached) yes
+ checking whether time.h and sys/time.h may both be included... yes
+@@ -8960,7 +8924,7 @@
+ checking if the linker ([...]/hurd/master.build/./gcc/collect-ld) is GNU ld... yes
+ checking for BSD- or MS-compatible name lister (nm)... [...]/hurd/master.build/./gcc/nm
+ checking the name lister ([...]/hurd/master.build/./gcc/nm) interface... BSD nm
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for [...]/hurd/master.build/./gcc/collect-ld option to reload object files... -r
+@@ -8990,7 +8954,7 @@
+ checking if [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking for shl_load... no
+ checking for shl_load in -ldld... no
+@@ -9012,7 +8976,7 @@
+ checking if [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... yes
+ checking if [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+-checking dynamic linker characteristics... (cached) GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking for exception model to use... call frame
+ checking for compiler with PCH support... yes
+@@ -9060,8 +9024,8 @@
+ checking for parallel mode support... yes
+ checking for extra compiler flags for building...
+ checking for extern template support... yes
+-checking for EOWNERDEAD... yes
+-checking for ENOTRECOVERABLE... yes
++checking for EOWNERDEAD... no
++checking for ENOTRECOVERABLE... no
+ checking for ENOLINK... yes
+ checking for EPROTO... yes
+ checking for ENODATA... yes
+@@ -9324,7 +9288,7 @@
+ checking for sys/resource.h... (cached) yes
+ checking for RLIMIT_DATA... yes
+ checking for RLIMIT_RSS... yes
+-checking for RLIMIT_VMEM... no
++checking for RLIMIT_VMEM... yes
+ checking for RLIMIT_AS... yes
+ checking for RLIMIT_FSIZE... yes
+ checking for testsuite resource limits support... yes
+@@ -9730,6 +9694,8 @@
+ ln -s [...]/hurd/master/libstdc++-v3/config/io/basic_file_stdio.cc ./basic_file.cc || true
+ /bin/dash ../libtool --tag CXX --mode=compile [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -frandom-seed=basic_file.lo -g -O2 -D_GNU_SOURCE -c -o basic_file.lo basic_file.cc
+ libtool: compile: [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -frandom-seed=basic_file.lo -g -O2 -D_GNU_SOURCE -c basic_file.cc -fPIC -DPIC -o .libs/basic_file.o
++basic_file.cc: In member function 'std::streamsize std::__basic_file<char>::showmanyc()':
++basic_file.cc:347:33: warning: enumeral and non-enumeral type in conditional expression [enabled by default]
+ libtool: compile: [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -frandom-seed=basic_file.lo -g -O2 -D_GNU_SOURCE -c basic_file.cc -o basic_file.o >/dev/null 2>&1
+ ln -s [...]/hurd/master/libstdc++-v3/config/locale/gnu/c_locale.cc ./c++locale.cc || true
+ /bin/dash ../libtool --tag CXX --mode=compile [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -frandom-seed=c++locale.lo -g -O2 -D_GNU_SOURCE -c -o c++locale.lo c++locale.cc
+@@ -9807,7 +9773,7 @@
+ libtool: link: (cd ".libs" && rm -f "libstdc++.so.6" && ln -s "libstdc++.so.6.0.17" "libstdc++.so.6")
+ libtool: link: (cd ".libs" && rm -f "libstdc++.so" && ln -s "libstdc++.so.6.0.17" "libstdc++.so")
+ libtool: link: (cd .libs/libstdc++.lax/libsupc++convenience.a && ar x "[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/../libsupc++/.libs/libsupc++convenience.a")
+-libtool: link: ar rc .libs/libstdc++.a atomic.o bitmap_allocator.o pool_allocator.o mt_allocator.o codecvt.o compatibility.o compatibility-c++0x.o compatibility-debug_list.o compatibility-debug_list-2.o compatibility-list.o compatibility-list-2.o complex_io.o ctype.o debug.o functexcept.o functional.o globals_io.o hash_c++0x.o hash_tr1.o hashtable_c++0x.o hashtable_tr1.o ios.o ios_failure.o ios_init.o ios_locale.o limits.o list.o locale.o locale_init.o locale_facets.o localename.o math_stubs_float.o math_stubs_long_double.o stdexcept.o strstream.o system_error.o tree.o istream.o placeholders.o regex.o shared_ptr.o streambuf.o mutex.o condition_variable.o chrono.o thread.o future.o valarray.o atomicity.o codecvt_members.o collate_members.o ctype_configure_char.o ctype_members.o messages_members.o monetary_members.o numeric_members.o time_members.o basic_file.o c++locale.o allocator-inst.o concept-inst.o ext-inst.o fstream-inst.o ios-inst.o iostream-inst.o istream-inst.o locale-inst.o misc-inst.o ostream-inst.o sstream-inst.o streambuf-inst.o string-inst.o wlocale-inst.o wstring-inst.o parallel_settings.o compatibility-parallel_list.o compatibility-parallel_list-2.o .libs/libstdc++.lax/libsupc++convenience.a/new_opv.o .libs/libstdc++.lax/libsupc++convenience.a/si_class_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/del_op.o .libs/libstdc++.lax/libsupc++convenience.a/eh_globals.o .libs/libstdc++.lax/libsupc++convenience.a/enum_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/bad_alloc.o .libs/libstdc++.lax/libsupc++convenience.a/eh_call.o .libs/libstdc++.lax/libsupc++convenience.a/vterminate.o .libs/libstdc++.lax/libsupc++convenience.a/function_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/cp-demangle.o .libs/libstdc++.lax/libsupc++convenience.a/guard_error.o .libs/libstdc++.lax/libsupc++convenience.a/atexit_arm.o .libs/libstdc++.lax/libsupc++convenience.a/eh_throw.o .libs/libstdc++.lax/libsupc++convenience.a/eh_terminate.o .libs/libstdc++.lax/libsupc++convenience.a/guard.o .libs/libstdc++.lax/libsupc++convenience.a/eh_catch.o .libs/libstdc++.lax/libsupc++convenience.a/fundamental_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/hash_bytes.o .libs/libstdc++.lax/libsupc++convenience.a/nested_exception.o .libs/libstdc++.lax/libsupc++convenience.a/del_opvnt.o .libs/libstdc++.lax/libsupc++convenience.a/tinfo.o .libs/libstdc++.lax/libsupc++convenience.a/new_handler.o .libs/libstdc++.lax/libsupc++convenience.a/tinfo2.o .libs/libstdc++.lax/libsupc++convenience.a/pointer_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/eh_ptr.o .libs/libstdc++.lax/libsupc++convenience.a/pmem_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/vec.o .libs/libstdc++.lax/libsupc++convenience.a/eh_arm.o .libs/libstdc++.lax/libsupc++convenience.a/class_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/eh_type.o .libs/libstdc++.lax/libsupc++convenience.a/eh_unex_handler.o .libs/libstdc++.lax/libsupc++convenience.a/del_opv.o .libs/libstdc++.lax/libsupc++convenience.a/eh_personality.o .libs/libstdc++.lax/libsupc++convenience.a/pbase_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/eh_aux_runtime.o .libs/libstdc++.lax/libsupc++convenience.a/eh_term_handler.o .libs/libstdc++.lax/libsupc++convenience.a/array_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/new_opnt.o .libs/libstdc++.lax/libsupc++convenience.a/del_opnt.o .libs/libstdc++.lax/libsupc++convenience.a/vmi_class_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/new_op.o .libs/libstdc++.lax/libsupc++convenience.a/bad_cast.o .libs/libstdc++.lax/libsupc++convenience.a/eh_exception.o .libs/libstdc++.lax/libsupc++convenience.a/bad_typeid.o .libs/libstdc++.lax/libsupc++convenience.a/dyncast.o .libs/libstdc++.lax/libsupc++convenience.a/eh_alloc.o .libs/libstdc++.lax/libsupc++convenience.a/new_opvnt.o .libs/libstdc++.lax/libsupc++convenience.a/pure.o
++libtool: link: ar rc .libs/libstdc++.a atomic.o bitmap_allocator.o pool_allocator.o mt_allocator.o codecvt.o compatibility.o compatibility-c++0x.o compatibility-debug_list.o compatibility-debug_list-2.o compatibility-list.o compatibility-list-2.o complex_io.o ctype.o debug.o functexcept.o functional.o globals_io.o hash_c++0x.o hash_tr1.o hashtable_c++0x.o hashtable_tr1.o ios.o ios_failure.o ios_init.o ios_locale.o limits.o list.o locale.o locale_init.o locale_facets.o localename.o math_stubs_float.o math_stubs_long_double.o stdexcept.o strstream.o system_error.o tree.o istream.o placeholders.o regex.o shared_ptr.o streambuf.o mutex.o condition_variable.o chrono.o thread.o future.o valarray.o atomicity.o codecvt_members.o collate_members.o ctype_configure_char.o ctype_members.o messages_members.o monetary_members.o numeric_members.o time_members.o basic_file.o c++locale.o allocator-inst.o concept-inst.o ext-inst.o fstream-inst.o ios-inst.o iostream-inst.o istream-inst.o locale-inst.o misc-inst.o ostream-inst.o sstream-inst.o streambuf-inst.o string-inst.o wlocale-inst.o wstring-inst.o parallel_settings.o compatibility-parallel_list.o compatibility-parallel_list-2.o .libs/libstdc++.lax/libsupc++convenience.a/array_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/atexit_arm.o .libs/libstdc++.lax/libsupc++convenience.a/bad_alloc.o .libs/libstdc++.lax/libsupc++convenience.a/bad_cast.o .libs/libstdc++.lax/libsupc++convenience.a/bad_typeid.o .libs/libstdc++.lax/libsupc++convenience.a/class_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/del_op.o .libs/libstdc++.lax/libsupc++convenience.a/del_opnt.o .libs/libstdc++.lax/libsupc++convenience.a/del_opv.o .libs/libstdc++.lax/libsupc++convenience.a/del_opvnt.o .libs/libstdc++.lax/libsupc++convenience.a/dyncast.o .libs/libstdc++.lax/libsupc++convenience.a/eh_alloc.o .libs/libstdc++.lax/libsupc++convenience.a/eh_arm.o .libs/libstdc++.lax/libsupc++convenience.a/eh_aux_runtime.o .libs/libstdc++.lax/libsupc++convenience.a/eh_call.o .libs/libstdc++.lax/libsupc++convenience.a/eh_catch.o .libs/libstdc++.lax/libsupc++convenience.a/eh_exception.o .libs/libstdc++.lax/libsupc++convenience.a/eh_globals.o .libs/libstdc++.lax/libsupc++convenience.a/eh_personality.o .libs/libstdc++.lax/libsupc++convenience.a/eh_ptr.o .libs/libstdc++.lax/libsupc++convenience.a/eh_term_handler.o .libs/libstdc++.lax/libsupc++convenience.a/eh_terminate.o .libs/libstdc++.lax/libsupc++convenience.a/eh_throw.o .libs/libstdc++.lax/libsupc++convenience.a/eh_type.o .libs/libstdc++.lax/libsupc++convenience.a/eh_unex_handler.o .libs/libstdc++.lax/libsupc++convenience.a/enum_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/function_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/fundamental_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/guard.o .libs/libstdc++.lax/libsupc++convenience.a/guard_error.o .libs/libstdc++.lax/libsupc++convenience.a/hash_bytes.o .libs/libstdc++.lax/libsupc++convenience.a/nested_exception.o .libs/libstdc++.lax/libsupc++convenience.a/new_handler.o .libs/libstdc++.lax/libsupc++convenience.a/new_op.o .libs/libstdc++.lax/libsupc++convenience.a/new_opnt.o .libs/libstdc++.lax/libsupc++convenience.a/new_opv.o .libs/libstdc++.lax/libsupc++convenience.a/new_opvnt.o .libs/libstdc++.lax/libsupc++convenience.a/pbase_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/pmem_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/pointer_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/pure.o .libs/libstdc++.lax/libsupc++convenience.a/si_class_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/tinfo.o .libs/libstdc++.lax/libsupc++convenience.a/tinfo2.o .libs/libstdc++.lax/libsupc++convenience.a/vec.o .libs/libstdc++.lax/libsupc++convenience.a/vmi_class_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/vterminate.o .libs/libstdc++.lax/libsupc++convenience.a/cp-demangle.o
+ libtool: link: ranlib .libs/libstdc++.a
+ libtool: link: rm -fr .libs/libstdc++.lax
+ libtool: link: ( cd ".libs" && rm -f "libstdc++.la" && ln -s "../libstdc++.la" "libstdc++.la" )
+@@ -9987,7 +9953,7 @@
+ libtool: compile: [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -DHAVE_CONFIG_H -I. -I../../../master/libgomp -I../../../master/libgomp/config/posix -I../../../master/libgomp -Wall -pthread -Werror -g -O2 -MT affinity.lo -MD -MP -MF .deps/affinity.Tpo -c ../../../master/libgomp/config/[SYSDEP]/affinity.c -o affinity.o >/dev/null 2>&1
+ mv -f .deps/affinity.Tpo .deps/affinity.Plo
+ /bin/dash ./libtool --tag CC --mode=link [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -Wall -Werror -Wc,-pthread -g -O2 -Wl,-O1 -o libgomp.la -version-info 1:0:0 -Wl,--version-script,../../../master/libgomp/libgomp.map -rpath [...]/hurd/master.build.install/lib/ alloc.lo barrier.lo critical.lo env.lo error.lo iter.lo iter_ull.lo loop.lo loop_ull.lo ordered.lo parallel.lo sections.lo single.lo task.lo team.lo work.lo lock.lo mutex.lo proc.lo sem.lo bar.lo ptrlock.lo time.lo fortran.lo affinity.lo -lrt
+-libtool: link: [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -shared .libs/alloc.o .libs/barrier.o .libs/critical.o .libs/env.o .libs/error.o .libs/iter.o .libs/iter_ull.o .libs/loop.o .libs/loop_ull.o .libs/ordered.o .libs/parallel.o .libs/sections.o .libs/single.o .libs/task.o .libs/team.o .libs/work.o .libs/lock.o .libs/mutex.o .libs/proc.o .libs/sem.o .libs/bar.o .libs/ptrlock.o .libs/time.o .libs/fortran.o .libs/affinity.o -lrt -march=i486 -mtune=i686 -pthread -Wl,-O1 -Wl,--version-script -Wl,../../../master/libgomp/libgomp.map -Wl,-soname -Wl,libgomp.so.1 -o .libs/libgomp.so.1.0.0
++libtool: link: [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -shared .libs/alloc.o .libs/barrier.o .libs/critical.o .libs/env.o .libs/error.o .libs/iter.o .libs/iter_ull.o .libs/loop.o .libs/loop_ull.o .libs/ordered.o .libs/parallel.o .libs/sections.o .libs/single.o .libs/task.o .libs/team.o .libs/work.o .libs/lock.o .libs/mutex.o .libs/proc.o .libs/sem.o .libs/bar.o .libs/ptrlock.o .libs/time.o .libs/fortran.o .libs/affinity.o -lrt -pthread -Wl,-O1 -Wl,--version-script -Wl,../../../master/libgomp/libgomp.map -Wl,-soname -Wl,libgomp.so.1 -o .libs/libgomp.so.1.0.0
+ libtool: link: (cd ".libs" && rm -f "libgomp.so.1" && ln -s "libgomp.so.1.0.0" "libgomp.so.1")
+ libtool: link: (cd ".libs" && rm -f "libgomp.so" && ln -s "libgomp.so.1.0.0" "libgomp.so")
+ libtool: link: ar rc .libs/libgomp.a alloc.o barrier.o critical.o env.o error.o iter.o iter_ull.o loop.o loop_ull.o ordered.o parallel.o sections.o single.o task.o team.o work.o lock.o mutex.o proc.o sem.o bar.o ptrlock.o time.o fortran.o affinity.o
+@@ -10086,7 +10052,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... nm
+ checking the name lister (nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for ld option to reload object files... -r
+@@ -10118,7 +10084,7 @@
+ checking if [...]/hurd/master.build/./prev-gcc/xgcc -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./prev-gcc/xgcc -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker (ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -10197,12 +10163,12 @@
+ checking for sys/sysinfo.h... yes
+ checking for machine/hal_sysinfo.h... no
+ checking for sys/table.h... no
+-checking for sys/sysctl.h... yes
++checking for sys/sysctl.h... no
+ checking for sys/systemcfg.h... no
+ checking for stdint.h... (cached) yes
+ checking for stdio_ext.h... yes
+ checking for process.h... no
+-checking for sys/prctl.h... yes
++checking for sys/prctl.h... no
+ checking for sys/wait.h that is POSIX.1 compatible... yes
+ checking whether time.h and sys/time.h may both be included... yes
+ checking whether errno must be declared... no
+@@ -10272,13 +10238,13 @@
+ checking for working fork... yes
+ checking for working vfork... (cached) yes
+ checking for _doprnt... no
+-checking for sys_errlist... yes
+-checking for sys_nerr... yes
++checking for sys_errlist... no
++checking for sys_nerr... no
+ checking for sys_siglist... yes
+ checking for external symbol _system_configuration... no
+ checking for __fsetlocking... yes
+ checking for canonicalize_file_name... yes
+-checking for dup3... yes
++checking for dup3... no
+ checking for getrlimit... yes
+ checking for getrusage... yes
+ checking for getsysinfo... no
+@@ -10295,7 +10261,7 @@
+ checking for strerror... yes
+ checking for strsignal... yes
+ checking for sysconf... yes
+-checking for sysctl... yes
++checking for sysctl... no
+ checking for sysmp... no
+ checking for table... no
+ checking for times... yes
+@@ -10967,18 +10933,17 @@
+ Using the following target machine macro files:
+ ../../master/gcc/config/vxworks-dummy.h
+ ../../master/gcc/config/i386/i386.h
+- ../../master/gcc/config/linux-android.h
+ ../../master/gcc/config/i386/unix.h
+ ../../master/gcc/config/i386/att.h
+ ../../master/gcc/config/dbxelf.h
+ ../../master/gcc/config/elfos.h
+ ../../master/gcc/config/gnu-user.h
+ ../../master/gcc/config/glibc-stdint.h
+- ../../master/gcc/config/linux.h
+ ../../master/gcc/config/i386/gnu-user.h
+- ../../master/gcc/config/i386/linux.h
++ ../../master/gcc/config/gnu.h
++ ../../master/gcc/config/i386/gnu.h
+ ../../master/gcc/config/initfini-array.h
+-Using host-linux.o for host machine hooks.
++Using host-default.o for host machine hooks.
+ checking for __cxa_atexit... yes
+ checking whether NLS is requested... yes
+ checking for catalogs to be installed... be da de el es fi fr id ja nl ru sr sv tr vi zh_CN zh_TW
+@@ -10990,7 +10955,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... nm
+ checking the name lister (nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for ld option to reload object files... -r
+@@ -11011,7 +10976,7 @@
+ checking if [...]/hurd/master.build/./prev-gcc/xgcc -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./prev-gcc/xgcc -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker (ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -11027,7 +10992,7 @@
+ checking if [...]/hurd/master.build/./prev-gcc/g++ -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -nostdinc++ -B[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/libsupc++/.libs -I[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -L[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/src/.libs -L[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/libsupc++/.libs supports -c -o file.o... yes
+ checking if [...]/hurd/master.build/./prev-gcc/g++ -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -nostdinc++ -B[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/libsupc++/.libs -I[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -L[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/src/.libs -L[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/libsupc++/.libs supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./prev-gcc/g++ -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -nostdinc++ -B[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/libsupc++/.libs -I[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -L[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/src/.libs -L[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/libsupc++/.libs linker (ld) supports shared libraries... yes
+-checking dynamic linker characteristics... (cached) GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking for as... /usr/bin/as
+ checking what assembler to use... /usr/bin/as
+@@ -11040,7 +11005,7 @@
+ checking what objdump to use... /usr/bin/objdump
+ checking for readelf... /usr/bin/readelf
+ checking what readelf to use... /usr/bin/readelf
+-checking assembler flags... --32
++checking assembler flags...
+ checking assembler for .balign and .p2align... yes
+ checking assembler for .p2align with maximum skip... yes
+ checking assembler for .literal16... no
+@@ -11160,7 +11125,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... nm
+ checking the name lister (nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for ld option to reload object files... -r
+@@ -11192,7 +11157,7 @@
+ checking if [...]/hurd/master.build/./prev-gcc/xgcc -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./prev-gcc/xgcc -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker (ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -11588,9 +11553,9 @@
+ HEADERS="auto-host.h ansidecl.h" DEFINES="" \
+ /bin/dash ../../master/gcc/mkconfig.sh config.h
+ TARGET_CPU_DEFAULT="" \
+- HEADERS="options.h insn-constants.h config/vxworks-dummy.h config/i386/i386.h config/linux-android.h config/i386/unix.h config/i386/att.h config/dbxelf.h config/elfos.h config/gnu-user.h config/glibc-stdint.h config/linux.h config/i386/gnu-user.h config/i386/linux.h config/initfini-array.h defaults.h" DEFINES="LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 DEFAULT_LIBC=LIBC_GLIBC ANDROID_DEFAULT=0" \
++ HEADERS="options.h insn-constants.h config/vxworks-dummy.h config/i386/i386.h config/i386/unix.h config/i386/att.h config/dbxelf.h config/elfos.h config/gnu-user.h config/glibc-stdint.h config/i386/gnu-user.h config/gnu.h config/i386/gnu.h config/initfini-array.h defaults.h" DEFINES="LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 DEFAULT_LIBC=LIBC_GLIBC ANDROID_DEFAULT=0" \
+ /bin/dash ../../master/gcc/mkconfig.sh tm.h
+-gawk -f ../../master/gcc/opt-gather.awk ../../master/gcc/ada/gcc-interface/lang.opt ../../master/gcc/fortran/lang.opt ../../master/gcc/go/lang.opt ../../master/gcc/java/lang.opt ../../master/gcc/lto/lang.opt ../../master/gcc/c-family/c.opt ../../master/gcc/common.opt ../../master/gcc/config/fused-madd.opt ../../master/gcc/config/i386/i386.opt ../../master/gcc/config/gnu-user.opt ../../master/gcc/config/linux.opt ../../master/gcc/config/linux-android.opt > tmp-optionlist
++gawk -f ../../master/gcc/opt-gather.awk ../../master/gcc/ada/gcc-interface/lang.opt ../../master/gcc/fortran/lang.opt ../../master/gcc/go/lang.opt ../../master/gcc/java/lang.opt ../../master/gcc/lto/lang.opt ../../master/gcc/c-family/c.opt ../../master/gcc/common.opt ../../master/gcc/config/fused-madd.opt ../../master/gcc/config/i386/i386.opt ../../master/gcc/config/gnu-user.opt > tmp-optionlist
+ /bin/dash ../../master/gcc/../move-if-change tmp-optionlist optionlist
+ echo timestamp > s-options
+ gawk -f ../../master/gcc/opt-functions.awk -f ../../master/gcc/opt-read.awk \
+@@ -11621,7 +11586,7 @@
+ /bin/dash ../../master/gcc/../move-if-change tmp-constants.h insn-constants.h
+ echo timestamp > s-constants
+ TARGET_CPU_DEFAULT="" \
+- HEADERS="../libgcc/config/i386/value-unwind.h" DEFINES="" \
++ HEADERS="" DEFINES="" \
+ /bin/dash ../../master/gcc/mkconfig.sh libgcc_tm.h
+ [...]/hurd/master.build/./prev-gcc/xgcc -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -c -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror -Wold-style-definition -Wc++-compat -fno-common -DHAVE_CONFIG_H -DGENERATOR_FILE -I. -Ibuild -I../../master/gcc -I../../master/gcc/build -I../../master/gcc/../include -I../../master/gcc/../libcpp/include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber \
+ -o build/genmodes.o ../../master/gcc/genmodes.c
+@@ -11748,11 +11713,11 @@
+ "" \
+ "" \
+ "" \
+- "i386-linux-gnu" \
++ "i386-gnu" \
+ "yes" \
+ > tmp-mlib.h; \
+ else \
+- /bin/dash ../../master/gcc/genmultilib '' '' '' '' '' '' '' "i386-linux-gnu" no \
++ /bin/dash ../../master/gcc/genmultilib '' '' '' '' '' '' '' "i386-gnu" no \
+ > tmp-mlib.h; \
+ fi
+ /bin/dash ../../master/gcc/../move-if-change tmp-mlib.h multilib.h
+@@ -12239,10 +12204,9 @@
+ echo timestamp > s-i386-bt
+ [...]/hurd/master.build/./prev-gcc/g++ -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -nostdinc++ -B[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/libsupc++/.libs -I[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -L[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/src/.libs -L[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/libsupc++/.libs -c -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror -fno-common -DHAVE_CONFIG_H -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libcpp/include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber \
+ ../../master/gcc/config/i386/i386.c -o i386.o
+-[...]/hurd/master.build/./prev-gcc/g++ -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -nostdinc++ -B[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/libsupc++/.libs -I[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -L[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/src/.libs -L[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/libsupc++/.libs -c -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror -fno-common -DHAVE_CONFIG_H -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libcpp/include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libcpp/include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber \
+- ../../master/gcc/config/host-linux.c
++[...]/hurd/master.build/./prev-gcc/g++ -B[...]/hurd/master.build/./prev-gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -nostdinc++ -B[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/libsupc++/.libs -I[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -L[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/src/.libs -L[...]/hurd/master.build/prev-[ARCH]/libstdc++-v3/libsupc++/.libs -c -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror -fno-common -DHAVE_CONFIG_H -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libcpp/include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber ../../master/gcc/host-default.c -o host-default.o
+ rm -rf libbackend.a
+-ar rc libbackend.a insn-attrtab.o insn-automata.o insn-emit.o insn-extract.o insn-modes.o insn-opinit.o insn-output.o insn-peep.o insn-preds.o insn-recog.o insn-enums.o ggc-page.o alias.o alloc-pool.o auto-inc-dec.o bb-reorder.o bitmap.o bt-load.o builtins.o caller-save.o calls.o cfg.o cfganal.o cfgbuild.o cfgcleanup.o cfgexpand.o cfghooks.o cfglayout.o cfgloop.o cfgloopanal.o cfgloopmanip.o cfgrtl.o cgraph.o cgraphbuild.o cgraphunit.o combine.o combine-stack-adj.o compare-elim.o convert.o coverage.o cppbuiltin.o cppdefault.o cprop.o cse.o cselib.o data-streamer.o data-streamer-in.o data-streamer-out.o dbxout.o dbgcnt.o dce.o ddg.o debug.o df-core.o df-problems.o df-scan.o dfp.o dojump.o dominance.o domwalk.o double-int.o dse.o dwarf2asm.o dwarf2cfi.o dwarf2out.o ebitmap.o emit-rtl.o et-forest.o except.o explow.o expmed.o expr.o final.o fixed-value.o fold-const.o function.o fwprop.o gcse.o ggc-common.o gimple.o gimple-iterator.o gimple-fold.o gimple-low.o gimple-pretty-print.o gimple-streamer-in.o gimple-streamer-out.o gimplify.o godump.o graph.o graphds.o graphite.o graphite-blocking.o graphite-clast-to-gimple.o graphite-cloog-util.o graphite-dependences.o graphite-flattening.o graphite-interchange.o graphite-poly.o graphite-ppl.o graphite-scop-detection.o graphite-sese-to-poly.o gtype-desc.o haifa-sched.o hw-doloop.o hwint.o ifcvt.o implicit-zee.o incpath.o init-regs.o integrate.o internal-fn.o ipa-cp.o ipa-split.o ipa-inline.o ipa-inline-analysis.o ipa-inline-transform.o ipa-prop.o ipa-pure-const.o ipa-reference.o ipa-ref.o ipa-utils.o ipa.o ira.o ira-build.o ira-costs.o ira-conflicts.o ira-color.o ira-emit.o ira-lives.o jump.o langhooks.o lcm.o lists.o loop-doloop.o loop-init.o loop-invariant.o loop-iv.o loop-unroll.o loop-unswitch.o lower-subreg.o lto-cgraph.o lto-streamer.o lto-streamer-in.o lto-streamer-out.o lto-section-in.o lto-section-out.o lto-symtab.o lto-opts.o lto-compress.o matrix-reorg.o mcf.o mode-switching.o modulo-sched.o omega.o omp-low.o optabs.o options-save.o opts-global.o passes.o plugin.o pointer-set.o postreload-gcse.o postreload.o predict.o print-rtl.o print-tree.o profile.o real.o realmpfr.o recog.o reg-stack.o regcprop.o reginfo.o regmove.o regrename.o regstat.o reload.o reload1.o reorg.o resource.o rtl-error.o rtl.o rtlanal.o rtlhooks.o sbitmap.o sched-deps.o sched-ebb.o sched-rgn.o sched-vis.o sdbout.o sel-sched-ir.o sel-sched-dump.o sel-sched.o sese.o simplify-rtx.o sparseset.o sreal.o stack-ptr-mod.o statistics.o stmt.o stor-layout.o store-motion.o streamer-hooks.o stringpool.o target-globals.o targhooks.o timevar.o toplev.o tracer.o tree-affine.o tree-call-cdce.o tree-cfg.o tree-cfgcleanup.o tree-chrec.o tree-complex.o tree-data-ref.o tree-dfa.o tree-diagnostic.o tree-dump.o tree-eh.o tree-emutls.o tree-if-conv.o tree-inline.o tree-into-ssa.o tree-iterator.o tree-loop-distribution.o tree-nested.o tree-nomudflap.o tree-nrv.o tree-object-size.o tree-optimize.o tree-outof-ssa.o tree-parloops.o tree-phinodes.o tree-predcom.o tree-pretty-print.o tree-profile.o tree-scalar-evolution.o tree-sra.o tree-switch-conversion.o tree-ssa-address.o tree-ssa-alias.o tree-ssa-ccp.o tree-ssa-coalesce.o tree-ssa-copy.o tree-ssa-copyrename.o tree-ssa-dce.o tree-ssa-dom.o tree-ssa-dse.o tree-ssa-forwprop.o tree-ssa-ifcombine.o tree-ssa-live.o tree-ssa-loop-ch.o tree-ssa-loop-im.o tree-ssa-loop-ivcanon.o tree-ssa-loop-ivopts.o tree-ssa-loop-manip.o tree-ssa-loop-niter.o tree-ssa-loop-prefetch.o tree-ssa-loop-unswitch.o tree-ssa-loop.o tree-ssa-math-opts.o tree-ssa-operands.o tree-ssa-phiopt.o tree-ssa-phiprop.o tree-ssa-pre.o tree-ssa-propagate.o tree-ssa-reassoc.o tree-ssa-sccvn.o tree-ssa-sink.o tree-ssa-structalias.o tree-ssa-ter.o tree-ssa-threadedge.o tree-ssa-threadupdate.o tree-ssa-uncprop.o tree-ssa-uninit.o tree-ssa.o tree-ssanames.o tree-stdarg.o tree-streamer.o tree-streamer-in.o tree-streamer-out.o tree-tailcall.o tree-vect-generic.o tree-vect-patterns.o tree-vect-data-refs.o tree-vect-stmts.o tree-vect-loop.o tree-vect-loop-manip.o tree-vect-slp.o tree-vectorizer.o tree-vrp.o tree.o value-prof.o var-tracking.o varasm.o varpool.o vmsdbgout.o web.o xcoffout.o i386.o host-linux.o
++ar rc libbackend.a insn-attrtab.o insn-automata.o insn-emit.o insn-extract.o insn-modes.o insn-opinit.o insn-output.o insn-peep.o insn-preds.o insn-recog.o insn-enums.o ggc-page.o alias.o alloc-pool.o auto-inc-dec.o bb-reorder.o bitmap.o bt-load.o builtins.o caller-save.o calls.o cfg.o cfganal.o cfgbuild.o cfgcleanup.o cfgexpand.o cfghooks.o cfglayout.o cfgloop.o cfgloopanal.o cfgloopmanip.o cfgrtl.o cgraph.o cgraphbuild.o cgraphunit.o combine.o combine-stack-adj.o compare-elim.o convert.o coverage.o cppbuiltin.o cppdefault.o cprop.o cse.o cselib.o data-streamer.o data-streamer-in.o data-streamer-out.o dbxout.o dbgcnt.o dce.o ddg.o debug.o df-core.o df-problems.o df-scan.o dfp.o dojump.o dominance.o domwalk.o double-int.o dse.o dwarf2asm.o dwarf2cfi.o dwarf2out.o ebitmap.o emit-rtl.o et-forest.o except.o explow.o expmed.o expr.o final.o fixed-value.o fold-const.o function.o fwprop.o gcse.o ggc-common.o gimple.o gimple-iterator.o gimple-fold.o gimple-low.o gimple-pretty-print.o gimple-streamer-in.o gimple-streamer-out.o gimplify.o godump.o graph.o graphds.o graphite.o graphite-blocking.o graphite-clast-to-gimple.o graphite-cloog-util.o graphite-dependences.o graphite-flattening.o graphite-interchange.o graphite-poly.o graphite-ppl.o graphite-scop-detection.o graphite-sese-to-poly.o gtype-desc.o haifa-sched.o hw-doloop.o hwint.o ifcvt.o implicit-zee.o incpath.o init-regs.o integrate.o internal-fn.o ipa-cp.o ipa-split.o ipa-inline.o ipa-inline-analysis.o ipa-inline-transform.o ipa-prop.o ipa-pure-const.o ipa-reference.o ipa-ref.o ipa-utils.o ipa.o ira.o ira-build.o ira-costs.o ira-conflicts.o ira-color.o ira-emit.o ira-lives.o jump.o langhooks.o lcm.o lists.o loop-doloop.o loop-init.o loop-invariant.o loop-iv.o loop-unroll.o loop-unswitch.o lower-subreg.o lto-cgraph.o lto-streamer.o lto-streamer-in.o lto-streamer-out.o lto-section-in.o lto-section-out.o lto-symtab.o lto-opts.o lto-compress.o matrix-reorg.o mcf.o mode-switching.o modulo-sched.o omega.o omp-low.o optabs.o options-save.o opts-global.o passes.o plugin.o pointer-set.o postreload-gcse.o postreload.o predict.o print-rtl.o print-tree.o profile.o real.o realmpfr.o recog.o reg-stack.o regcprop.o reginfo.o regmove.o regrename.o regstat.o reload.o reload1.o reorg.o resource.o rtl-error.o rtl.o rtlanal.o rtlhooks.o sbitmap.o sched-deps.o sched-ebb.o sched-rgn.o sched-vis.o sdbout.o sel-sched-ir.o sel-sched-dump.o sel-sched.o sese.o simplify-rtx.o sparseset.o sreal.o stack-ptr-mod.o statistics.o stmt.o stor-layout.o store-motion.o streamer-hooks.o stringpool.o target-globals.o targhooks.o timevar.o toplev.o tracer.o tree-affine.o tree-call-cdce.o tree-cfg.o tree-cfgcleanup.o tree-chrec.o tree-complex.o tree-data-ref.o tree-dfa.o tree-diagnostic.o tree-dump.o tree-eh.o tree-emutls.o tree-if-conv.o tree-inline.o tree-into-ssa.o tree-iterator.o tree-loop-distribution.o tree-nested.o tree-nomudflap.o tree-nrv.o tree-object-size.o tree-optimize.o tree-outof-ssa.o tree-parloops.o tree-phinodes.o tree-predcom.o tree-pretty-print.o tree-profile.o tree-scalar-evolution.o tree-sra.o tree-switch-conversion.o tree-ssa-address.o tree-ssa-alias.o tree-ssa-ccp.o tree-ssa-coalesce.o tree-ssa-copy.o tree-ssa-copyrename.o tree-ssa-dce.o tree-ssa-dom.o tree-ssa-dse.o tree-ssa-forwprop.o tree-ssa-ifcombine.o tree-ssa-live.o tree-ssa-loop-ch.o tree-ssa-loop-im.o tree-ssa-loop-ivcanon.o tree-ssa-loop-ivopts.o tree-ssa-loop-manip.o tree-ssa-loop-niter.o tree-ssa-loop-prefetch.o tree-ssa-loop-unswitch.o tree-ssa-loop.o tree-ssa-math-opts.o tree-ssa-operands.o tree-ssa-phiopt.o tree-ssa-phiprop.o tree-ssa-pre.o tree-ssa-propagate.o tree-ssa-reassoc.o tree-ssa-sccvn.o tree-ssa-sink.o tree-ssa-structalias.o tree-ssa-ter.o tree-ssa-threadedge.o tree-ssa-threadupdate.o tree-ssa-uncprop.o tree-ssa-uninit.o tree-ssa.o tree-ssanames.o tree-stdarg.o tree-streamer.o tree-streamer-in.o tree-streamer-out.o tree-tailcall.o tree-vect-generic.o tree-vect-patterns.o tree-vect-data-refs.o tree-vect-stmts.o tree-vect-loop.o tree-vect-loop-manip.o tree-vect-slp.o tree-vectorizer.o tree-vrp.o tree.o value-prof.o var-tracking.o varasm.o varpool.o vmsdbgout.o web.o xcoffout.o i386.o host-default.o
+ ranlib libbackend.a
+ build/genhooks "Common Target Hook" \
+ > tmp-common-target-hooks-def.h
+@@ -12544,7 +12508,7 @@
+ make[4]: Leaving directory `[...]/hurd/master.build/prev-gcc'
+ echo timestamp > stmp-fixinc
+ rm -f mm_malloc.h
+-cat ../../master/gcc/config/i386/pmm_malloc.h > mm_malloc.h
++cat ../../master/gcc/config/i386/gmm_malloc.h > mm_malloc.h
+ if [ -d include ] ; then true; else mkdir include; chmod a+rx include; fi
+ if [ -d include-fixed ] ; then true; else mkdir include-fixed; chmod a+rx include-fixed; fi
+ for file in .. ../../master/gcc/ginclude/float.h ../../master/gcc/ginclude/iso646.h ../../master/gcc/ginclude/stdarg.h ../../master/gcc/ginclude/stdbool.h ../../master/gcc/ginclude/stddef.h ../../master/gcc/ginclude/varargs.h ../../master/gcc/ginclude/stdfix.h ../../master/gcc/ginclude/stdnoreturn.h ../../master/gcc/config/i386/cpuid.h ../../master/gcc/config/i386/mmintrin.h ../../master/gcc/config/i386/mm3dnow.h ../../master/gcc/config/i386/xmmintrin.h ../../master/gcc/config/i386/emmintrin.h ../../master/gcc/config/i386/pmmintrin.h ../../master/gcc/config/i386/tmmintrin.h ../../master/gcc/config/i386/ammintrin.h ../../master/gcc/config/i386/smmintrin.h ../../master/gcc/config/i386/nmmintrin.h ../../master/gcc/config/i386/bmmintrin.h ../../master/gcc/config/i386/fma4intrin.h ../../master/gcc/config/i386/wmmintrin.h ../../master/gcc/config/i386/immintrin.h ../../master/gcc/config/i386/x86intrin.h ../../master/gcc/config/i386/avxintrin.h ../../master/gcc/config/i386/xopintrin.h ../../master/gcc/config/i386/ia32intrin.h ../../master/gcc/config/i386/cross-stdarg.h ../../master/gcc/config/i386/lwpintrin.h ../../master/gcc/config/i386/popcntintrin.h ../../master/gcc/config/i386/lzcntintrin.h ../../master/gcc/config/i386/bmiintrin.h ../../master/gcc/config/i386/bmi2intrin.h ../../master/gcc/config/i386/tbmintrin.h ../../master/gcc/config/i386/avx2intrin.h ../../master/gcc/config/i386/fmaintrin.h mm_malloc.h; do \
+@@ -12763,7 +12727,7 @@
+ (pod2man --center="GNU" --release="gcc-4.7.0" --date=2011-09-05 --section=1 rebuild-gcj-db.pod > doc/rebuild-gcj-db.1.T$$ && \
+ mv -f doc/rebuild-gcj-db.1.T$$ doc/rebuild-gcj-db.1) || \
+ (rm -f doc/rebuild-gcj-db.1.T$$ && exit 1)
+-rm gcj-dbtool.pod jcf-dump.pod jv-convert.pod grmic.pod gcj.pod gc-analyze.pod gfdl.pod cpp.pod gij.pod gcov.pod gfortran.pod fsf-funding.pod gcc.pod
++rm gcj-dbtool.pod jcf-dump.pod jv-convert.pod grmic.pod gcov.pod gcj.pod gc-analyze.pod cpp.pod gfdl.pod gij.pod gfortran.pod fsf-funding.pod gcc.pod
+ make[3]: Leaving directory `[...]/hurd/master.build/gcc'
+ mkdir -p -- [ARCH]/libgcc
+ Checking multilib configuration for libgcc...
+@@ -12813,7 +12777,7 @@
+ config.status: creating Makefile
+ config.status: linking ../../../master/libgcc/enable-execute-stack-empty.c to enable-execute-stack.c
+ config.status: linking ../../../master/libgcc/unwind-generic.h to unwind.h
+-config.status: linking ../../../master/libgcc/config/i386/linux-unwind.h to md-unwind-support.h
++config.status: linking ../../../master/libgcc/config/no-unwind.h to md-unwind-support.h
+ config.status: linking ../../../master/libgcc/config/i386/sfp-machine.h to sfp-machine.h
+ config.status: executing default commands
+ Adding multilib support to Makefile in ../../../master/libgcc
+@@ -13153,10 +13117,13 @@
+ ../../../master/libgcc/soft-fp/divtf3.c:45:3: warning: 'R_e' may be used uninitialized in this function [-Wmaybe-uninitialized]
+ [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -g -O2 -O2 -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I../../master/gcc/../libgcc -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -I. -I. -I../.././gcc -I../../../master/libgcc -I../../../master/libgcc/. -I../../../master/libgcc/../gcc -I../../../master/libgcc/../include -I../../../master/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o eqtf2.o -MT eqtf2.o -MD -MP -MF eqtf2.dep -c ../../../master/libgcc/soft-fp/eqtf2.c -fvisibility=hidden -DHIDE_EXPORTS
+ ../../../master/libgcc/soft-fp/eqtf2.c:35:9: warning: no previous prototype for '__eqtf2' [-Wmissing-prototypes]
++../../../master/libgcc/soft-fp/eqtf2.c:51:1: warning: no previous prototype for '__netf2' [-Wmissing-prototypes]
+ [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -g -O2 -O2 -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I../../master/gcc/../libgcc -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -I. -I. -I../.././gcc -I../../../master/libgcc -I../../../master/libgcc/. -I../../../master/libgcc/../gcc -I../../../master/libgcc/../include -I../../../master/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o getf2.o -MT getf2.o -MD -MP -MF getf2.dep -c ../../../master/libgcc/soft-fp/getf2.c -fvisibility=hidden -DHIDE_EXPORTS
+ ../../../master/libgcc/soft-fp/getf2.c:35:9: warning: no previous prototype for '__getf2' [-Wmissing-prototypes]
++../../../master/libgcc/soft-fp/getf2.c:51:1: warning: no previous prototype for '__gttf2' [-Wmissing-prototypes]
+ [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -g -O2 -O2 -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I../../master/gcc/../libgcc -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -I. -I. -I../.././gcc -I../../../master/libgcc -I../../../master/libgcc/. -I../../../master/libgcc/../gcc -I../../../master/libgcc/../include -I../../../master/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o letf2.o -MT letf2.o -MD -MP -MF letf2.dep -c ../../../master/libgcc/soft-fp/letf2.c -fvisibility=hidden -DHIDE_EXPORTS
+ ../../../master/libgcc/soft-fp/letf2.c:35:9: warning: no previous prototype for '__letf2' [-Wmissing-prototypes]
++../../../master/libgcc/soft-fp/letf2.c:51:1: warning: no previous prototype for '__lttf2' [-Wmissing-prototypes]
+ [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -g -O2 -O2 -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I../../master/gcc/../libgcc -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -I. -I. -I../.././gcc -I../../../master/libgcc -I../../../master/libgcc/. -I../../../master/libgcc/../gcc -I../../../master/libgcc/../include -I../../../master/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o multf3.o -MT multf3.o -MD -MP -MF multf3.dep -c ../../../master/libgcc/soft-fp/multf3.c -fvisibility=hidden -DHIDE_EXPORTS
+ ../../../master/libgcc/soft-fp/multf3.c:35:8: warning: no previous prototype for '__multf3' [-Wmissing-prototypes]
+ ../../../master/libgcc/soft-fp/multf3.c: In function '__multf3':
+@@ -13365,10 +13332,13 @@
+ ../../../master/libgcc/soft-fp/divtf3.c:45:3: warning: 'R_e' may be used uninitialized in this function [-Wmaybe-uninitialized]
+ [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -g -O2 -O2 -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I../../master/gcc/../libgcc -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -I. -I. -I../.././gcc -I../../../master/libgcc -I../../../master/libgcc/. -I../../../master/libgcc/../gcc -I../../../master/libgcc/../include -I../../../master/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o eqtf2_s.o -MT eqtf2_s.o -MD -MP -MF eqtf2_s.dep -DSHARED -c ../../../master/libgcc/soft-fp/eqtf2.c
+ ../../../master/libgcc/soft-fp/eqtf2.c:35:9: warning: no previous prototype for '__eqtf2' [-Wmissing-prototypes]
++../../../master/libgcc/soft-fp/eqtf2.c:51:1: warning: no previous prototype for '__netf2' [-Wmissing-prototypes]
+ [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -g -O2 -O2 -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I../../master/gcc/../libgcc -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -I. -I. -I../.././gcc -I../../../master/libgcc -I../../../master/libgcc/. -I../../../master/libgcc/../gcc -I../../../master/libgcc/../include -I../../../master/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o getf2_s.o -MT getf2_s.o -MD -MP -MF getf2_s.dep -DSHARED -c ../../../master/libgcc/soft-fp/getf2.c
+ ../../../master/libgcc/soft-fp/getf2.c:35:9: warning: no previous prototype for '__getf2' [-Wmissing-prototypes]
++../../../master/libgcc/soft-fp/getf2.c:51:1: warning: no previous prototype for '__gttf2' [-Wmissing-prototypes]
+ [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -g -O2 -O2 -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I../../master/gcc/../libgcc -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -I. -I. -I../.././gcc -I../../../master/libgcc -I../../../master/libgcc/. -I../../../master/libgcc/../gcc -I../../../master/libgcc/../include -I../../../master/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o letf2_s.o -MT letf2_s.o -MD -MP -MF letf2_s.dep -DSHARED -c ../../../master/libgcc/soft-fp/letf2.c
+ ../../../master/libgcc/soft-fp/letf2.c:35:9: warning: no previous prototype for '__letf2' [-Wmissing-prototypes]
++../../../master/libgcc/soft-fp/letf2.c:51:1: warning: no previous prototype for '__lttf2' [-Wmissing-prototypes]
+ [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -g -O2 -O2 -I. -I. -I../../master/gcc -I../../master/gcc/. -I../../master/gcc/../include -I../../master/gcc/../libdecnumber -I../../master/gcc/../libdecnumber/bid -I../libdecnumber -I../../master/gcc/../libgcc -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -I. -I. -I../.././gcc -I../../../master/libgcc -I../../../master/libgcc/. -I../../../master/libgcc/../gcc -I../../../master/libgcc/../include -I../../../master/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o multf3_s.o -MT multf3_s.o -MD -MP -MF multf3_s.dep -DSHARED -c ../../../master/libgcc/soft-fp/multf3.c
+ ../../../master/libgcc/soft-fp/multf3.c:35:8: warning: no previous prototype for '__multf3' [-Wmissing-prototypes]
+ ../../../master/libgcc/soft-fp/multf3.c: In function '__multf3':
+@@ -13561,7 +13531,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... [...]/hurd/master.build/./gcc/nm
+ checking the name lister ([...]/hurd/master.build/./gcc/nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for [...]/hurd/master.build/./gcc/collect-ld option to reload object files... -r
+@@ -13592,7 +13562,7 @@
+ checking if [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -13611,7 +13581,7 @@
+ checking if [...]/hurd/master.build/./gcc/gfortran -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... yes
+ checking if [...]/hurd/master.build/./gcc/gfortran -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/gfortran -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+-checking dynamic linker characteristics... (cached) GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking for ANSI C header files... (cached) yes
+ checking whether time.h and sys/time.h may both be included... yes
+@@ -13704,7 +13674,7 @@
+ checking if the linker ([...]/hurd/master.build/./gcc/collect-ld) is GNU ld... yes
+ checking for BSD- or MS-compatible name lister (nm)... [...]/hurd/master.build/./gcc/nm
+ checking the name lister ([...]/hurd/master.build/./gcc/nm) interface... BSD nm
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for [...]/hurd/master.build/./gcc/collect-ld option to reload object files... -r
+@@ -13734,7 +13704,7 @@
+ checking if [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking for shl_load... no
+ checking for shl_load in -ldld... no
+@@ -13756,7 +13726,7 @@
+ checking if [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... yes
+ checking if [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+-checking dynamic linker characteristics... (cached) GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking for exception model to use... call frame
+ checking for compiler with PCH support... yes
+@@ -13804,8 +13774,8 @@
+ checking for parallel mode support... yes
+ checking for extra compiler flags for building...
+ checking for extern template support... yes
+-checking for EOWNERDEAD... yes
+-checking for ENOTRECOVERABLE... yes
++checking for EOWNERDEAD... no
++checking for ENOTRECOVERABLE... no
+ checking for ENOLINK... yes
+ checking for EPROTO... yes
+ checking for ENODATA... yes
+@@ -14068,7 +14038,7 @@
+ checking for sys/resource.h... (cached) yes
+ checking for RLIMIT_DATA... yes
+ checking for RLIMIT_RSS... yes
+-checking for RLIMIT_VMEM... no
++checking for RLIMIT_VMEM... yes
+ checking for RLIMIT_AS... yes
+ checking for RLIMIT_FSIZE... yes
+ checking for testsuite resource limits support... yes
+@@ -14474,6 +14444,8 @@
+ ln -s [...]/hurd/master/libstdc++-v3/config/io/basic_file_stdio.cc ./basic_file.cc || true
+ /bin/dash ../libtool --tag CXX --mode=compile [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -frandom-seed=basic_file.lo -g -O2 -D_GNU_SOURCE -c -o basic_file.lo basic_file.cc
+ libtool: compile: [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -frandom-seed=basic_file.lo -g -O2 -D_GNU_SOURCE -c basic_file.cc -fPIC -DPIC -o .libs/basic_file.o
++basic_file.cc: In member function 'std::streamsize std::__basic_file<char>::showmanyc()':
++basic_file.cc:347:33: warning: enumeral and non-enumeral type in conditional expression [enabled by default]
+ libtool: compile: [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -frandom-seed=basic_file.lo -g -O2 -D_GNU_SOURCE -c basic_file.cc -o basic_file.o >/dev/null 2>&1
+ ln -s [...]/hurd/master/libstdc++-v3/config/locale/gnu/c_locale.cc ./c++locale.cc || true
+ /bin/dash ../libtool --tag CXX --mode=compile [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -frandom-seed=c++locale.lo -g -O2 -D_GNU_SOURCE -c -o c++locale.lo c++locale.cc
+@@ -14551,7 +14523,7 @@
+ libtool: link: (cd ".libs" && rm -f "libstdc++.so.6" && ln -s "libstdc++.so.6.0.17" "libstdc++.so.6")
+ libtool: link: (cd ".libs" && rm -f "libstdc++.so" && ln -s "libstdc++.so.6.0.17" "libstdc++.so")
+ libtool: link: (cd .libs/libstdc++.lax/libsupc++convenience.a && ar x "[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/../libsupc++/.libs/libsupc++convenience.a")
+-libtool: link: ar rc .libs/libstdc++.a atomic.o bitmap_allocator.o pool_allocator.o mt_allocator.o codecvt.o compatibility.o compatibility-c++0x.o compatibility-debug_list.o compatibility-debug_list-2.o compatibility-list.o compatibility-list-2.o complex_io.o ctype.o debug.o functexcept.o functional.o globals_io.o hash_c++0x.o hash_tr1.o hashtable_c++0x.o hashtable_tr1.o ios.o ios_failure.o ios_init.o ios_locale.o limits.o list.o locale.o locale_init.o locale_facets.o localename.o math_stubs_float.o math_stubs_long_double.o stdexcept.o strstream.o system_error.o tree.o istream.o placeholders.o regex.o shared_ptr.o streambuf.o mutex.o condition_variable.o chrono.o thread.o future.o valarray.o atomicity.o codecvt_members.o collate_members.o ctype_configure_char.o ctype_members.o messages_members.o monetary_members.o numeric_members.o time_members.o basic_file.o c++locale.o allocator-inst.o concept-inst.o ext-inst.o fstream-inst.o ios-inst.o iostream-inst.o istream-inst.o locale-inst.o misc-inst.o ostream-inst.o sstream-inst.o streambuf-inst.o string-inst.o wlocale-inst.o wstring-inst.o parallel_settings.o compatibility-parallel_list.o compatibility-parallel_list-2.o .libs/libstdc++.lax/libsupc++convenience.a/new_opv.o .libs/libstdc++.lax/libsupc++convenience.a/si_class_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/del_op.o .libs/libstdc++.lax/libsupc++convenience.a/eh_globals.o .libs/libstdc++.lax/libsupc++convenience.a/enum_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/bad_alloc.o .libs/libstdc++.lax/libsupc++convenience.a/eh_call.o .libs/libstdc++.lax/libsupc++convenience.a/vterminate.o .libs/libstdc++.lax/libsupc++convenience.a/function_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/cp-demangle.o .libs/libstdc++.lax/libsupc++convenience.a/guard_error.o .libs/libstdc++.lax/libsupc++convenience.a/atexit_arm.o .libs/libstdc++.lax/libsupc++convenience.a/eh_throw.o .libs/libstdc++.lax/libsupc++convenience.a/eh_terminate.o .libs/libstdc++.lax/libsupc++convenience.a/guard.o .libs/libstdc++.lax/libsupc++convenience.a/eh_catch.o .libs/libstdc++.lax/libsupc++convenience.a/fundamental_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/hash_bytes.o .libs/libstdc++.lax/libsupc++convenience.a/nested_exception.o .libs/libstdc++.lax/libsupc++convenience.a/del_opvnt.o .libs/libstdc++.lax/libsupc++convenience.a/tinfo.o .libs/libstdc++.lax/libsupc++convenience.a/new_handler.o .libs/libstdc++.lax/libsupc++convenience.a/tinfo2.o .libs/libstdc++.lax/libsupc++convenience.a/pointer_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/eh_ptr.o .libs/libstdc++.lax/libsupc++convenience.a/pmem_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/vec.o .libs/libstdc++.lax/libsupc++convenience.a/eh_arm.o .libs/libstdc++.lax/libsupc++convenience.a/class_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/eh_type.o .libs/libstdc++.lax/libsupc++convenience.a/eh_unex_handler.o .libs/libstdc++.lax/libsupc++convenience.a/del_opv.o .libs/libstdc++.lax/libsupc++convenience.a/eh_personality.o .libs/libstdc++.lax/libsupc++convenience.a/pbase_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/eh_aux_runtime.o .libs/libstdc++.lax/libsupc++convenience.a/eh_term_handler.o .libs/libstdc++.lax/libsupc++convenience.a/array_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/new_opnt.o .libs/libstdc++.lax/libsupc++convenience.a/del_opnt.o .libs/libstdc++.lax/libsupc++convenience.a/vmi_class_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/new_op.o .libs/libstdc++.lax/libsupc++convenience.a/bad_cast.o .libs/libstdc++.lax/libsupc++convenience.a/eh_exception.o .libs/libstdc++.lax/libsupc++convenience.a/bad_typeid.o .libs/libstdc++.lax/libsupc++convenience.a/dyncast.o .libs/libstdc++.lax/libsupc++convenience.a/eh_alloc.o .libs/libstdc++.lax/libsupc++convenience.a/new_opvnt.o .libs/libstdc++.lax/libsupc++convenience.a/pure.o
++libtool: link: ar rc .libs/libstdc++.a atomic.o bitmap_allocator.o pool_allocator.o mt_allocator.o codecvt.o compatibility.o compatibility-c++0x.o compatibility-debug_list.o compatibility-debug_list-2.o compatibility-list.o compatibility-list-2.o complex_io.o ctype.o debug.o functexcept.o functional.o globals_io.o hash_c++0x.o hash_tr1.o hashtable_c++0x.o hashtable_tr1.o ios.o ios_failure.o ios_init.o ios_locale.o limits.o list.o locale.o locale_init.o locale_facets.o localename.o math_stubs_float.o math_stubs_long_double.o stdexcept.o strstream.o system_error.o tree.o istream.o placeholders.o regex.o shared_ptr.o streambuf.o mutex.o condition_variable.o chrono.o thread.o future.o valarray.o atomicity.o codecvt_members.o collate_members.o ctype_configure_char.o ctype_members.o messages_members.o monetary_members.o numeric_members.o time_members.o basic_file.o c++locale.o allocator-inst.o concept-inst.o ext-inst.o fstream-inst.o ios-inst.o iostream-inst.o istream-inst.o locale-inst.o misc-inst.o ostream-inst.o sstream-inst.o streambuf-inst.o string-inst.o wlocale-inst.o wstring-inst.o parallel_settings.o compatibility-parallel_list.o compatibility-parallel_list-2.o .libs/libstdc++.lax/libsupc++convenience.a/array_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/atexit_arm.o .libs/libstdc++.lax/libsupc++convenience.a/bad_alloc.o .libs/libstdc++.lax/libsupc++convenience.a/bad_cast.o .libs/libstdc++.lax/libsupc++convenience.a/bad_typeid.o .libs/libstdc++.lax/libsupc++convenience.a/class_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/del_op.o .libs/libstdc++.lax/libsupc++convenience.a/del_opnt.o .libs/libstdc++.lax/libsupc++convenience.a/del_opv.o .libs/libstdc++.lax/libsupc++convenience.a/del_opvnt.o .libs/libstdc++.lax/libsupc++convenience.a/dyncast.o .libs/libstdc++.lax/libsupc++convenience.a/eh_alloc.o .libs/libstdc++.lax/libsupc++convenience.a/eh_arm.o .libs/libstdc++.lax/libsupc++convenience.a/eh_aux_runtime.o .libs/libstdc++.lax/libsupc++convenience.a/eh_call.o .libs/libstdc++.lax/libsupc++convenience.a/eh_catch.o .libs/libstdc++.lax/libsupc++convenience.a/eh_exception.o .libs/libstdc++.lax/libsupc++convenience.a/eh_globals.o .libs/libstdc++.lax/libsupc++convenience.a/eh_personality.o .libs/libstdc++.lax/libsupc++convenience.a/eh_ptr.o .libs/libstdc++.lax/libsupc++convenience.a/eh_term_handler.o .libs/libstdc++.lax/libsupc++convenience.a/eh_terminate.o .libs/libstdc++.lax/libsupc++convenience.a/eh_throw.o .libs/libstdc++.lax/libsupc++convenience.a/eh_type.o .libs/libstdc++.lax/libsupc++convenience.a/eh_unex_handler.o .libs/libstdc++.lax/libsupc++convenience.a/enum_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/function_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/fundamental_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/guard.o .libs/libstdc++.lax/libsupc++convenience.a/guard_error.o .libs/libstdc++.lax/libsupc++convenience.a/hash_bytes.o .libs/libstdc++.lax/libsupc++convenience.a/nested_exception.o .libs/libstdc++.lax/libsupc++convenience.a/new_handler.o .libs/libstdc++.lax/libsupc++convenience.a/new_op.o .libs/libstdc++.lax/libsupc++convenience.a/new_opnt.o .libs/libstdc++.lax/libsupc++convenience.a/new_opv.o .libs/libstdc++.lax/libsupc++convenience.a/new_opvnt.o .libs/libstdc++.lax/libsupc++convenience.a/pbase_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/pmem_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/pointer_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/pure.o .libs/libstdc++.lax/libsupc++convenience.a/si_class_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/tinfo.o .libs/libstdc++.lax/libsupc++convenience.a/tinfo2.o .libs/libstdc++.lax/libsupc++convenience.a/vec.o .libs/libstdc++.lax/libsupc++convenience.a/vmi_class_type_info.o .libs/libstdc++.lax/libsupc++convenience.a/vterminate.o .libs/libstdc++.lax/libsupc++convenience.a/cp-demangle.o
+ libtool: link: ranlib .libs/libstdc++.a
+ libtool: link: rm -fr .libs/libstdc++.lax
+ libtool: link: ( cd ".libs" && rm -f "libstdc++.la" && ln -s "../libstdc++.la" "libstdc++.la" )
+@@ -14731,7 +14703,7 @@
+ libtool: compile: [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -DHAVE_CONFIG_H -I. -I../../../master/libgomp -I../../../master/libgomp/config/posix -I../../../master/libgomp -Wall -pthread -Werror -g -O2 -MT affinity.lo -MD -MP -MF .deps/affinity.Tpo -c ../../../master/libgomp/config/[SYSDEP]/affinity.c -o affinity.o >/dev/null 2>&1
+ mv -f .deps/affinity.Tpo .deps/affinity.Plo
+ /bin/dash ./libtool --tag CC --mode=link [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -Wall -Werror -Wc,-pthread -g -O2 -Wl,-O1 -o libgomp.la -version-info 1:0:0 -Wl,--version-script,../../../master/libgomp/libgomp.map -rpath [...]/hurd/master.build.install/lib/ alloc.lo barrier.lo critical.lo env.lo error.lo iter.lo iter_ull.lo loop.lo loop_ull.lo ordered.lo parallel.lo sections.lo single.lo task.lo team.lo work.lo lock.lo mutex.lo proc.lo sem.lo bar.lo ptrlock.lo time.lo fortran.lo affinity.lo -lrt
+-libtool: link: [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -shared .libs/alloc.o .libs/barrier.o .libs/critical.o .libs/env.o .libs/error.o .libs/iter.o .libs/iter_ull.o .libs/loop.o .libs/loop_ull.o .libs/ordered.o .libs/parallel.o .libs/sections.o .libs/single.o .libs/task.o .libs/team.o .libs/work.o .libs/lock.o .libs/mutex.o .libs/proc.o .libs/sem.o .libs/bar.o .libs/ptrlock.o .libs/time.o .libs/fortran.o .libs/affinity.o -lrt -march=i486 -mtune=i686 -pthread -Wl,-O1 -Wl,--version-script -Wl,../../../master/libgomp/libgomp.map -Wl,-soname -Wl,libgomp.so.1 -o .libs/libgomp.so.1.0.0
++libtool: link: [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -shared .libs/alloc.o .libs/barrier.o .libs/critical.o .libs/env.o .libs/error.o .libs/iter.o .libs/iter_ull.o .libs/loop.o .libs/loop_ull.o .libs/ordered.o .libs/parallel.o .libs/sections.o .libs/single.o .libs/task.o .libs/team.o .libs/work.o .libs/lock.o .libs/mutex.o .libs/proc.o .libs/sem.o .libs/bar.o .libs/ptrlock.o .libs/time.o .libs/fortran.o .libs/affinity.o -lrt -pthread -Wl,-O1 -Wl,--version-script -Wl,../../../master/libgomp/libgomp.map -Wl,-soname -Wl,libgomp.so.1 -o .libs/libgomp.so.1.0.0
+ libtool: link: (cd ".libs" && rm -f "libgomp.so.1" && ln -s "libgomp.so.1.0.0" "libgomp.so.1")
+ libtool: link: (cd ".libs" && rm -f "libgomp.so" && ln -s "libgomp.so.1.0.0" "libgomp.so")
+ libtool: link: ar rc .libs/libgomp.a alloc.o barrier.o critical.o env.o error.o iter.o iter_ull.o loop.o loop_ull.o ordered.o parallel.o sections.o single.o task.o team.o work.o lock.o mutex.o proc.o sem.o bar.o ptrlock.o time.o fortran.o affinity.o
+@@ -14785,6 +14757,7 @@
+ fi
+ make[6]: Leaving directory `[...]/hurd/master.build/[ARCH]/libgomp'
+ [...]/hurd/master.build/./gcc/gfortran -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -L. -Wall -L../libgfortran -fsyntax-only omp_lib.f90
++:
+ make[5]: Leaving directory `[...]/hurd/master.build/[ARCH]/libgomp'
+ make[4]: Leaving directory `[...]/hurd/master.build/[ARCH]/libgomp'
+ make[3]: Leaving directory `[...]/hurd/master.build/[ARCH]/libgomp'
+@@ -14796,8 +14769,8 @@
+ make[3]: Leaving directory `[...]/hurd/master.build'
+ Comparing stages 2 and 3
+ warning: gcc/cc1-checksum.o differs
+-warning: gcc/cc1obj-checksum.o differs
+ warning: gcc/cc1plus-checksum.o differs
++warning: gcc/cc1obj-checksum.o differs
+ Comparison successful.
+ if false; then \
+ rm -rf stage2-*; \
+@@ -15092,7 +15065,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... [...]/hurd/master.build/./gcc/nm
+ checking the name lister ([...]/hurd/master.build/./gcc/nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for [...]/hurd/master.build/./gcc/collect-ld option to reload object files... -r
+@@ -15112,7 +15085,7 @@
+ checking if [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking for shl_load... no
+ checking for shl_load in -ldld... no
+@@ -15335,7 +15308,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... [...]/hurd/master.build/./gcc/nm
+ checking the name lister ([...]/hurd/master.build/./gcc/nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for [...]/hurd/master.build/./gcc/collect-ld option to reload object files... -r
+@@ -15355,7 +15328,7 @@
+ checking if [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -15550,7 +15523,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... [...]/hurd/master.build/./gcc/nm
+ checking the name lister ([...]/hurd/master.build/./gcc/nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for [...]/hurd/master.build/./gcc/collect-ld option to reload object files... -r
+@@ -15570,7 +15543,7 @@
+ checking if [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -16241,7 +16214,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... [...]/hurd/master.build/./gcc/nm
+ checking the name lister ([...]/hurd/master.build/./gcc/nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for [...]/hurd/master.build/./gcc/collect-ld option to reload object files... -r
+@@ -16261,7 +16234,7 @@
+ checking if [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking for shl_load... no
+ checking for shl_load in -ldld... no
+@@ -16285,7 +16258,7 @@
+ checking if [...]/hurd/master.build/./gcc/gfortran -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... yes
+ checking if [...]/hurd/master.build/./gcc/gfortran -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/gfortran -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+-checking dynamic linker characteristics... (cached) GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether the GNU Fortran compiler is working... yes
+ checking for special C compiler options needed for large files... no
+@@ -19131,7 +19104,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... [...]/hurd/master.build/./gcc/nm
+ checking the name lister ([...]/hurd/master.build/./gcc/nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for [...]/hurd/master.build/./gcc/collect-ld option to reload object files... -r
+@@ -19162,7 +19135,7 @@
+ checking if [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -19178,7 +19151,7 @@
+ checking if [...]/hurd/master.build/./gcc/g++ -B[...]/hurd/master.build/./gcc/ -nostdinc++ -nostdinc++ -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -I[...]/hurd/master/libstdc++-v3/include/backward -I[...]/hurd/master/libstdc++-v3/testsuite/util -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... yes
+ checking if [...]/hurd/master.build/./gcc/g++ -B[...]/hurd/master.build/./gcc/ -nostdinc++ -nostdinc++ -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -I[...]/hurd/master/libstdc++-v3/include/backward -I[...]/hurd/master/libstdc++-v3/testsuite/util -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/g++ -B[...]/hurd/master.build/./gcc/ -nostdinc++ -nostdinc++ -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include/[ARCH] -I[...]/hurd/master.build/[ARCH]/libstdc++-v3/include -I[...]/hurd/master/libstdc++-v3/libsupc++ -I[...]/hurd/master/libstdc++-v3/include/backward -I[...]/hurd/master/libstdc++-v3/testsuite/util -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+-checking dynamic linker characteristics... (cached) GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking for thread model used by GCC... posix
+ checking for dlopen in -ldl... yes
+@@ -19232,7 +19205,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... [...]/hurd/master.build/./gcc/nm
+ checking the name lister ([...]/hurd/master.build/./gcc/nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for [...]/hurd/master.build/./gcc/collect-ld option to reload object files... -r
+@@ -19264,7 +19237,7 @@
+ checking if [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -19554,6 +19527,7 @@
+ -I. -I[...]/hurd/master/libobjc -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing -fexceptions -I[...]/hurd/master/libobjc/../gcc -I[...]/hurd/master/libobjc/../gcc/config -I../.././gcc -I[...]/hurd/master/libobjc/../libgcc -I[...]/hurd/master/libobjc/../include \
+ -o encoding.lo
+ libtool: compile: [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include [...]/hurd/master/libobjc/encoding.c -c -I. -I[...]/hurd/master/libobjc -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing -fexceptions -I[...]/hurd/master/libobjc/../gcc -I[...]/hurd/master/libobjc/../gcc/config -I../.././gcc -I[...]/hurd/master/libobjc/../libgcc -I[...]/hurd/master/libobjc/../include -fPIC -DPIC -o .libs/encoding.o
++[...]/hurd/master/libobjc/encoding.c:128:1: warning: '_darwin_rs6000_special_round_type_align' defined but not used [-Wunused-function]
+ libtool: compile: [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include [...]/hurd/master/libobjc/encoding.c -c -I. -I[...]/hurd/master/libobjc -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing -fexceptions -I[...]/hurd/master/libobjc/../gcc -I[...]/hurd/master/libobjc/../gcc/config -I../.././gcc -I[...]/hurd/master/libobjc/../libgcc -I[...]/hurd/master/libobjc/../include -o encoding.o >/dev/null 2>&1
+ /bin/dash ./libtool --mode=compile [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include [...]/hurd/master/libobjc/error.c -c \
+ -I. -I[...]/hurd/master/libobjc -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing -fexceptions -I[...]/hurd/master/libobjc/../gcc -I[...]/hurd/master/libobjc/../gcc/config -I../.././gcc -I[...]/hurd/master/libobjc/../libgcc -I[...]/hurd/master/libobjc/../include \
+@@ -19638,6 +19612,11 @@
+ -I. -I[...]/hurd/master/libobjc -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing -fexceptions -I[...]/hurd/master/libobjc/../gcc -I[...]/hurd/master/libobjc/../gcc/config -I../.././gcc -I[...]/hurd/master/libobjc/../libgcc -I[...]/hurd/master/libobjc/../include \
+ -o thr.lo
+ libtool: compile: [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include [...]/hurd/master/libobjc/thr.c -c -I. -I[...]/hurd/master/libobjc -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing -fexceptions -I[...]/hurd/master/libobjc/../gcc -I[...]/hurd/master/libobjc/../gcc/config -I../.././gcc -I[...]/hurd/master/libobjc/../libgcc -I[...]/hurd/master/libobjc/../include -fPIC -DPIC -o .libs/thr.o
++In file included from ../.././gcc/gthr-default.h:1:0,
++ from [...]/hurd/master/libobjc/../gcc/gthr.h:157,
++ from [...]/hurd/master/libobjc/thr.c:45:
++[...]/hurd/master/libobjc/../gcc/gthr-posix.h: In function '__gthread_objc_thread_set_priority':
++[...]/hurd/master/libobjc/../gcc/gthr-posix.h:388:41: warning: unused parameter 'priority' [-Wunused-parameter]
+ libtool: compile: [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include [...]/hurd/master/libobjc/thr.c -c -I. -I[...]/hurd/master/libobjc -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing -fexceptions -I[...]/hurd/master/libobjc/../gcc -I[...]/hurd/master/libobjc/../gcc/config -I../.././gcc -I[...]/hurd/master/libobjc/../libgcc -I[...]/hurd/master/libobjc/../include -o thr.o >/dev/null 2>&1
+ /bin/dash ./libtool --mode=compile [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include [...]/hurd/master/libobjc/exception.c -c \
+ -I. -I[...]/hurd/master/libobjc -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing -fexceptions -I[...]/hurd/master/libobjc/../gcc -I[...]/hurd/master/libobjc/../gcc/config -I../.././gcc -I[...]/hurd/master/libobjc/../libgcc -I[...]/hurd/master/libobjc/../include -fexceptions \
+@@ -19737,7 +19716,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... [...]/hurd/master.build/./gcc/nm
+ checking the name lister ([...]/hurd/master.build/./gcc/nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for [...]/hurd/master.build/./gcc/collect-ld option to reload object files... -r
+@@ -19768,7 +19747,7 @@
+ checking if [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -20013,7 +19992,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... [...]/hurd/master.build/./gcc/nm
+ checking the name lister ([...]/hurd/master.build/./gcc/nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for [...]/hurd/master.build/./gcc/collect-ld option to reload object files... -r
+@@ -20044,7 +20023,7 @@
+ checking if [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -20109,7 +20088,7 @@
+ [ARCH]
+ checking if the linker ([...]/hurd/master.build/./gcc/collect-ld) is GNU ld... yes
+ checking if the GNU linker ([...]/hurd/master.build/./gcc/collect-ld) supports -Bsymbolic-functions... yes
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking which variable specifies run-time library path... LD_LIBRARY_PATH
+ checking how to print strings... printf
+ checking for a sed that does not truncate output... /bin/sed
+@@ -20120,7 +20099,7 @@
+ checking if the linker ([...]/hurd/master.build/./gcc/collect-ld) is GNU ld... yes
+ checking for BSD- or MS-compatible name lister (nm)... [...]/hurd/master.build/./gcc/nm
+ checking the name lister ([...]/hurd/master.build/./gcc/nm) interface... BSD nm
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for [...]/hurd/master.build/./gcc/collect-ld option to reload object files... -r
+@@ -20151,7 +20130,7 @@
+ checking if [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking for shl_load... no
+ checking for shl_load in -ldld... no
+@@ -20173,7 +20152,7 @@
+ checking if [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... yes
+ checking if [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+-checking dynamic linker characteristics... (cached) GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking for [ARCH]-gcj... [...]/hurd/master.build/./gcc/gcj -B[...]/hurd/master.build/[ARCH]/libjava/ -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include
+ checking dependency style of [...]/hurd/master.build/./gcc/gcj -B[...]/hurd/master.build/[ARCH]/libjava/ -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include ... gcc3
+@@ -20235,8 +20214,8 @@
+ checking sys/resource.h presence... yes
+ checking for sys/resource.h... yes
+ checking for dladdr in -ldl... yes
+-checking for /proc/self/exe... yes
+-checking for /proc/self/maps... yes
++checking for /proc/self/exe... no
++checking for /proc/self/maps... no
+ checking for ld used by GCC... [...]/hurd/master.build/./gcc/collect-ld
+ checking if the linker ([...]/hurd/master.build/./gcc/collect-ld) is GNU ld... (cached) yes
+ checking for shared library run path origin... done
+@@ -20372,8 +20351,8 @@
+ config.status: linking ../../../master/libjava/sysdep/i386/locks.h to sysdep/locks.h
+ config.status: linking ../../../master/libjava/sysdep/generic/backtrace.h to sysdep/backtrace.h
+ config.status: linking ../../../master/libjava/sysdep/descriptor-n.h to sysdep/descriptor.h
+-config.status: linking ../../../master/libjava/include/i386-signal.h to include/java-signal.h
+-config.status: linking ../../../master/libjava/include/i386-signal.h to include/java-signal-aux.h
++config.status: linking ../../../master/libjava/include/default-signal.h to include/java-signal.h
++config.status: linking ../../../master/libjava/include/default-signal.h to include/java-signal-aux.h
+ config.status: executing default-1 commands
+ Adding multilib support to Makefile in ../../../master/libjava
+ multidirs=
+@@ -20433,7 +20412,7 @@
+ checking if the linker ([...]/hurd/master.build/./gcc/collect-ld) is GNU ld... (cached) yes
+ checking for BSD- or MS-compatible name lister (nm)... (cached) [...]/hurd/master.build/./gcc/nm
+ checking the name lister ([...]/hurd/master.build/./gcc/nm) interface... (cached) BSD nm
+-checking the maximum length of command line arguments... (cached) 805306365
++checking the maximum length of command line arguments... (cached) -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for [...]/hurd/master.build/./gcc/collect-ld option to reload object files... (cached) -r
+@@ -20453,7 +20432,7 @@
+ checking if [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... (cached) no
+-checking dynamic linker characteristics... (cached) GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -20480,7 +20459,7 @@
+ checking if [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking if [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+-checking dynamic linker characteristics... (cached) GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking __attribute__((,,))... yes
+ checking __attribute__((unused))... yes
+@@ -20491,9 +20470,9 @@
+ checking for sys/types.h... (cached) yes
+ checking for sys/config.h... (cached) no
+ checking for sys/ioctl.h... (cached) yes
+-checking asm/ioctls.h usability... yes
+-checking asm/ioctls.h presence... yes
+-checking for asm/ioctls.h... yes
++checking asm/ioctls.h usability... no
++checking asm/ioctls.h presence... no
++checking for asm/ioctls.h... no
+ checking for inttypes.h... (cached) yes
+ checking for stdint.h... (cached) yes
+ checking utime.h usability... yes
+@@ -20516,9 +20495,9 @@
+ checking sys/event.h usability... no
+ checking sys/event.h presence... no
+ checking for sys/event.h... no
+-checking sys/epoll.h usability... yes
+-checking sys/epoll.h presence... yes
+-checking for sys/epoll.h... yes
++checking sys/epoll.h usability... no
++checking sys/epoll.h presence... no
++checking for sys/epoll.h... no
+ checking for ifaddrs.h... (cached) yes
+ checking netinet/in_systm.h usability... yes
+ checking netinet/in_systm.h presence... yes
+@@ -20575,8 +20554,8 @@
+ checking for statvfs... yes
+ checking for mmap... (cached) yes
+ checking for munmap... yes
+-checking for mincore... yes
+-checking for msync... yes
++checking for mincore... no
++checking for msync... no
+ checking for madvise... yes
+ checking for getpagesize... yes
+ checking for sysconf... yes
+@@ -20588,7 +20567,7 @@
+ checking for getifaddrs... (cached) yes
+ checking for kqueue... no
+ checking for kevent... no
+-checking for epoll_create... yes
++checking for epoll_create... no
+ checking for getloadavg... yes
+ checking for magic_open in -lmagic... no
+ checking whether struct sockaddr_in6 is in netinet/in.h... yes
+@@ -20613,7 +20592,7 @@
+ checking gmp.h usability... yes
+ checking gmp.h presence... yes
+ checking for gmp.h... yes
+-checking jni_md.h support... yes
++checking jni_md.h support... configure: WARNING: no
+ checking whether to enable maintainer-specific portions of Makefiles... no
+ checking for mkdir... /bin/mkdir
+ checking for cp... /bin/cp
+@@ -20755,7 +20734,7 @@
+ checking for stdint.h... (cached) yes
+ checking for unistd.h... (cached) yes
+ checking for dlfcn.h... (cached) yes
+-checking the maximum length of command line arguments... (cached) 805306365
++checking the maximum length of command line arguments... (cached) -1
+ checking command to parse [...]/hurd/master.build/./gcc/nm output from [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include object... (cached) ok
+ checking for objdir... (cached) .libs
+ checking for [ARCH]-ar... (cached) ar
+@@ -20768,7 +20747,7 @@
+ checking if [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include supports -c -o file.o... (cached) yes
+ checking whether the [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include linker ([...]/hurd/master.build/./gcc/collect-ld) supports shared libraries... yes
+ checking whether -lc should be explicitly linked in... no
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -20779,7 +20758,7 @@
+ checking for library containing opendir... none required
+ checking which extension is used for loadable modules... .so
+ checking which variable specifies run-time library path... (cached) LD_LIBRARY_PATH
+-checking for the default library search path... /lib /usr/lib /lib/[ARCH] /usr/lib/[ARCH] /lib/i486-linux-gnu /usr/lib/i486-linux-gnu /usr/local/lib /lib64 /usr/lib64
++checking for the default library search path... /lib /usr/lib
+ checking for objdir... .libs
+ checking whether libtool supports -dlopen/-dlpreopen... yes
+ checking for shl_load... (cached) no
+@@ -21022,705 +21001,705 @@
+ Adding java source files from VM directory [...]/hurd/master.build/[ARCH]/libjava
+ Adding generated files in builddir '..'.
+ touch compile-classes
+-./classpath/tools/external/asm/org/objectweb/asm/optimizer/shrink.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/external/asm/org/objectweb/asm/optimizer/shrink.properties
+-./classpath/tools/resource/gnu/classpath/tools/orbd/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/orbd/messages.properties
+-./classpath/tools/resource/gnu/classpath/tools/jar/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/jar/messages.properties
+-./classpath/tools/resource/gnu/classpath/tools/serialver/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/serialver/messages.properties
+-./classpath/tools/resource/gnu/classpath/tools/tnameserv/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/tnameserv/messages.properties
+-./classpath/tools/resource/gnu/classpath/tools/rmid/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/rmid/messages.properties
+-./classpath/tools/resource/gnu/classpath/tools/keytool/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/keytool/messages.properties
+-./classpath/tools/resource/gnu/classpath/tools/gjdoc/htmldoclet/HtmlDoclet.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/gjdoc/htmldoclet/HtmlDoclet.properties
+-./classpath/tools/resource/gnu/classpath/tools/common/Messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/common/Messages.properties
+-./classpath/tools/resource/gnu/classpath/tools/getopt/Messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/getopt/Messages.properties
+-./classpath/tools/resource/gnu/classpath/tools/native2ascii/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/native2ascii/messages.properties
+-./classpath/tools/resource/gnu/classpath/tools/appletviewer/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/appletviewer/messages.properties
+-./classpath/tools/resource/gnu/classpath/tools/jarsigner/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/jarsigner/messages.properties
+-./classpath/tools/resource/gnu/classpath/tools/rmic/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/rmic/messages.properties
+-./classpath/tools/resource/gnu/classpath/tools/rmiregistry/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/rmiregistry/messages.properties
+-./classpath/tools/resource/sun/rmi/rmic/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/sun/rmi/rmic/messages.properties
+-./classpath/tools/resource/com/sun/tools/javac/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/com/sun/tools/javac/messages.properties
+-./classpath/resource/gnu/javax/security/auth/callback/MessagesBundle.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/javax/security/auth/callback/MessagesBundle.properties
+-./classpath/resource/gnu/javax/print/PrinterDialog_de.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/javax/print/PrinterDialog_de.properties
+-./classpath/resource/gnu/javax/print/PrinterDialog.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/javax/print/PrinterDialog.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ts.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ts.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_GB.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_GB.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_US.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_US.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_BZ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_BZ.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_rw.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_rw.properties
++./classpath/resource/gnu/java/awt/font/fonts.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/awt/font/fonts.properties
++./classpath/resource/gnu/java/awt/peer/gtk/font.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/awt/peer/gtk/font.properties
++./classpath/resource/gnu/java/awt/peer/x/fonts.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/awt/peer/x/fonts.properties
++./classpath/resource/gnu/java/awt/peer/x/xfonts.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/awt/peer/x/xfonts.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_kw_GB.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kw_GB.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_om_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_om_ET.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_as.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_as.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_el_GR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_el_GR.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ta_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ta_IN.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_mr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_mr.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_ZA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_ZA.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_af.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_af.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_de_DE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_de_DE.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_fr_CA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fr_CA.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_sl_SI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sl_SI.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_pt.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_pt.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_hy_AM.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_hy_AM.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ps.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ps.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_mn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_mn.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_nb_NO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_nb_NO.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_IE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_IE.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_pt_BR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_pt_BR.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_lo_LA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_lo_LA.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_cch.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_cch.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_gu.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_gu.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_so_SO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_so_SO.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_et.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_et.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ml.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ml.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_lt_LT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_lt_LT.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ny.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ny.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_nl_NL.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_nl_NL.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_pa.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_pa.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_as.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_as.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_es_SV.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_SV.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_fr_LU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fr_LU.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_es_HN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_HN.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_es_UY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_UY.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_gez.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_gez.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_ti_ER.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ti_ER.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_fil.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fil.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_th.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_th.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_wo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_wo.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_es_PA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_PA.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ar.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ar.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_sk_SK.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sk_SK.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_sq_AL.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sq_AL.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ssy.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ssy.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_es_AR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_AR.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_om.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_om.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ti_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ti_ET.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_uz_Latn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_uz_Latn.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_NZ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_NZ.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_mk.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_mk.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ha.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ha.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_xh.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_xh.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_sr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sr.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_sv.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sv.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ar_JO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ar_JO.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ar_TN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ar_TN.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_bo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_bo.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ro.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ro.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ca.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ca.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_pl_PL.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_pl_PL.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_el_CY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_el_CY.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ia.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ia.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ps_AF.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ps_AF.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_hr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_hr.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ha_Arab.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ha_Arab.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_ZA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_ZA.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_sr_ME_Latn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sr_ME_Latn.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_my.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_my.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_el.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_el.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_dv_MV.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_dv_MV.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_aa_ER.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_aa_ER.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_es_PR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_PR.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ar_YE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ar_YE.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_AU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_AU.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ga.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ga.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_sq.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sq.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_nn_NO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_nn_NO.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ka.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ka.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ar_DZ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ar_DZ.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_lv_LV.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_lv_LV.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_sr_BA_Latn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sr_BA_Latn.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_bn_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_bn_IN.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_es_VE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_VE.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_wal_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_wal_ET.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_sk.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sk.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_syr_SY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_syr_SY.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_sa_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sa_IN.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ar_LB.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ar_LB.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ur_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ur_IN.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ca_ES.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ca_ES.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_it.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_it.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ti.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ti.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_fur.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fur.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_CA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_CA.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_MT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_MT.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_kcg.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kcg.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_ZW.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_ZW.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_nn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_nn.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_iu.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_iu.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_kn_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kn_IN.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_tig_ER.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_tig_ER.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_es_PA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_PA.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_el_GR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_el_GR.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_pa_Arab.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_pa_Arab.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ku.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ku.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_or_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_or_IN.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_es_CO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_CO.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_es_GT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_GT.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_kam.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kam.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_pt_PT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_pt_PT.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_gez.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_gez.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_is_IS.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_is_IS.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_kfo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kfo.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_tr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_tr.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_gv.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_gv.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_sr_Latn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sr_Latn.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_cy.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_cy.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_vi.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_vi.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_BW.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_BW.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_id.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_id.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_eo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_eo.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_nb_NO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_nb_NO.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_kk_KZ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kk_KZ.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_lt.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_lt.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_gez_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_gez_ET.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_af.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_af.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ar_MA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ar_MA.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_de_AT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_de_AT.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_tig.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_tig.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_pt.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_pt.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_kk.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kk.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_am_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_am_ET.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_hi.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_hi.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ko.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ko.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_fo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fo.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_kok.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kok.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_dz.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_dz.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_kam.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kam.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_es_EC.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_EC.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_he_IL.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_he_IL.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_sa.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sa.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_fi_FI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fi_FI.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_BE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_BE.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_xh.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_xh.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_et_EE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_et_EE.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_so_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_so_ET.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_es_ES.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_ES.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ru_UA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ru_UA.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_CA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_CA.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_si.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_si.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_es_CR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_CR.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_nn_NO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_nn_NO.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_fr_CH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fr_CH.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_de_BE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_de_BE.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_he.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_he.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_BZ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_BZ.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ru.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ru.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_fil.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fil.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_mr_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_mr_IN.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_es_EC.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_EC.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_fa.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fa.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_fo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fo.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_dv.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_dv.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_de.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_de.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_fa_AF.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fa_AF.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ja.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ja.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_rw.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_rw.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ja_JP.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ja_JP.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_bs.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_bs.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ar_YE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ar_YE.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_es_PR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_PR.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_aa_ER.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_aa_ER.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_cch.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_cch.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_JM.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_JM.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_ZW.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_ZW.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_cs_CZ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_cs_CZ.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_US_POSIX.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_US_POSIX.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_gu.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_gu.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_gl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_gl.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_aa_ER_SAAHO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_aa_ER_SAAHO.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_kl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kl.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ka.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ka.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_kfo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kfo.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_kaj.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kaj.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_my.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_my.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ur_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ur_IN.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_pt_BR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_pt_BR.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_sid_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sid_ET.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ln.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ln.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_es_PE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_PE.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_am.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_am.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ro_RO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ro_RO.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_mk.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_mk.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_sq_AL.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sq_AL.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_uk.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_uk.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_or.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_or.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_az.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_az.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_MP.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_MP.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_hi_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_hi_IN.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ii.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ii.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ko.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ko.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_wo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_wo.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ar_LB.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ar_LB.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_Dsrt.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_Dsrt.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_uz_AF_Arab.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_uz_AF_Arab.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_sv_SE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sv_SE.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ta.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ta.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_cy_GB.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_cy_GB.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_syr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_syr.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_id.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_id.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_sid.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sid.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_MH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_MH.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ro_RO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ro_RO.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_tt_RU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_tt_RU.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_nl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_nl.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_US_POSIX.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_US_POSIX.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_kl_GL.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kl_GL.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_da.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_da.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_se.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_se.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ga_IE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ga_IE.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_trv.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_trv.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_sv.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sv.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_es_UY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_UY.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_de_LI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_de_LI.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ve.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ve.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_el.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_el.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_sl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sl.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ha_Arab.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ha_Arab.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_af_NA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_af_NA.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_sv_SE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sv_SE.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_te.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_te.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_sr_BA_Cyrl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sr_BA_Cyrl.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_hu.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_hu.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_lv.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_lv.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_uz_Latn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_uz_Latn.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_haw.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_haw.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_it_CH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_it_CH.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_yo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_yo.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_NA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_NA.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_kok_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kok_IN.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_is.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_is.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ru_RU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ru_RU.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_SG.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_SG.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_PH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_PH.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_kpe.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kpe.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_st.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_st.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_km_KH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_km_KH.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ca_ES.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ca_ES.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_es_DO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_DO.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_es_PY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_PY.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_es_MX.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_MX.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_sr_Cyrl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sr_Cyrl.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_mn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_mn.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ar_SA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ar_SA.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_MT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_MT.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_fi.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fi.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_cs.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_cs.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_es_ES.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_ES.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_MH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_MH.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_hy_AM_REVISED.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_hy_AM_REVISED.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_de_AT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_de_AT.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_wal_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_wal_ET.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_es_BO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_BO.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_es.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_iu.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_iu.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_mt_MT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_mt_MT.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ar_QA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ar_QA.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_fo_FO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fo_FO.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_sr_BA_Latn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sr_BA_Latn.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_sr_Latn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sr_Latn.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_bo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_bo.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_be_BY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_be_BY.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_NA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_NA.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_te_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_te_IN.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_bg.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_bg.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_cs_CZ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_cs_CZ.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_sid_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sid_ET.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_fa.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fa.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_sr_BA_Cyrl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sr_BA_Cyrl.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_te.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_te.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_byn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_byn.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ar_SA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ar_SA.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_sv_FI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sv_FI.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ig.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ig.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_es_MX.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_MX.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_ms_BN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ms_BN.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_sw.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sw.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_cs.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_cs.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_gv_GB.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_gv_GB.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_sl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sl.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_am.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_am.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_gl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_gl.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_he_IL.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_he_IL.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_kcg.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kcg.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ps.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ps.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_sr_ME_Latn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sr_ME_Latn.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ku_Latn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ku_Latn.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_cy_GB.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_cy_GB.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_GB.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_GB.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_dz.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_dz.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_hy.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_hy.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_as_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_as_IN.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ms.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ms.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_so_DJ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_so_DJ.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_MP.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_MP.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_da.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_da.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_cop.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_cop.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_nb.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_nb.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_sr_RS_Latn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sr_RS_Latn.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_it.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_it.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_gu_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_gu_IN.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_tt_RU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_tt_RU.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_uz.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_uz.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_tt.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_tt.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ar_MA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ar_MA.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_da_DK.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_da_DK.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_aa_DJ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_aa_DJ.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_nl_BE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_nl_BE.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ts.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ts.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_zh_HK_Hant.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_zh_HK_Hant.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_af_ZA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_af_ZA.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_aa_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_aa_ET.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_sa.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sa.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_kl_GL.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kl_GL.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_IN.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_zh_SG_Hans.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_zh_SG_Hans.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_tig.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_tig.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_UM.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_UM.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_gaa.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_gaa.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ms_MY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ms_MY.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_km.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_km.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_kaj.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kaj.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ii.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ii.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ku.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ku.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_te_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_te_IN.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_zu.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_zu.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_se_FI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_se_FI.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_gez_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_gez_ET.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ssy.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ssy.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_kn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kn.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_syr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_syr.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ku_Arab.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ku_Arab.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_tg.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_tg.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ko_KR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ko_KR.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_Shaw.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_Shaw.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_uz_Arab.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_uz_Arab.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_gez_ER.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_gez_ER.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_pa_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_pa_IN.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_tr_TR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_tr_TR.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_gl_ES.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_gl_ES.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_GU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_GU.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_mr_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_mr_IN.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_es_AR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_AR.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_nso.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_nso.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_as_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_as_IN.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_hi_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_hi_IN.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ru_RU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ru_RU.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ve.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ve.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_HK.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_HK.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_es_DO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_DO.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_trv.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_trv.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_de.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_de.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ml_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ml_IN.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_de_DE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_de_DE.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_uz.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_uz.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_so_KE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_so_KE.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_BE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_BE.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_zh_Hant.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_zh_Hant.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_de_BE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_de_BE.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_hi.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_hi.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_is.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_is.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_eu_ES.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_eu_ES.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ig.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ig.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_mt.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_mt.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_pa_Arab.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_pa_Arab.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_kk.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kk.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_lo_LA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_lo_LA.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_AS.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_AS.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_zh_MO_Hant.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_zh_MO_Hant.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_sw_KE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sw_KE.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_gv.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_gv.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ar_SY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ar_SY.properties
++./classpath/resource/gnu/java/locale/LocaleInformation.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_fa_IR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fa_IR.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ti.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ti.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_to.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_to.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ar_TN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ar_TN.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_tr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_tr.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_tn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_tn.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_lo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_lo.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_nr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_nr.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_be_BY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_be_BY.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_eo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_eo.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ak.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ak.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ko_KR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ko_KR.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_th_TH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_th_TH.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_es_PY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_PY.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_fr_BE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fr_BE.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_BW.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_BW.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_fr_CA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fr_CA.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_zh_SG_Hans.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_zh_SG_Hans.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_tr_TR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_tr_TR.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_om.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_om.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_id_ID.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_id_ID.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_sv_FI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sv_FI.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_lv_LV.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_lv_LV.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ta.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ta.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_VI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_VI.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_zh_TW_Hant.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_zh_TW_Hant.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ug.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ug.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_US.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_US.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ro.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ro.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_zu.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_zu.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_fr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fr.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ja.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ja.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ar.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ar.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_kpe.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kpe.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_sl_SI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sl_SI.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ta_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ta_IN.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_to.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_to.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_zh_CN_Hans.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_zh_CN_Hans.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_fur.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fur.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_be.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_be.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_HK.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_HK.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_es_NI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_NI.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_lt.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_lt.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_az.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_az.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_TT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_TT.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_byn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_byn.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_sw.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sw.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_so_SO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_so_SO.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_am_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_am_ET.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_IE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_IE.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ml.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ml.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_pa.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_pa.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ar_DZ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ar_DZ.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ak.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ak.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_so.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_so.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ms_MY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ms_MY.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_bg_BG.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_bg_BG.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_wal.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_wal.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_mr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_mr.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_fo_FO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fo_FO.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_fr_CH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fr_CH.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_pl_PL.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_pl_PL.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_nl_BE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_nl_BE.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_es.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_zh_HK_Hant.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_zh_HK_Hant.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ug.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ug.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_fa_AF.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fa_AF.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_hu.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_hu.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_sw_KE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sw_KE.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_or_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_or_IN.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ga_IE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ga_IE.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_gu_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_gu_IN.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_az_Cyrl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_az_Cyrl.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_id_ID.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_id_ID.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_eu_ES.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_eu_ES.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_JM.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_JM.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_de_CH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_de_CH.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_it_IT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_it_IT.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_fi.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fi.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_et_EE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_et_EE.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_Shaw.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_Shaw.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_dv_MV.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_dv_MV.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_gez_ER.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_gez_ER.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_fr_BE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fr_BE.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ar_JO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ar_JO.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_bn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_bn.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_th_TH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_th_TH.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_kok_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kok_IN.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_sr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sr.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_bn_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_bn_IN.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_uk_UA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_uk_UA.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_PH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_PH.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ru.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ru.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_es_BO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_BO.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_nb.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_nb.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_kw_GB.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kw_GB.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ku_Arab.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ku_Arab.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_om_KE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_om_KE.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_hy.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_hy.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_TT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_TT.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_af_NA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_af_NA.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_mt.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_mt.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_el_CY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_el_CY.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_es_GT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_GT.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ru_UA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ru_UA.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_et.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_et.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_es_SV.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_SV.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_gv_GB.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_gv_GB.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_es_VE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_VE.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_tig_ER.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_tig_ER.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_pa_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_pa_IN.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_nn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_nn.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_haw_US.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_haw_US.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_km.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_km.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_sa_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sa_IN.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_yo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_yo.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_zh_Hant.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_zh_Hant.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_hu_HU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_hu_HU.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_es_CL.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_CL.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ga.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ga.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_syr_SY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_syr_SY.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_GU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_GU.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ss.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ss.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_eu.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_eu.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_ur.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ur.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_om_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_om_ET.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ku_Latn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ku_Latn.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_IN.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_bn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_bn.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_aa_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_aa_ET.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_NZ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_NZ.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_sw_TZ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sw_TZ.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_is_IS.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_is_IS.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_aa.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_aa.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_sr_Cyrl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sr_Cyrl.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_lv.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_lv.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_de_LU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_de_LU.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_es_CR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_CR.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_si.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_si.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_zh_TW_Hant.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_zh_TW_Hant.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_km_KH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_km_KH.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_or.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_or.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_ne.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ne.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_dv.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_dv.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ps_AF.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ps_AF.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_es_CO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_CO.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_st.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_st.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_VI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_VI.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_eu.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_eu.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_AU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_AU.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_se_FI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_se_FI.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_ee.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ee.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ss.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ss.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_cop.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_cop.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_SG.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_SG.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_fa_IR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fa_IR.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_UM.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_UM.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_de_LI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_de_LI.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_kn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kn.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_be.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_be.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_zh_MO_Hant.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_zh_MO_Hant.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ti_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ti_ET.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_sk.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sk.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_byn_ER.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_byn_ER.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_sr_RS_Latn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sr_RS_Latn.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_aa_DJ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_aa_DJ.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_da_DK.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_da_DK.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_tg.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_tg.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_PK.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_PK.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_aa_ER_SAAHO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_aa_ER_SAAHO.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_tt.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_tt.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_de_CH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_de_CH.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_th.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_th.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_it_IT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_it_IT.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_gl_ES.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_gl_ES.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ml_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ml_IN.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_lo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_lo.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ny.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ny.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_ky.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ky.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_bg_BG.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_bg_BG.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_af_ZA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_af_ZA.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_cy.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_cy.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_zh_CN_Hans.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_zh_CN_Hans.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_haw_US.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_haw_US.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_kl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kl.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_hu_HU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_hu_HU.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ar_QA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ar_QA.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ia.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ia.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_es_PE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_PE.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_AS.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_AS.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_vi.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_vi.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ar_SY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ar_SY.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_sw_TZ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sw_TZ.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_es_NI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_NI.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ja_JP.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ja_JP.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_dz_BT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_dz_BT.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_es_CL.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_CL.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_bs.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_bs.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ca.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ca.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ln.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ln.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_en_Dsrt.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_Dsrt.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_es_US.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_US.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_kw.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kw.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_lt_LT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_lt_LT.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_fr_LU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fr_LU.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_es_HN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_HN.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_kn_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kn_IN.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_sid.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sid.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_se.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_se.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_om_KE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_om_KE.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_sq.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_sq.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_it_CH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_it_CH.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_so_KE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_so_KE.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_pl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_pl.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_ms.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ms.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_en_PK.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_en_PK.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_de_LU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_de_LU.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_ha.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_ha.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_kw.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kw.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_kok.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_kok.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_dz_BT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_dz_BT.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_nl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_nl.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_fi_FI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_fi_FI.properties
+ ./classpath/resource/gnu/java/locale/LocaleInformation_zh.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_zh.properties
+-./classpath/resource/gnu/java/locale/LocaleInformation_hy_AM_REVISED.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_hy_AM_REVISED.properties
+-./classpath/resource/gnu/java/awt/peer/gtk/font.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/awt/peer/gtk/font.properties
+-./classpath/resource/gnu/java/awt/peer/x/fonts.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/awt/peer/x/fonts.properties
+-./classpath/resource/gnu/java/awt/peer/x/xfonts.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/awt/peer/x/xfonts.properties
+-./classpath/resource/gnu/java/awt/font/fonts.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/awt/font/fonts.properties
+-./classpath/resource/gnu/java/util/regex/MessagesBundle_it.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/util/regex/MessagesBundle_it.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_nr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_nr.properties
++./classpath/resource/gnu/java/locale/LocaleInformation_es_US.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/locale/LocaleInformation_es_US.properties
+ ./classpath/resource/gnu/java/util/regex/MessagesBundle.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/util/regex/MessagesBundle.properties
+ ./classpath/resource/gnu/java/util/regex/MessagesBundle_fr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/util/regex/MessagesBundle_fr.properties
+-./classpath/resource/javax/imageio/plugins/jpeg/MessagesBundle.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/javax/imageio/plugins/jpeg/MessagesBundle.properties
+-./classpath/resource/org/ietf/jgss/MessagesBundle.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/org/ietf/jgss/MessagesBundle.properties
++./classpath/resource/gnu/java/util/regex/MessagesBundle_it.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/java/util/regex/MessagesBundle_it.properties
++./classpath/resource/gnu/javax/print/PrinterDialog.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/javax/print/PrinterDialog.properties
++./classpath/resource/gnu/javax/print/PrinterDialog_de.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/javax/print/PrinterDialog_de.properties
++./classpath/resource/gnu/javax/security/auth/callback/MessagesBundle.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/gnu/javax/security/auth/callback/MessagesBundle.properties
+ ./classpath/resource/java/text/metazones.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/java/text/metazones.properties
+ ./classpath/resource/java/util/iso4217.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/java/util/iso4217.properties
+-./classpath/resource/java/util/weeks.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/java/util/weeks.properties
+ ./classpath/resource/java/util/logging/logging.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/java/util/logging/logging.properties
+-./classpath/lib/gnu/javax/security/auth/callback/MessagesBundle.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/javax/security/auth/callback/MessagesBundle.properties
+-./classpath/lib/gnu/javax/print/PrinterDialog_de.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/javax/print/PrinterDialog_de.properties
+-./classpath/lib/gnu/javax/print/PrinterDialog.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/javax/print/PrinterDialog.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ts.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ts.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_GB.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_GB.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_US.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_US.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_BZ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_BZ.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_rw.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_rw.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_hy_AM.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_hy_AM.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ps.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ps.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_mn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_mn.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_nb_NO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_nb_NO.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_IE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_IE.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_pt_BR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_pt_BR.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_lo_LA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_lo_LA.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_cch.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_cch.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_gu.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_gu.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_so_SO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_so_SO.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_et.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_et.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ml.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ml.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_lt_LT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_lt_LT.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ny.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ny.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_nl_NL.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_nl_NL.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_pa.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_pa.properties
++./classpath/resource/java/util/weeks.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/java/util/weeks.properties
++./classpath/resource/javax/imageio/plugins/jpeg/MessagesBundle.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/javax/imageio/plugins/jpeg/MessagesBundle.properties
++./classpath/resource/org/ietf/jgss/MessagesBundle.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/resource/org/ietf/jgss/MessagesBundle.properties
++./classpath/tools/external/asm/org/objectweb/asm/optimizer/shrink.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/external/asm/org/objectweb/asm/optimizer/shrink.properties
++./classpath/tools/resource/com/sun/tools/javac/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/com/sun/tools/javac/messages.properties
++./classpath/tools/resource/gnu/classpath/tools/appletviewer/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/appletviewer/messages.properties
++./classpath/tools/resource/gnu/classpath/tools/common/Messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/common/Messages.properties
++./classpath/tools/resource/gnu/classpath/tools/getopt/Messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/getopt/Messages.properties
++./classpath/tools/resource/gnu/classpath/tools/gjdoc/htmldoclet/HtmlDoclet.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/gjdoc/htmldoclet/HtmlDoclet.properties
++./classpath/tools/resource/gnu/classpath/tools/jar/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/jar/messages.properties
++./classpath/tools/resource/gnu/classpath/tools/jarsigner/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/jarsigner/messages.properties
++./classpath/tools/resource/gnu/classpath/tools/keytool/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/keytool/messages.properties
++./classpath/tools/resource/gnu/classpath/tools/native2ascii/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/native2ascii/messages.properties
++./classpath/tools/resource/gnu/classpath/tools/orbd/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/orbd/messages.properties
++./classpath/tools/resource/gnu/classpath/tools/rmic/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/rmic/messages.properties
++./classpath/tools/resource/gnu/classpath/tools/rmid/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/rmid/messages.properties
++./classpath/tools/resource/gnu/classpath/tools/rmiregistry/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/rmiregistry/messages.properties
++./classpath/tools/resource/gnu/classpath/tools/serialver/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/serialver/messages.properties
++./classpath/tools/resource/gnu/classpath/tools/tnameserv/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/gnu/classpath/tools/tnameserv/messages.properties
++./classpath/tools/resource/sun/rmi/rmic/messages.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/tools/resource/sun/rmi/rmic/messages.properties
++./classpath/lib/gnu/java/awt/font/fonts.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/awt/font/fonts.properties
++./classpath/lib/gnu/java/awt/peer/gtk/font.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/awt/peer/gtk/font.properties
++./classpath/lib/gnu/java/awt/peer/x/fonts.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/awt/peer/x/fonts.properties
++./classpath/lib/gnu/java/awt/peer/x/xfonts.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/awt/peer/x/xfonts.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_kw_GB.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kw_GB.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_om_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_om_ET.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_as.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_as.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_es_SV.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_SV.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_fr_LU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fr_LU.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_es_HN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_HN.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_es_UY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_UY.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ti_ER.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ti_ER.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_fil.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fil.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_th.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_th.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_wo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_wo.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_sk_SK.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sk_SK.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_sq_AL.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sq_AL.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ssy.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ssy.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_es_AR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_AR.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_om.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_om.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ti_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ti_ET.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_uz_Latn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_uz_Latn.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_NZ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_NZ.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_mk.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_mk.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ha.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ha.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_xh.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_xh.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_sr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sr.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_sv.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sv.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ar_JO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ar_JO.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ar_TN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ar_TN.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_bo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_bo.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ro.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ro.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_hr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_hr.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ha_Arab.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ha_Arab.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_ZA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_ZA.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_sr_ME_Latn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sr_ME_Latn.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_my.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_my.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_el.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_el.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_dv_MV.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_dv_MV.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_aa_ER.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_aa_ER.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_es_PR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_PR.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ar_YE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ar_YE.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_AU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_AU.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ga.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ga.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_sq.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sq.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_nn_NO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_nn_NO.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ka.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ka.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ar_DZ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ar_DZ.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_lv_LV.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_lv_LV.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_sr_BA_Latn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sr_BA_Latn.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_bn_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_bn_IN.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_es_VE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_VE.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_wal_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_wal_ET.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_sk.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sk.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_syr_SY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_syr_SY.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_sa_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sa_IN.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ar_LB.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ar_LB.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ur_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ur_IN.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ca_ES.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ca_ES.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_it.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_it.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ti.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ti.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_fur.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fur.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_CA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_CA.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_MT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_MT.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_kcg.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kcg.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_ZW.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_ZW.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_nn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_nn.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_iu.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_iu.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_kn_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kn_IN.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_tig_ER.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_tig_ER.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_es_PA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_PA.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_el_GR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_el_GR.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_pa_Arab.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_pa_Arab.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_pt_PT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_pt_PT.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_gez.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_gez.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_is_IS.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_is_IS.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_kfo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kfo.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_tr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_tr.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_gv.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_gv.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_sr_Latn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sr_Latn.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_kk_KZ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kk_KZ.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_lt.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_lt.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_gez_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_gez_ET.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ta_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ta_IN.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_mr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_mr.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_ZA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_ZA.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_af.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_af.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ar_MA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ar_MA.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_de_AT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_de_AT.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_tig.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_tig.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_de_DE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_de_DE.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_fr_CA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fr_CA.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_sl_SI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sl_SI.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_pt.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_pt.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_kk.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kk.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_am_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_am_ET.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_hi.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_hi.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ko.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ko.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_fo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fo.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_kok.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kok.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_dz.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_dz.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_hy_AM.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_hy_AM.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_nl_NL.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_nl_NL.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_gez.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_gez.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ti_ER.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ti_ER.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_es_PA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_PA.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ar.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ar.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_sk_SK.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sk_SK.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ca.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ca.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_pl_PL.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_pl_PL.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_el_CY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_el_CY.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ia.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ia.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ps_AF.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ps_AF.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_hr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_hr.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ku.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ku.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_or_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_or_IN.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_es_CO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_CO.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_es_GT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_GT.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_kam.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kam.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_es_EC.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_EC.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_he_IL.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_he_IL.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_sa.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sa.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_fi_FI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fi_FI.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_pt_PT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_pt_PT.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_cy.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_cy.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_vi.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_vi.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_BW.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_BW.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_id.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_id.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_eo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_eo.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_nb_NO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_nb_NO.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_kk_KZ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kk_KZ.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_BE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_BE.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_xh.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_xh.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_et_EE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_et_EE.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_so_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_so_ET.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_es_ES.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_ES.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ru_UA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ru_UA.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_CA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_CA.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_si.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_si.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_es_CR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_CR.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_nn_NO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_nn_NO.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_fr_CH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fr_CH.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_de_BE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_de_BE.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_he.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_he.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_BZ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_BZ.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ru.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ru.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_fil.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fil.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_mr_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_mr_IN.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_es_EC.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_EC.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_fa.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fa.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_fo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fo.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_dv.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_dv.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_de.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_de.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_fa_AF.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fa_AF.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ja.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ja.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_rw.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_rw.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ja_JP.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ja_JP.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_bs.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_bs.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ar_YE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ar_YE.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_es_PR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_PR.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_aa_ER.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_aa_ER.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_cch.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_cch.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_JM.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_JM.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_ZW.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_ZW.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_cs_CZ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_cs_CZ.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_US_POSIX.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_US_POSIX.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_gu.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_gu.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_gl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_gl.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_aa_ER_SAAHO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_aa_ER_SAAHO.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_kl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kl.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ka.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ka.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_kfo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kfo.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_kaj.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kaj.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_my.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_my.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ur_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ur_IN.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_pt_BR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_pt_BR.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_sid_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sid_ET.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ln.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ln.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_es_PE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_PE.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_am.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_am.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ro_RO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ro_RO.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_mk.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_mk.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_sq_AL.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sq_AL.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_uk.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_uk.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_or.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_or.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_az.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_az.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_MP.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_MP.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_hi_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_hi_IN.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ii.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ii.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ko.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ko.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_wo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_wo.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ar_LB.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ar_LB.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_Dsrt.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_Dsrt.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_uz_AF_Arab.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_uz_AF_Arab.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ga_IE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ga_IE.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_trv.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_trv.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_sv.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sv.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_es_UY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_UY.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_de_LI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_de_LI.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ve.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ve.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_el.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_el.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_sl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sl.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ha_Arab.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ha_Arab.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_af_NA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_af_NA.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_sv_SE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sv_SE.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ta.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ta.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_cy_GB.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_cy_GB.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_syr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_syr.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_id.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_id.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_sid.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sid.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_MH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_MH.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ro_RO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ro_RO.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_tt_RU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_tt_RU.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_nl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_nl.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_US_POSIX.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_US_POSIX.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_kl_GL.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kl_GL.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_da.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_da.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_se.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_se.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_te.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_te.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_sr_BA_Cyrl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sr_BA_Cyrl.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_hu.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_hu.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_lv.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_lv.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_uz_Latn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_uz_Latn.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_haw.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_haw.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_it_CH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_it_CH.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_yo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_yo.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_NA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_NA.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_kok_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kok_IN.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_is.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_is.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ru_RU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ru_RU.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_SG.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_SG.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_PH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_PH.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_kpe.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kpe.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_st.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_st.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_km_KH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_km_KH.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ca_ES.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ca_ES.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_es_DO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_DO.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_es_PY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_PY.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_es_MX.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_MX.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_sr_Cyrl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sr_Cyrl.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_mn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_mn.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ar_SA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ar_SA.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_MT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_MT.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_fi.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fi.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_cs.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_cs.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_es_ES.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_ES.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_MH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_MH.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_hy_AM_REVISED.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_hy_AM_REVISED.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_de_AT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_de_AT.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_wal_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_wal_ET.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_es_BO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_BO.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_es.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_iu.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_iu.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_mt_MT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_mt_MT.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ar_QA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ar_QA.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_fo_FO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fo_FO.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_sr_BA_Latn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sr_BA_Latn.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_sr_Latn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sr_Latn.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_bo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_bo.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_be_BY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_be_BY.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_NA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_NA.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_te_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_te_IN.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_bg.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_bg.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_cs_CZ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_cs_CZ.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_sid_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sid_ET.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_fa.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fa.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_sr_BA_Cyrl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sr_BA_Cyrl.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_te.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_te.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_byn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_byn.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ar_SA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ar_SA.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_sv_FI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sv_FI.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ig.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ig.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_es_MX.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_MX.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_ms_BN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ms_BN.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_sw.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sw.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_cs.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_cs.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_gv_GB.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_gv_GB.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_sl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sl.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_am.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_am.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_gl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_gl.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_he_IL.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_he_IL.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_kcg.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kcg.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ps.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ps.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_sr_ME_Latn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sr_ME_Latn.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ku_Latn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ku_Latn.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_cy_GB.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_cy_GB.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_GB.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_GB.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_dz.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_dz.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_hy.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_hy.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_as_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_as_IN.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ms.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ms.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_so_DJ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_so_DJ.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_MP.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_MP.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_da.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_da.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_cop.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_cop.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_nb.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_nb.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_sr_RS_Latn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sr_RS_Latn.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_it.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_it.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_gu_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_gu_IN.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_tt_RU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_tt_RU.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_uz.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_uz.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_tt.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_tt.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ar_MA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ar_MA.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_da_DK.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_da_DK.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_aa_DJ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_aa_DJ.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_nl_BE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_nl_BE.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ts.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ts.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_zh_HK_Hant.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_zh_HK_Hant.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_af_ZA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_af_ZA.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_aa_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_aa_ET.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_sa.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sa.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_kl_GL.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kl_GL.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_IN.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_zh_SG_Hans.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_zh_SG_Hans.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_tig.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_tig.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_UM.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_UM.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_gaa.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_gaa.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ms_MY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ms_MY.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_km.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_km.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_kaj.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kaj.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ii.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ii.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ku.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ku.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_te_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_te_IN.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_zu.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_zu.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_se_FI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_se_FI.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_gez_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_gez_ET.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ssy.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ssy.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_kn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kn.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_syr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_syr.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ku_Arab.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ku_Arab.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_tg.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_tg.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ko_KR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ko_KR.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_Shaw.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_Shaw.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_uz_Arab.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_uz_Arab.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_gez_ER.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_gez_ER.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_pa_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_pa_IN.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_tr_TR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_tr_TR.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_gl_ES.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_gl_ES.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_GU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_GU.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_mr_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_mr_IN.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_es_AR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_AR.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_nso.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_nso.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_as_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_as_IN.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_hi_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_hi_IN.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ru_RU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ru_RU.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ve.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ve.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_HK.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_HK.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_es_DO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_DO.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_trv.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_trv.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_de.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_de.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ml_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ml_IN.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_de_DE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_de_DE.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_uz.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_uz.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_so_KE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_so_KE.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_BE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_BE.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_zh_Hant.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_zh_Hant.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_de_BE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_de_BE.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_hi.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_hi.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_is.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_is.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_eu_ES.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_eu_ES.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ig.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ig.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_mt.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_mt.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_pa_Arab.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_pa_Arab.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_kk.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kk.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_lo_LA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_lo_LA.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_AS.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_AS.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_zh_MO_Hant.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_zh_MO_Hant.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_sw_KE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sw_KE.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_gv.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_gv.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ar_SY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ar_SY.properties
++./classpath/lib/gnu/java/locale/LocaleInformation.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_fa_IR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fa_IR.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ti.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ti.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_to.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_to.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ar_TN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ar_TN.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_tr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_tr.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_tn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_tn.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_lo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_lo.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_nr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_nr.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_be_BY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_be_BY.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_eo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_eo.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ak.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ak.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ko_KR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ko_KR.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_th_TH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_th_TH.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_es_PY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_PY.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_fr_BE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fr_BE.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_BW.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_BW.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_fr_CA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fr_CA.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_zh_SG_Hans.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_zh_SG_Hans.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_tr_TR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_tr_TR.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_om.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_om.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_id_ID.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_id_ID.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_sv_FI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sv_FI.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_lv_LV.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_lv_LV.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ta.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ta.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_VI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_VI.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_zh_TW_Hant.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_zh_TW_Hant.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ug.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ug.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_US.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_US.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ro.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ro.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_zu.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_zu.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_fr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fr.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ja.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ja.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ar.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ar.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_kpe.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kpe.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_sl_SI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sl_SI.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ta_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ta_IN.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_to.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_to.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_zh_CN_Hans.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_zh_CN_Hans.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_fur.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fur.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_be.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_be.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_HK.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_HK.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_es_NI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_NI.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_lt.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_lt.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_az.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_az.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_TT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_TT.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_byn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_byn.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_sw.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sw.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_so_SO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_so_SO.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_am_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_am_ET.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_IE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_IE.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ml.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ml.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_pa.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_pa.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ar_DZ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ar_DZ.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ak.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ak.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_so.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_so.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ms_MY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ms_MY.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_bg_BG.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_bg_BG.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_wal.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_wal.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_mr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_mr.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_fo_FO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fo_FO.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_fr_CH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fr_CH.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_pl_PL.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_pl_PL.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_nl_BE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_nl_BE.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_es.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_zh_HK_Hant.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_zh_HK_Hant.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ug.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ug.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_fa_AF.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fa_AF.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_hu.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_hu.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_sw_KE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sw_KE.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_or_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_or_IN.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ga_IE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ga_IE.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_gu_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_gu_IN.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_az_Cyrl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_az_Cyrl.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_id_ID.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_id_ID.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_eu_ES.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_eu_ES.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_JM.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_JM.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_de_CH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_de_CH.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_it_IT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_it_IT.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_fi.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fi.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_et_EE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_et_EE.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_Shaw.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_Shaw.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_dv_MV.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_dv_MV.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_gez_ER.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_gez_ER.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_fr_BE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fr_BE.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ar_JO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ar_JO.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_bn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_bn.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_th_TH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_th_TH.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_kok_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kok_IN.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_sr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sr.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_bn_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_bn_IN.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_uk_UA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_uk_UA.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_PH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_PH.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ru.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ru.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_es_BO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_BO.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_nb.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_nb.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_kw_GB.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kw_GB.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ku_Arab.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ku_Arab.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_om_KE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_om_KE.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_hy.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_hy.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_TT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_TT.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_af_NA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_af_NA.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_mt.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_mt.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_el_CY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_el_CY.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_es_GT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_GT.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ru_UA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ru_UA.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_et.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_et.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_es_SV.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_SV.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_gv_GB.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_gv_GB.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_es_VE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_VE.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_tig_ER.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_tig_ER.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_pa_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_pa_IN.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_nn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_nn.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_haw_US.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_haw_US.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_km.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_km.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_sa_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sa_IN.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_yo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_yo.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_zh_Hant.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_zh_Hant.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_hu_HU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_hu_HU.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_es_CL.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_CL.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ga.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ga.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_syr_SY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_syr_SY.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_GU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_GU.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ss.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ss.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_eu.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_eu.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_ur.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ur.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_om_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_om_ET.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ku_Latn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ku_Latn.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_IN.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_bn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_bn.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_aa_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_aa_ET.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_NZ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_NZ.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_sw_TZ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sw_TZ.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_is_IS.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_is_IS.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_aa.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_aa.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_sr_Cyrl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sr_Cyrl.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_lv.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_lv.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_de_LU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_de_LU.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_es_CR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_CR.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_si.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_si.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_zh_TW_Hant.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_zh_TW_Hant.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_km_KH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_km_KH.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_or.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_or.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_ne.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ne.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_dv.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_dv.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ps_AF.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ps_AF.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_es_CO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_CO.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_st.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_st.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_VI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_VI.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_eu.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_eu.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_AU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_AU.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_se_FI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_se_FI.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_ee.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ee.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ss.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ss.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_cop.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_cop.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_SG.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_SG.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_fa_IR.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fa_IR.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_UM.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_UM.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_de_LI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_de_LI.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_kn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kn.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_be.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_be.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_zh_MO_Hant.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_zh_MO_Hant.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ti_ET.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ti_ET.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_sk.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sk.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_byn_ER.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_byn_ER.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_sr_RS_Latn.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sr_RS_Latn.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_aa_DJ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_aa_DJ.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_da_DK.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_da_DK.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_tg.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_tg.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_PK.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_PK.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_aa_ER_SAAHO.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_aa_ER_SAAHO.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_tt.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_tt.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_de_CH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_de_CH.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_th.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_th.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_it_IT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_it_IT.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_gl_ES.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_gl_ES.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ml_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ml_IN.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_lo.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_lo.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ny.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ny.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_ky.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ky.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_bg_BG.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_bg_BG.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_af_ZA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_af_ZA.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_cy.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_cy.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_zh_CN_Hans.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_zh_CN_Hans.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_haw_US.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_haw_US.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_kl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kl.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_hu_HU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_hu_HU.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ar_QA.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ar_QA.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ia.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ia.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_es_PE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_PE.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_AS.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_AS.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_vi.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_vi.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ar_SY.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ar_SY.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_sw_TZ.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sw_TZ.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_es_NI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_NI.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ja_JP.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ja_JP.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_dz_BT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_dz_BT.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_es_CL.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_CL.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_bs.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_bs.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ca.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ca.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ln.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ln.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_en_Dsrt.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_Dsrt.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_es_US.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_US.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_kw.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kw.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_lt_LT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_lt_LT.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_fr_LU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fr_LU.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_es_HN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_HN.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_kn_IN.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kn_IN.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_sid.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sid.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_se.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_se.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_om_KE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_om_KE.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_sq.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_sq.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_it_CH.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_it_CH.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_so_KE.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_so_KE.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_pl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_pl.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_ms.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ms.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_en_PK.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_en_PK.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_de_LU.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_de_LU.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_ha.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_ha.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_kw.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kw.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_kok.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_kok.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_dz_BT.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_dz_BT.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_nl.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_nl.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_fi_FI.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_fi_FI.properties
+ ./classpath/lib/gnu/java/locale/LocaleInformation_zh.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_zh.properties
+-./classpath/lib/gnu/java/locale/LocaleInformation_hy_AM_REVISED.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_hy_AM_REVISED.properties
+-./classpath/lib/gnu/java/awt/peer/gtk/font.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/awt/peer/gtk/font.properties
+-./classpath/lib/gnu/java/awt/peer/x/fonts.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/awt/peer/x/fonts.properties
+-./classpath/lib/gnu/java/awt/peer/x/xfonts.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/awt/peer/x/xfonts.properties
+-./classpath/lib/gnu/java/awt/font/fonts.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/awt/font/fonts.properties
+-./classpath/lib/gnu/java/util/regex/MessagesBundle_it.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/util/regex/MessagesBundle_it.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_nr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_nr.properties
++./classpath/lib/gnu/java/locale/LocaleInformation_es_US.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/locale/LocaleInformation_es_US.properties
+ ./classpath/lib/gnu/java/util/regex/MessagesBundle.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/util/regex/MessagesBundle.properties
+ ./classpath/lib/gnu/java/util/regex/MessagesBundle_fr.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/util/regex/MessagesBundle_fr.properties
+-./classpath/lib/javax/imageio/plugins/jpeg/MessagesBundle.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/javax/imageio/plugins/jpeg/MessagesBundle.properties
+-./classpath/lib/org/ietf/jgss/MessagesBundle.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/org/ietf/jgss/MessagesBundle.properties
++./classpath/lib/gnu/java/util/regex/MessagesBundle_it.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/java/util/regex/MessagesBundle_it.properties
++./classpath/lib/gnu/javax/print/PrinterDialog.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/javax/print/PrinterDialog.properties
++./classpath/lib/gnu/javax/print/PrinterDialog_de.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/javax/print/PrinterDialog_de.properties
++./classpath/lib/gnu/javax/security/auth/callback/MessagesBundle.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/gnu/javax/security/auth/callback/MessagesBundle.properties
+ ./classpath/lib/java/text/metazones.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/java/text/metazones.properties
+ ./classpath/lib/java/util/iso4217.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/java/util/iso4217.properties
+-./classpath/lib/java/util/weeks.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/java/util/weeks.properties
+ ./classpath/lib/java/util/logging/logging.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/java/util/logging/logging.properties
++./classpath/lib/java/util/weeks.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/java/util/weeks.properties
++./classpath/lib/javax/imageio/plugins/jpeg/MessagesBundle.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/javax/imageio/plugins/jpeg/MessagesBundle.properties
++./classpath/lib/org/ietf/jgss/MessagesBundle.properties [...]/hurd/master.build/[ARCH]/libjava/classpath/lib/./classpath/lib/org/ietf/jgss/MessagesBundle.properties
+ touch resources
+ make[4]: Leaving directory `[...]/hurd/master.build/[ARCH]/libjava/classpath/lib'
+ Making all in doc
+@@ -21843,7 +21822,6 @@
+ make[4]: Entering directory `[...]/hurd/master.build/[ARCH]/libjava/classpath/include'
+ make all-am
+ make[5]: Entering directory `[...]/hurd/master.build/[ARCH]/libjava/classpath/include'
+-make[5]: Nothing to be done for `all-am'.
+ make[5]: Leaving directory `[...]/hurd/master.build/[ARCH]/libjava/classpath/include'
+ make[4]: Leaving directory `[...]/hurd/master.build/[ARCH]/libjava/classpath/include'
+ Making all in native
+@@ -22032,7 +22010,7 @@
+ libtool: compile: [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -DHAVE_CONFIG_H -I. -I../../../../../../../master/libjava/classpath/native/jni/java-math -I../../../include -I../../../../../../../master/libjava/classpath/include -I../../../../../../../master/libjava/classpath/native/jni/classpath -I../../../../../../../master/libjava/classpath/native/jni/native-lib -W -Wall -Wmissing-declarations -Wwrite-strings -Wmissing-prototypes -Wno-long-long -I/usr/include -g -O2 -MT gnu_java_math_GMP.lo -MD -MP -MF .deps/gnu_java_math_GMP.Tpo -c ../../../../../../../master/libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c -fPIC -DPIC -o .libs/gnu_java_math_GMP.o
+ mv -f .deps/gnu_java_math_GMP.Tpo .deps/gnu_java_math_GMP.Plo
+ /bin/dash ../../../libtool --tag=CC --mode=link [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -W -Wall -Wmissing-declarations -Wwrite-strings -Wmissing-prototypes -Wno-long-long -I/usr/include -g -O2 -module -version-info 0:0:0 -no-undefined -lgmp -avoid-version -o libjavamath.la -rpath [...]/hurd/master.build.install/lib//gcj-4.7.0-13 gnu_java_math_GMP.lo ../../../native/jni/classpath/jcl.lo
+-libtool: link: [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -shared .libs/gnu_java_math_GMP.o ../../../native/jni/classpath/.libs/jcl.o /usr/lib/libgmp.so -Wl,-soname -Wl,libjavamath.so -o .libs/libjavamath.so
++libtool: link: [...]/hurd/master.build/./gcc/xgcc -B[...]/hurd/master.build/./gcc/ -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -shared .libs/gnu_java_math_GMP.o ../../../native/jni/classpath/.libs/jcl.o -Wl,-rpath -Wl,/usr/lib/[ARCH] -Wl,-rpath -Wl,/usr/lib/[ARCH] /usr/lib/[ARCH]/libgmp.so -Wl,-soname -Wl,libjavamath.so -o .libs/libjavamath.so
+ libtool: link: ( cd ".libs" && rm -f "libjavamath.la" && ln -s "../libjavamath.la" "libjavamath.la" )
+ make[6]: Leaving directory `[...]/hurd/master.build/[ARCH]/libjava/classpath/native/jni/java-math'
+ make[6]: Entering directory `[...]/hurd/master.build/[ARCH]/libjava/classpath/native/jni'
+@@ -22072,30 +22050,30 @@
+ echo -n > vm-tools.lst; \
+ fi
+ cat classes.lst asm.lst vm-tools.lst > all-classes.lst
+- cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/orbd/messages.properties classes/gnu/classpath/tools/orbd/messages.properties
+- cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/jar/messages.properties classes/gnu/classpath/tools/jar/messages.properties
+- cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/serialver/messages.properties classes/gnu/classpath/tools/serialver/messages.properties
+- cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/tnameserv/messages.properties classes/gnu/classpath/tools/tnameserv/messages.properties
+- cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/rmid/messages.properties classes/gnu/classpath/tools/rmid/messages.properties
+- cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/keytool/messages.properties classes/gnu/classpath/tools/keytool/messages.properties
+- cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/gjdoc/htmldoclet/HtmlDoclet.properties classes/gnu/classpath/tools/gjdoc/htmldoclet/HtmlDoclet.properties
++ cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/appletviewer/messages.properties classes/gnu/classpath/tools/appletviewer/messages.properties
+ cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/common/Messages.properties classes/gnu/classpath/tools/common/Messages.properties
+ cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/getopt/Messages.properties classes/gnu/classpath/tools/getopt/Messages.properties
+- cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/native2ascii/messages.properties classes/gnu/classpath/tools/native2ascii/messages.properties
+- cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/appletviewer/messages.properties classes/gnu/classpath/tools/appletviewer/messages.properties
++ cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/gjdoc/htmldoclet/HtmlDoclet.properties classes/gnu/classpath/tools/gjdoc/htmldoclet/HtmlDoclet.properties
++ cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/jar/messages.properties classes/gnu/classpath/tools/jar/messages.properties
+ cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/jarsigner/messages.properties classes/gnu/classpath/tools/jarsigner/messages.properties
++ cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/keytool/messages.properties classes/gnu/classpath/tools/keytool/messages.properties
++ cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/native2ascii/messages.properties classes/gnu/classpath/tools/native2ascii/messages.properties
++ cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/orbd/messages.properties classes/gnu/classpath/tools/orbd/messages.properties
++ cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/rmic/messages.properties classes/gnu/classpath/tools/rmic/messages.properties
++ cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/rmic/templates/ImplTie.jav classes/gnu/classpath/tools/rmic/templates/ImplTie.jav
++ cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/rmic/templates/Stub.jav classes/gnu/classpath/tools/rmic/templates/Stub.jav
++ cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/rmic/templates/StubMethod.jav classes/gnu/classpath/tools/rmic/templates/StubMethod.jav
+ cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/rmic/templates/StubMethodVoid.jav classes/gnu/classpath/tools/rmic/templates/StubMethodVoid.jav
++ cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/rmic/templates/Stub_12.jav classes/gnu/classpath/tools/rmic/templates/Stub_12.jav
+ cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/rmic/templates/Stub_12Method.jav classes/gnu/classpath/tools/rmic/templates/Stub_12Method.jav
+- cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/rmic/templates/TieMethodVoid.jav classes/gnu/classpath/tools/rmic/templates/TieMethodVoid.jav
++ cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/rmic/templates/Stub_12MethodVoid.jav classes/gnu/classpath/tools/rmic/templates/Stub_12MethodVoid.jav
+ cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/rmic/templates/Tie.jav classes/gnu/classpath/tools/rmic/templates/Tie.jav
+- cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/rmic/templates/Stub_12.jav classes/gnu/classpath/tools/rmic/templates/Stub_12.jav
+- cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/rmic/templates/Stub.jav classes/gnu/classpath/tools/rmic/templates/Stub.jav
+ cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/rmic/templates/TieMethod.jav classes/gnu/classpath/tools/rmic/templates/TieMethod.jav
+- cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/rmic/templates/Stub_12MethodVoid.jav classes/gnu/classpath/tools/rmic/templates/Stub_12MethodVoid.jav
+- cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/rmic/templates/ImplTie.jav classes/gnu/classpath/tools/rmic/templates/ImplTie.jav
+- cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/rmic/templates/StubMethod.jav classes/gnu/classpath/tools/rmic/templates/StubMethod.jav
+- cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/rmic/messages.properties classes/gnu/classpath/tools/rmic/messages.properties
++ cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/rmic/templates/TieMethodVoid.jav classes/gnu/classpath/tools/rmic/templates/TieMethodVoid.jav
++ cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/rmid/messages.properties classes/gnu/classpath/tools/rmid/messages.properties
+ cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/rmiregistry/messages.properties classes/gnu/classpath/tools/rmiregistry/messages.properties
++ cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/serialver/messages.properties classes/gnu/classpath/tools/serialver/messages.properties
++ cp ../../../../../master/libjava/classpath/tools/resource/gnu/classpath/tools/tnameserv/messages.properties classes/gnu/classpath/tools/tnameserv/messages.properties
+ cp ../../../../../master/libjava/classpath/tools/resource/com/sun/tools/javac/messages.properties classes/com/sun/tools/javac/messages.properties
+ cp ../../../../../master/libjava/classpath/tools/resource/sun/rmi/rmic/messages.properties classes/sun/rmi/rmic/messages.properties
+ cp -pR ../../../../../master/libjava/classpath/tools/asm .
+@@ -22337,6 +22315,9 @@
+ /bin/dash ./libtool --tag=CXX --mode=compile [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -DHAVE_CONFIG_H -I. -I../../../master/libjava -I./include -I./gcj -I../../../master/libjava -Iinclude -I../../../master/libjava/include -I../../../master/libjava/classpath/include -Iclasspath/include -I../../../master/libjava/classpath/native/fdlibm -I../../../master/libjava/../boehm-gc/include -I../boehm-gc/include -I../../../master/libjava/libltdl -I../../../master/libjava/libltdl -I../../../master/libjava/.././libjava/../libgcc -I../../../master/libjava/../zlib -I../../../master/libjava/../libffi/include -I../libffi/include -fno-rtti -fnon-call-exceptions -fdollars-in-identifiers -Wswitch-enum -D_FILE_OFFSET_BITS=64 -ffloat-store -fomit-frame-pointer -Usun -Wextra -Wall -D_GNU_SOURCE -DPREFIX="\"[...]/hurd/master.build.install\"" -DTOOLEXECLIBDIR="\"[...]/hurd/master.build.install/lib/\"" -DJAVA_HOME="\"[...]/hurd/master.build.install\"" -DBOOT_CLASS_PATH="\"[...]/hurd/master.build.install/share/java/libgcj-4.7.0.jar\"" -DJAVA_EXT_DIRS="\"[...]/hurd/master.build.install/share/java/ext\"" -DGCJ_ENDORSED_DIRS="\"[...]/hurd/master.build.install/share/java/gcj-endorsed\"" -DGCJ_VERSIONED_LIBDIR="\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13\"" -DPATH_SEPARATOR="\":\"" -DECJ_JAR_FILE="\"\"" -DLIBGCJ_DEFAULT_DATABASE="\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13/classmap.db\"" -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"gcj-4.7.0-13/classmap.db\"" -g -O2 -D_GNU_SOURCE -MT gnu/gcj/util/natGCInfo.lo -MD -MP -MF $depbase.Tpo -c -o gnu/gcj/util/natGCInfo.lo ../../../master/libjava/gnu/gcj/util/natGCInfo.cc &&\
+ mv -f $depbase.Tpo $depbase.Plo
+ libtool: compile: [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -DHAVE_CONFIG_H -I. -I../../../master/libjava -I./include -I./gcj -I../../../master/libjava -Iinclude -I../../../master/libjava/include -I../../../master/libjava/classpath/include -Iclasspath/include -I../../../master/libjava/classpath/native/fdlibm -I../../../master/libjava/../boehm-gc/include -I../boehm-gc/include -I../../../master/libjava/libltdl -I../../../master/libjava/libltdl -I../../../master/libjava/.././libjava/../libgcc -I../../../master/libjava/../zlib -I../../../master/libjava/../libffi/include -I../libffi/include -fno-rtti -fnon-call-exceptions -fdollars-in-identifiers -Wswitch-enum -D_FILE_OFFSET_BITS=64 -ffloat-store -fomit-frame-pointer -Usun -Wextra -Wall -D_GNU_SOURCE -DPREFIX=\"[...]/hurd/master.build.install\" -DTOOLEXECLIBDIR=\"[...]/hurd/master.build.install/lib/\" -DJAVA_HOME=\"[...]/hurd/master.build.install\" -DBOOT_CLASS_PATH=\"[...]/hurd/master.build.install/share/java/libgcj-4.7.0.jar\" -DJAVA_EXT_DIRS=\"[...]/hurd/master.build.install/share/java/ext\" -DGCJ_ENDORSED_DIRS=\"[...]/hurd/master.build.install/share/java/gcj-endorsed\" -DGCJ_VERSIONED_LIBDIR=\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13\" -DPATH_SEPARATOR=\":\" -DECJ_JAR_FILE=\"\" -DLIBGCJ_DEFAULT_DATABASE=\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13/classmap.db\" -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL=\"gcj-4.7.0-13/classmap.db\" -g -O2 -D_GNU_SOURCE -MT gnu/gcj/util/natGCInfo.lo -MD -MP -MF gnu/gcj/util/.deps/natGCInfo.Tpo -c ../../../master/libjava/gnu/gcj/util/natGCInfo.cc -fPIC -DPIC -o gnu/gcj/util/.libs/natGCInfo.o
++../../../master/libjava/gnu/gcj/util/natGCInfo.cc:440:1: warning: unused parameter 'name' [-Wunused-parameter]
++../../../master/libjava/gnu/gcj/util/natGCInfo.cc:446:1: warning: unused parameter 'name' [-Wunused-parameter]
++../../../master/libjava/gnu/gcj/util/natGCInfo.cc:452:1: warning: unused parameter 'name' [-Wunused-parameter]
+ depbase=`echo gnu/java/lang/natMainThread.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
+ /bin/dash ./libtool --tag=CXX --mode=compile [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -DHAVE_CONFIG_H -I. -I../../../master/libjava -I./include -I./gcj -I../../../master/libjava -Iinclude -I../../../master/libjava/include -I../../../master/libjava/classpath/include -Iclasspath/include -I../../../master/libjava/classpath/native/fdlibm -I../../../master/libjava/../boehm-gc/include -I../boehm-gc/include -I../../../master/libjava/libltdl -I../../../master/libjava/libltdl -I../../../master/libjava/.././libjava/../libgcc -I../../../master/libjava/../zlib -I../../../master/libjava/../libffi/include -I../libffi/include -fno-rtti -fnon-call-exceptions -fdollars-in-identifiers -Wswitch-enum -D_FILE_OFFSET_BITS=64 -ffloat-store -fomit-frame-pointer -Usun -Wextra -Wall -D_GNU_SOURCE -DPREFIX="\"[...]/hurd/master.build.install\"" -DTOOLEXECLIBDIR="\"[...]/hurd/master.build.install/lib/\"" -DJAVA_HOME="\"[...]/hurd/master.build.install\"" -DBOOT_CLASS_PATH="\"[...]/hurd/master.build.install/share/java/libgcj-4.7.0.jar\"" -DJAVA_EXT_DIRS="\"[...]/hurd/master.build.install/share/java/ext\"" -DGCJ_ENDORSED_DIRS="\"[...]/hurd/master.build.install/share/java/gcj-endorsed\"" -DGCJ_VERSIONED_LIBDIR="\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13\"" -DPATH_SEPARATOR="\":\"" -DECJ_JAR_FILE="\"\"" -DLIBGCJ_DEFAULT_DATABASE="\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13/classmap.db\"" -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"gcj-4.7.0-13/classmap.db\"" -g -O2 -D_GNU_SOURCE -MT gnu/java/lang/natMainThread.lo -MD -MP -MF $depbase.Tpo -c -o gnu/java/lang/natMainThread.lo ../../../master/libjava/gnu/java/lang/natMainThread.cc &&\
+ mv -f $depbase.Tpo $depbase.Plo
+@@ -22385,6 +22366,8 @@
+ /bin/dash ./libtool --tag=CXX --mode=compile [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -DHAVE_CONFIG_H -I. -I../../../master/libjava -I./include -I./gcj -I../../../master/libjava -Iinclude -I../../../master/libjava/include -I../../../master/libjava/classpath/include -Iclasspath/include -I../../../master/libjava/classpath/native/fdlibm -I../../../master/libjava/../boehm-gc/include -I../boehm-gc/include -I../../../master/libjava/libltdl -I../../../master/libjava/libltdl -I../../../master/libjava/.././libjava/../libgcc -I../../../master/libjava/../zlib -I../../../master/libjava/../libffi/include -I../libffi/include -fno-rtti -fnon-call-exceptions -fdollars-in-identifiers -Wswitch-enum -D_FILE_OFFSET_BITS=64 -ffloat-store -fomit-frame-pointer -Usun -Wextra -Wall -D_GNU_SOURCE -DPREFIX="\"[...]/hurd/master.build.install\"" -DTOOLEXECLIBDIR="\"[...]/hurd/master.build.install/lib/\"" -DJAVA_HOME="\"[...]/hurd/master.build.install\"" -DBOOT_CLASS_PATH="\"[...]/hurd/master.build.install/share/java/libgcj-4.7.0.jar\"" -DJAVA_EXT_DIRS="\"[...]/hurd/master.build.install/share/java/ext\"" -DGCJ_ENDORSED_DIRS="\"[...]/hurd/master.build.install/share/java/gcj-endorsed\"" -DGCJ_VERSIONED_LIBDIR="\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13\"" -DPATH_SEPARATOR="\":\"" -DECJ_JAR_FILE="\"\"" -DLIBGCJ_DEFAULT_DATABASE="\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13/classmap.db\"" -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"gcj-4.7.0-13/classmap.db\"" -g -O2 -D_GNU_SOURCE -MT gnu/java/net/natPlainSocketImpl.lo -MD -MP -MF $depbase.Tpo -c -o gnu/java/net/natPlainSocketImpl.lo gnu/java/net/natPlainSocketImpl.cc &&\
+ mv -f $depbase.Tpo $depbase.Plo
+ libtool: compile: [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -DHAVE_CONFIG_H -I. -I../../../master/libjava -I./include -I./gcj -I../../../master/libjava -Iinclude -I../../../master/libjava/include -I../../../master/libjava/classpath/include -Iclasspath/include -I../../../master/libjava/classpath/native/fdlibm -I../../../master/libjava/../boehm-gc/include -I../boehm-gc/include -I../../../master/libjava/libltdl -I../../../master/libjava/libltdl -I../../../master/libjava/.././libjava/../libgcc -I../../../master/libjava/../zlib -I../../../master/libjava/../libffi/include -I../libffi/include -fno-rtti -fnon-call-exceptions -fdollars-in-identifiers -Wswitch-enum -D_FILE_OFFSET_BITS=64 -ffloat-store -fomit-frame-pointer -Usun -Wextra -Wall -D_GNU_SOURCE -DPREFIX=\"[...]/hurd/master.build.install\" -DTOOLEXECLIBDIR=\"[...]/hurd/master.build.install/lib/\" -DJAVA_HOME=\"[...]/hurd/master.build.install\" -DBOOT_CLASS_PATH=\"[...]/hurd/master.build.install/share/java/libgcj-4.7.0.jar\" -DJAVA_EXT_DIRS=\"[...]/hurd/master.build.install/share/java/ext\" -DGCJ_ENDORSED_DIRS=\"[...]/hurd/master.build.install/share/java/gcj-endorsed\" -DGCJ_VERSIONED_LIBDIR=\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13\" -DPATH_SEPARATOR=\":\" -DECJ_JAR_FILE=\"\" -DLIBGCJ_DEFAULT_DATABASE=\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13/classmap.db\" -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL=\"gcj-4.7.0-13/classmap.db\" -g -O2 -D_GNU_SOURCE -MT gnu/java/net/natPlainSocketImpl.lo -MD -MP -MF gnu/java/net/.deps/natPlainSocketImpl.Tpo -c gnu/java/net/natPlainSocketImpl.cc -fPIC -DPIC -o gnu/java/net/.libs/natPlainSocketImpl.o
++gnu/java/net/natPlainSocketImpl.cc: In member function 'virtual jint gnu::java::net::PlainSocketImpl::available()':
++gnu/java/net/natPlainSocketImpl.cc:515:27: warning: enumeral and non-enumeral type in conditional expression [enabled by default]
+ depbase=`echo gnu/java/net/protocol/core/natCoreInputStream.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
+ /bin/dash ./libtool --tag=CXX --mode=compile [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -DHAVE_CONFIG_H -I. -I../../../master/libjava -I./include -I./gcj -I../../../master/libjava -Iinclude -I../../../master/libjava/include -I../../../master/libjava/classpath/include -Iclasspath/include -I../../../master/libjava/classpath/native/fdlibm -I../../../master/libjava/../boehm-gc/include -I../boehm-gc/include -I../../../master/libjava/libltdl -I../../../master/libjava/libltdl -I../../../master/libjava/.././libjava/../libgcc -I../../../master/libjava/../zlib -I../../../master/libjava/../libffi/include -I../libffi/include -fno-rtti -fnon-call-exceptions -fdollars-in-identifiers -Wswitch-enum -D_FILE_OFFSET_BITS=64 -ffloat-store -fomit-frame-pointer -Usun -Wextra -Wall -D_GNU_SOURCE -DPREFIX="\"[...]/hurd/master.build.install\"" -DTOOLEXECLIBDIR="\"[...]/hurd/master.build.install/lib/\"" -DJAVA_HOME="\"[...]/hurd/master.build.install\"" -DBOOT_CLASS_PATH="\"[...]/hurd/master.build.install/share/java/libgcj-4.7.0.jar\"" -DJAVA_EXT_DIRS="\"[...]/hurd/master.build.install/share/java/ext\"" -DGCJ_ENDORSED_DIRS="\"[...]/hurd/master.build.install/share/java/gcj-endorsed\"" -DGCJ_VERSIONED_LIBDIR="\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13\"" -DPATH_SEPARATOR="\":\"" -DECJ_JAR_FILE="\"\"" -DLIBGCJ_DEFAULT_DATABASE="\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13/classmap.db\"" -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"gcj-4.7.0-13/classmap.db\"" -g -O2 -D_GNU_SOURCE -MT gnu/java/net/protocol/core/natCoreInputStream.lo -MD -MP -MF $depbase.Tpo -c -o gnu/java/net/protocol/core/natCoreInputStream.lo ../../../master/libjava/gnu/java/net/protocol/core/natCoreInputStream.cc &&\
+ mv -f $depbase.Tpo $depbase.Plo
+@@ -22409,6 +22392,8 @@
+ /bin/dash ./libtool --tag=CXX --mode=compile [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -DHAVE_CONFIG_H -I. -I../../../master/libjava -I./include -I./gcj -I../../../master/libjava -Iinclude -I../../../master/libjava/include -I../../../master/libjava/classpath/include -Iclasspath/include -I../../../master/libjava/classpath/native/fdlibm -I../../../master/libjava/../boehm-gc/include -I../boehm-gc/include -I../../../master/libjava/libltdl -I../../../master/libjava/libltdl -I../../../master/libjava/.././libjava/../libgcc -I../../../master/libjava/../zlib -I../../../master/libjava/../libffi/include -I../libffi/include -fno-rtti -fnon-call-exceptions -fdollars-in-identifiers -Wswitch-enum -D_FILE_OFFSET_BITS=64 -ffloat-store -fomit-frame-pointer -Usun -Wextra -Wall -D_GNU_SOURCE -DPREFIX="\"[...]/hurd/master.build.install\"" -DTOOLEXECLIBDIR="\"[...]/hurd/master.build.install/lib/\"" -DJAVA_HOME="\"[...]/hurd/master.build.install\"" -DBOOT_CLASS_PATH="\"[...]/hurd/master.build.install/share/java/libgcj-4.7.0.jar\"" -DJAVA_EXT_DIRS="\"[...]/hurd/master.build.install/share/java/ext\"" -DGCJ_ENDORSED_DIRS="\"[...]/hurd/master.build.install/share/java/gcj-endorsed\"" -DGCJ_VERSIONED_LIBDIR="\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13\"" -DPATH_SEPARATOR="\":\"" -DECJ_JAR_FILE="\"\"" -DLIBGCJ_DEFAULT_DATABASE="\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13/classmap.db\"" -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"gcj-4.7.0-13/classmap.db\"" -g -O2 -D_GNU_SOURCE -MT gnu/java/nio/channels/natFileChannelImpl.lo -MD -MP -MF $depbase.Tpo -c -o gnu/java/nio/channels/natFileChannelImpl.lo gnu/java/nio/channels/natFileChannelImpl.cc &&\
+ mv -f $depbase.Tpo $depbase.Plo
+ libtool: compile: [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -DHAVE_CONFIG_H -I. -I../../../master/libjava -I./include -I./gcj -I../../../master/libjava -Iinclude -I../../../master/libjava/include -I../../../master/libjava/classpath/include -Iclasspath/include -I../../../master/libjava/classpath/native/fdlibm -I../../../master/libjava/../boehm-gc/include -I../boehm-gc/include -I../../../master/libjava/libltdl -I../../../master/libjava/libltdl -I../../../master/libjava/.././libjava/../libgcc -I../../../master/libjava/../zlib -I../../../master/libjava/../libffi/include -I../libffi/include -fno-rtti -fnon-call-exceptions -fdollars-in-identifiers -Wswitch-enum -D_FILE_OFFSET_BITS=64 -ffloat-store -fomit-frame-pointer -Usun -Wextra -Wall -D_GNU_SOURCE -DPREFIX=\"[...]/hurd/master.build.install\" -DTOOLEXECLIBDIR=\"[...]/hurd/master.build.install/lib/\" -DJAVA_HOME=\"[...]/hurd/master.build.install\" -DBOOT_CLASS_PATH=\"[...]/hurd/master.build.install/share/java/libgcj-4.7.0.jar\" -DJAVA_EXT_DIRS=\"[...]/hurd/master.build.install/share/java/ext\" -DGCJ_ENDORSED_DIRS=\"[...]/hurd/master.build.install/share/java/gcj-endorsed\" -DGCJ_VERSIONED_LIBDIR=\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13\" -DPATH_SEPARATOR=\":\" -DECJ_JAR_FILE=\"\" -DLIBGCJ_DEFAULT_DATABASE=\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13/classmap.db\" -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL=\"gcj-4.7.0-13/classmap.db\" -g -O2 -D_GNU_SOURCE -MT gnu/java/nio/channels/natFileChannelImpl.lo -MD -MP -MF gnu/java/nio/channels/.deps/natFileChannelImpl.Tpo -c gnu/java/nio/channels/natFileChannelImpl.cc -fPIC -DPIC -o gnu/java/nio/channels/.libs/natFileChannelImpl.o
++gnu/java/nio/channels/natFileChannelImpl.cc: In member function 'jint gnu::java::nio::channels::FileChannelImpl::available()':
++gnu/java/nio/channels/natFileChannelImpl.cc:388:20: warning: enumeral and non-enumeral type in conditional expression [enabled by default]
+ depbase=`echo gnu/java/security/jce/prng/natVMSecureRandom.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
+ /bin/dash ./libtool --tag=CXX --mode=compile [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -DHAVE_CONFIG_H -I. -I../../../master/libjava -I./include -I./gcj -I../../../master/libjava -Iinclude -I../../../master/libjava/include -I../../../master/libjava/classpath/include -Iclasspath/include -I../../../master/libjava/classpath/native/fdlibm -I../../../master/libjava/../boehm-gc/include -I../boehm-gc/include -I../../../master/libjava/libltdl -I../../../master/libjava/libltdl -I../../../master/libjava/.././libjava/../libgcc -I../../../master/libjava/../zlib -I../../../master/libjava/../libffi/include -I../libffi/include -fno-rtti -fnon-call-exceptions -fdollars-in-identifiers -Wswitch-enum -D_FILE_OFFSET_BITS=64 -ffloat-store -fomit-frame-pointer -Usun -Wextra -Wall -D_GNU_SOURCE -DPREFIX="\"[...]/hurd/master.build.install\"" -DTOOLEXECLIBDIR="\"[...]/hurd/master.build.install/lib/\"" -DJAVA_HOME="\"[...]/hurd/master.build.install\"" -DBOOT_CLASS_PATH="\"[...]/hurd/master.build.install/share/java/libgcj-4.7.0.jar\"" -DJAVA_EXT_DIRS="\"[...]/hurd/master.build.install/share/java/ext\"" -DGCJ_ENDORSED_DIRS="\"[...]/hurd/master.build.install/share/java/gcj-endorsed\"" -DGCJ_VERSIONED_LIBDIR="\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13\"" -DPATH_SEPARATOR="\":\"" -DECJ_JAR_FILE="\"\"" -DLIBGCJ_DEFAULT_DATABASE="\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13/classmap.db\"" -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"gcj-4.7.0-13/classmap.db\"" -g -O2 -D_GNU_SOURCE -MT gnu/java/security/jce/prng/natVMSecureRandom.lo -MD -MP -MF $depbase.Tpo -c -o gnu/java/security/jce/prng/natVMSecureRandom.lo gnu/java/security/jce/prng/natVMSecureRandom.cc &&\
+ mv -f $depbase.Tpo $depbase.Plo
+@@ -24698,15 +24683,15 @@
+ libtool: link: (cd ".libs" && rm -f "libgcj.so.13" && ln -s "libgcj.so.13.0.0" "libgcj.so.13")
+ libtool: link: (cd ".libs" && rm -f "libgcj.so" && ln -s "libgcj.so.13.0.0" "libgcj.so")
+ libtool: link: ( cd ".libs" && rm -f "libgcj.la" && ln -s "../libgcj.la" "libgcj.la" )
+-/bin/dash ./libtool --tag=CXX --mode=link [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -fno-rtti -fnon-call-exceptions -fdollars-in-identifiers -Wswitch-enum -D_FILE_OFFSET_BITS=64 -ffloat-store -fomit-frame-pointer -Usun -Wextra -Wall -D_GNU_SOURCE -DPREFIX="\"[...]/hurd/master.build.install\"" -DTOOLEXECLIBDIR="\"[...]/hurd/master.build.install/lib/\"" -DJAVA_HOME="\"[...]/hurd/master.build.install\"" -DBOOT_CLASS_PATH="\"[...]/hurd/master.build.install/share/java/libgcj-4.7.0.jar\"" -DJAVA_EXT_DIRS="\"[...]/hurd/master.build.install/share/java/ext\"" -DGCJ_ENDORSED_DIRS="\"[...]/hurd/master.build.install/share/java/gcj-endorsed\"" -DGCJ_VERSIONED_LIBDIR="\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13\"" -DPATH_SEPARATOR="\":\"" -DECJ_JAR_FILE="\"\"" -DLIBGCJ_DEFAULT_DATABASE="\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13/classmap.db\"" -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"gcj-4.7.0-13/classmap.db\"" -g -O2 -D_GNU_SOURCE -o libjvm.la -avoid-version -Wl,-Bsymbolic -rpath [...]/hurd/master.build.install/lib//gcj-4.7.0-13 jni-libjvm.lo -L[...]/hurd/master.build/[ARCH]/libjava/.libs libgcj.la
+-libtool: link: [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -shared -nostdlib /usr/lib/[ARCH]/crti.o [...]/hurd/master.build/./gcc/crtbeginS.o .libs/jni-libjvm.o -Wl,-rpath -Wl,[...]/hurd/master.build/[ARCH]/libjava/.libs -Wl,-rpath -Wl,[...]/hurd/master.build.install/lib/ -L[...]/hurd/master.build/[ARCH]/libjava/.libs -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs ./.libs/libgcj.so -L[...]/hurd/master.build/[ARCH]/libjava -lpthread -lrt -ldl -L[...]/hurd/master.build/./gcc -L/lib/[ARCH] -L/lib/ -L/usr/lib/[ARCH] -L/usr/lib/ -lc -lgcc_s [...]/hurd/master.build/./gcc/crtendS.o /usr/lib/[ARCH]/crtn.o -Wl,-Bsymbolic -Wl,-soname -Wl,libjvm.so -o .libs/libjvm.so
++/bin/dash ./libtool --tag=CXX --mode=link [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -fno-rtti -fnon-call-exceptions -fdollars-in-identifiers -Wswitch-enum -D_FILE_OFFSET_BITS=64 -ffloat-store -fomit-frame-pointer -Usun -Wextra -Wall -D_GNU_SOURCE -DPREFIX="\"[...]/hurd/master.build.install\"" -DTOOLEXECLIBDIR="\"[...]/hurd/master.build.install/lib/\"" -DJAVA_HOME="\"[...]/hurd/master.build.install\"" -DBOOT_CLASS_PATH="\"[...]/hurd/master.build.install/share/java/libgcj-4.7.0.jar\"" -DJAVA_EXT_DIRS="\"[...]/hurd/master.build.install/share/java/ext\"" -DGCJ_ENDORSED_DIRS="\"[...]/hurd/master.build.install/share/java/gcj-endorsed\"" -DGCJ_VERSIONED_LIBDIR="\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13\"" -DPATH_SEPARATOR="\":\"" -DECJ_JAR_FILE="\"\"" -DLIBGCJ_DEFAULT_DATABASE="\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13/classmap.db\"" -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"gcj-4.7.0-13/classmap.db\"" -g -O2 -D_GNU_SOURCE -o libjvm.la -avoid-version -Wl,-Bsymbolic-functions -rpath [...]/hurd/master.build.install/lib//gcj-4.7.0-13 jni-libjvm.lo -L[...]/hurd/master.build/[ARCH]/libjava/.libs libgcj.la
++libtool: link: [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -shared -nostdlib /usr/lib/[ARCH]/crti.o [...]/hurd/master.build/./gcc/crtbeginS.o .libs/jni-libjvm.o -Wl,-rpath -Wl,[...]/hurd/master.build/[ARCH]/libjava/.libs -Wl,-rpath -Wl,[...]/hurd/master.build.install/lib/ -L[...]/hurd/master.build/[ARCH]/libjava/.libs -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs ./.libs/libgcj.so -L[...]/hurd/master.build/[ARCH]/libjava -lpthread -lrt -ldl -L[...]/hurd/master.build/./gcc -L/lib/[ARCH] -L/lib/ -L/usr/lib/[ARCH] -L/usr/lib/ -lc -lgcc_s [...]/hurd/master.build/./gcc/crtendS.o /usr/lib/[ARCH]/crtn.o -Wl,-Bsymbolic-functions -Wl,-soname -Wl,libjvm.so -o .libs/libjvm.so
+ libtool: link: ( cd ".libs" && rm -f "libjvm.la" && ln -s "../libjvm.la" "libjvm.la" )
+ depbase=`echo gij.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
+ /bin/dash ./libtool --tag=CXX --mode=compile [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -DHAVE_CONFIG_H -I. -I../../../master/libjava -I./include -I./gcj -I../../../master/libjava -Iinclude -I../../../master/libjava/include -I../../../master/libjava/classpath/include -Iclasspath/include -I../../../master/libjava/classpath/native/fdlibm -I../../../master/libjava/../boehm-gc/include -I../boehm-gc/include -I../../../master/libjava/libltdl -I../../../master/libjava/libltdl -I../../../master/libjava/.././libjava/../libgcc -I../../../master/libjava/../zlib -I../../../master/libjava/../libffi/include -I../libffi/include -fno-rtti -fnon-call-exceptions -fdollars-in-identifiers -Wswitch-enum -D_FILE_OFFSET_BITS=64 -ffloat-store -fomit-frame-pointer -Usun -Wextra -Wall -D_GNU_SOURCE -DPREFIX="\"[...]/hurd/master.build.install\"" -DTOOLEXECLIBDIR="\"[...]/hurd/master.build.install/lib/\"" -DJAVA_HOME="\"[...]/hurd/master.build.install\"" -DBOOT_CLASS_PATH="\"[...]/hurd/master.build.install/share/java/libgcj-4.7.0.jar\"" -DJAVA_EXT_DIRS="\"[...]/hurd/master.build.install/share/java/ext\"" -DGCJ_ENDORSED_DIRS="\"[...]/hurd/master.build.install/share/java/gcj-endorsed\"" -DGCJ_VERSIONED_LIBDIR="\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13\"" -DPATH_SEPARATOR="\":\"" -DECJ_JAR_FILE="\"\"" -DLIBGCJ_DEFAULT_DATABASE="\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13/classmap.db\"" -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"gcj-4.7.0-13/classmap.db\"" -g -O2 -D_GNU_SOURCE -MT gij.lo -MD -MP -MF $depbase.Tpo -c -o gij.lo ../../../master/libjava/gij.cc &&\
+ mv -f $depbase.Tpo $depbase.Plo
+ libtool: compile: [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -DHAVE_CONFIG_H -I. -I../../../master/libjava -I./include -I./gcj -I../../../master/libjava -Iinclude -I../../../master/libjava/include -I../../../master/libjava/classpath/include -Iclasspath/include -I../../../master/libjava/classpath/native/fdlibm -I../../../master/libjava/../boehm-gc/include -I../boehm-gc/include -I../../../master/libjava/libltdl -I../../../master/libjava/libltdl -I../../../master/libjava/.././libjava/../libgcc -I../../../master/libjava/../zlib -I../../../master/libjava/../libffi/include -I../libffi/include -fno-rtti -fnon-call-exceptions -fdollars-in-identifiers -Wswitch-enum -D_FILE_OFFSET_BITS=64 -ffloat-store -fomit-frame-pointer -Usun -Wextra -Wall -D_GNU_SOURCE -DPREFIX=\"[...]/hurd/master.build.install\" -DTOOLEXECLIBDIR=\"[...]/hurd/master.build.install/lib/\" -DJAVA_HOME=\"[...]/hurd/master.build.install\" -DBOOT_CLASS_PATH=\"[...]/hurd/master.build.install/share/java/libgcj-4.7.0.jar\" -DJAVA_EXT_DIRS=\"[...]/hurd/master.build.install/share/java/ext\" -DGCJ_ENDORSED_DIRS=\"[...]/hurd/master.build.install/share/java/gcj-endorsed\" -DGCJ_VERSIONED_LIBDIR=\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13\" -DPATH_SEPARATOR=\":\" -DECJ_JAR_FILE=\"\" -DLIBGCJ_DEFAULT_DATABASE=\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13/classmap.db\" -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL=\"gcj-4.7.0-13/classmap.db\" -g -O2 -D_GNU_SOURCE -MT gij.lo -MD -MP -MF .deps/gij.Tpo -c ../../../master/libjava/gij.cc -fPIC -DPIC -o .libs/gij.o
+-/bin/dash ./libtool --tag=CXX --mode=link [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -fno-rtti -fnon-call-exceptions -fdollars-in-identifiers -Wswitch-enum -D_FILE_OFFSET_BITS=64 -ffloat-store -fomit-frame-pointer -Usun -Wextra -Wall -D_GNU_SOURCE -DPREFIX="\"[...]/hurd/master.build.install\"" -DTOOLEXECLIBDIR="\"[...]/hurd/master.build.install/lib/\"" -DJAVA_HOME="\"[...]/hurd/master.build.install\"" -DBOOT_CLASS_PATH="\"[...]/hurd/master.build.install/share/java/libgcj-4.7.0.jar\"" -DJAVA_EXT_DIRS="\"[...]/hurd/master.build.install/share/java/ext\"" -DGCJ_ENDORSED_DIRS="\"[...]/hurd/master.build.install/share/java/gcj-endorsed\"" -DGCJ_VERSIONED_LIBDIR="\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13\"" -DPATH_SEPARATOR="\":\"" -DECJ_JAR_FILE="\"\"" -DLIBGCJ_DEFAULT_DATABASE="\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13/classmap.db\"" -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"gcj-4.7.0-13/classmap.db\"" -g -O2 -D_GNU_SOURCE -o libgij.la -rpath [...]/hurd/master.build.install/lib/ -version-info `grep -v '^#' ../../../master/libjava/libtool-version` -Wl,-Bsymbolic -rpath [...]/hurd/master.build.install/lib/ gij.lo -L[...]/hurd/master.build/[ARCH]/libjava/.libs libgcj.la
+-libtool: link: [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -shared -nostdlib /usr/lib/[ARCH]/crti.o [...]/hurd/master.build/./gcc/crtbeginS.o .libs/gij.o -Wl,-rpath -Wl,[...]/hurd/master.build/[ARCH]/libjava/.libs -Wl,-rpath -Wl,[...]/hurd/master.build.install/lib/ -L[...]/hurd/master.build/[ARCH]/libjava/.libs -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs ./.libs/libgcj.so -L[...]/hurd/master.build/[ARCH]/libjava -lpthread -lrt -ldl -L[...]/hurd/master.build/./gcc -L/lib/[ARCH] -L/lib/ -L/usr/lib/[ARCH] -L/usr/lib/ -lc -lgcc_s [...]/hurd/master.build/./gcc/crtendS.o /usr/lib/[ARCH]/crtn.o -Wl,-Bsymbolic -Wl,-soname -Wl,libgij.so.13 -o .libs/libgij.so.13.0.0
++/bin/dash ./libtool --tag=CXX --mode=link [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -fno-rtti -fnon-call-exceptions -fdollars-in-identifiers -Wswitch-enum -D_FILE_OFFSET_BITS=64 -ffloat-store -fomit-frame-pointer -Usun -Wextra -Wall -D_GNU_SOURCE -DPREFIX="\"[...]/hurd/master.build.install\"" -DTOOLEXECLIBDIR="\"[...]/hurd/master.build.install/lib/\"" -DJAVA_HOME="\"[...]/hurd/master.build.install\"" -DBOOT_CLASS_PATH="\"[...]/hurd/master.build.install/share/java/libgcj-4.7.0.jar\"" -DJAVA_EXT_DIRS="\"[...]/hurd/master.build.install/share/java/ext\"" -DGCJ_ENDORSED_DIRS="\"[...]/hurd/master.build.install/share/java/gcj-endorsed\"" -DGCJ_VERSIONED_LIBDIR="\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13\"" -DPATH_SEPARATOR="\":\"" -DECJ_JAR_FILE="\"\"" -DLIBGCJ_DEFAULT_DATABASE="\"[...]/hurd/master.build.install/lib//gcj-4.7.0-13/classmap.db\"" -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"gcj-4.7.0-13/classmap.db\"" -g -O2 -D_GNU_SOURCE -o libgij.la -rpath [...]/hurd/master.build.install/lib/ -version-info `grep -v '^#' ../../../master/libjava/libtool-version` -Wl,-Bsymbolic-functions -rpath [...]/hurd/master.build.install/lib/ gij.lo -L[...]/hurd/master.build/[ARCH]/libjava/.libs libgcj.la
++libtool: link: [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -shared -nostdlib /usr/lib/[ARCH]/crti.o [...]/hurd/master.build/./gcc/crtbeginS.o .libs/gij.o -Wl,-rpath -Wl,[...]/hurd/master.build/[ARCH]/libjava/.libs -Wl,-rpath -Wl,[...]/hurd/master.build.install/lib/ -L[...]/hurd/master.build/[ARCH]/libjava/.libs -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs ./.libs/libgcj.so -L[...]/hurd/master.build/[ARCH]/libjava -lpthread -lrt -ldl -L[...]/hurd/master.build/./gcc -L/lib/[ARCH] -L/lib/ -L/usr/lib/[ARCH] -L/usr/lib/ -lc -lgcc_s [...]/hurd/master.build/./gcc/crtendS.o /usr/lib/[ARCH]/crtn.o -Wl,-Bsymbolic-functions -Wl,-soname -Wl,libgij.so.13 -o .libs/libgij.so.13.0.0
+ libtool: link: (cd ".libs" && rm -f "libgij.so.13" && ln -s "libgij.so.13.0.0" "libgij.so.13")
+ libtool: link: (cd ".libs" && rm -f "libgij.so" && ln -s "libgij.so.13.0.0" "libgij.so")
+ libtool: link: ( cd ".libs" && rm -f "libgij.la" && ln -s "../libgij.la" "libgij.la" )
diff --git a/open_issues/gcc/log_install-hurd.sed b/open_issues/gcc/log_install-hurd.sed
new file mode 100644
index 00000000..9565aaae
--- /dev/null
+++ b/open_issues/gcc/log_install-hurd.sed
@@ -0,0 +1 @@
+s%i686-unknown-gnu0\.3%[ARCH]%g
diff --git a/open_issues/gcc/log_install-linux.sed b/open_issues/gcc/log_install-linux.sed
new file mode 100644
index 00000000..22880cc5
--- /dev/null
+++ b/open_issues/gcc/log_install-linux.sed
@@ -0,0 +1 @@
+s%i686-pc-linux-gnu%[ARCH]%g
diff --git a/open_issues/gcc/log_install.diff b/open_issues/gcc/log_install.diff
new file mode 100644
index 00000000..e7c0241f
--- /dev/null
+++ b/open_issues/gcc/log_install.diff
@@ -0,0 +1,263 @@
+--- /dev/fd/63 2011-07-18 23:38:36.566593099 +0200
++++ /dev/fd/62 2011-07-18 23:38:36.566593099 +0200
+@@ -22,7 +22,6 @@
+ libtool: install: (cd [...]/hurd/master.build.install/libexec/gcc/[ARCH]/4.7.0 && { ln -s -f liblto_plugin.so.0.0.0 liblto_plugin.so.0 || { rm -f liblto_plugin.so.0 && ln -s liblto_plugin.so.0.0.0 liblto_plugin.so.0; }; })
+ libtool: install: (cd [...]/hurd/master.build.install/libexec/gcc/[ARCH]/4.7.0 && { ln -s -f liblto_plugin.so.0.0.0 liblto_plugin.so || { rm -f liblto_plugin.so && ln -s liblto_plugin.so.0.0.0 liblto_plugin.so; }; })
+ libtool: install: /usr/bin/install -c .libs/liblto_plugin.lai [...]/hurd/master.build.install/libexec/gcc/[ARCH]/4.7.0/liblto_plugin.la
+-libtool: finish: PATH="/home/thomas/command-i686:/home/thomas/command:/home/thomas/shared/command:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin" ldconfig -n [...]/hurd/master.build.install/libexec/gcc/[ARCH]/4.7.0
+ ----------------------------------------------------------------------
+ Libraries have been installed in:
+ [...]/hurd/master.build.install/libexec/gcc/[ARCH]/4.7.0
+@@ -429,7 +428,7 @@
+ /bin/dash ../../master/gcc/../move-if-change tmp-header-vars b-header-vars
+ echo timestamp > s-header-vars
+ /bin/dash ../../master/gcc/../mkinstalldirs [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include
+-headers=`echo tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h config.h auto-host.h ../../master/gcc/../include/ansidecl.h system.h hwint.h ../../master/gcc/../include/libiberty.h ../../master/gcc/../include/safe-ctype.h ../../master/gcc/../include/filenames.h coretypes.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/linux-android.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/linux.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/i386/linux.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h toplev.h diagnostic-core.h ../../master/gcc/../libcpp/include/line-map.h input.h bversion.h diagnostic.def basic-block.h predict.h predict.def vec.h statistics.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/linux-android.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/linux.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/i386/linux.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cfghooks.h gimple.h gimple.def gsstruct.def pointer-set.h vec.h statistics.h vecir.h ggc.h gtype-desc.h statistics.h basic-block.h predict.h predict.def vec.h statistics.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/linux-android.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/linux.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/i386/linux.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cfghooks.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/linux-android.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/linux.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/i386/linux.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h target.h target.def target-hooks-macros.h insn-modes.h tree-ssa-operands.h tree-ssa-alias.h internal-fn.h internal-fn.def tree-pass.h timevar.h timevar.def gcc-plugin.h highlev-plugin-common.h config.h auto-host.h ../../master/gcc/../include/ansidecl.h system.h hwint.h ../../master/gcc/../include/libiberty.h ../../master/gcc/../include/safe-ctype.h ../../master/gcc/../include/filenames.h ../../master/gcc/../include/hashtab.h ggc.h gtype-desc.h statistics.h tree-dump.h ../../master/gcc/../include/splay-tree.h tree-pass.h timevar.h timevar.def pretty-print.h ../../master/gcc/../libcpp/include/line-map.h input.h ../../master/gcc/../include/obstack.h ../../master/gcc/../libcpp/include/line-map.h input.h vec.h statistics.h opts.h params.h params.def plugin.def options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/linux-android.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/linux.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/i386/linux.h ../../master/gcc/defaults.h options.h insn-constants.h config/vxworks-dummy.h config/i386/i386.h config/linux-android.h config/i386/unix.h config/i386/att.h config/dbxelf.h config/elfos.h config/gnu-user.h config/glibc-stdint.h config/linux.h config/i386/gnu-user.h config/i386/linux.h defaults.h ../../master/gcc/config/i386/i386-protos.h tm-preds.h config/i386/i386-protos.h tm-preds.h auto-host.h ../../master/gcc/../include/ansidecl.h auto-host.h ansidecl.h auto-host.h ansidecl.h intl.h plugin-version.h configargs.h diagnostic.h diagnostic-core.h ../../master/gcc/../libcpp/include/line-map.h input.h bversion.h diagnostic.def pretty-print.h ../../master/gcc/../libcpp/include/line-map.h input.h ../../master/gcc/../include/obstack.h c-family/c-common.h c-family/c-common.def ../../master/gcc/../include/splay-tree.h ../../master/gcc/../libcpp/include/line-map.h ../../master/gcc/../libcpp/include/cpplib.h ggc.h gtype-desc.h statistics.h diagnostic-core.h ../../master/gcc/../libcpp/include/line-map.h input.h bversion.h diagnostic.def c-family/c-objc.h c-family/c-pretty-print.h pretty-print.h ../../master/gcc/../libcpp/include/line-map.h input.h ../../master/gcc/../include/obstack.h c-family/c-common.h c-family/c-common.def ../../master/gcc/../include/splay-tree.h ../../master/gcc/../libcpp/include/line-map.h ../../master/gcc/../libcpp/include/cpplib.h ggc.h gtype-desc.h statistics.h diagnostic-core.h ../../master/gcc/../libcpp/include/line-map.h input.h bversion.h diagnostic.def tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h tree-iterator.h plugin.h gcc-plugin.h highlev-plugin-common.h config.h auto-host.h ../../master/gcc/../include/ansidecl.h system.h hwint.h ../../master/gcc/../include/libiberty.h ../../master/gcc/../include/safe-ctype.h ../../master/gcc/../include/filenames.h ../../master/gcc/../include/hashtab.h tree-flow.h tree-flow-inline.h tree-ssa-operands.h bitmap.h ../../master/gcc/../include/hashtab.h statistics.h sbitmap.h basic-block.h predict.h predict.def vec.h statistics.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/linux-android.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/linux.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/i386/linux.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cfghooks.h gimple.h gimple.def gsstruct.def pointer-set.h vec.h statistics.h vecir.h ggc.h gtype-desc.h statistics.h basic-block.h predict.h predict.def vec.h statistics.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/linux-android.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/linux.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/i386/linux.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cfghooks.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/linux-android.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/linux.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/i386/linux.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h target.h target.def target-hooks-macros.h insn-modes.h tree-ssa-operands.h tree-ssa-alias.h internal-fn.h internal-fn.def ../../master/gcc/../include/hashtab.h cgraph.h vec.h statistics.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h basic-block.h predict.h predict.def vec.h statistics.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/linux-android.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/linux.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/i386/linux.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cfghooks.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/linux-android.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/linux.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/i386/linux.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cif-code.def ipa-ref.h ipa-ref-inline.h ../../master/gcc/../include/plugin-api.h ipa-reference.h bitmap.h ../../master/gcc/../include/hashtab.h statistics.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h tree-ssa-alias.h langhooks.h incpath.h debug.h except.h ../../master/gcc/../include/hashtab.h vecprim.h vecir.h tree-ssa-sccvn.h real.h output.h ipa-utils.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h cgraph.h vec.h statistics.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h basic-block.h predict.h predict.def vec.h statistics.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/linux-android.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/linux.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/i386/linux.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cfghooks.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/linux-android.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/linux.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/i386/linux.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cif-code.def ipa-ref.h ipa-ref-inline.h ../../master/gcc/../include/plugin-api.h c-family/c-pragma.h ../../master/gcc/../libcpp/include/line-map.h ../../master/gcc/../libcpp/include/cpplib.h ../../master/gcc/../libcpp/include/line-map.h ../../master/gcc/../libcpp/include/cpplib.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/linux-android.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/linux.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/i386/linux.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cppdefault.h flags.h ../../master/gcc/../include/md5.h params.def params.h prefix.h tree-inline.h gimple-pretty-print.h tree-pretty-print.h realmpfr.h ipa-prop.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h vec.h statistics.h cgraph.h vec.h statistics.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h basic-block.h predict.h predict.def vec.h statistics.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/linux-android.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/linux.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/i386/linux.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cfghooks.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/linux-android.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/linux.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/i386/linux.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cif-code.def ipa-ref.h ipa-ref-inline.h ../../master/gcc/../include/plugin-api.h gimple.h gimple.def gsstruct.def pointer-set.h vec.h statistics.h vecir.h ggc.h gtype-desc.h statistics.h basic-block.h predict.h predict.def vec.h statistics.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/linux-android.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/linux.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/i386/linux.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cfghooks.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/linux-android.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/linux.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/i386/linux.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h target.h target.def target-hooks-macros.h insn-modes.h tree-ssa-operands.h tree-ssa-alias.h internal-fn.h internal-fn.def rtl.h rtl.def machmode.h mode-classes.def insn-modes.h reg-notes.def insn-notes.def ../../master/gcc/../libcpp/include/line-map.h input.h real.h machmode.h mode-classes.def insn-modes.h statistics.h vec.h statistics.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h alias.h ../../master/gcc/../include/hashtab.h genrtl.h vecir.h tm_p.h ../../master/gcc/config/i386/i386-protos.h tm-preds.h cfgloop.h basic-block.h predict.h predict.def vec.h statistics.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/linux-android.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/linux.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/i386/linux.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cfghooks.h rtl.h rtl.def machmode.h mode-classes.def insn-modes.h reg-notes.def insn-notes.def ../../master/gcc/../libcpp/include/line-map.h input.h real.h machmode.h mode-classes.def insn-modes.h statistics.h vec.h statistics.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h alias.h ../../master/gcc/../include/hashtab.h genrtl.h vecir.h vecprim.h double-int.h bitmap.h ../../master/gcc/../include/hashtab.h statistics.h sbitmap.h emit-rtl.h version.h | tr ' ' '\012' | sort -u`; \
++headers=`echo tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h config.h auto-host.h ../../master/gcc/../include/ansidecl.h system.h hwint.h ../../master/gcc/../include/libiberty.h ../../master/gcc/../include/safe-ctype.h ../../master/gcc/../include/filenames.h coretypes.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/gnu.h ../../master/gcc/config/i386/gnu.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h toplev.h diagnostic-core.h ../../master/gcc/../libcpp/include/line-map.h input.h bversion.h diagnostic.def basic-block.h predict.h predict.def vec.h statistics.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/gnu.h ../../master/gcc/config/i386/gnu.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cfghooks.h gimple.h gimple.def gsstruct.def pointer-set.h vec.h statistics.h vecir.h ggc.h gtype-desc.h statistics.h basic-block.h predict.h predict.def vec.h statistics.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/gnu.h ../../master/gcc/config/i386/gnu.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cfghooks.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/gnu.h ../../master/gcc/config/i386/gnu.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h target.h target.def target-hooks-macros.h insn-modes.h tree-ssa-operands.h tree-ssa-alias.h internal-fn.h internal-fn.def tree-pass.h timevar.h timevar.def gcc-plugin.h highlev-plugin-common.h config.h auto-host.h ../../master/gcc/../include/ansidecl.h system.h hwint.h ../../master/gcc/../include/libiberty.h ../../master/gcc/../include/safe-ctype.h ../../master/gcc/../include/filenames.h ../../master/gcc/../include/hashtab.h ggc.h gtype-desc.h statistics.h tree-dump.h ../../master/gcc/../include/splay-tree.h tree-pass.h timevar.h timevar.def pretty-print.h ../../master/gcc/../libcpp/include/line-map.h input.h ../../master/gcc/../include/obstack.h ../../master/gcc/../libcpp/include/line-map.h input.h vec.h statistics.h opts.h params.h params.def plugin.def options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/gnu.h ../../master/gcc/config/i386/gnu.h ../../master/gcc/defaults.h options.h insn-constants.h config/vxworks-dummy.h config/i386/i386.h config/i386/unix.h config/i386/att.h config/dbxelf.h config/elfos.h config/gnu-user.h config/glibc-stdint.h config/i386/gnu-user.h config/gnu.h config/i386/gnu.h defaults.h ../../master/gcc/config/i386/i386-protos.h tm-preds.h config/i386/i386-protos.h tm-preds.h auto-host.h ../../master/gcc/../include/ansidecl.h auto-host.h ansidecl.h auto-host.h ansidecl.h intl.h plugin-version.h configargs.h diagnostic.h diagnostic-core.h ../../master/gcc/../libcpp/include/line-map.h input.h bversion.h diagnostic.def pretty-print.h ../../master/gcc/../libcpp/include/line-map.h input.h ../../master/gcc/../include/obstack.h c-family/c-common.h c-family/c-common.def ../../master/gcc/../include/splay-tree.h ../../master/gcc/../libcpp/include/line-map.h ../../master/gcc/../libcpp/include/cpplib.h ggc.h gtype-desc.h statistics.h diagnostic-core.h ../../master/gcc/../libcpp/include/line-map.h input.h bversion.h diagnostic.def c-family/c-objc.h c-family/c-pretty-print.h pretty-print.h ../../master/gcc/../libcpp/include/line-map.h input.h ../../master/gcc/../include/obstack.h c-family/c-common.h c-family/c-common.def ../../master/gcc/../include/splay-tree.h ../../master/gcc/../libcpp/include/line-map.h ../../master/gcc/../libcpp/include/cpplib.h ggc.h gtype-desc.h statistics.h diagnostic-core.h ../../master/gcc/../libcpp/include/line-map.h input.h bversion.h diagnostic.def tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h tree-iterator.h plugin.h gcc-plugin.h highlev-plugin-common.h config.h auto-host.h ../../master/gcc/../include/ansidecl.h system.h hwint.h ../../master/gcc/../include/libiberty.h ../../master/gcc/../include/safe-ctype.h ../../master/gcc/../include/filenames.h ../../master/gcc/../include/hashtab.h tree-flow.h tree-flow-inline.h tree-ssa-operands.h bitmap.h ../../master/gcc/../include/hashtab.h statistics.h sbitmap.h basic-block.h predict.h predict.def vec.h statistics.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/gnu.h ../../master/gcc/config/i386/gnu.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cfghooks.h gimple.h gimple.def gsstruct.def pointer-set.h vec.h statistics.h vecir.h ggc.h gtype-desc.h statistics.h basic-block.h predict.h predict.def vec.h statistics.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/gnu.h ../../master/gcc/config/i386/gnu.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cfghooks.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/gnu.h ../../master/gcc/config/i386/gnu.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h target.h target.def target-hooks-macros.h insn-modes.h tree-ssa-operands.h tree-ssa-alias.h internal-fn.h internal-fn.def ../../master/gcc/../include/hashtab.h cgraph.h vec.h statistics.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h basic-block.h predict.h predict.def vec.h statistics.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/gnu.h ../../master/gcc/config/i386/gnu.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cfghooks.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/gnu.h ../../master/gcc/config/i386/gnu.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cif-code.def ipa-ref.h ipa-ref-inline.h ../../master/gcc/../include/plugin-api.h ipa-reference.h bitmap.h ../../master/gcc/../include/hashtab.h statistics.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h tree-ssa-alias.h langhooks.h incpath.h debug.h except.h ../../master/gcc/../include/hashtab.h vecprim.h vecir.h tree-ssa-sccvn.h real.h output.h ipa-utils.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h cgraph.h vec.h statistics.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h basic-block.h predict.h predict.def vec.h statistics.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/gnu.h ../../master/gcc/config/i386/gnu.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cfghooks.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/gnu.h ../../master/gcc/config/i386/gnu.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cif-code.def ipa-ref.h ipa-ref-inline.h ../../master/gcc/../include/plugin-api.h c-family/c-pragma.h ../../master/gcc/../libcpp/include/line-map.h ../../master/gcc/../libcpp/include/cpplib.h ../../master/gcc/../libcpp/include/line-map.h ../../master/gcc/../libcpp/include/cpplib.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/gnu.h ../../master/gcc/config/i386/gnu.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cppdefault.h flags.h ../../master/gcc/../include/md5.h params.def params.h prefix.h tree-inline.h gimple-pretty-print.h tree-pretty-print.h realmpfr.h ipa-prop.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h vec.h statistics.h cgraph.h vec.h statistics.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h basic-block.h predict.h predict.def vec.h statistics.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/gnu.h ../../master/gcc/config/i386/gnu.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cfghooks.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/gnu.h ../../master/gcc/config/i386/gnu.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cif-code.def ipa-ref.h ipa-ref-inline.h ../../master/gcc/../include/plugin-api.h gimple.h gimple.def gsstruct.def pointer-set.h vec.h statistics.h vecir.h ggc.h gtype-desc.h statistics.h basic-block.h predict.h predict.def vec.h statistics.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/gnu.h ../../master/gcc/config/i386/gnu.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cfghooks.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/gnu.h ../../master/gcc/config/i386/gnu.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h target.h target.def target-hooks-macros.h insn-modes.h tree-ssa-operands.h tree-ssa-alias.h internal-fn.h internal-fn.def rtl.h rtl.def machmode.h mode-classes.def insn-modes.h reg-notes.def insn-notes.def ../../master/gcc/../libcpp/include/line-map.h input.h real.h machmode.h mode-classes.def insn-modes.h statistics.h vec.h statistics.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h alias.h ../../master/gcc/../include/hashtab.h genrtl.h vecir.h tm_p.h ../../master/gcc/config/i386/i386-protos.h tm-preds.h cfgloop.h basic-block.h predict.h predict.def vec.h statistics.h function.h tree.h all-tree.def tree.def c-family/c-common.def ../../master/gcc/ada/gcc-interface/ada-tree.def ../../master/gcc/cp/cp-tree.def ../../master/gcc/java/java-tree.def ../../master/gcc/objc/objc-tree.def machmode.h mode-classes.def insn-modes.h tree-check.h builtins.def sync-builtins.def omp-builtins.def ../../master/gcc/../libcpp/include/line-map.h input.h statistics.h vec.h statistics.h treestruct.def ../../master/gcc/../include/hashtab.h double-int.h alias.h ../../master/gcc/../libcpp/include/symtab.h ../../master/gcc/../include/obstack.h flags.h coretypes.h flag-types.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h vecir.h real.h machmode.h mode-classes.def insn-modes.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h ../../master/gcc/../include/hashtab.h vecprim.h tm.h options.h ../../master/gcc/config/vxworks-dummy.h ../../master/gcc/config/i386/i386.h ../../master/gcc/config/i386/unix.h ../../master/gcc/config/i386/att.h ../../master/gcc/config/dbxelf.h ../../master/gcc/config/elfos.h ../../master/gcc/config/gnu-user.h ../../master/gcc/config/glibc-stdint.h ../../master/gcc/config/i386/gnu-user.h ../../master/gcc/config/gnu.h ../../master/gcc/config/i386/gnu.h ../../master/gcc/defaults.h insn-constants.h libgcc_tm.h insn-flags.h options.h flag-types.h ../../master/gcc/config/i386/i386-opts.h hard-reg-set.h cfghooks.h rtl.h rtl.def machmode.h mode-classes.def insn-modes.h reg-notes.def insn-notes.def ../../master/gcc/../libcpp/include/line-map.h input.h real.h machmode.h mode-classes.def insn-modes.h statistics.h vec.h statistics.h fixed-value.h machmode.h mode-classes.def insn-modes.h double-int.h alias.h ../../master/gcc/../include/hashtab.h genrtl.h vecir.h vecprim.h double-int.h bitmap.h ../../master/gcc/../include/hashtab.h statistics.h sbitmap.h emit-rtl.h version.h | tr ' ' '\012' | sort -u`; \
+ srcdirstrip=`echo "../../master/gcc" | sed 's/[].[^$\\*|]/\\\\&/g'`; \
+ for file in $headers; do \
+ if [ -f $file ] ; then \
+@@ -468,16 +467,15 @@
+ /usr/bin/install -c -m 644 ../../master/gcc/config/elfos.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/elfos.h
+ /usr/bin/install -c -m 644 ../../master/gcc/config/glibc-stdint.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/glibc-stdint.h
+ /usr/bin/install -c -m 644 ../../master/gcc/config/gnu-user.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/gnu-user.h
++/usr/bin/install -c -m 644 ../../master/gcc/config/gnu.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/gnu.h
+ /usr/bin/install -c -m 644 ../../master/gcc/config/i386/att.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/i386/att.h
+ mkdir -p -- [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/i386
+ /usr/bin/install -c -m 644 ../../master/gcc/config/i386/gnu-user.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/i386/gnu-user.h
++/usr/bin/install -c -m 644 ../../master/gcc/config/i386/gnu.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/i386/gnu.h
+ /usr/bin/install -c -m 644 ../../master/gcc/config/i386/i386-opts.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/i386/i386-opts.h
+ /usr/bin/install -c -m 644 ../../master/gcc/config/i386/i386-protos.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/i386/i386-protos.h
+ /usr/bin/install -c -m 644 ../../master/gcc/config/i386/i386.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/i386/i386.h
+-/usr/bin/install -c -m 644 ../../master/gcc/config/i386/linux.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/i386/linux.h
+ /usr/bin/install -c -m 644 ../../master/gcc/config/i386/unix.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/i386/unix.h
+-/usr/bin/install -c -m 644 ../../master/gcc/config/linux-android.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/linux-android.h
+-/usr/bin/install -c -m 644 ../../master/gcc/config/linux.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/linux.h
+ /usr/bin/install -c -m 644 ../../master/gcc/config/vxworks-dummy.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/vxworks-dummy.h
+ /usr/bin/install -c -m 644 ../../master/gcc/cp/cp-tree.def [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/cp/cp-tree.def
+ /usr/bin/install -c -m 644 ../../master/gcc/defaults.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/defaults.h
+@@ -507,14 +505,13 @@
+ /usr/bin/install -c -m 644 ../../master/gcc/config/elfos.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/elfos.h
+ /usr/bin/install -c -m 644 ../../master/gcc/config/glibc-stdint.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/glibc-stdint.h
+ /usr/bin/install -c -m 644 ../../master/gcc/config/gnu-user.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/gnu-user.h
++/usr/bin/install -c -m 644 ../../master/gcc/config/gnu.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/gnu.h
+ /usr/bin/install -c -m 644 ../../master/gcc/config/i386/att.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/i386/att.h
+ /usr/bin/install -c -m 644 ../../master/gcc/config/i386/gnu-user.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/i386/gnu-user.h
++/usr/bin/install -c -m 644 ../../master/gcc/config/i386/gnu.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/i386/gnu.h
+ /usr/bin/install -c -m 644 ../../master/gcc/config/i386/i386-protos.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/i386/i386-protos.h
+ /usr/bin/install -c -m 644 ../../master/gcc/config/i386/i386.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/i386/i386.h
+-/usr/bin/install -c -m 644 ../../master/gcc/config/i386/linux.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/i386/linux.h
+ /usr/bin/install -c -m 644 ../../master/gcc/config/i386/unix.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/i386/unix.h
+-/usr/bin/install -c -m 644 ../../master/gcc/config/linux-android.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/linux-android.h
+-/usr/bin/install -c -m 644 ../../master/gcc/config/linux.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/linux.h
+ /usr/bin/install -c -m 644 ../../master/gcc/config/vxworks-dummy.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/config/vxworks-dummy.h
+ /usr/bin/install -c -m 644 configargs.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/configargs.h
+ /usr/bin/install -c -m 644 ../../master/gcc/coretypes.h [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/plugin/include/coretypes.h
+@@ -801,7 +798,6 @@
+ libtool: install: /usr/bin/install -c .libs/libsupc++.a [...]/hurd/master.build.install/lib/libsupc++.a
+ libtool: install: chmod 644 [...]/hurd/master.build.install/lib/libsupc++.a
+ libtool: install: ranlib [...]/hurd/master.build.install/lib/libsupc++.a
+-libtool: finish: PATH="/home/thomas/command-i686:/home/thomas/command:/home/thomas/shared/command:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin" ldconfig -n [...]/hurd/master.build.install/lib
+ ----------------------------------------------------------------------
+ Libraries have been installed in:
+ [...]/hurd/master.build.install/lib
+@@ -853,7 +849,6 @@
+ libtool: install: /usr/bin/install -c .libs/libstdc++.a [...]/hurd/master.build.install/lib/libstdc++.a
+ libtool: install: chmod 644 [...]/hurd/master.build.install/lib/libstdc++.a
+ libtool: install: ranlib [...]/hurd/master.build.install/lib/libstdc++.a
+-libtool: finish: PATH="/home/thomas/command-i686:/home/thomas/command:/home/thomas/shared/command:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin" ldconfig -n [...]/hurd/master.build.install/lib
+ ----------------------------------------------------------------------
+ Libraries have been installed in:
+ [...]/hurd/master.build.install/lib
+@@ -1129,9 +1124,6 @@
+ libtool: install: /usr/bin/install -c .libs/libmudflapth.a [...]/hurd/master.build.install/lib/libmudflapth.a
+ libtool: install: chmod 644 [...]/hurd/master.build.install/lib/libmudflapth.a
+ libtool: install: ranlib [...]/hurd/master.build.install/lib/libmudflapth.a
+-libtool: finish: PATH="/home/thomas/command-i686:/home/thomas/command:/home/thomas/shared/command:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin" ldconfig -n [...]/hurd/master.build.install/lib
+-ldconfig: [...]/hurd/master.build.install/lib/libstdc++.so.6.0.17-gdb.py is not an ELF file - it has the wrong magic bytes at the start.
+-
+ ----------------------------------------------------------------------
+ Libraries have been installed in:
+ [...]/hurd/master.build.install/lib
+@@ -1264,9 +1256,6 @@
+ libtool: install: /usr/bin/install -c .libs/libssp_nonshared.a [...]/hurd/master.build.install/lib/libssp_nonshared.a
+ libtool: install: chmod 644 [...]/hurd/master.build.install/lib/libssp_nonshared.a
+ libtool: install: ranlib [...]/hurd/master.build.install/lib/libssp_nonshared.a
+-libtool: finish: PATH="/home/thomas/command-i686:/home/thomas/command:/home/thomas/shared/command:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin" ldconfig -n [...]/hurd/master.build.install/lib
+-ldconfig: [...]/hurd/master.build.install/lib/libstdc++.so.6.0.17-gdb.py is not an ELF file - it has the wrong magic bytes at the start.
+-
+ ----------------------------------------------------------------------
+ Libraries have been installed in:
+ [...]/hurd/master.build.install/lib
+@@ -1464,9 +1453,6 @@
+ libtool: install: /usr/bin/install -c .libs/libquadmath.a [...]/hurd/master.build.install/lib/libquadmath.a
+ libtool: install: chmod 644 [...]/hurd/master.build.install/lib/libquadmath.a
+ libtool: install: ranlib [...]/hurd/master.build.install/lib/libquadmath.a
+-libtool: finish: PATH="/home/thomas/command-i686:/home/thomas/command:/home/thomas/shared/command:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin" ldconfig -n [...]/hurd/master.build.install/lib
+-ldconfig: [...]/hurd/master.build.install/lib/libstdc++.so.6.0.17-gdb.py is not an ELF file - it has the wrong magic bytes at the start.
+-
+ ----------------------------------------------------------------------
+ Libraries have been installed in:
+ [...]/hurd/master.build.install/lib
+@@ -1551,7 +1537,6 @@
+ libtool: install: /usr/bin/install -c .libs/libcaf_single.a [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/libcaf_single.a
+ libtool: install: chmod 644 [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/libcaf_single.a
+ libtool: install: ranlib [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/libcaf_single.a
+-libtool: finish: PATH="/home/thomas/command-i686:/home/thomas/command:/home/thomas/shared/command:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin" ldconfig -n [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0
+ ----------------------------------------------------------------------
+ Libraries have been installed in:
+ [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0
+@@ -1623,7 +1608,6 @@
+ libtool: install: /usr/bin/install -c .libs/libgfortranbegin.a [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/libgfortranbegin.a
+ libtool: install: chmod 644 [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/libgfortranbegin.a
+ libtool: install: ranlib [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/libgfortranbegin.a
+-libtool: finish: PATH="/home/thomas/command-i686:/home/thomas/command:/home/thomas/shared/command:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin" ldconfig -n [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0
+ ----------------------------------------------------------------------
+ Libraries have been installed in:
+ [...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0
+@@ -1656,9 +1640,6 @@
+ libtool: install: /usr/bin/install -c .libs/libgfortran.a [...]/hurd/master.build.install/lib/libgfortran.a
+ libtool: install: chmod 644 [...]/hurd/master.build.install/lib/libgfortran.a
+ libtool: install: ranlib [...]/hurd/master.build.install/lib/libgfortran.a
+-libtool: finish: PATH="/home/thomas/command-i686:/home/thomas/command:/home/thomas/shared/command:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin" ldconfig -n [...]/hurd/master.build.install/lib
+-ldconfig: [...]/hurd/master.build.install/lib/libstdc++.so.6.0.17-gdb.py is not an ELF file - it has the wrong magic bytes at the start.
+-
+ ----------------------------------------------------------------------
+ Libraries have been installed in:
+ [...]/hurd/master.build.install/lib
+@@ -1691,9 +1672,6 @@
+ libtool: install: /usr/bin/install -c .libs/libobjc.a [...]/hurd/master.build.install/lib/libobjc.a
+ libtool: install: chmod 644 [...]/hurd/master.build.install/lib/libobjc.a
+ libtool: install: ranlib [...]/hurd/master.build.install/lib/libobjc.a
+-libtool: finish: PATH="/home/thomas/command-i686:/home/thomas/command:/home/thomas/shared/command:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin" ldconfig -n [...]/hurd/master.build.install/lib
+-ldconfig: [...]/hurd/master.build.install/lib/libstdc++.so.6.0.17-gdb.py is not an ELF file - it has the wrong magic bytes at the start.
+-
+ ----------------------------------------------------------------------
+ Libraries have been installed in:
+ [...]/hurd/master.build.install/lib
+@@ -1763,9 +1741,6 @@
+ done; \
+ fi
+ make[3]: Leaving directory `[...]/hurd/master.build/[ARCH]/libobjc'
+-libtool: finish: PATH="/home/thomas/command-i686:/home/thomas/command:/home/thomas/shared/command:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin" ldconfig -n [...]/hurd/master.build.install/lib
+-ldconfig: [...]/hurd/master.build.install/lib/libstdc++.so.6.0.17-gdb.py is not an ELF file - it has the wrong magic bytes at the start.
+-
+ ----------------------------------------------------------------------
+ Libraries have been installed in:
+ [...]/hurd/master.build.install/lib
+@@ -1967,9 +1942,6 @@
+ libtool: install: /usr/bin/install -c .libs/libffi.a [...]/hurd/master.build.install/lib/libffi.a
+ libtool: install: chmod 644 [...]/hurd/master.build.install/lib/libffi.a
+ libtool: install: ranlib [...]/hurd/master.build.install/lib/libffi.a
+-libtool: finish: PATH="/home/thomas/command-i686:/home/thomas/command:/home/thomas/shared/command:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin" ldconfig -n [...]/hurd/master.build.install/lib
+-ldconfig: [...]/hurd/master.build.install/lib/libstdc++.so.6.0.17-gdb.py is not an ELF file - it has the wrong magic bytes at the start.
+-
+ ----------------------------------------------------------------------
+ Libraries have been installed in:
+ [...]/hurd/master.build.install/lib
+@@ -2179,7 +2151,6 @@
+ /bin/dash ../../../libtool --mode=install /usr/bin/install -c libjavamath.la '[...]/hurd/master.build.install/lib/gcj-4.7.0-13'
+ libtool: install: /usr/bin/install -c .libs/libjavamath.so [...]/hurd/master.build.install/lib/gcj-4.7.0-13/libjavamath.so
+ libtool: install: /usr/bin/install -c .libs/libjavamath.lai [...]/hurd/master.build.install/lib/gcj-4.7.0-13/libjavamath.la
+-libtool: finish: PATH="/home/thomas/command-i686:/home/thomas/command:/home/thomas/shared/command:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin" ldconfig -n [...]/hurd/master.build.install/lib/gcj-4.7.0-13
+ ----------------------------------------------------------------------
+ Libraries have been installed in:
+ [...]/hurd/master.build.install/lib/gcj-4.7.0-13
+@@ -2370,11 +2341,10 @@
+ test -z "[...]/hurd/master.build.install/lib/gcj-4.7.0-13" || /bin/mkdir -p "[...]/hurd/master.build.install/lib/gcj-4.7.0-13"
+ /bin/dash ./libtool --mode=install /usr/bin/install -c libjvm.la '[...]/hurd/master.build.install/lib/gcj-4.7.0-13'
+ libtool: install: warning: relinking `libjvm.la'
+-libtool: install: (cd [...]/hurd/master.build/[ARCH]/libjava; /bin/dash [...]/hurd/master.build/[ARCH]/libjava/libtool --tag CXX --mode=relink [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -fno-rtti -fnon-call-exceptions -fdollars-in-identifiers -Wswitch-enum -D_FILE_OFFSET_BITS=64 -ffloat-store -fomit-frame-pointer -Usun -Wextra -Wall -D_GNU_SOURCE -DPREFIX=\"[...]/hurd/master.build.install\" -DTOOLEXECLIBDIR=\"[...]/hurd/master.build.install/lib\" -DJAVA_HOME=\"[...]/hurd/master.build.install\" -DBOOT_CLASS_PATH=\"[...]/hurd/master.build.install/share/java/libgcj-4.7.0.jar\" -DJAVA_EXT_DIRS=\"[...]/hurd/master.build.install/share/java/ext\" -DGCJ_ENDORSED_DIRS=\"[...]/hurd/master.build.install/share/java/gcj-endorsed\" -DGCJ_VERSIONED_LIBDIR=\"[...]/hurd/master.build.install/lib/gcj-4.7.0-13\" -DPATH_SEPARATOR=\":\" -DECJ_JAR_FILE=\"\" -DLIBGCJ_DEFAULT_DATABASE=\"[...]/hurd/master.build.install/lib/gcj-4.7.0-13/classmap.db\" -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL=\"gcj-4.7.0-13/classmap.db\" -g -O2 -D_GNU_SOURCE -o libjvm.la -avoid-version -Wl,-Bsymbolic -rpath [...]/hurd/master.build.install/lib/gcj-4.7.0-13 jni-libjvm.lo -L[...]/hurd/master.build/[ARCH]/libjava/.libs libgcj.la )
+-libtool: relink: [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -shared -nostdlib /usr/lib/i386-linux-gnu/crti.o [...]/hurd/master.build/./gcc/crtbeginS.o .libs/jni-libjvm.o -Wl,-rpath -Wl,[...]/hurd/master.build.install/lib -L[...]/hurd/master.build/[ARCH]/libjava/.libs -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -L[...]/hurd/master.build.install/lib -lgcj -L[...]/hurd/master.build/[ARCH]/libjava -lpthread -lrt -ldl -L[...]/hurd/master.build/./gcc -L/usr/lib/i386-linux-gnu -lc -lgcc_s [...]/hurd/master.build/./gcc/crtendS.o /usr/lib/i386-linux-gnu/crtn.o -Wl,-Bsymbolic -Wl,-soname -Wl,libjvm.so -o .libs/libjvm.so
++libtool: install: (cd [...]/hurd/master.build/[ARCH]/libjava; /bin/dash [...]/hurd/master.build/[ARCH]/libjava/libtool --tag CXX --mode=relink [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -fno-rtti -fnon-call-exceptions -fdollars-in-identifiers -Wswitch-enum -D_FILE_OFFSET_BITS=64 -ffloat-store -fomit-frame-pointer -Usun -Wextra -Wall -D_GNU_SOURCE -DPREFIX=\"[...]/hurd/master.build.install\" -DTOOLEXECLIBDIR=\"[...]/hurd/master.build.install/lib\" -DJAVA_HOME=\"[...]/hurd/master.build.install\" -DBOOT_CLASS_PATH=\"[...]/hurd/master.build.install/share/java/libgcj-4.7.0.jar\" -DJAVA_EXT_DIRS=\"[...]/hurd/master.build.install/share/java/ext\" -DGCJ_ENDORSED_DIRS=\"[...]/hurd/master.build.install/share/java/gcj-endorsed\" -DGCJ_VERSIONED_LIBDIR=\"[...]/hurd/master.build.install/lib/gcj-4.7.0-13\" -DPATH_SEPARATOR=\":\" -DECJ_JAR_FILE=\"\" -DLIBGCJ_DEFAULT_DATABASE=\"[...]/hurd/master.build.install/lib/gcj-4.7.0-13/classmap.db\" -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL=\"gcj-4.7.0-13/classmap.db\" -g -O2 -D_GNU_SOURCE -o libjvm.la -avoid-version -Wl,-Bsymbolic-functions -rpath [...]/hurd/master.build.install/lib/gcj-4.7.0-13 jni-libjvm.lo -L[...]/hurd/master.build/[ARCH]/libjava/.libs libgcj.la )
++libtool: relink: [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -shared -nostdlib /usr/lib/i386-gnu/crti.o [...]/hurd/master.build/./gcc/crtbeginS.o .libs/jni-libjvm.o -Wl,-rpath -Wl,[...]/hurd/master.build.install/lib -L[...]/hurd/master.build/[ARCH]/libjava/.libs -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -L[...]/hurd/master.build.install/lib -lgcj -L[...]/hurd/master.build/[ARCH]/libjava -lpthread -lrt -ldl -L[...]/hurd/master.build/./gcc -L/usr/lib/i386-gnu -lc -lgcc_s [...]/hurd/master.build/./gcc/crtendS.o /usr/lib/i386-gnu/crtn.o -Wl,-Bsymbolic-functions -Wl,-soname -Wl,libjvm.so -o .libs/libjvm.so
+ libtool: install: /usr/bin/install -c .libs/libjvm.soT [...]/hurd/master.build.install/lib/gcj-4.7.0-13/libjvm.so
+ libtool: install: /usr/bin/install -c .libs/libjvm.lai [...]/hurd/master.build.install/lib/gcj-4.7.0-13/libjvm.la
+-libtool: finish: PATH="/home/thomas/command-i686:/home/thomas/command:/home/thomas/shared/command:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin" ldconfig -n [...]/hurd/master.build.install/lib/gcj-4.7.0-13
+ ----------------------------------------------------------------------
+ Libraries have been installed in:
+ [...]/hurd/master.build.install/lib/gcj-4.7.0-13
+@@ -2448,15 +2418,15 @@
+ libtool: install: (cd [...]/hurd/master.build.install/lib && { ln -s -f libgcj.so.13.0.0 libgcj.so || { rm -f libgcj.so && ln -s libgcj.so.13.0.0 libgcj.so; }; })
+ libtool: install: /usr/bin/install -c .libs/libgcj.lai [...]/hurd/master.build.install/lib/libgcj.la
+ libtool: install: warning: relinking `libgij.la'
+-libtool: install: (cd [...]/hurd/master.build/[ARCH]/libjava; /bin/dash [...]/hurd/master.build/[ARCH]/libjava/libtool --tag CXX --mode=relink [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -fno-rtti -fnon-call-exceptions -fdollars-in-identifiers -Wswitch-enum -D_FILE_OFFSET_BITS=64 -ffloat-store -fomit-frame-pointer -Usun -Wextra -Wall -D_GNU_SOURCE -DPREFIX=\"[...]/hurd/master.build.install\" -DTOOLEXECLIBDIR=\"[...]/hurd/master.build.install/lib\" -DJAVA_HOME=\"[...]/hurd/master.build.install\" -DBOOT_CLASS_PATH=\"[...]/hurd/master.build.install/share/java/libgcj-4.7.0.jar\" -DJAVA_EXT_DIRS=\"[...]/hurd/master.build.install/share/java/ext\" -DGCJ_ENDORSED_DIRS=\"[...]/hurd/master.build.install/share/java/gcj-endorsed\" -DGCJ_VERSIONED_LIBDIR=\"[...]/hurd/master.build.install/lib/gcj-4.7.0-13\" -DPATH_SEPARATOR=\":\" -DECJ_JAR_FILE=\"\" -DLIBGCJ_DEFAULT_DATABASE=\"[...]/hurd/master.build.install/lib/gcj-4.7.0-13/classmap.db\" -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL=\"gcj-4.7.0-13/classmap.db\" -g -O2 -D_GNU_SOURCE -o libgij.la -rpath [...]/hurd/master.build.install/lib -version-info 13:0:0 -Wl,-Bsymbolic -rpath [...]/hurd/master.build.install/lib gij.lo -L[...]/hurd/master.build/[ARCH]/libjava/.libs libgcj.la )
+-libtool: relink: [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -shared -nostdlib /usr/lib/i386-linux-gnu/crti.o [...]/hurd/master.build/./gcc/crtbeginS.o .libs/gij.o -Wl,-rpath -Wl,[...]/hurd/master.build.install/lib -L[...]/hurd/master.build/[ARCH]/libjava/.libs -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -L[...]/hurd/master.build.install/lib -lgcj -L[...]/hurd/master.build/[ARCH]/libjava -lpthread -lrt -ldl -L[...]/hurd/master.build/./gcc -L/usr/lib/i386-linux-gnu -lc -lgcc_s [...]/hurd/master.build/./gcc/crtendS.o /usr/lib/i386-linux-gnu/crtn.o -Wl,-Bsymbolic -Wl,-soname -Wl,libgij.so.13 -o .libs/libgij.so.13.0.0
++libtool: install: (cd [...]/hurd/master.build/[ARCH]/libjava; /bin/dash [...]/hurd/master.build/[ARCH]/libjava/libtool --tag CXX --mode=relink [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -fno-rtti -fnon-call-exceptions -fdollars-in-identifiers -Wswitch-enum -D_FILE_OFFSET_BITS=64 -ffloat-store -fomit-frame-pointer -Usun -Wextra -Wall -D_GNU_SOURCE -DPREFIX=\"[...]/hurd/master.build.install\" -DTOOLEXECLIBDIR=\"[...]/hurd/master.build.install/lib\" -DJAVA_HOME=\"[...]/hurd/master.build.install\" -DBOOT_CLASS_PATH=\"[...]/hurd/master.build.install/share/java/libgcj-4.7.0.jar\" -DJAVA_EXT_DIRS=\"[...]/hurd/master.build.install/share/java/ext\" -DGCJ_ENDORSED_DIRS=\"[...]/hurd/master.build.install/share/java/gcj-endorsed\" -DGCJ_VERSIONED_LIBDIR=\"[...]/hurd/master.build.install/lib/gcj-4.7.0-13\" -DPATH_SEPARATOR=\":\" -DECJ_JAR_FILE=\"\" -DLIBGCJ_DEFAULT_DATABASE=\"[...]/hurd/master.build.install/lib/gcj-4.7.0-13/classmap.db\" -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL=\"gcj-4.7.0-13/classmap.db\" -g -O2 -D_GNU_SOURCE -o libgij.la -rpath [...]/hurd/master.build.install/lib -version-info 13:0:0 -Wl,-Bsymbolic-functions -rpath [...]/hurd/master.build.install/lib gij.lo -L[...]/hurd/master.build/[ARCH]/libjava/.libs libgcj.la )
++libtool: relink: [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -shared -nostdlib /usr/lib/i386-gnu/crti.o [...]/hurd/master.build/./gcc/crtbeginS.o .libs/gij.o -Wl,-rpath -Wl,[...]/hurd/master.build.install/lib -L[...]/hurd/master.build/[ARCH]/libjava/.libs -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -L[...]/hurd/master.build.install/lib -lgcj -L[...]/hurd/master.build/[ARCH]/libjava -lpthread -lrt -ldl -L[...]/hurd/master.build/./gcc -L/usr/lib/i386-gnu -lc -lgcc_s [...]/hurd/master.build/./gcc/crtendS.o /usr/lib/i386-gnu/crtn.o -Wl,-Bsymbolic-functions -Wl,-soname -Wl,libgij.so.13 -o .libs/libgij.so.13.0.0
+ libtool: install: /usr/bin/install -c .libs/libgij.so.13.0.0T [...]/hurd/master.build.install/lib/libgij.so.13.0.0
+ libtool: install: (cd [...]/hurd/master.build.install/lib && { ln -s -f libgij.so.13.0.0 libgij.so.13 || { rm -f libgij.so.13 && ln -s libgij.so.13.0.0 libgij.so.13; }; })
+ libtool: install: (cd [...]/hurd/master.build.install/lib && { ln -s -f libgij.so.13.0.0 libgij.so || { rm -f libgij.so && ln -s libgij.so.13.0.0 libgij.so; }; })
+ libtool: install: /usr/bin/install -c .libs/libgij.lai [...]/hurd/master.build.install/lib/libgij.la
+ libtool: install: warning: relinking `libgcj-tools.la'
+ libtool: install: (cd [...]/hurd/master.build/[ARCH]/libjava; /bin/dash [...]/hurd/master.build/[ARCH]/libjava/libtool --tag CXX --mode=relink [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -L[...]/hurd/master.build/[ARCH]/libjava -ffloat-store -fomit-frame-pointer -Usun -g -O2 -o libgcj-tools.la -rpath [...]/hurd/master.build.install/lib -version-info 13:0:0 -Wl,-Bsymbolic-functions -lm -Wl,--version-script=../../../master/libjava/libgcj.ver -rpath [...]/hurd/master.build.install/lib classpath/tools/libgcj_tools_la-tools.lo libgcj.la )
+-libtool: relink: [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -shared -nostdlib /usr/lib/i386-linux-gnu/crti.o [...]/hurd/master.build/./gcc/crtbeginS.o classpath/tools/.libs/libgcj_tools_la-tools.o -Wl,-rpath -Wl,[...]/hurd/master.build.install/lib -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -L[...]/hurd/master.build/[ARCH]/libjava -lm -L[...]/hurd/master.build.install/lib -lgcj -lpthread -lrt -ldl -L[...]/hurd/master.build/./gcc -L/usr/lib/i386-linux-gnu -lc -lgcc_s [...]/hurd/master.build/./gcc/crtendS.o /usr/lib/i386-linux-gnu/crtn.o -Wl,-Bsymbolic-functions -Wl,--version-script=../../../master/libjava/libgcj.ver -Wl,-soname -Wl,libgcj-tools.so.13 -o .libs/libgcj-tools.so.13.0.0
++libtool: relink: [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -shared -nostdlib /usr/lib/i386-gnu/crti.o [...]/hurd/master.build/./gcc/crtbeginS.o classpath/tools/.libs/libgcj_tools_la-tools.o -Wl,-rpath -Wl,[...]/hurd/master.build.install/lib -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -L[...]/hurd/master.build/[ARCH]/libjava -lm -L[...]/hurd/master.build.install/lib -lgcj -lpthread -lrt -ldl -L[...]/hurd/master.build/./gcc -L/usr/lib/i386-gnu -lc -lgcc_s [...]/hurd/master.build/./gcc/crtendS.o /usr/lib/i386-gnu/crtn.o -Wl,-Bsymbolic-functions -Wl,--version-script=../../../master/libjava/libgcj.ver -Wl,-soname -Wl,libgcj-tools.so.13 -o .libs/libgcj-tools.so.13.0.0
+ libtool: install: /usr/bin/install -c .libs/libgcj-tools.so.13.0.0T [...]/hurd/master.build.install/lib/libgcj-tools.so.13.0.0
+ libtool: install: (cd [...]/hurd/master.build.install/lib && { ln -s -f libgcj-tools.so.13.0.0 libgcj-tools.so.13 || { rm -f libgcj-tools.so.13 && ln -s libgcj-tools.so.13.0.0 libgcj-tools.so.13; }; })
+ libtool: install: (cd [...]/hurd/master.build.install/lib && { ln -s -f libgcj-tools.so.13.0.0 libgcj-tools.so || { rm -f libgcj-tools.so && ln -s libgcj-tools.so.13.0.0 libgcj-tools.so; }; })
+@@ -2465,9 +2435,6 @@
+ libtool: install: (cd [...]/hurd/master.build.install/lib && { ln -s -f libgcj_bc.so.1.0.0 libgcj_bc.so.1 || { rm -f libgcj_bc.so.1 && ln -s libgcj_bc.so.1.0.0 libgcj_bc.so.1; }; })
+ libtool: install: (cd [...]/hurd/master.build.install/lib && { ln -s -f libgcj_bc.so.1.0.0 libgcj_bc.so || { rm -f libgcj_bc.so && ln -s libgcj_bc.so.1.0.0 libgcj_bc.so; }; })
+ libtool: install: /usr/bin/install -c .libs/libgcj_bc.lai [...]/hurd/master.build.install/lib/libgcj_bc.la
+-libtool: finish: PATH="/home/thomas/command-i686:/home/thomas/command:/home/thomas/shared/command:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin" ldconfig -n [...]/hurd/master.build.install/lib
+-ldconfig: [...]/hurd/master.build.install/lib/libstdc++.so.6.0.17-gdb.py is not an ELF file - it has the wrong magic bytes at the start.
+-
+ ----------------------------------------------------------------------
+ Libraries have been installed in:
+ [...]/hurd/master.build.install/lib
+@@ -2517,15 +2484,15 @@
+ libtool: install: (cd [...]/hurd/master.build.install/lib && { ln -s -f libgcj.so.13.0.0 libgcj.so || { rm -f libgcj.so && ln -s libgcj.so.13.0.0 libgcj.so; }; })
+ libtool: install: /usr/bin/install -c .libs/libgcj.lai [...]/hurd/master.build.install/lib/libgcj.la
+ libtool: install: warning: relinking `libgij.la'
+-libtool: install: (cd [...]/hurd/master.build/[ARCH]/libjava; /bin/dash [...]/hurd/master.build/[ARCH]/libjava/libtool --tag CXX --mode=relink [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -fno-rtti -fnon-call-exceptions -fdollars-in-identifiers -Wswitch-enum -D_FILE_OFFSET_BITS=64 -ffloat-store -fomit-frame-pointer -Usun -Wextra -Wall -D_GNU_SOURCE -DPREFIX=\"[...]/hurd/master.build.install\" -DTOOLEXECLIBDIR=\"[...]/hurd/master.build.install/lib\" -DJAVA_HOME=\"[...]/hurd/master.build.install\" -DBOOT_CLASS_PATH=\"[...]/hurd/master.build.install/share/java/libgcj-4.7.0.jar\" -DJAVA_EXT_DIRS=\"[...]/hurd/master.build.install/share/java/ext\" -DGCJ_ENDORSED_DIRS=\"[...]/hurd/master.build.install/share/java/gcj-endorsed\" -DGCJ_VERSIONED_LIBDIR=\"[...]/hurd/master.build.install/lib/gcj-4.7.0-13\" -DPATH_SEPARATOR=\":\" -DECJ_JAR_FILE=\"\" -DLIBGCJ_DEFAULT_DATABASE=\"[...]/hurd/master.build.install/lib/gcj-4.7.0-13/classmap.db\" -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL=\"gcj-4.7.0-13/classmap.db\" -g -O2 -D_GNU_SOURCE -o libgij.la -rpath [...]/hurd/master.build.install/lib -version-info 13:0:0 -Wl,-Bsymbolic -rpath [...]/hurd/master.build.install/lib gij.lo -L[...]/hurd/master.build/[ARCH]/libjava/.libs libgcj.la )
+-libtool: relink: [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -shared -nostdlib /usr/lib/i386-linux-gnu/crti.o [...]/hurd/master.build/./gcc/crtbeginS.o .libs/gij.o -Wl,-rpath -Wl,[...]/hurd/master.build.install/lib -L[...]/hurd/master.build/[ARCH]/libjava/.libs -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -L[...]/hurd/master.build.install/lib -lgcj -L[...]/hurd/master.build/[ARCH]/libjava -lpthread -lrt -ldl -L[...]/hurd/master.build/./gcc -L/usr/lib/i386-linux-gnu -lc -lgcc_s [...]/hurd/master.build/./gcc/crtendS.o /usr/lib/i386-linux-gnu/crtn.o -Wl,-Bsymbolic -Wl,-soname -Wl,libgij.so.13 -o .libs/libgij.so.13.0.0
++libtool: install: (cd [...]/hurd/master.build/[ARCH]/libjava; /bin/dash [...]/hurd/master.build/[ARCH]/libjava/libtool --tag CXX --mode=relink [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -fno-rtti -fnon-call-exceptions -fdollars-in-identifiers -Wswitch-enum -D_FILE_OFFSET_BITS=64 -ffloat-store -fomit-frame-pointer -Usun -Wextra -Wall -D_GNU_SOURCE -DPREFIX=\"[...]/hurd/master.build.install\" -DTOOLEXECLIBDIR=\"[...]/hurd/master.build.install/lib\" -DJAVA_HOME=\"[...]/hurd/master.build.install\" -DBOOT_CLASS_PATH=\"[...]/hurd/master.build.install/share/java/libgcj-4.7.0.jar\" -DJAVA_EXT_DIRS=\"[...]/hurd/master.build.install/share/java/ext\" -DGCJ_ENDORSED_DIRS=\"[...]/hurd/master.build.install/share/java/gcj-endorsed\" -DGCJ_VERSIONED_LIBDIR=\"[...]/hurd/master.build.install/lib/gcj-4.7.0-13\" -DPATH_SEPARATOR=\":\" -DECJ_JAR_FILE=\"\" -DLIBGCJ_DEFAULT_DATABASE=\"[...]/hurd/master.build.install/lib/gcj-4.7.0-13/classmap.db\" -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL=\"gcj-4.7.0-13/classmap.db\" -g -O2 -D_GNU_SOURCE -o libgij.la -rpath [...]/hurd/master.build.install/lib -version-info 13:0:0 -Wl,-Bsymbolic-functions -rpath [...]/hurd/master.build.install/lib gij.lo -L[...]/hurd/master.build/[ARCH]/libjava/.libs libgcj.la )
++libtool: relink: [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -shared -nostdlib /usr/lib/i386-gnu/crti.o [...]/hurd/master.build/./gcc/crtbeginS.o .libs/gij.o -Wl,-rpath -Wl,[...]/hurd/master.build.install/lib -L[...]/hurd/master.build/[ARCH]/libjava/.libs -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -L[...]/hurd/master.build.install/lib -lgcj -L[...]/hurd/master.build/[ARCH]/libjava -lpthread -lrt -ldl -L[...]/hurd/master.build/./gcc -L/usr/lib/i386-gnu -lc -lgcc_s [...]/hurd/master.build/./gcc/crtendS.o /usr/lib/i386-gnu/crtn.o -Wl,-Bsymbolic-functions -Wl,-soname -Wl,libgij.so.13 -o .libs/libgij.so.13.0.0
+ libtool: install: /usr/bin/install -c .libs/libgij.so.13.0.0T [...]/hurd/master.build.install/lib/libgij.so.13.0.0
+ libtool: install: (cd [...]/hurd/master.build.install/lib && { ln -s -f libgij.so.13.0.0 libgij.so.13 || { rm -f libgij.so.13 && ln -s libgij.so.13.0.0 libgij.so.13; }; })
+ libtool: install: (cd [...]/hurd/master.build.install/lib && { ln -s -f libgij.so.13.0.0 libgij.so || { rm -f libgij.so && ln -s libgij.so.13.0.0 libgij.so; }; })
+ libtool: install: /usr/bin/install -c .libs/libgij.lai [...]/hurd/master.build.install/lib/libgij.la
+ libtool: install: warning: relinking `libgcj-tools.la'
+ libtool: install: (cd [...]/hurd/master.build/[ARCH]/libjava; /bin/dash [...]/hurd/master.build/[ARCH]/libjava/libtool --tag CXX --mode=relink [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -L[...]/hurd/master.build/[ARCH]/libjava -ffloat-store -fomit-frame-pointer -Usun -g -O2 -o libgcj-tools.la -rpath [...]/hurd/master.build.install/lib -version-info 13:0:0 -Wl,-Bsymbolic-functions -lm -Wl,--version-script=../../../master/libjava/libgcj.ver -rpath [...]/hurd/master.build.install/lib classpath/tools/libgcj_tools_la-tools.lo libgcj.la )
+-libtool: relink: [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -shared -nostdlib /usr/lib/i386-linux-gnu/crti.o [...]/hurd/master.build/./gcc/crtbeginS.o classpath/tools/.libs/libgcj_tools_la-tools.o -Wl,-rpath -Wl,[...]/hurd/master.build.install/lib -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -L[...]/hurd/master.build/[ARCH]/libjava -lm -L[...]/hurd/master.build.install/lib -lgcj -lpthread -lrt -ldl -L[...]/hurd/master.build/./gcc -L/usr/lib/i386-linux-gnu -lc -lgcc_s [...]/hurd/master.build/./gcc/crtendS.o /usr/lib/i386-linux-gnu/crtn.o -Wl,-Bsymbolic-functions -Wl,--version-script=../../../master/libjava/libgcj.ver -Wl,-soname -Wl,libgcj-tools.so.13 -o .libs/libgcj-tools.so.13.0.0
++libtool: relink: [...]/hurd/master.build/./gcc/xgcc -shared-libgcc -B[...]/hurd/master.build/./gcc -nostdinc++ -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -B[...]/hurd/master.build.install/[ARCH]/bin/ -B[...]/hurd/master.build.install/[ARCH]/lib/ -isystem [...]/hurd/master.build.install/[ARCH]/include -isystem [...]/hurd/master.build.install/[ARCH]/sys-include -shared -nostdlib /usr/lib/i386-gnu/crti.o [...]/hurd/master.build/./gcc/crtbeginS.o classpath/tools/.libs/libgcj_tools_la-tools.o -Wl,-rpath -Wl,[...]/hurd/master.build.install/lib -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src -L[...]/hurd/master.build/[ARCH]/libstdc++-v3/src/.libs -L[...]/hurd/master.build/[ARCH]/libjava -lm -L[...]/hurd/master.build.install/lib -lgcj -lpthread -lrt -ldl -L[...]/hurd/master.build/./gcc -L/usr/lib/i386-gnu -lc -lgcc_s [...]/hurd/master.build/./gcc/crtendS.o /usr/lib/i386-gnu/crtn.o -Wl,-Bsymbolic-functions -Wl,--version-script=../../../master/libjava/libgcj.ver -Wl,-soname -Wl,libgcj-tools.so.13 -o .libs/libgcj-tools.so.13.0.0
+ libtool: install: /usr/bin/install -c .libs/libgcj-tools.so.13.0.0T [...]/hurd/master.build.install/lib/libgcj-tools.so.13.0.0
+ libtool: install: (cd [...]/hurd/master.build.install/lib && { ln -s -f libgcj-tools.so.13.0.0 libgcj-tools.so.13 || { rm -f libgcj-tools.so.13 && ln -s libgcj-tools.so.13.0.0 libgcj-tools.so.13; }; })
+ libtool: install: (cd [...]/hurd/master.build.install/lib && { ln -s -f libgcj-tools.so.13.0.0 libgcj-tools.so || { rm -f libgcj-tools.so && ln -s libgcj-tools.so.13.0.0 libgcj-tools.so; }; })
+@@ -2534,9 +2501,6 @@
+ libtool: install: (cd [...]/hurd/master.build.install/lib && { ln -s -f libgcj_bc.so.1.0.0 libgcj_bc.so.1 || { rm -f libgcj_bc.so.1 && ln -s libgcj_bc.so.1.0.0 libgcj_bc.so.1; }; })
+ libtool: install: (cd [...]/hurd/master.build.install/lib && { ln -s -f libgcj_bc.so.1.0.0 libgcj_bc.so || { rm -f libgcj_bc.so && ln -s libgcj_bc.so.1.0.0 libgcj_bc.so; }; })
+ libtool: install: /usr/bin/install -c .libs/libgcj_bc.lai [...]/hurd/master.build.install/lib/libgcj_bc.la
+-libtool: finish: PATH="/home/thomas/command-i686:/home/thomas/command:/home/thomas/shared/command:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin" ldconfig -n [...]/hurd/master.build.install/lib
+-ldconfig: [...]/hurd/master.build.install/lib/libstdc++.so.6.0.17-gdb.py is not an ELF file - it has the wrong magic bytes at the start.
+-
+ ----------------------------------------------------------------------
+ Libraries have been installed in:
+ [...]/hurd/master.build.install/lib
+@@ -3615,6 +3579,7 @@
+ done; \
+ fi
+ make[4]: Leaving directory `[...]/hurd/master.build/[ARCH]/libgomp'
++:
+ make[4]: Entering directory `[...]/hurd/master.build/[ARCH]/libgomp'
+ make DO=install multi-do # make
+ make[5]: Entering directory `[...]/hurd/master.build/[ARCH]/libgomp'
+@@ -3674,9 +3639,6 @@
+ libtool: install: /usr/bin/install -c .libs/libgomp.a [...]/hurd/master.build.install/lib/libgomp.a
+ libtool: install: chmod 644 [...]/hurd/master.build.install/lib/libgomp.a
+ libtool: install: ranlib [...]/hurd/master.build.install/lib/libgomp.a
+-libtool: finish: PATH="/home/thomas/command-i686:/home/thomas/command:/home/thomas/shared/command:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin" ldconfig -n [...]/hurd/master.build.install/lib
+-ldconfig: [...]/hurd/master.build.install/lib/libstdc++.so.6.0.17-gdb.py is not an ELF file - it has the wrong magic bytes at the start.
+-
+ ----------------------------------------------------------------------
+ Libraries have been installed in:
+ [...]/hurd/master.build.install/lib
+@@ -3700,6 +3662,7 @@
+ install-info --info-dir='[...]/hurd/master.build.install/share/info' '[...]/hurd/master.build.install/share/info/libgomp.info'
+ This is not dpkg install-info anymore, but GNU install-info
+ See the man page for ginstall-info for command line arguments
++:
+ test -z "[...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/finclude" || /bin/mkdir -p "[...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/finclude"
+ /usr/bin/install -c -m 644 omp_lib.h omp_lib.f90 omp_lib.mod omp_lib_kinds.mod '[...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/finclude'
+ test -z "[...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/include" || /bin/mkdir -p "[...]/hurd/master.build.install/lib/gcc/[ARCH]/4.7.0/include"
diff --git a/open_issues/gccgo.mdwn b/open_issues/gccgo.mdwn
new file mode 100644
index 00000000..0ecc1228
--- /dev/null
+++ b/open_issues/gccgo.mdwn
@@ -0,0 +1,45 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta title="Enable Google Go programming (GCC: gccgo)"]]
+
+[[!tag open_issue_gcc]]
+
+Make the [Google Go programming language](http://golang.org/) available on
+GNU/Hurd in its [[GCC]] *gccgo* implementation, and enable Hurd-specific
+features.
+
+There is a [[!FF_project 263]][[!tag bounty]] on this task.
+
+---
+
+
+# Part I
+
+First, make the language functional, have its test suite pass without errors.
+
+
+## Original [[community/GSoC]] Task Description
+
+[[!inline pages=community/gsoc/project_ideas/gccgo feeds=no]]
+
+---
+
+
+# Part II
+
+Next, Hurd-specific features can be added. Add an interface to the
+language/environment for being able to do [[RPC]] calls, in order to program
+[[hurd/translator]]s natively in the Google Go programming language.
+
+
+## Original [[community/GSoC]] Task Description
+
+[[!inline pages=community/gsoc/project_ideas/language_bindings feeds=no]]
diff --git a/open_issues/gdb-heap.mdwn b/open_issues/gdb-heap.mdwn
new file mode 100644
index 00000000..75c31bbe
--- /dev/null
+++ b/open_issues/gdb-heap.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2010 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_gdb]]
+
+Might be interesting to have a look at
+[*gdb-heap*](https://fedorahosted.org/gdb-heap/) with respect to our
+long-lived [[hurd/translator]] processes.
diff --git a/open_issues/gdb.mdwn b/open_issues/gdb.mdwn
new file mode 100644
index 00000000..8821762e
--- /dev/null
+++ b/open_issues/gdb.mdwn
@@ -0,0 +1,131 @@
+[[!meta copyright="Copyright © 2007, 2008, 2010, 2011 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_gdb]]
+
+Here's what's to be done for maintaining GNU GDB.
+
+[[!toc levels=2]]
+
+
+# [[General information|/gdb]]
+
+
+# [[Sources|source_repositories/gdb]]
+
+
+# Configuration
+
+Last reviewed up to the [[Git mirror's 09ddc54333cdbc2f695fd83cbf091a7d5a1c3604
+(2011-09-06) sources|source_repositories/gdb]].
+
+ * Globally
+
+ * a.out, COFF, PE image support and 64 bit support are not interesting.
+
+ * In the testsuites, `.exp` and `.d` files very likely should not only
+ care for `*-*-linux*`, but also `*-*-gnu*`. (If the need to be
+ conditionalized like this at all.)
+
+ * `bfd/`
+
+ See [[binutils]].
+
+ * `libdecnumber/`
+
+ Should/can probably align to GNU/Linux.
+
+ * Have a look at config/i386/i386gnu.mh.
+
+ * configure.tgt
+
+ * glibc-tdep et al. also for GNU/Hurd?
+
+
+# Build
+
+Here's a log of a GDB build run; this is from our [[Git repository's
+695f61ff0f378e1680964128585044799de27015 (2011-09-06)
+sources|source_repositories/gdb]], run on kepler.SCHWINGE and coulomb.SCHWINGE.
+
+ $ export LC_ALL=C
+ $ ../master/configure --prefix="$PWD".install SHELL=/bin/dash CC=gcc-4.6 CXX=g++-4.6 --disable-werror 2>&1 | tee log_build
+ [...]
+ $ make 2>&1 | tee log_build_
+ [...]
+
+Different hosts may default to different shells and compiler versions; thus
+harmonized.
+
+There are several occurences of *error: dereferencing type-punned pointer will
+break strict-aliasing rules* in the MIG-generated stub files; thus no `-Werror`
+until that is resolved.
+
+This takes up around 140 MiB and needs roughly 6 min on kepler.SCHWINGE and 30
+min on coulomb.SCHWINGE.
+
+
+## Analysis
+
+x86 GNU/Linux' and GNU/Hurd's configurations are slightly different, thus mask
+out most of the differences that are due to GNU/Linux supporting more core file
+formats and more emulation vectors.
+
+ $ diff -wu <(ssh kepler.SCHWINGE 'cd tmp/source/gdb/ && cat hurd/master.build/log_build* | sed -e "s%\(/media/data\)\?${PWD}%[...]%g"' | sed -f open_issues/gdb/log_build-linux.sed) <(ssh coulomb.SCHWINGE 'cd tmp/gdb/ && cat hurd/master.build/log_build* | sed "s%\(/media/erich\)\?${PWD}%[...]%g"' | sed -f open_issues/gdb/log_build-hurd.sed) > open_issues/gdb/log_build.diff
+
+[[log_build.diff]].
+
+ * Why do we specify `-D_GNU_SOURCE`, and GNU/Linux doesn't?
+
+ * Why does GNU/Linux have an additional `-ldl -rdynamic` when linking `gdb`?
+
+
+# Install
+
+ $ make install 2>&1 | tee log_install
+ [...]
+
+This takes up around 50 MiB, and needs roughly 1 min on kepler.SCHWINGE and 3
+min on coulomb.SCHWINGE.
+
+
+## Analysis
+
+ $ diff -wu <(ssh kepler.SCHWINGE 'cd tmp/source/gdb/ && cat hurd/master.build/log_install | sed -e "s%\(/media/data\)\?${PWD}%[...]%g"' | sed -f open_issues/gdb/log_install-linux.sed) <(ssh coulomb.SCHWINGE 'cd tmp/gdb/ && cat hurd/master.build/log_install | sed "s%\(/media/erich\)\?${PWD}%[...]%g"' | sed -f open_issues/gdb/log_install-hurd.sed) > open_issues/gdb/log_install.diff
+
+[[log_install.diff]].
+
+ * `libtool: finish`: `ldconfig` is not run for the Hurd.
+
+
+# Testsuite
+
+On GNU/Hurd, hampered by the [[term_blocking]] issue.
+
+ $ make -k check
+ [...]
+
+This needs roughly TODO min on kepler.SCHWINGE, and TODO min on
+coulomb.SCHWINGE.
+
+ $ ssh kepler.SCHWINGE 'cd tmp/source/gdb/ && sed < hurd/master.build/gdb/testsuite/gdb.sum -e "s%\(/media/data\)\?${PWD}%[...]%g"' > open_issues/gdb/sum_linux
+ $ ssh coulomb.SCHWINGE 'cd tmp/gdb/ && sed < hurd/master.build/gdb/testsuite/gdb.sum -e "s%\(/media/erich\)\?${PWD}%[...]%g"' > open_issues/gdb/sum_hurd
+
+Comparing the results files, [[sum_linux]] to [[sum_hurd]]:
+
+ $ diff -u -F ^Running open_issues/gdb/sum_linux open_issues/gdb/sum_hurd > open_issues/gdb/sum.diff
+
+[[open_issues/gdb/sum.diff]].
+
+
+## Analysis
+
+TODO.
diff --git a/open_issues/gdb/log_build-hurd.sed b/open_issues/gdb/log_build-hurd.sed
new file mode 100644
index 00000000..2122a4e2
--- /dev/null
+++ b/open_issues/gdb/log_build-hurd.sed
@@ -0,0 +1,7 @@
+s%i686-unknown-gnu0\.3%[ARCH]%g
+
+
+
+s%-DSELECT_VECS=\('\?\)&bfd_elf32_i386_vec,&bfd_elf32_little_generic_vec,&bfd_elf32_big_generic_vec\1%-DSELECT_VECS=\1[SELECT_VECS]\1%
+s%-D_GNU_SOURCE%%g
+s%-lshouldbeinlibc%%g
diff --git a/open_issues/gdb/log_build-linux.sed b/open_issues/gdb/log_build-linux.sed
new file mode 100644
index 00000000..d483b2f7
--- /dev/null
+++ b/open_issues/gdb/log_build-linux.sed
@@ -0,0 +1,6 @@
+s%i686-pc-linux-gnu%[ARCH]%g
+s%-DTRAD_CORE%%
+s%-DHAVE_i386linux_vec%%
+s%-DHAVE_i386pei_vec%%
+s%-DSELECT_VECS=\('\?\)&bfd_elf32_i386_vec,&i386linux_vec,&i386pei_vec,&bfd_elf32_little_generic_vec,&bfd_elf32_big_generic_vec\1%-DSELECT_VECS=\1[SELECT_VECS]\1%
+
diff --git a/open_issues/gdb/log_build.diff b/open_issues/gdb/log_build.diff
new file mode 100644
index 00000000..53dd6042
--- /dev/null
+++ b/open_issues/gdb/log_build.diff
@@ -0,0 +1,603 @@
+--- /dev/fd/63 2011-09-06 18:14:58.241111160 +0200
++++ /dev/fd/62 2011-09-06 18:14:58.241111160 +0200
+@@ -276,12 +276,12 @@
+ checking for sys/sysinfo.h... yes
+ checking for machine/hal_sysinfo.h... no
+ checking for sys/table.h... no
+-checking for sys/sysctl.h... yes
++checking for sys/sysctl.h... no
+ checking for sys/systemcfg.h... no
+ checking for stdint.h... (cached) yes
+ checking for stdio_ext.h... yes
+ checking for process.h... no
+-checking for sys/prctl.h... yes
++checking for sys/prctl.h... no
+ checking for sys/wait.h that is POSIX.1 compatible... yes
+ checking whether time.h and sys/time.h may both be included... yes
+ checking whether errno must be declared... no
+@@ -351,13 +351,13 @@
+ checking for working fork... yes
+ checking for working vfork... (cached) yes
+ checking for _doprnt... no
+-checking for sys_errlist... yes
+-checking for sys_nerr... yes
++checking for sys_errlist... no
++checking for sys_nerr... no
+ checking for sys_siglist... yes
+ checking for external symbol _system_configuration... no
+ checking for __fsetlocking... yes
+ checking for canonicalize_file_name... yes
+-checking for dup3... yes
++checking for dup3... no
+ checking for getrlimit... yes
+ checking for getrusage... yes
+ checking for getsysinfo... no
+@@ -374,7 +374,7 @@
+ checking for strerror... yes
+ checking for strsignal... yes
+ checking for sysconf... yes
+-checking for sysctl... yes
++checking for sysctl... no
+ checking for sysmp... no
+ checking for table... no
+ checking for times... yes
+@@ -459,7 +459,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... nm
+ checking the name lister (nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for ld option to reload object files... -r
+@@ -479,7 +479,7 @@
+ checking if gcc-4.6 supports -c -o file.o... yes
+ checking if gcc-4.6 supports -c -o file.o... (cached) yes
+ checking whether the gcc-4.6 linker (ld) supports shared libraries... yes
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking for shl_load... no
+ checking for shl_load in -ldld... no
+@@ -569,26 +569,26 @@
+ checking sys/procfs.h usability... yes
+ checking sys/procfs.h presence... yes
+ checking for sys/procfs.h... yes
+-checking for prstatus_t in sys/procfs.h... yes
++checking for prstatus_t in sys/procfs.h... no
+ checking for prstatus32_t in sys/procfs.h... no
+ checking for prstatus_t.pr_who in sys/procfs.h... no
+ checking for prstatus32_t.pr_who in sys/procfs.h... no
+-checking for pstatus_t in sys/procfs.h... no
++checking for pstatus_t in sys/procfs.h... yes
+ checking for pxstatus_t in sys/procfs.h... no
+ checking for pstatus32_t in sys/procfs.h... no
+-checking for prpsinfo_t in sys/procfs.h... yes
+-checking for prpsinfo_t.pr_pid in sys/procfs.h... yes
++checking for prpsinfo_t in sys/procfs.h... no
++checking for prpsinfo_t.pr_pid in sys/procfs.h... no
+ checking for prpsinfo32_t in sys/procfs.h... no
+ checking for prpsinfo32_t.pr_pid in sys/procfs.h... no
+-checking for psinfo_t in sys/procfs.h... no
+-checking for psinfo_t.pr_pid in sys/procfs.h... no
++checking for psinfo_t in sys/procfs.h... yes
++checking for psinfo_t.pr_pid in sys/procfs.h... yes
+ checking for psinfo32_t in sys/procfs.h... no
+ checking for psinfo32_t.pr_pid in sys/procfs.h... no
+-checking for lwpstatus_t in sys/procfs.h... no
++checking for lwpstatus_t in sys/procfs.h... yes
+ checking for lwpxstatus_t in sys/procfs.h... no
+ checking for lwpstatus_t.pr_context in sys/procfs.h... no
+-checking for lwpstatus_t.pr_reg in sys/procfs.h... no
+-checking for lwpstatus_t.pr_fpreg in sys/procfs.h... no
++checking for lwpstatus_t.pr_reg in sys/procfs.h... yes
++checking for lwpstatus_t.pr_fpreg in sys/procfs.h... yes
+ checking for win32_pstatus_t in sys/procfs.h... no
+ checking linker --as-needed support... yes
+ checking for cos in -lm... yes
+@@ -1229,36 +1229,15 @@
+ /bin/dash ./libtool --tag=CC --mode=compile gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR='"[...]/hurd/master.build.install/bin"' -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -MT dwarf1.lo -MD -MP -MF .deps/dwarf1.Tpo -c -o dwarf1.lo ../../master/bfd/dwarf1.c
+ libtool: compile: gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR=\"[...]/hurd/master.build.install/bin\" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -MT dwarf1.lo -MD -MP -MF .deps/dwarf1.Tpo -c ../../master/bfd/dwarf1.c -o dwarf1.o
+ mv -f .deps/dwarf1.Tpo .deps/dwarf1.Plo
+-/bin/dash ./libtool --tag=CC --mode=compile gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR='"[...]/hurd/master.build.install/bin"' -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -MT i386linux.lo -MD -MP -MF .deps/i386linux.Tpo -c -o i386linux.lo ../../master/bfd/i386linux.c
+-libtool: compile: gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR=\"[...]/hurd/master.build.install/bin\" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -MT i386linux.lo -MD -MP -MF .deps/i386linux.Tpo -c ../../master/bfd/i386linux.c -o i386linux.o
+-mv -f .deps/i386linux.Tpo .deps/i386linux.Plo
+-/bin/dash ./libtool --tag=CC --mode=compile gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR='"[...]/hurd/master.build.install/bin"' -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -MT aout32.lo -MD -MP -MF .deps/aout32.Tpo -c -o aout32.lo ../../master/bfd/aout32.c
+-libtool: compile: gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR=\"[...]/hurd/master.build.install/bin\" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -MT aout32.lo -MD -MP -MF .deps/aout32.Tpo -c ../../master/bfd/aout32.c -o aout32.o
+-mv -f .deps/aout32.Tpo .deps/aout32.Plo
+-/bin/dash ./libtool --tag=CC --mode=compile gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR='"[...]/hurd/master.build.install/bin"' -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -MT pei-i386.lo -MD -MP -MF .deps/pei-i386.Tpo -c -o pei-i386.lo ../../master/bfd/pei-i386.c
+-libtool: compile: gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR=\"[...]/hurd/master.build.install/bin\" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -MT pei-i386.lo -MD -MP -MF .deps/pei-i386.Tpo -c ../../master/bfd/pei-i386.c -o pei-i386.o
+-mv -f .deps/pei-i386.Tpo .deps/pei-i386.Plo
+-rm -f peigen.c
+-sed -e s/XX/pe/g < ../../master/bfd/peXXigen.c > peigen.new
+-mv -f peigen.new peigen.c
+-/bin/dash ./libtool --tag=CC --mode=compile gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR='"[...]/hurd/master.build.install/bin"' -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -MT peigen.lo -MD -MP -MF .deps/peigen.Tpo -c -o peigen.lo peigen.c
+-libtool: compile: gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR=\"[...]/hurd/master.build.install/bin\" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -MT peigen.lo -MD -MP -MF .deps/peigen.Tpo -c peigen.c -o peigen.o
+-mv -f .deps/peigen.Tpo .deps/peigen.Plo
+-/bin/dash ./libtool --tag=CC --mode=compile gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR='"[...]/hurd/master.build.install/bin"' -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -MT cofflink.lo -MD -MP -MF .deps/cofflink.Tpo -c -o cofflink.lo ../../master/bfd/cofflink.c
+-libtool: compile: gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR=\"[...]/hurd/master.build.install/bin\" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -MT cofflink.lo -MD -MP -MF .deps/cofflink.Tpo -c ../../master/bfd/cofflink.c -o cofflink.o
+-mv -f .deps/cofflink.Tpo .deps/cofflink.Plo
+ /bin/dash ./libtool --tag=CC --mode=compile gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR='"[...]/hurd/master.build.install/bin"' -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -MT elf32-gen.lo -MD -MP -MF .deps/elf32-gen.Tpo -c -o elf32-gen.lo ../../master/bfd/elf32-gen.c
+ libtool: compile: gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR=\"[...]/hurd/master.build.install/bin\" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -MT elf32-gen.lo -MD -MP -MF .deps/elf32-gen.Tpo -c ../../master/bfd/elf32-gen.c -o elf32-gen.o
+ mv -f .deps/elf32-gen.Tpo .deps/elf32-gen.Plo
+ /bin/dash ./libtool --tag=CC --mode=compile gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR='"[...]/hurd/master.build.install/bin"' -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -MT cpu-i386.lo -MD -MP -MF .deps/cpu-i386.Tpo -c -o cpu-i386.lo ../../master/bfd/cpu-i386.c
+ libtool: compile: gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR=\"[...]/hurd/master.build.install/bin\" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -MT cpu-i386.lo -MD -MP -MF .deps/cpu-i386.Tpo -c ../../master/bfd/cpu-i386.c -o cpu-i386.o
+ mv -f .deps/cpu-i386.Tpo .deps/cpu-i386.Plo
+-/bin/dash ./libtool --tag=CC --mode=compile gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR='"[...]/hurd/master.build.install/bin"' -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -MT trad-core.lo -MD -MP -MF .deps/trad-core.Tpo -c -o trad-core.lo ../../master/bfd/trad-core.c
+-libtool: compile: gcc-4.6 -DHAVE_CONFIG_H -I. -I../../master/bfd -I. -I../../master/bfd -I../../master/bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR=\"[...]/hurd/master.build.install/bin\" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -MT trad-core.lo -MD -MP -MF .deps/trad-core.Tpo -c ../../master/bfd/trad-core.c -o trad-core.o
+-mv -f .deps/trad-core.Tpo .deps/trad-core.Plo
+ rm -f tofiles
+ f=""; \
+- for i in elf32-i386.lo elf-ifunc.lo elf-vxworks.lo elf32.lo elf.lo elflink.lo elf-attrs.lo elf-strtab.lo elf-eh-frame.lo dwarf1.lo i386linux.lo aout32.lo pei-i386.lo peigen.lo cofflink.lo elf32-gen.lo cpu-i386.lo trad-core.lo ; do \
++ for i in elf32-i386.lo elf-ifunc.lo elf-vxworks.lo elf32.lo elf.lo elflink.lo elf-attrs.lo elf-strtab.lo elf-eh-frame.lo dwarf1.lo elf32-gen.lo cpu-i386.lo ; do \
+ case " $f " in \
+ *" $i "*) ;; \
+ *) f="$f $i" ;; \
+@@ -1268,7 +1247,7 @@
+ /bin/dash ../../master/bfd/../move-if-change tofiles ofiles
+ touch stamp-ofiles
+ /bin/dash ./libtool --tag=CC --mode=link gcc-4.6 -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -release `cat libtool-soversion` -o libbfd.la -rpath [...]/hurd/master.build.install/lib archive.lo archures.lo bfd.lo bfdio.lo bfdwin.lo cache.lo coffgen.lo corefile.lo format.lo init.lo libbfd.lo opncls.lo reloc.lo section.lo syms.lo targets.lo hash.lo linker.lo srec.lo binary.lo tekhex.lo ihex.lo stabs.lo stab-syms.lo merge.lo dwarf2.lo simple.lo compress.lo verilog.lo `cat ofiles` -lz
+-libtool: link: ar rc .libs/libbfd.a archive.o archures.o bfd.o bfdio.o bfdwin.o cache.o coffgen.o corefile.o format.o init.o libbfd.o opncls.o reloc.o section.o syms.o targets.o hash.o linker.o srec.o binary.o tekhex.o ihex.o stabs.o stab-syms.o merge.o dwarf2.o simple.o compress.o verilog.o elf32-i386.o elf-ifunc.o elf-vxworks.o elf32.o elf.o elflink.o elf-attrs.o elf-strtab.o elf-eh-frame.o dwarf1.o i386linux.o aout32.o pei-i386.o peigen.o cofflink.o elf32-gen.o cpu-i386.o trad-core.o
++libtool: link: ar rc .libs/libbfd.a archive.o archures.o bfd.o bfdio.o bfdwin.o cache.o coffgen.o corefile.o format.o init.o libbfd.o opncls.o reloc.o section.o syms.o targets.o hash.o linker.o srec.o binary.o tekhex.o ihex.o stabs.o stab-syms.o merge.o dwarf2.o simple.o compress.o verilog.o elf32-i386.o elf-ifunc.o elf-vxworks.o elf32.o elf.o elflink.o elf-attrs.o elf-strtab.o elf-eh-frame.o dwarf1.o elf32-gen.o cpu-i386.o
+ libtool: link: ranlib .libs/libbfd.a
+ libtool: link: ( cd ".libs" && rm -f "libbfd.la" && ln -s "../libbfd.la" "libbfd.la" )
+ libtooldir=`/bin/dash ./libtool --config | sed -n -e 's/^objdir=//p'`; \
+@@ -1335,7 +1314,7 @@
+ checking for BSD- or MS-compatible name lister (nm)... nm
+ checking the name lister (nm) interface... BSD nm
+ checking whether ln -s works... yes
+-checking the maximum length of command line arguments... 805306365
++checking the maximum length of command line arguments... -1
+ checking whether the shell understands some XSI constructs... yes
+ checking whether the shell understands "+="... no
+ checking for ld option to reload object files... -r
+@@ -1355,7 +1334,7 @@
+ checking if gcc-4.6 supports -c -o file.o... yes
+ checking if gcc-4.6 supports -c -o file.o... (cached) yes
+ checking whether the gcc-4.6 linker (ld) supports shared libraries... yes
+-checking dynamic linker characteristics... GNU/Linux ld.so
++checking dynamic linker characteristics... gnu0.3 ld.so
+ checking how to hardcode library paths into programs... immediate
+ checking whether stripping libraries is possible... yes
+ checking if libtool supports shared libraries... yes
+@@ -1547,7 +1526,8 @@
+ checking build system type... [ARCH]
+ checking host system type... [ARCH]
+ checking target system type... [ARCH]
+-checking for decimal floating point... bid
++checking for decimal floating point... configure: WARNING: decimal float is not supported for this target, ignored
++dpd
+ checking whether byte ordering is bigendian... no
+ configure: updating cache ./config.cache
+ configure: creating ./config.status
+@@ -1557,15 +1537,11 @@
+ make[2]: Entering directory `[...]/hurd/master.build/libdecnumber'
+ source='../../master/libdecnumber/decNumber.c' object='decNumber.o' libtool=no gcc-4.6 -I../../master/libdecnumber -I. -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -Wmissing-format-attribute -Wcast-qual -pedantic -Wno-long-long -I../../master/libdecnumber -I. -c ../../master/libdecnumber/decNumber.c
+ source='../../master/libdecnumber/decContext.c' object='decContext.o' libtool=no gcc-4.6 -I../../master/libdecnumber -I. -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -Wmissing-format-attribute -Wcast-qual -pedantic -Wno-long-long -I../../master/libdecnumber -I. -c ../../master/libdecnumber/decContext.c
+-source='../../master/libdecnumber/bid/decimal32.c' object='decimal32.o' libtool=no gcc-4.6 -I../../master/libdecnumber -I. -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -Wmissing-format-attribute -Wcast-qual -pedantic -Wno-long-long -I../../master/libdecnumber -I. -c ../../master/libdecnumber/bid/decimal32.c
+-source='../../master/libdecnumber/bid/decimal64.c' object='decimal64.o' libtool=no gcc-4.6 -I../../master/libdecnumber -I. -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -Wmissing-format-attribute -Wcast-qual -pedantic -Wno-long-long -I../../master/libdecnumber -I. -c ../../master/libdecnumber/bid/decimal64.c
+-source='../../master/libdecnumber/bid/decimal128.c' object='decimal128.o' libtool=no gcc-4.6 -I../../master/libdecnumber -I. -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -Wmissing-format-attribute -Wcast-qual -pedantic -Wno-long-long -I../../master/libdecnumber -I. -c ../../master/libdecnumber/bid/decimal128.c
+-source='../../master/libdecnumber/bid/bid2dpd_dpd2bid.c' object='bid2dpd_dpd2bid.o' libtool=no gcc-4.6 -I../../master/libdecnumber -I. -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -Wmissing-format-attribute -Wcast-qual -pedantic -Wno-long-long -I../../master/libdecnumber -I. -c ../../master/libdecnumber/bid/bid2dpd_dpd2bid.c
+-source='../../master/libdecnumber/bid/host-ieee32.c' object='host-ieee32.o' libtool=no gcc-4.6 -I../../master/libdecnumber -I. -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -Wmissing-format-attribute -Wcast-qual -pedantic -Wno-long-long -I../../master/libdecnumber -I. -c ../../master/libdecnumber/bid/host-ieee32.c
+-source='../../master/libdecnumber/bid/host-ieee64.c' object='host-ieee64.o' libtool=no gcc-4.6 -I../../master/libdecnumber -I. -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -Wmissing-format-attribute -Wcast-qual -pedantic -Wno-long-long -I../../master/libdecnumber -I. -c ../../master/libdecnumber/bid/host-ieee64.c
+-source='../../master/libdecnumber/bid/host-ieee128.c' object='host-ieee128.o' libtool=no gcc-4.6 -I../../master/libdecnumber -I. -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -Wmissing-format-attribute -Wcast-qual -pedantic -Wno-long-long -I../../master/libdecnumber -I. -c ../../master/libdecnumber/bid/host-ieee128.c
++source='../../master/libdecnumber/dpd/decimal32.c' object='decimal32.o' libtool=no gcc-4.6 -I../../master/libdecnumber -I. -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -Wmissing-format-attribute -Wcast-qual -pedantic -Wno-long-long -I../../master/libdecnumber -I. -c ../../master/libdecnumber/dpd/decimal32.c
++source='../../master/libdecnumber/dpd/decimal64.c' object='decimal64.o' libtool=no gcc-4.6 -I../../master/libdecnumber -I. -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -Wmissing-format-attribute -Wcast-qual -pedantic -Wno-long-long -I../../master/libdecnumber -I. -c ../../master/libdecnumber/dpd/decimal64.c
++source='../../master/libdecnumber/dpd/decimal128.c' object='decimal128.o' libtool=no gcc-4.6 -I../../master/libdecnumber -I. -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -Wmissing-format-attribute -Wcast-qual -pedantic -Wno-long-long -I../../master/libdecnumber -I. -c ../../master/libdecnumber/dpd/decimal128.c
+ rm -f libdecnumber.a
+-ar cru libdecnumber.a decNumber.o decContext.o decimal32.o decimal64.o decimal128.o bid2dpd_dpd2bid.o host-ieee32.o host-ieee64.o host-ieee128.o
++ar cru libdecnumber.a decNumber.o decContext.o decimal32.o decimal64.o decimal128.o
+ ranlib libdecnumber.a
+ make[2]: Leaving directory `[...]/hurd/master.build/libdecnumber'
+ mkdir -p -- ./readline
+@@ -1665,9 +1641,9 @@
+ checking termios.h usability... yes
+ checking termios.h presence... yes
+ checking for termios.h... yes
+-checking termio.h usability... yes
+-checking termio.h presence... yes
+-checking for termio.h... yes
++checking termio.h usability... no
++checking termio.h presence... no
++checking for termio.h... no
+ checking sys/pte.h usability... no
+ checking sys/pte.h presence... no
+ checking for sys/pte.h... no
+@@ -2008,9 +1984,9 @@
+ checking proc_service.h usability... no
+ checking proc_service.h presence... no
+ checking for proc_service.h... no
+-checking thread_db.h usability... yes
+-checking thread_db.h presence... yes
+-checking for thread_db.h... yes
++checking thread_db.h usability... no
++checking thread_db.h presence... no
++checking for thread_db.h... no
+ checking gnu/libc-version.h usability... yes
+ checking gnu/libc-version.h presence... yes
+ checking for gnu/libc-version.h... yes
+@@ -2049,12 +2025,12 @@
+ checking ptrace.h usability... no
+ checking ptrace.h presence... no
+ checking for ptrace.h... no
+-checking sys/reg.h usability... yes
+-checking sys/reg.h presence... yes
+-checking for sys/reg.h... yes
+-checking sys/debugreg.h usability... yes
+-checking sys/debugreg.h presence... yes
+-checking for sys/debugreg.h... yes
++checking sys/reg.h usability... no
++checking sys/reg.h presence... no
++checking for sys/reg.h... no
++checking sys/debugreg.h usability... no
++checking sys/debugreg.h presence... no
++checking for sys/debugreg.h... no
+ checking sys/select.h usability... yes
+ checking sys/select.h presence... yes
+ checking for sys/select.h... yes
+@@ -2071,9 +2047,9 @@
+ checking termios.h usability... yes
+ checking termios.h presence... yes
+ checking for termios.h... yes
+-checking termio.h usability... yes
+-checking termio.h presence... yes
+-checking for termio.h... yes
++checking termio.h usability... no
++checking termio.h presence... no
++checking for termio.h... no
+ checking sgtty.h usability... yes
+ checking sgtty.h presence... yes
+ checking for sgtty.h... yes
+@@ -2092,7 +2068,7 @@
+ checking for locale.h... yes
+ checking for link.h... yes
+ checking for sys/proc.h... no
+-checking for sys/user.h... yes
++checking for sys/user.h... no
+ checking curses.h usability... yes
+ checking curses.h presence... yes
+ checking for curses.h... yes
+@@ -2181,19 +2157,19 @@
+ checking for struct reg.r_fs... no
+ checking for struct reg.r_gs... no
+ checking for PTRACE_GETREGS... yes
+-checking for PTRACE_GETFPXREGS... yes
++checking for PTRACE_GETFPXREGS... no
+ checking for PT_GETDBREGS... no
+ checking for PT_GETXMMREGS... no
+-checking for pstatus_t in sys/procfs.h... no
++checking for pstatus_t in sys/procfs.h... yes
+ checking for prrun_t in sys/procfs.h... no
+-checking for gregset_t in sys/procfs.h... no
+-checking for fpregset_t in sys/procfs.h... no
++checking for gregset_t in sys/procfs.h... yes
++checking for fpregset_t in sys/procfs.h... yes
+ checking for prgregset_t in sys/procfs.h... yes
+ checking for prfpregset_t in sys/procfs.h... yes
+ checking for prgregset32_t in sys/procfs.h... no
+ checking for prfpregset32_t in sys/procfs.h... no
+-checking for lwpid_t in sys/procfs.h... yes
+-checking for psaddr_t in sys/procfs.h... yes
++checking for lwpid_t in sys/procfs.h... no
++checking for psaddr_t in sys/procfs.h... no
+ checking for prsysent_t in sys/procfs.h... no
+ checking for pr_sigset_t in sys/procfs.h... no
+ checking for pr_sigaction64_t in sys/procfs.h... no
+@@ -2211,16 +2187,13 @@
+ checking for long double support in printf... yes
+ checking for long double support in scanf... yes
+ checking for the dynamic export flag... -rdynamic
+-checking whether <thread_db.h> has TD_NOTALLOC... yes
+-checking whether <thread_db.h> has TD_VERSION... yes
+-checking whether <thread_db.h> has TD_NOTLS... yes
+-checking whether <sys/syscall.h> has __NR_tkill... yes
+-checking whether ADDR_NO_RANDOMIZE is declared... yes
++checking whether <sys/syscall.h> has __NR_tkill... no
++checking whether ADDR_NO_RANDOMIZE is declared... no
+ checking compiler warning flags... -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts
+ checking for cygwin... no
+ checking for ELF support in BFD... yes
+ checking for X... libraries , headers
+-checking whether gdbserver is supported on this host... yes
++checking whether gdbserver is supported on this host... no
+ configure: updating cache ./config.cache
+ configure: creating ./config.status
+ config.status: creating Makefile
+@@ -2229,7 +2202,7 @@
+ config.status: creating gnulib/Makefile
+ config.status: creating data-directory/Makefile
+ config.status: creating config.h
+-config.status: linking ../../master/gdb/config/nm-linux.h to nm.h
++config.status: linking ../../master/gdb/config/i386/nm-i386gnu.h to nm.h
+ config.status: executing depdir commands
+ mkdir -p -- .deps
+ config.status: executing depfiles commands
+@@ -2300,115 +2273,6 @@
+ config.status: creating gdb.threads/Makefile
+ config.status: creating gdb.trace/Makefile
+ config.status: creating gdb.xml/Makefile
+-=== configuring in gdbserver ([...]/hurd/master.build/gdb/gdbserver)
+-configure: running /bin/dash ../../../master/gdb/gdbserver/configure --disable-option-checking '--prefix=[...]/hurd/master.build.install' '--with-system-zlib' '--disable-werror' '--program-transform-name=s,y,y,' '--build=[ARCH]' '--host=[ARCH]' '--target=[ARCH]' 'build_alias=[ARCH]' 'host_alias=[ARCH]' 'target_alias=[ARCH]' 'CC=gcc-4.6' 'CFLAGS=-g -O2' 'LDFLAGS= ' 'YACC=bison -y' --cache-file=.././config.cache --srcdir=../../../master/gdb/gdbserver
+-configure: loading cache .././config.cache
+-checking for [ARCH]-gcc... (cached) gcc-4.6
+-checking for C compiler default output file name... a.out
+-checking whether the C compiler works... yes
+-checking whether we are cross compiling... no
+-checking for suffix of executables...
+-checking for suffix of object files... (cached) o
+-checking whether we are using the GNU C compiler... (cached) yes
+-checking whether gcc-4.6 accepts -g... (cached) yes
+-checking for gcc-4.6 option to accept ISO C89... (cached) none needed
+-checking how to run the C preprocessor... (cached) gcc-4.6 -E
+-checking for grep that handles long lines and -e... (cached) /bin/grep
+-checking for egrep... (cached) /bin/grep -E
+-checking for ANSI C header files... (cached) yes
+-checking for sys/types.h... (cached) yes
+-checking for sys/stat.h... (cached) yes
+-checking for stdlib.h... (cached) yes
+-checking for string.h... (cached) yes
+-checking for memory.h... (cached) yes
+-checking for strings.h... (cached) yes
+-checking for inttypes.h... (cached) yes
+-checking for stdint.h... (cached) yes
+-checking for unistd.h... (cached) yes
+-checking for minix/config.h... (cached) no
+-checking whether it is safe to define __EXTENSIONS__... (cached) yes
+-checking build system type... (cached) [ARCH]
+-checking host system type... (cached) [ARCH]
+-checking target system type... (cached) [ARCH]
+-checking for a BSD-compatible install... /usr/bin/install -c
+-checking for ANSI C header files... (cached) yes
+-checking for dirent.h that defines DIR... (cached) yes
+-checking for library containing opendir... (cached) none required
+-checking for working alloca.h... (cached) yes
+-checking for alloca... (cached) yes
+-checking for sgtty.h... (cached) yes
+-checking for termio.h... (cached) yes
+-checking for termios.h... (cached) yes
+-checking for sys/reg.h... (cached) yes
+-checking for string.h... (cached) yes
+-checking for proc_service.h... (cached) no
+-checking for sys/procfs.h... (cached) yes
+-checking for thread_db.h... (cached) yes
+-checking linux/elf.h usability... yes
+-checking linux/elf.h presence... yes
+-checking for linux/elf.h... yes
+-checking for stdlib.h... (cached) yes
+-checking for unistd.h... (cached) yes
+-checking errno.h usability... yes
+-checking errno.h presence... yes
+-checking for errno.h... yes
+-checking fcntl.h usability... yes
+-checking fcntl.h presence... yes
+-checking for fcntl.h... yes
+-checking for signal.h... (cached) yes
+-checking for sys/file.h... (cached) yes
+-checking malloc.h usability... yes
+-checking malloc.h presence... yes
+-checking for malloc.h... yes
+-checking for sys/ioctl.h... (cached) yes
+-checking netinet/in.h usability... yes
+-checking netinet/in.h presence... yes
+-checking for netinet/in.h... yes
+-checking sys/socket.h usability... yes
+-checking sys/socket.h presence... yes
+-checking for sys/socket.h... yes
+-checking netdb.h usability... yes
+-checking netdb.h presence... yes
+-checking for netdb.h... yes
+-checking netinet/tcp.h usability... yes
+-checking netinet/tcp.h presence... yes
+-checking for netinet/tcp.h... yes
+-checking arpa/inet.h usability... yes
+-checking arpa/inet.h presence... yes
+-checking for arpa/inet.h... yes
+-checking for sys/wait.h... (cached) yes
+-checking for pread... yes
+-checking for pwrite... yes
+-checking for pread64... (cached) yes
+-checking for memmem... (cached) yes
+-checking for vasprintf... yes
+-checking for vsnprintf... yes
+-checking for ust... no
+-checking compiler warning flags... -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts
+-checking for dladdr... yes
+-checking for errno... yes - in errno.h
+-checking whether strerror is declared... (cached) yes
+-checking whether perror is declared... yes
+-checking whether memmem is declared... (cached) yes
+-checking whether vasprintf is declared... yes
+-checking whether vsnprintf is declared... (cached) yes
+-checking for socklen_t... (cached) yes
+-checking if building for x86-64... no
+-checking for PTRACE_GETREGS... yes
+-checking for PTRACE_GETFPXREGS... yes
+-checking for lwpid_t in sys/procfs.h... (cached) yes
+-checking for psaddr_t in sys/procfs.h... (cached) yes
+-checking for prgregset_t in sys/procfs.h... (cached) yes
+-checking for elf_fpregset_t in sys/procfs.h... yes
+-checking for dlopen in -ldl... yes
+-checking for the dynamic export flag... -Wl,--dynamic-list
+-checking for TD_VERSION... yes
+-checking whether the target supports __sync_*_compare_and_swap... yes
+-configure: updating cache .././config.cache
+-configure: creating ./config.status
+-config.status: creating Makefile
+-config.status: creating config.h
+-config.status: executing default commands
+ make[2]: Entering directory `[...]/hurd/master.build/sim'
+ make[2]: Leaving directory `[...]/hurd/master.build/sim'
+ make[2]: Entering directory `[...]/hurd/master.build/gdb'
+@@ -2601,31 +2465,65 @@
+ make[5]: Leaving directory `[...]/hurd/master.build/gdb/gnulib'
+ make[4]: Leaving directory `[...]/hurd/master.build/gdb/gnulib'
+ make[3]: Leaving directory `[...]/hurd/master.build/gdb'
++gcc-4.6 -E -DSERVERPREFIX=S_ -x c ../../master/gdb/notify.defs \
++ | mig -cc cat - /dev/null -sheader notify_S.h -server notify_S.c -user /dev/null -header /dev/null
++gcc-4.6 -E -DSERVERPREFIX=S_ -x c ../../master/gdb/process_reply.defs \
++ | mig -cc cat - /dev/null -sheader process_reply_S.h -server process_reply_S.raw -user /dev/null -header /dev/null \
++ && gawk -f ../../master/gdb/reply_mig_hack.awk < process_reply_S.raw > process_reply_S.c
++gcc-4.6 -E -DSERVERPREFIX=S_ -x c ../../master/gdb/msg_reply.defs \
++ | mig -cc cat - /dev/null -sheader msg_reply_S.h -server msg_reply_S.raw -user /dev/null -header /dev/null \
++ && gawk -f ../../master/gdb/reply_mig_hack.awk < msg_reply_S.raw > msg_reply_S.c
++gcc-4.6 -E -D'MSG_IMPORTS=waittime 1000;' -x c ../../master/gdb/msg.defs \
++ | mig -cc cat - /dev/null -sheader /dev/null -server /dev/null -user msg_U.c -header msg_U.h
++gcc-4.6 -E -x c ../../master/gdb/exc_request.defs \
++ | mig -cc cat - /dev/null -sheader /dev/null -server /dev/null -user exc_request_U.c -header exc_request_U.h
++gcc-4.6 -E -DSERVERPREFIX=S_ -x c ../../master/gdb/exc_request.defs \
++ | mig -cc cat - /dev/null -sheader exc_request_S.h -server exc_request_S.c -user /dev/null -header /dev/null
+ gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o gdb.o -MT gdb.o -MMD -MP -MF .deps/gdb.Tpo ../../master/gdb/gdb.c
+ gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o i386-tdep.o -MT i386-tdep.o -MMD -MP -MF .deps/i386-tdep.Tpo ../../master/gdb/i386-tdep.c
+-gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o i386-linux-tdep.o -MT i386-linux-tdep.o -MMD -MP -MF .deps/i386-linux-tdep.Tpo ../../master/gdb/i386-linux-tdep.c
+-gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o glibc-tdep.o -MT glibc-tdep.o -MMD -MP -MF .deps/glibc-tdep.Tpo ../../master/gdb/glibc-tdep.c
+ gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o i387-tdep.o -MT i387-tdep.o -MMD -MP -MF .deps/i387-tdep.Tpo ../../master/gdb/i387-tdep.c
++gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o i386gnu-tdep.o -MT i386gnu-tdep.o -MMD -MP -MF .deps/i386gnu-tdep.Tpo ../../master/gdb/i386gnu-tdep.c
+ gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o solib.o -MT solib.o -MMD -MP -MF .deps/solib.Tpo ../../master/gdb/solib.c
+ gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o solib-svr4.o -MT solib-svr4.o -MMD -MP -MF .deps/solib-svr4.Tpo ../../master/gdb/solib-svr4.c
+-gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o symfile-mem.o -MT symfile-mem.o -MMD -MP -MF .deps/symfile-mem.Tpo ../../master/gdb/symfile-mem.c
+-gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o corelow.o -MT corelow.o -MMD -MP -MF .deps/corelow.Tpo ../../master/gdb/corelow.c
+-gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o linux-tdep.o -MT linux-tdep.o -MMD -MP -MF .deps/linux-tdep.Tpo ../../master/gdb/linux-tdep.c
+-gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o linux-record.o -MT linux-record.o -MMD -MP -MF .deps/linux-record.Tpo ../../master/gdb/linux-record.c
+ gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o ser-base.o -MT ser-base.o -MMD -MP -MF .deps/ser-base.Tpo ../../master/gdb/ser-base.c
+ gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o ser-unix.o -MT ser-unix.o -MMD -MP -MF .deps/ser-unix.Tpo ../../master/gdb/ser-unix.c
+ gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o ser-pipe.o -MT ser-pipe.o -MMD -MP -MF .deps/ser-pipe.Tpo ../../master/gdb/ser-pipe.c
+ gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o ser-tcp.o -MT ser-tcp.o -MMD -MP -MF .deps/ser-tcp.Tpo ../../master/gdb/ser-tcp.c
+-gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o inf-ptrace.o -MT inf-ptrace.o -MMD -MP -MF .deps/inf-ptrace.Tpo ../../master/gdb/inf-ptrace.c
++gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o i386gnu-nat.o -MT i386gnu-nat.o -MMD -MP -MF .deps/i386gnu-nat.Tpo ../../master/gdb/i386gnu-nat.c
++gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o gnu-nat.o -MT gnu-nat.o -MMD -MP -MF .deps/gnu-nat.Tpo ../../master/gdb/gnu-nat.c
++gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o corelow.o -MT corelow.o -MMD -MP -MF .deps/corelow.Tpo ../../master/gdb/corelow.c
++gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o core-regset.o -MT core-regset.o -MMD -MP -MF .deps/core-regset.Tpo ../../master/gdb/core-regset.c
+ gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o fork-child.o -MT fork-child.o -MMD -MP -MF .deps/fork-child.Tpo ../../master/gdb/fork-child.c
+-gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o i386-nat.o -MT i386-nat.o -MMD -MP -MF .deps/i386-nat.Tpo ../../master/gdb/i386-nat.c
+-gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o i386-linux-nat.o -MT i386-linux-nat.o -MMD -MP -MF .deps/i386-linux-nat.Tpo ../../master/gdb/i386-linux-nat.c
+-gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o proc-service.o -MT proc-service.o -MMD -MP -MF .deps/proc-service.Tpo ../../master/gdb/proc-service.c
+-gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o linux-thread-db.o -MT linux-thread-db.o -MMD -MP -MF .deps/linux-thread-db.Tpo ../../master/gdb/linux-thread-db.c
+-gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o linux-nat.o -MT linux-nat.o -MMD -MP -MF .deps/linux-nat.Tpo ../../master/gdb/linux-nat.c
+-gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o linux-osdata.o -MT linux-osdata.o -MMD -MP -MF .deps/linux-osdata.Tpo ../../master/gdb/common/linux-osdata.c
+-gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o linux-fork.o -MT linux-fork.o -MMD -MP -MF .deps/linux-fork.Tpo ../../master/gdb/linux-fork.c
+-gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o linux-procfs.o -MT linux-procfs.o -MMD -MP -MF .deps/linux-procfs.Tpo ../../master/gdb/common/linux-procfs.c
++gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o notify_S.o -MT notify_S.o -MMD -MP -MF .deps/notify_S.Tpo notify_S.c
++gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o process_reply_S.o -MT process_reply_S.o -MMD -MP -MF .deps/process_reply_S.Tpo process_reply_S.c
++gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o msg_reply_S.o -MT msg_reply_S.o -MMD -MP -MF .deps/msg_reply_S.Tpo msg_reply_S.c
++gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o msg_U.o -MT msg_U.o -MMD -MP -MF .deps/msg_U.Tpo msg_U.c
++msg_U.c: In function 'msg_del_auth':
++msg_U.c:505:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
++msg_U.c:520:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
++msg_U.c: In function 'msg_get_init_ports':
++msg_U.c:957:6: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
++msg_U.c: In function 'msg_set_init_ports':
++msg_U.c:1050:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
++msg_U.c: In function 'msg_get_init_ints':
++msg_U.c:1481:6: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
++msg_U.c: In function 'msg_set_init_ints':
++msg_U.c:1573:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
++msg_U.c: In function 'msg_get_dtable':
++msg_U.c:1739:6: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
++msg_U.c: In function 'msg_set_dtable':
++msg_U.c:1832:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
++msg_U.c: In function 'msg_get_environment':
++msg_U.c:2253:6: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
++msg_U.c: In function 'msg_set_environment':
++msg_U.c:2345:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
++msg_U.c: In function 'msg_get_env_variable':
++msg_U.c:2511:6: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
++msg_U.c: In function 'msg_describe_ports':
++msg_U.c:3018:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
++msg_U.c:3083:6: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
++gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o exc_request_U.o -MT exc_request_U.o -MMD -MP -MF .deps/exc_request_U.Tpo exc_request_U.c
++gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o exc_request_S.o -MT exc_request_S.o -MMD -MP -MF .deps/exc_request_S.Tpo exc_request_S.c
+ gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o remote.o -MT remote.o -MMD -MP -MF .deps/remote.Tpo ../../master/gdb/remote.c
+ gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o dcache.o -MT dcache.o -MMD -MP -MF .deps/dcache.Tpo ../../master/gdb/dcache.c
+ gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o tracepoint.o -MT tracepoint.o -MMD -MP -MF .deps/tracepoint.Tpo ../../master/gdb/tracepoint.c
+@@ -3006,88 +2904,21 @@
+ Making init.c
+ gcc-4.6 -g -O2 -I. -I../../master/gdb -I../../master/gdb/common -I../../master/gdb/config -DLOCALEDIR="\"[...]/hurd/master.build.install/share/locale\"" -DHAVE_CONFIG_H -I../../master/gdb/../include/opcode -I../../master/gdb/../opcodes/.. -I../../master/gdb/../readline/.. -I../bfd -I../../master/gdb/../bfd -I../../master/gdb/../include -I../libdecnumber -I../../master/gdb/../libdecnumber -I../../master/gdb/gnulib -Ignulib -DTUI=1 -I/usr/include/python2.6 -I/usr/include/python2.6 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o init.o -MT init.o -MMD -MP -MF .deps/init.Tpo init.c
+ rm -f libgdb.a
+-ar q libgdb.a i386-tdep.o i386-linux-tdep.o glibc-tdep.o i387-tdep.o solib.o solib-svr4.o symfile-mem.o corelow.o linux-tdep.o linux-record.o ser-base.o ser-unix.o ser-pipe.o ser-tcp.o inf-ptrace.o fork-child.o i386-nat.o i386-linux-nat.o proc-service.o linux-thread-db.o linux-nat.o linux-osdata.o linux-fork.o linux-procfs.o remote.o dcache.o tracepoint.o ax-general.o ax-gdb.o remote-fileio.o cli-dump.o cli-decode.o cli-script.o cli-cmds.o cli-setshow.o cli-logging.o cli-interp.o cli-utils.o mi-out.o mi-console.o mi-cmds.o mi-cmd-env.o mi-cmd-var.o mi-cmd-break.o mi-cmd-stack.o mi-cmd-file.o mi-cmd-disas.o mi-symbol-cmds.o mi-cmd-target.o mi-interp.o mi-main.o mi-parse.o mi-getopt.o tui-command.o tui-data.o tui-disasm.o tui-file.o tui.o tui-hooks.o tui-interp.o tui-io.o tui-layout.o tui-out.o tui-main.o tui-regs.o tui-source.o tui-stack.o tui-win.o tui-windata.o tui-wingeneral.o tui-winsource.o tui.o python.o py-auto-load.o py-block.o py-bpevent.o py-breakpoint.o py-cmd.o py-continueevent.o py-event.o py-evtregistry.o py-evts.o py-exitedevent.o py-frame.o py-function.o py-inferior.o py-infthread.o py-lazy-string.o py-objfile.o py-param.o py-prettyprint.o py-progspace.o py-signalevent.o py-stopevent.o py-symbol.o py-symtab.o py-threadevent.o py-type.o py-utils.o py-value.o elfread.o posix-hdep.o c-exp.o cp-name-parser.o objc-exp.o ada-exp.o jv-exp.o f-exp.o m2-exp.o p-exp.o version.o annotate.o addrmap.o auxv.o bfd-target.o blockframe.o breakpoint.o findvar.o regcache.o charset.o continuations.o disasm.o dummy-frame.o dfp.o source.o value.o eval.o valops.o valarith.o valprint.o printcmd.o block.o symtab.o psymtab.o symfile.o symmisc.o linespec.o dictionary.o infcall.o infcmd.o infrun.o expprint.o environ.o stack.o thread.o exceptions.o filesystem.o inf-child.o interps.o main.o macrotab.o macrocmd.o macroexp.o macroscope.o mi-common.o event-loop.o event-top.o inf-loop.o completer.o gdbarch.o arch-utils.o gdbtypes.o osabi.o copying.o memattr.o mem-break.o target.o parse.o language.o buildsym.o findcmd.o std-regs.o signals.o exec.o reverse.o bcache.o objfiles.o observer.o minsyms.o maint.o demangle.o dbxread.o coffread.o coff-pe-read.o dwarf2read.o mipsread.o stabsread.o corefile.o dwarf2expr.o dwarf2loc.o dwarf2-frame.o ada-lang.o c-lang.o d-lang.o f-lang.o objc-lang.o ada-tasks.o ui-out.o cli-out.o varobj.o vec.o wrapper.o jv-lang.o jv-valprint.o jv-typeprint.o m2-lang.o opencl-lang.o p-lang.o p-typeprint.o p-valprint.o sentinel-frame.o complaints.o typeprint.o ada-typeprint.o c-typeprint.o f-typeprint.o m2-typeprint.o ada-valprint.o c-valprint.o cp-valprint.o d-valprint.o f-valprint.o m2-valprint.o serial.o mdebugread.o top.o utils.o ui-file.o user-regs.o frame.o frame-unwind.o doublest.o frame-base.o inline-frame.o gnu-v2-abi.o gnu-v3-abi.o cp-abi.o cp-support.o cp-namespace.o reggroups.o regset.o trad-frame.o tramp-frame.o solib.o solib-target.o prologue-value.o memory-map.o memrange.o xml-support.o xml-syscall.o xml-utils.o target-descriptions.o target-memory.o xml-tdesc.o xml-builtin.o inferior.o osdata.o gdb_usleep.o record.o gcore.o jit.o progspace.o common-utils.o buffer.o ptid.o inflow.o init.o
++ar q libgdb.a i386-tdep.o i387-tdep.o i386gnu-tdep.o solib.o solib-svr4.o ser-base.o ser-unix.o ser-pipe.o ser-tcp.o i386gnu-nat.o gnu-nat.o corelow.o core-regset.o fork-child.o notify_S.o process_reply_S.o msg_reply_S.o msg_U.o exc_request_U.o exc_request_S.o remote.o dcache.o tracepoint.o ax-general.o ax-gdb.o remote-fileio.o cli-dump.o cli-decode.o cli-script.o cli-cmds.o cli-setshow.o cli-logging.o cli-interp.o cli-utils.o mi-out.o mi-console.o mi-cmds.o mi-cmd-env.o mi-cmd-var.o mi-cmd-break.o mi-cmd-stack.o mi-cmd-file.o mi-cmd-disas.o mi-symbol-cmds.o mi-cmd-target.o mi-interp.o mi-main.o mi-parse.o mi-getopt.o tui-command.o tui-data.o tui-disasm.o tui-file.o tui.o tui-hooks.o tui-interp.o tui-io.o tui-layout.o tui-out.o tui-main.o tui-regs.o tui-source.o tui-stack.o tui-win.o tui-windata.o tui-wingeneral.o tui-winsource.o tui.o python.o py-auto-load.o py-block.o py-bpevent.o py-breakpoint.o py-cmd.o py-continueevent.o py-event.o py-evtregistry.o py-evts.o py-exitedevent.o py-frame.o py-function.o py-inferior.o py-infthread.o py-lazy-string.o py-objfile.o py-param.o py-prettyprint.o py-progspace.o py-signalevent.o py-stopevent.o py-symbol.o py-symtab.o py-threadevent.o py-type.o py-utils.o py-value.o elfread.o posix-hdep.o c-exp.o cp-name-parser.o objc-exp.o ada-exp.o jv-exp.o f-exp.o m2-exp.o p-exp.o version.o annotate.o addrmap.o auxv.o bfd-target.o blockframe.o breakpoint.o findvar.o regcache.o charset.o continuations.o disasm.o dummy-frame.o dfp.o source.o value.o eval.o valops.o valarith.o valprint.o printcmd.o block.o symtab.o psymtab.o symfile.o symmisc.o linespec.o dictionary.o infcall.o infcmd.o infrun.o expprint.o environ.o stack.o thread.o exceptions.o filesystem.o inf-child.o interps.o main.o macrotab.o macrocmd.o macroexp.o macroscope.o mi-common.o event-loop.o event-top.o inf-loop.o completer.o gdbarch.o arch-utils.o gdbtypes.o osabi.o copying.o memattr.o mem-break.o target.o parse.o language.o buildsym.o findcmd.o std-regs.o signals.o exec.o reverse.o bcache.o objfiles.o observer.o minsyms.o maint.o demangle.o dbxread.o coffread.o coff-pe-read.o dwarf2read.o mipsread.o stabsread.o corefile.o dwarf2expr.o dwarf2loc.o dwarf2-frame.o ada-lang.o c-lang.o d-lang.o f-lang.o objc-lang.o ada-tasks.o ui-out.o cli-out.o varobj.o vec.o wrapper.o jv-lang.o jv-valprint.o jv-typeprint.o m2-lang.o opencl-lang.o p-lang.o p-typeprint.o p-valprint.o sentinel-frame.o complaints.o typeprint.o ada-typeprint.o c-typeprint.o f-typeprint.o m2-typeprint.o ada-valprint.o c-valprint.o cp-valprint.o d-valprint.o f-valprint.o m2-valprint.o serial.o mdebugread.o top.o utils.o ui-file.o user-regs.o frame.o frame-unwind.o doublest.o frame-base.o inline-frame.o gnu-v2-abi.o gnu-v3-abi.o cp-abi.o cp-support.o cp-namespace.o reggroups.o regset.o trad-frame.o tramp-frame.o solib.o solib-target.o prologue-value.o memory-map.o memrange.o xml-support.o xml-syscall.o xml-utils.o target-descriptions.o target-memory.o xml-tdesc.o xml-builtin.o inferior.o osdata.o gdb_usleep.o record.o gcore.o jit.o progspace.o common-utils.o buffer.o ptid.o inflow.o init.o
+ ar: creating libgdb.a
+ ranlib libgdb.a
+ rm -f gdb
+ gcc-4.6 -g -O2 \
+ -o gdb gdb.o libgdb.a \
+- ../readline/libreadline.a ../opcodes/libopcodes.a ../bfd/libbfd.a ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a -lncurses -lz -lm -L/usr/lib/python2.6/config -lpthread -ldl -lutil -lm -lpython2.6 -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions -lexpat ../libiberty/libiberty.a gnulib/libgnu.a -ldl -rdynamic
++ ../readline/libreadline.a ../opcodes/libopcodes.a ../bfd/libbfd.a ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a -lncurses -lz -lm -L/usr/lib/python2.6/config -lpthread -ldl -lutil -lm -lpython2.6 -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions -lexpat ../libiberty/libiberty.a gnulib/libgnu.a
+ rm -f gdbtui
+ gcc-4.6 -g -O2 \
+ -o gdbtui tui-main.o libgdb.a \
+- ../readline/libreadline.a ../opcodes/libopcodes.a ../bfd/libbfd.a ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a -lncurses -lz -lm -L/usr/lib/python2.6/config -lpthread -ldl -lutil -lm -lpython2.6 -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions -lexpat ../libiberty/libiberty.a gnulib/libgnu.a -ldl -rdynamic
++ ../readline/libreadline.a ../opcodes/libopcodes.a ../bfd/libbfd.a ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a -lncurses -lz -lm -L/usr/lib/python2.6/config -lpthread -ldl -lutil -lm -lpython2.6 -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions -lexpat ../libiberty/libiberty.a gnulib/libgnu.a
+ make[3]: Entering directory `[...]/hurd/master.build/gdb'
+ make[4]: Entering directory `[...]/hurd/master.build/gdb/doc'
+ make[4]: Nothing to be done for `all'.
+ make[4]: Leaving directory `[...]/hurd/master.build/gdb/doc'
+-make[4]: Entering directory `[...]/hurd/master.build/gdb/gdbserver'
+-CONFIG_FILES="" CONFIG_HEADERS=config.h:config.in /bin/sh ./config.status
+-config.status: creating config.h
+-config.status: config.h is unchanged
+-config.status: executing default commands
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/inferiors.c
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/regcache.c
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/remote-utils.c
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/server.c
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/../common/signals.c -DGDBSERVER
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/target.c
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/utils.c
+-rm -f version.c-tmp version.c
+-echo '#include "server.h"' >> version.c-tmp
+-echo 'const char version[] = "'"`sed q ../../../master/gdb/gdbserver/../version.in`"'";' >> version.c-tmp
+-echo 'const char host_name[] = "[ARCH]";' >> version.c-tmp
+-mv version.c-tmp version.c
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts version.c
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/mem-break.c
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/hostio.c
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/event-loop.c
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/tracepoint.c
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/../common/xml-utils.c -DGDBSERVER
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/../common/common-utils.c -DGDBSERVER
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/../common/ptid.c -DGDBSERVER
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/../common/buffer.c -DGDBSERVER
+-rm -f xml-builtin.tmp
+-/bin/sh ../../../master/gdb/gdbserver/../features/feature_to_c.sh xml-builtin.tmp ../../../master/gdb/gdbserver/../features/i386/i386-linux.xml ../../../master/gdb/gdbserver/../features/i386/i386-avx-linux.xml ../../../master/gdb/gdbserver/../features/i386/i386-mmx-linux.xml ../../../master/gdb/gdbserver/../features/i386/32bit-linux.xml ../../../master/gdb/gdbserver/../features/i386/32bit-core.xml ../../../master/gdb/gdbserver/../features/i386/32bit-sse.xml ../../../master/gdb/gdbserver/../features/i386/32bit-avx.xml
+-/bin/sh ../../../master/gdb/gdbserver/../../move-if-change xml-builtin.tmp xml-builtin.c
+-echo stamp > stamp-xml
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts xml-builtin.c
+-/bin/sh ../../../master/gdb/gdbserver/../regformats/regdat.sh ../../../master/gdb/gdbserver/../regformats/i386/i386-linux.dat i386-linux.c
+-i386-linux.c updated.
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts i386-linux.c
+-/bin/sh ../../../master/gdb/gdbserver/../regformats/regdat.sh ../../../master/gdb/gdbserver/../regformats/i386/i386-avx-linux.dat i386-avx-linux.c
+-i386-avx-linux.c updated.
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts i386-avx-linux.c
+-/bin/sh ../../../master/gdb/gdbserver/../regformats/regdat.sh ../../../master/gdb/gdbserver/../regformats/i386/i386-mmx-linux.dat i386-mmx-linux.c
+-i386-mmx-linux.c updated.
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts i386-mmx-linux.c
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/linux-low.c -DUSE_THREAD_DB
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/../common/linux-osdata.c -DGDBSERVER
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/linux-x86-low.c
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/i386-low.c
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/i387-fp.c
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/../common/linux-procfs.c -DGDBSERVER
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/hostio-errno.c
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/thread-db.c
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/proc-service.c
+-rm -f gdbserver
+-gcc-4.6 -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts -Wl,--dynamic-list=../../../master/gdb/gdbserver/proc-service.list -o gdbserver inferiors.o regcache.o remote-utils.o server.o signals.o target.o utils.o version.o mem-break.o hostio.o event-loop.o tracepoint.o xml-utils.o common-utils.o ptid.o buffer.o xml-builtin.o i386-linux.o i386-avx-linux.o i386-mmx-linux.o linux-low.o linux-osdata.o linux-x86-low.o i386-low.o i387-fp.o linux-procfs.o hostio-errno.o thread-db.o proc-service.o \
+- -ldl
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts ../../../master/gdb/gdbserver/gdbreplay.c
+-rm -f gdbreplay
+-gcc-4.6 -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts -Wl,--dynamic-list=../../../master/gdb/gdbserver/proc-service.list -o gdbreplay gdbreplay.o version.o \
+-
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts -DCONFIG_UST_GDB_INTEGRATION -fPIC -DGDBSERVER -DIN_PROCESS_AGENT -fvisibility=hidden ../../../master/gdb/gdbserver/tracepoint.c -o tracepoint-ipa.o
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts -DCONFIG_UST_GDB_INTEGRATION -fPIC -DGDBSERVER -DIN_PROCESS_AGENT -fvisibility=hidden ../../../master/gdb/gdbserver/utils.c -o utils-ipa.o
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts -DCONFIG_UST_GDB_INTEGRATION -fPIC -DGDBSERVER -DIN_PROCESS_AGENT -fvisibility=hidden ../../../master/gdb/gdbserver/regcache.c -o regcache-ipa.o
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts -DCONFIG_UST_GDB_INTEGRATION -fPIC -DGDBSERVER -DIN_PROCESS_AGENT -fvisibility=hidden ../../../master/gdb/gdbserver/remote-utils.c -o remote-utils-ipa.o
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts -DCONFIG_UST_GDB_INTEGRATION -fPIC -DGDBSERVER -DIN_PROCESS_AGENT -fvisibility=hidden ../../../master/gdb/gdbserver/../common/common-utils.c -o common-utils-ipa.o
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts -DCONFIG_UST_GDB_INTEGRATION -fPIC -DGDBSERVER -DIN_PROCESS_AGENT -fvisibility=hidden i386-linux.c -o i386-linux-ipa.o
+-gcc-4.6 -c -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts -DCONFIG_UST_GDB_INTEGRATION -fPIC -DGDBSERVER -DIN_PROCESS_AGENT -fvisibility=hidden ../../../master/gdb/gdbserver/linux-i386-ipa.c -o linux-i386-ipa.o
+-rm -f libinproctrace.so
+-gcc-4.6 -shared -fPIC -Wl,--no-undefined -g -O2 -I. -I../../../master/gdb/gdbserver -I../../../master/gdb/gdbserver/../common -I../../../master/gdb/gdbserver/../regformats -I../../../master/gdb/gdbserver/../../include -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts \
+- -Wl,--dynamic-list=../../../master/gdb/gdbserver/proc-service.list -o libinproctrace.so tracepoint-ipa.o utils-ipa.o regcache-ipa.o remote-utils-ipa.o common-utils-ipa.o i386-linux-ipa.o linux-i386-ipa.o -ldl -pthread
+-make[4]: Leaving directory `[...]/hurd/master.build/gdb/gdbserver'
+ make[4]: Entering directory `[...]/hurd/master.build/gdb/data-directory'
+ rm -rf ./syscalls
+ mkdir ./syscalls
diff --git a/open_issues/gdb/log_install-hurd.sed b/open_issues/gdb/log_install-hurd.sed
new file mode 100644
index 00000000..9565aaae
--- /dev/null
+++ b/open_issues/gdb/log_install-hurd.sed
@@ -0,0 +1 @@
+s%i686-unknown-gnu0\.3%[ARCH]%g
diff --git a/open_issues/gdb/log_install-linux.sed b/open_issues/gdb/log_install-linux.sed
new file mode 100644
index 00000000..22880cc5
--- /dev/null
+++ b/open_issues/gdb/log_install-linux.sed
@@ -0,0 +1 @@
+s%i686-pc-linux-gnu%[ARCH]%g
diff --git a/open_issues/gdb/log_install.diff b/open_issues/gdb/log_install.diff
new file mode 100644
index 00000000..a2593305
--- /dev/null
+++ b/open_issues/gdb/log_install.diff
@@ -0,0 +1,48 @@
+--- /dev/fd/63 2011-09-06 18:18:41.081646850 +0200
++++ /dev/fd/62 2011-09-06 18:18:41.081646850 +0200
+@@ -68,7 +68,6 @@
+ libtool: install: /usr/bin/install -c .libs/libbfd.a [...]/hurd/master.build.install/lib/libbfd.a
+ libtool: install: chmod 644 [...]/hurd/master.build.install/lib/libbfd.a
+ libtool: install: ranlib [...]/hurd/master.build.install/lib/libbfd.a
+-libtool: finish: PATH="/home/thomas/command-i686:/home/thomas/command:/home/thomas/shared/command:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin" ldconfig -n [...]/hurd/master.build.install/lib
+ ----------------------------------------------------------------------
+ Libraries have been installed in:
+ [...]/hurd/master.build.install/lib
+@@ -104,7 +103,6 @@
+ libtool: install: /usr/bin/install -c .libs/libopcodes.a [...]/hurd/master.build.install/lib/libopcodes.a
+ libtool: install: chmod 644 [...]/hurd/master.build.install/lib/libopcodes.a
+ libtool: install: ranlib [...]/hurd/master.build.install/lib/libopcodes.a
+-libtool: finish: PATH="/home/thomas/command-i686:/home/thomas/command:/home/thomas/shared/command:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin" ldconfig -n [...]/hurd/master.build.install/lib
+ ----------------------------------------------------------------------
+ Libraries have been installed in:
+ [...]/hurd/master.build.install/lib
+@@ -241,8 +239,6 @@
+ make[4]: Entering directory `[...]/hurd/master.build/gdb/doc'
+ make[4]: Nothing to be done for `all'.
+ make[4]: Leaving directory `[...]/hurd/master.build/gdb/doc'
+-make[4]: Entering directory `[...]/hurd/master.build/gdb/gdbserver'
+-make[4]: Leaving directory `[...]/hurd/master.build/gdb/gdbserver'
+ make[4]: Entering directory `[...]/hurd/master.build/gdb/data-directory'
+ make[4]: Nothing to be done for `all'.
+ make[4]: Leaving directory `[...]/hurd/master.build/gdb/data-directory'
+@@ -337,20 +333,6 @@
+ make[5]: Entering directory `[...]/hurd/master.build/gdb/testsuite'
+ make[5]: Nothing to be done for `install'.
+ make[5]: Leaving directory `[...]/hurd/master.build/gdb/testsuite'
+-make[5]: Entering directory `[...]/hurd/master.build/gdb/gdbserver'
+-make[6]: Entering directory `[...]/hurd/master.build/gdb/gdbserver'
+-n=`echo gdbserver | sed 's,y,y,'`; \
+- if [ x$n = x ]; then n=gdbserver; else true; fi; \
+- if [ x"i386-linux-ipa.o linux-i386-ipa.o" != x ]; then \
+- /bin/sh ../../../master/gdb/gdbserver/../../mkinstalldirs [...]/hurd/master.build.install/lib; \
+- /usr/bin/install -c libinproctrace.so [...]/hurd/master.build.install/lib/libinproctrace.so; \
+- fi; \
+- /bin/sh ../../../master/gdb/gdbserver/../../mkinstalldirs [...]/hurd/master.build.install/bin; \
+- /usr/bin/install -c gdbserver [...]/hurd/master.build.install/bin/$n; \
+- /bin/sh ../../../master/gdb/gdbserver/../../mkinstalldirs [...]/hurd/master.build.install/share/man/man1; \
+- /usr/bin/install -c -m 644 ../../../master/gdb/gdbserver/gdbserver.1 [...]/hurd/master.build.install/share/man/man1/$n.1
+-make[6]: Leaving directory `[...]/hurd/master.build/gdb/gdbserver'
+-make[5]: Leaving directory `[...]/hurd/master.build/gdb/gdbserver'
+ make[5]: Entering directory `[...]/hurd/master.build/gdb/data-directory'
+ make[6]: Entering directory `[...]/hurd/master.build/gdb/data-directory'
+ /bin/dash ../../../master/gdb/data-directory/../../mkinstalldirs [...]/hurd/master.build.install/share/gdb/syscalls
diff --git a/open_issues/gdb/sum_linux b/open_issues/gdb/sum_linux
new file mode 100644
index 00000000..806f17a4
--- /dev/null
+++ b/open_issues/gdb/sum_linux
@@ -0,0 +1,18632 @@
+Test Run By thomas on Mon Jul 4 18:12:48 2011
+Native configuration is i686-pc-linux-gnu
+
+ === gdb tests ===
+
+Schedule of variations:
+ unix
+
+Running target unix
+Running ../../../master/gdb/testsuite/gdb.ada/array_bounds.exp ...
+UNSUPPORTED: gdb.ada/array_bounds.exp: compilation bar.adb
+Running ../../../master/gdb/testsuite/gdb.ada/array_return.exp ...
+UNSUPPORTED: gdb.ada/array_return.exp: compilation p.adb
+Running ../../../master/gdb/testsuite/gdb.ada/array_subscript_addr.exp ...
+UNSUPPORTED: gdb.ada/array_subscript_addr.exp: compilation p.adb
+Running ../../../master/gdb/testsuite/gdb.ada/arrayidx.exp ...
+UNSUPPORTED: gdb.ada/arrayidx.exp: compilation p.adb
+Running ../../../master/gdb/testsuite/gdb.ada/arrayparam.exp ...
+UNSUPPORTED: gdb.ada/arrayparam.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/arrayptr.exp ...
+UNSUPPORTED: gdb.ada/arrayptr.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/assign_1.exp ...
+PASS: gdb.ada/assign_1.exp: Changing the language to ada
+PASS: gdb.ada/assign_1.exp: set convenience variable $xxx to 1
+Running ../../../master/gdb/testsuite/gdb.ada/atomic_enum.exp ...
+UNSUPPORTED: gdb.ada/atomic_enum.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/boolean_expr.exp ...
+PASS: gdb.ada/boolean_expr.exp: Changing the language to ada
+PASS: gdb.ada/boolean_expr.exp: print 1 = 2
+PASS: gdb.ada/boolean_expr.exp: print 3 = 3
+Running ../../../master/gdb/testsuite/gdb.ada/call_pn.exp ...
+UNSUPPORTED: gdb.ada/call_pn.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/catch_ex.exp ...
+UNSUPPORTED: gdb.ada/catch_ex.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/char_enum.exp ...
+UNSUPPORTED: gdb.ada/char_enum.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/char_param.exp ...
+UNSUPPORTED: gdb.ada/char_param.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/complete.exp ...
+UNSUPPORTED: gdb.ada/complete.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/cond_lang.exp ...
+UNSUPPORTED: gdb.ada/cond_lang.exp: compilation a.adb
+Running ../../../master/gdb/testsuite/gdb.ada/dyn_loc.exp ...
+UNSUPPORTED: gdb.ada/dyn_loc.exp: compilation p.adb
+Running ../../../master/gdb/testsuite/gdb.ada/exec_changed.exp ...
+UNSUPPORTED: gdb.ada/exec_changed.exp: compilation first.adb
+Running ../../../master/gdb/testsuite/gdb.ada/exprs.exp ...
+UNSUPPORTED: gdb.ada/exprs.exp: compilation p.adb
+Running ../../../master/gdb/testsuite/gdb.ada/fixed_cmp.exp ...
+UNSUPPORTED: gdb.ada/fixed_cmp.exp: compilation fixed.adb
+Running ../../../master/gdb/testsuite/gdb.ada/fixed_points.exp ...
+UNSUPPORTED: gdb.ada/fixed_points.exp: compilation fixed_points.adb
+Running ../../../master/gdb/testsuite/gdb.ada/formatted_ref.exp ...
+UNSUPPORTED: gdb.ada/formatted_ref.exp: compilation formatted_ref.adb
+UNTESTED: gdb.ada/formatted_ref.exp: formatted-ref.exp
+Running ../../../master/gdb/testsuite/gdb.ada/frame_args.exp ...
+UNSUPPORTED: gdb.ada/frame_args.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/fun_addr.exp ...
+UNSUPPORTED: gdb.ada/fun_addr.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/fun_in_declare.exp ...
+UNSUPPORTED: gdb.ada/fun_in_declare.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/funcall_param.exp ...
+UNSUPPORTED: gdb.ada/funcall_param.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/homonym.exp ...
+UNSUPPORTED: gdb.ada/homonym.exp: compilation homonym_main.adb
+Running ../../../master/gdb/testsuite/gdb.ada/info_types.exp ...
+PASS: gdb.ada/info_types.exp: set lang ada
+PASS: gdb.ada/info_types.exp: info types new_integer_type
+Running ../../../master/gdb/testsuite/gdb.ada/int_deref.exp ...
+UNSUPPORTED: gdb.ada/int_deref.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/interface.exp ...
+UNSUPPORTED: gdb.ada/interface.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/lang_switch.exp ...
+UNSUPPORTED: gdb.ada/lang_switch.exp: compilation lang_switch.adb
+Running ../../../master/gdb/testsuite/gdb.ada/mi_catch_ex.exp ...
+UNSUPPORTED: gdb.ada/mi_catch_ex.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/mod_from_name.exp ...
+UNSUPPORTED: gdb.ada/mod_from_name.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/nested.exp ...
+UNSUPPORTED: gdb.ada/nested.exp: compilation hello.adb
+Running ../../../master/gdb/testsuite/gdb.ada/null_array.exp ...
+UNSUPPORTED: gdb.ada/null_array.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/null_record.exp ...
+UNSUPPORTED: gdb.ada/null_record.exp: compilation null_record.adb
+Running ../../../master/gdb/testsuite/gdb.ada/packed_array.exp ...
+UNSUPPORTED: gdb.ada/packed_array.exp: compilation pa.adb
+Running ../../../master/gdb/testsuite/gdb.ada/packed_tagged.exp ...
+UNSUPPORTED: gdb.ada/packed_tagged.exp: compilation comp_bug.adb
+Running ../../../master/gdb/testsuite/gdb.ada/print_chars.exp ...
+UNSUPPORTED: gdb.ada/print_chars.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/print_pc.exp ...
+UNSUPPORTED: gdb.ada/print_pc.exp: compilation dummy.adb
+Running ../../../master/gdb/testsuite/gdb.ada/ptr_typedef.exp ...
+UNSUPPORTED: gdb.ada/ptr_typedef.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/ptype_arith_binop.exp ...
+PASS: gdb.ada/ptype_arith_binop.exp: set lang ada
+PASS: gdb.ada/ptype_arith_binop.exp: ptype 3 * 2.0
+PASS: gdb.ada/ptype_arith_binop.exp: ptype 3 / 2.0
+Running ../../../master/gdb/testsuite/gdb.ada/ptype_field.exp ...
+UNSUPPORTED: gdb.ada/ptype_field.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/ptype_tagged_param.exp ...
+UNSUPPORTED: gdb.ada/ptype_tagged_param.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/rec_return.exp ...
+UNSUPPORTED: gdb.ada/rec_return.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/ref_param.exp ...
+UNSUPPORTED: gdb.ada/ref_param.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/ref_tick_size.exp ...
+UNSUPPORTED: gdb.ada/ref_tick_size.exp: compilation p.adb
+Running ../../../master/gdb/testsuite/gdb.ada/same_enum.exp ...
+UNSUPPORTED: gdb.ada/same_enum.exp: compilation a.adb
+Running ../../../master/gdb/testsuite/gdb.ada/start.exp ...
+UNSUPPORTED: gdb.ada/start.exp: compilation dummy.adb
+Running ../../../master/gdb/testsuite/gdb.ada/str_ref_cmp.exp ...
+UNSUPPORTED: gdb.ada/str_ref_cmp.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/sym_print_name.exp ...
+UNSUPPORTED: gdb.ada/sym_print_name.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/taft_type.exp ...
+UNSUPPORTED: gdb.ada/taft_type.exp: compilation p.adb
+Running ../../../master/gdb/testsuite/gdb.ada/tagged.exp ...
+UNSUPPORTED: gdb.ada/tagged.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/tasks.exp ...
+UNSUPPORTED: gdb.ada/tasks.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/tick_last_segv.exp ...
+UNSUPPORTED: gdb.ada/tick_last_segv.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/type_coercion.exp ...
+UNSUPPORTED: gdb.ada/type_coercion.exp: compilation assign.adb
+Running ../../../master/gdb/testsuite/gdb.ada/uninitialized_vars.exp ...
+UNSUPPORTED: gdb.ada/uninitialized_vars.exp: compilation parse.adb
+Running ../../../master/gdb/testsuite/gdb.ada/variant_record_packed_array.exp ...
+UNSUPPORTED: gdb.ada/variant_record_packed_array.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.ada/watch_arg.exp ...
+UNSUPPORTED: gdb.ada/watch_arg.exp: compilation watch.adb
+Running ../../../master/gdb/testsuite/gdb.ada/widewide.exp ...
+UNSUPPORTED: gdb.ada/widewide.exp: compilation foo.adb
+Running ../../../master/gdb/testsuite/gdb.arch/alpha-step.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/altivec-abi.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/altivec-regs.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/amd64-byte.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/amd64-disp-step.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/amd64-dword.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/amd64-i386-address.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/amd64-word.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/arm-disp-step.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/e500-abi.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/e500-prologue.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/e500-regs.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/gdb1291.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/gdb1431.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/gdb1558.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/i386-avx.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/i386-bp_permanent.exp ...
+PASS: gdb.arch/i386-bp_permanent.exp: Stop at the 'standard' start breakpoint (fetching esp).
+PASS: gdb.arch/i386-bp_permanent.exp: Stop at permanent breakpoint.
+PASS: gdb.arch/i386-bp_permanent.exp: Single stepping past permanent breakpoint.
+PASS: gdb.arch/i386-bp_permanent.exp: ESP value does not match - step_permanent_breakpoint wrong.
+Running ../../../master/gdb/testsuite/gdb.arch/i386-byte.exp ...
+PASS: gdb.arch/i386-byte.exp: set first breakpoint in main
+PASS: gdb.arch/i386-byte.exp: continue to breakpoint: continue to first breakpoint in main
+PASS: gdb.arch/i386-byte.exp: check contents of %al
+PASS: gdb.arch/i386-byte.exp: check contents of %ah
+PASS: gdb.arch/i386-byte.exp: check contents of %bl
+PASS: gdb.arch/i386-byte.exp: check contents of %bh
+PASS: gdb.arch/i386-byte.exp: check contents of %cl
+PASS: gdb.arch/i386-byte.exp: check contents of %ch
+PASS: gdb.arch/i386-byte.exp: check contents of %dl
+PASS: gdb.arch/i386-byte.exp: check contents of %dh
+PASS: gdb.arch/i386-byte.exp: set %al
+PASS: gdb.arch/i386-byte.exp: set %ah
+PASS: gdb.arch/i386-byte.exp: set %bl
+PASS: gdb.arch/i386-byte.exp: set %bh
+PASS: gdb.arch/i386-byte.exp: set %cl
+PASS: gdb.arch/i386-byte.exp: set %ch
+PASS: gdb.arch/i386-byte.exp: set %dl
+PASS: gdb.arch/i386-byte.exp: set %dh
+PASS: gdb.arch/i386-byte.exp: set second breakpoint in main
+PASS: gdb.arch/i386-byte.exp: continue to breakpoint: continue to second breakpoint in main
+PASS: gdb.arch/i386-byte.exp: check contents of %al
+PASS: gdb.arch/i386-byte.exp: check contents of %ah
+PASS: gdb.arch/i386-byte.exp: check contents of %bl
+PASS: gdb.arch/i386-byte.exp: check contents of %bh
+PASS: gdb.arch/i386-byte.exp: check contents of %cl
+PASS: gdb.arch/i386-byte.exp: check contents of %ch
+PASS: gdb.arch/i386-byte.exp: check contents of %dl
+PASS: gdb.arch/i386-byte.exp: check contents of %dh
+Running ../../../master/gdb/testsuite/gdb.arch/i386-disp-step.exp ...
+PASS: gdb.arch/i386-disp-step.exp: set displaced-stepping on
+PASS: gdb.arch/i386-disp-step.exp: show displaced-stepping
+PASS: gdb.arch/i386-disp-step.exp: break test_call
+PASS: gdb.arch/i386-disp-step.exp: break test_call_end
+PASS: gdb.arch/i386-disp-step.exp: break test_ret
+PASS: gdb.arch/i386-disp-step.exp: break test_ret_end
+PASS: gdb.arch/i386-disp-step.exp: continue to test_call
+PASS: gdb.arch/i386-disp-step.exp: continue to test_call_end
+PASS: gdb.arch/i386-disp-step.exp: continue to test_ret
+PASS: gdb.arch/i386-disp-step.exp: continue to test_ret_end
+PASS: gdb.arch/i386-disp-step.exp: break test_prefixed_abs_jump
+PASS: gdb.arch/i386-disp-step.exp: break test_prefixed_abs_jump_end
+PASS: gdb.arch/i386-disp-step.exp: continue to test_prefixed_abs_jump
+PASS: gdb.arch/i386-disp-step.exp: continue to test_prefixed_abs_jump_end
+PASS: gdb.arch/i386-disp-step.exp: break test_syscall
+PASS: gdb.arch/i386-disp-step.exp: break test_syscall_end
+PASS: gdb.arch/i386-disp-step.exp: continue to test_syscall
+PASS: gdb.arch/i386-disp-step.exp: continue to test_syscall_end
+PASS: gdb.arch/i386-disp-step.exp: break test_prefixed_syscall
+PASS: gdb.arch/i386-disp-step.exp: break test_prefixed_syscall_end
+PASS: gdb.arch/i386-disp-step.exp: continue to test_prefixed_syscall
+PASS: gdb.arch/i386-disp-step.exp: continue to test_prefixed_syscall_end
+PASS: gdb.arch/i386-disp-step.exp: break test_int3
+PASS: gdb.arch/i386-disp-step.exp: break test_int3_end
+PASS: gdb.arch/i386-disp-step.exp: continue to test_int3
+PASS: gdb.arch/i386-disp-step.exp: continue to test_int3_end
+PASS: gdb.arch/i386-disp-step.exp: continue until exit at i386-disp-step
+Running ../../../master/gdb/testsuite/gdb.arch/i386-dr3-watch.exp ...
+PASS: gdb.arch/i386-dr3-watch.exp: set breakpoint always-inserted on
+PASS: gdb.arch/i386-dr3-watch.exp: watch i1
+PASS: gdb.arch/i386-dr3-watch.exp: watch i2
+PASS: gdb.arch/i386-dr3-watch.exp: watch i3
+PASS: gdb.arch/i386-dr3-watch.exp: watch i4
+PASS: gdb.arch/i386-dr3-watch.exp: continue to i1 watchpoint
+PASS: gdb.arch/i386-dr3-watch.exp: continue to i2 watchpoint
+PASS: gdb.arch/i386-dr3-watch.exp: continue to i3 watchpoint
+PASS: gdb.arch/i386-dr3-watch.exp: continue to i4 watchpoint
+Running ../../../master/gdb/testsuite/gdb.arch/i386-gnu-cfi.exp ...
+PASS: gdb.arch/i386-gnu-cfi.exp: continue to abort()
+PASS: gdb.arch/i386-gnu-cfi.exp: backtrace
+PASS: gdb.arch/i386-gnu-cfi.exp: shift up to the modified frame
+PASS: gdb.arch/i386-gnu-cfi.exp: Existence of the CFI inserted register
+PASS: gdb.arch/i386-gnu-cfi.exp: Value of the CFI inserted register
+Running ../../../master/gdb/testsuite/gdb.arch/i386-permbkpt.exp ...
+PASS: gdb.arch/i386-permbkpt.exp: First permanent break
+PASS: gdb.arch/i386-permbkpt.exp: Second permanent break
+Running ../../../master/gdb/testsuite/gdb.arch/i386-prologue.exp ...
+PASS: gdb.arch/i386-prologue.exp: continue to standard
+PASS: gdb.arch/i386-prologue.exp: skip breakpoint in standard
+PASS: gdb.arch/i386-prologue.exp: backtrace in standard
+PASS: gdb.arch/i386-prologue.exp: saved registers in standard
+PASS: gdb.arch/i386-prologue.exp: break *(stack_align_ecx + 7)
+PASS: gdb.arch/i386-prologue.exp: continue to stack_align_ecx + 7
+PASS: gdb.arch/i386-prologue.exp: first backtrace in stack_align_ecx
+PASS: gdb.arch/i386-prologue.exp: continue in stack_align_ecx
+PASS: gdb.arch/i386-prologue.exp: skip breakpoint in stack_align_ecx
+PASS: gdb.arch/i386-prologue.exp: second backtrace in stack_align_ecx
+PASS: gdb.arch/i386-prologue.exp: saved registers in stack_align_ecx
+PASS: gdb.arch/i386-prologue.exp: break *(stack_align_edx + 7)
+PASS: gdb.arch/i386-prologue.exp: continue to stack_align_edx + 7
+PASS: gdb.arch/i386-prologue.exp: first backtrace in stack_align_edx
+PASS: gdb.arch/i386-prologue.exp: continue in stack_align_edx
+PASS: gdb.arch/i386-prologue.exp: skip breakpoint in stack_align_edx
+PASS: gdb.arch/i386-prologue.exp: second backtrace in stack_align_edx
+PASS: gdb.arch/i386-prologue.exp: saved registers in stack_align_edx
+PASS: gdb.arch/i386-prologue.exp: break *(stack_align_eax + 7)
+PASS: gdb.arch/i386-prologue.exp: continue to stack_align_eax + 7
+PASS: gdb.arch/i386-prologue.exp: first backtrace in stack_align_eax
+PASS: gdb.arch/i386-prologue.exp: continue in stack_align_eax
+PASS: gdb.arch/i386-prologue.exp: skip breakpoint in stack_align_eax
+PASS: gdb.arch/i386-prologue.exp: second backtrace in stack_align_eax
+PASS: gdb.arch/i386-prologue.exp: saved registers in stack_align_eax
+PASS: gdb.arch/i386-prologue.exp: continue to gdb1253
+PASS: gdb.arch/i386-prologue.exp: skip breakpoint in gdb1253
+PASS: gdb.arch/i386-prologue.exp: backtrace in gdb1253
+PASS: gdb.arch/i386-prologue.exp: saved registers in gdb1253
+PASS: gdb.arch/i386-prologue.exp: continue to gdb1718
+PASS: gdb.arch/i386-prologue.exp: skip breakpoint in gdb1718
+PASS: gdb.arch/i386-prologue.exp: backtrace in gdb1718
+KFAIL: gdb.arch/i386-prologue.exp: saved registers in gdb1718 (PRMS: gdb/1718)
+PASS: gdb.arch/i386-prologue.exp: continue to gdb1338
+PASS: gdb.arch/i386-prologue.exp: skip breakpoint in gdb1338
+PASS: gdb.arch/i386-prologue.exp: backtrace in gdb1338
+PASS: gdb.arch/i386-prologue.exp: saved registers in gdb1338
+PASS: gdb.arch/i386-prologue.exp: check jump_at_beginning prologue end
+Running ../../../master/gdb/testsuite/gdb.arch/i386-signal.exp ...
+PASS: gdb.arch/i386-signal.exp: backtrace 10
+PASS: gdb.arch/i386-signal.exp: finish
+Running ../../../master/gdb/testsuite/gdb.arch/i386-size-overlap.exp ...
+PASS: gdb.arch/i386-size-overlap.exp: run past main
+PASS: gdb.arch/i386-size-overlap.exp: backtrace shows the outer function
+Running ../../../master/gdb/testsuite/gdb.arch/i386-size.exp ...
+PASS: gdb.arch/i386-size.exp: run past main
+PASS: gdb.arch/i386-size.exp: backtrace shows no function
+PASS: gdb.arch/i386-size.exp: disassemble stops at end of main
+Running ../../../master/gdb/testsuite/gdb.arch/i386-sse.exp ...
+PASS: gdb.arch/i386-sse.exp: check whether processor supports SSE
+PASS: gdb.arch/i386-sse.exp: set first breakpoint in main
+PASS: gdb.arch/i386-sse.exp: continue to breakpoint: continue to first breakpoint in main
+PASS: gdb.arch/i386-sse.exp: check float contents of %xmm0
+PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm0
+PASS: gdb.arch/i386-sse.exp: check float contents of %xmm1
+PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm1
+PASS: gdb.arch/i386-sse.exp: check float contents of %xmm2
+PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm2
+PASS: gdb.arch/i386-sse.exp: check float contents of %xmm3
+PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm3
+PASS: gdb.arch/i386-sse.exp: check float contents of %xmm4
+PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm4
+PASS: gdb.arch/i386-sse.exp: check float contents of %xmm5
+PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm5
+PASS: gdb.arch/i386-sse.exp: check float contents of %xmm6
+PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm6
+PASS: gdb.arch/i386-sse.exp: check float contents of %xmm7
+PASS: gdb.arch/i386-sse.exp: check int8 contents of %xmm7
+PASS: gdb.arch/i386-sse.exp: set %xmm0
+PASS: gdb.arch/i386-sse.exp: set %xmm1
+PASS: gdb.arch/i386-sse.exp: set %xmm2
+PASS: gdb.arch/i386-sse.exp: set %xmm3
+PASS: gdb.arch/i386-sse.exp: set %xmm4
+PASS: gdb.arch/i386-sse.exp: set %xmm5
+PASS: gdb.arch/i386-sse.exp: set %xmm6
+PASS: gdb.arch/i386-sse.exp: set %xmm7
+PASS: gdb.arch/i386-sse.exp: set second breakpoint in main
+PASS: gdb.arch/i386-sse.exp: continue to breakpoint: continue to second breakpoint in main
+PASS: gdb.arch/i386-sse.exp: check contents of data[0]
+PASS: gdb.arch/i386-sse.exp: check contents of data[1]
+PASS: gdb.arch/i386-sse.exp: check contents of data[2]
+PASS: gdb.arch/i386-sse.exp: check contents of data[3]
+PASS: gdb.arch/i386-sse.exp: check contents of data[4]
+PASS: gdb.arch/i386-sse.exp: check contents of data[5]
+PASS: gdb.arch/i386-sse.exp: check contents of data[6]
+PASS: gdb.arch/i386-sse.exp: check contents of data[7]
+Running ../../../master/gdb/testsuite/gdb.arch/i386-unwind.exp ...
+PASS: gdb.arch/i386-unwind.exp: run past gdb1435
+PASS: gdb.arch/i386-unwind.exp: backtrace past gdb1435
+Running ../../../master/gdb/testsuite/gdb.arch/i386-word.exp ...
+PASS: gdb.arch/i386-word.exp: set first breakpoint in main
+PASS: gdb.arch/i386-word.exp: continue to breakpoint: continue to first breakpoint in main
+PASS: gdb.arch/i386-word.exp: check contents of %ax
+PASS: gdb.arch/i386-word.exp: check contents of %bx
+PASS: gdb.arch/i386-word.exp: check contents of %cx
+PASS: gdb.arch/i386-word.exp: check contents of %dx
+PASS: gdb.arch/i386-word.exp: set %ax
+PASS: gdb.arch/i386-word.exp: set %bx
+PASS: gdb.arch/i386-word.exp: set %cx
+PASS: gdb.arch/i386-word.exp: set %dx
+PASS: gdb.arch/i386-word.exp: set second breakpoint in main
+PASS: gdb.arch/i386-word.exp: continue to breakpoint: continue to second breakpoint in main
+PASS: gdb.arch/i386-word.exp: check contents of %ax
+PASS: gdb.arch/i386-word.exp: check contents of %bx
+PASS: gdb.arch/i386-word.exp: check contents of %cx
+PASS: gdb.arch/i386-word.exp: check contents of %dx
+Running ../../../master/gdb/testsuite/gdb.arch/ia64-breakpoint-shadow.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/iwmmxt-regs.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/pa-nullify.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/powerpc-aix-prologue.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/powerpc-d128-regs.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/powerpc-prologue.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/ppc-dfp.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/ppc-fp.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/ppc64-atomic-inst.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/spu-info.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/spu-ls.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/system-gcore.exp ...
+PASS: gdb.arch/system-gcore.exp: help gcore
+PASS: gdb.arch/system-gcore.exp: set breakpoint at terminal_func
+PASS: gdb.arch/system-gcore.exp: continue to terminal_func
+PASS: gdb.arch/system-gcore.exp: save a corefile
+PASS: gdb.arch/system-gcore.exp: re-load generated corefile
+PASS: gdb.arch/system-gcore.exp: where in corefile
+PASS: gdb.arch/system-gcore.exp: corefile restored general registers
+PASS: gdb.arch/system-gcore.exp: corefile restored all registers
+PASS: gdb.arch/system-gcore.exp: corefile restored system registers
+PASS: gdb.arch/system-gcore.exp: corefile restored extern array
+PASS: gdb.arch/system-gcore.exp: corefile restored static array
+PASS: gdb.arch/system-gcore.exp: corefile restored un-initialized array
+PASS: gdb.arch/system-gcore.exp: corefile restored heap array
+PASS: gdb.arch/system-gcore.exp: corefile restored stack array
+PASS: gdb.arch/system-gcore.exp: corefile restored backtrace
+Running ../../../master/gdb/testsuite/gdb.arch/thumb-prologue.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/thumb-singlestep.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/thumb2-it.exp ...
+Running ../../../master/gdb/testsuite/gdb.arch/vsx-regs.exp ...
+Running ../../../master/gdb/testsuite/gdb.asm/asm-source.exp ...
+PASS: gdb.asm/asm-source.exp: f at main
+PASS: gdb.asm/asm-source.exp: next over macro
+PASS: gdb.asm/asm-source.exp: step into foo2
+PASS: gdb.asm/asm-source.exp: info target
+PASS: gdb.asm/asm-source.exp: info symbol
+PASS: gdb.asm/asm-source.exp: list
+PASS: gdb.asm/asm-source.exp: search
+PASS: gdb.asm/asm-source.exp: f in foo2
+PASS: gdb.asm/asm-source.exp: n in foo2
+PASS: gdb.asm/asm-source.exp: bt ALL in foo2
+PASS: gdb.asm/asm-source.exp: bt 2 in foo2
+PASS: gdb.asm/asm-source.exp: s 2
+PASS: gdb.asm/asm-source.exp: n 2
+PASS: gdb.asm/asm-source.exp: bt 3 in foo3
+PASS: gdb.asm/asm-source.exp: info source asmsrc1.s
+PASS: gdb.asm/asm-source.exp: finish from foo3
+PASS: gdb.asm/asm-source.exp: info source asmsrc2.s
+PASS: gdb.asm/asm-source.exp: info sources
+PASS: gdb.asm/asm-source.exp: info line
+PASS: gdb.asm/asm-source.exp: next over foo3
+PASS: gdb.asm/asm-source.exp: return from foo2
+PASS: gdb.asm/asm-source.exp: look at global variable
+PASS: gdb.asm/asm-source.exp: x/i &globalvar
+PASS: gdb.asm/asm-source.exp: disassem &globalvar, &globalvar+1
+PASS: gdb.asm/asm-source.exp: look at static variable
+PASS: gdb.asm/asm-source.exp: x/i &staticvar
+PASS: gdb.asm/asm-source.exp: disassem &staticvar, &staticvar+1
+PASS: gdb.asm/asm-source.exp: look at static function
+Running ../../../master/gdb/testsuite/gdb.base/a2-run.exp ...
+PASS: gdb.base/a2-run.exp: run "a2-run" with no args
+PASS: gdb.base/a2-run.exp: no spurious messages at program exit
+PASS: gdb.base/a2-run.exp: run "a2-run" with arg
+PASS: gdb.base/a2-run.exp: run "a2-run" again with same args
+PASS: gdb.base/a2-run.exp: set args
+PASS: gdb.base/a2-run.exp: run after setting args to nil
+PASS: gdb.base/a2-run.exp: set args 6
+PASS: gdb.base/a2-run.exp: run "a2-run" again after setting args
+PASS: gdb.base/a2-run.exp: run "a2-run" with shell
+Running ../../../master/gdb/testsuite/gdb.base/advance.exp ...
+PASS: gdb.base/advance.exp: advance line number
+PASS: gdb.base/advance.exp: malformed advance
+PASS: gdb.base/advance.exp: advance func
+PASS: gdb.base/advance.exp: advance function not called by current frame
+PASS: gdb.base/advance.exp: set breakpoint at call to func3
+PASS: gdb.base/advance.exp: continue to call to func3 in main
+PASS: gdb.base/advance.exp: advance function called as param
+PASS: gdb.base/advance.exp: advance with no argument
+Running ../../../master/gdb/testsuite/gdb.base/all-bin.exp ...
+PASS: gdb.base/all-bin.exp: continuing after dummy()
+PASS: gdb.base/all-bin.exp: print value of v_int+v_char
+PASS: gdb.base/all-bin.exp: print value of v_int+v_short
+PASS: gdb.base/all-bin.exp: print value of v_int+v_signed_char
+PASS: gdb.base/all-bin.exp: print value of v_int+v_unsigned_char
+PASS: gdb.base/all-bin.exp: print value of v_int+v_signed_short
+PASS: gdb.base/all-bin.exp: print value of v_int+v_unsigned_short
+PASS: gdb.base/all-bin.exp: print value of v_int+v_signed_int
+PASS: gdb.base/all-bin.exp: print value of v_int+v_unsigned_int
+PASS: gdb.base/all-bin.exp: print value of v_int+v_long
+PASS: gdb.base/all-bin.exp: print value of v_int+v_signed_long
+PASS: gdb.base/all-bin.exp: print value of v_int+v_unsigned_long
+PASS: gdb.base/all-bin.exp: print value of v_int+v_float
+PASS: gdb.base/all-bin.exp: print value of v_int+v_double
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_char
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_short
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_signed_char
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_unsigned_char
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_signed_short
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_unsigned_short
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_signed_int
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_unsigned_int
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_long
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_signed_long
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_unsigned_long
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_float
+PASS: gdb.base/all-bin.exp: print value of v_int<=v_double
+PASS: gdb.base/all-bin.exp: set v_char=0
+PASS: gdb.base/all-bin.exp: set v_double=0
+PASS: gdb.base/all-bin.exp: set v_unsigned_long=0
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_char
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_short
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_signed_char
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_unsigned_char
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_signed_short
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_unsigned_short
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_signed_int
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_unsigned_int
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_long
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_signed_long
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_unsigned_long
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_float
+PASS: gdb.base/all-bin.exp: print value of v_int&&v_double
+Running ../../../master/gdb/testsuite/gdb.base/annota1.exp ...
+PASS: gdb.base/annota1.exp: set height 0
+PASS: gdb.base/annota1.exp: breakpoint main
+PASS: gdb.base/annota1.exp: annotation set at level 2
+PASS: gdb.base/annota1.exp: breakpoint info
+PASS: gdb.base/annota1.exp: run until main breakpoint
+PASS: gdb.base/annota1.exp: go after array init line
+PASS: gdb.base/annota1.exp: print array
+PASS: gdb.base/annota1.exp: print non_existent_value
+PASS: gdb.base/annota1.exp: break handle_USR1
+PASS: gdb.base/annota1.exp: break printf
+PASS: gdb.base/annota1.exp: continue to printf
+PASS: gdb.base/annota1.exp: backtrace from shlibrary
+PASS: gdb.base/annota1.exp: send SIGUSR1
+PASS: gdb.base/annota1.exp: backtrace @ signal handler
+PASS: gdb.base/annota1.exp: delete bp 1
+PASS: gdb.base/annota1.exp: delete bp 2
+PASS: gdb.base/annota1.exp: delete bp 3
+PASS: gdb.base/annota1.exp: break at 28
+PASS: gdb.base/annota1.exp: set up display
+PASS: gdb.base/annota1.exp: re-run
+PASS: gdb.base/annota1.exp: break at 46
+PASS: gdb.base/annota1.exp: ignore 5 4
+PASS: gdb.base/annota1.exp: annotate ignore count change
+PASS: gdb.base/annota1.exp: breakpoint ignore count
+PASS: gdb.base/annota1.exp: signal sent
+PASS: gdb.base/annota1.exp: cleanup core file (not dumped)
+PASS: gdb.base/annota1.exp: successfully compiled posix threads test case
+PASS: gdb.base/annota1.exp: new thread
+PASS: gdb.base/annota1.exp: thread switch
+Running ../../../master/gdb/testsuite/gdb.base/annota3.exp ...
+PASS: gdb.base/annota3.exp: set height 0
+PASS: gdb.base/annota3.exp: breakpoint main
+PASS: gdb.base/annota3.exp: annotation set at level 3
+PASS: gdb.base/annota3.exp: start if construct
+PASS: gdb.base/annota3.exp: end if construct
+PASS: gdb.base/annota3.exp: breakpoint info
+PASS: gdb.base/annota3.exp: run until main breakpoint
+PASS: gdb.base/annota3.exp: go after array init line
+PASS: gdb.base/annota3.exp: print array
+PASS: gdb.base/annota3.exp: print non_existent_value
+PASS: gdb.base/annota3.exp: breakpoint handle_USR1
+PASS: gdb.base/annota3.exp: breakpoint printf
+PASS: gdb.base/annota3.exp: continue to printf
+PASS: gdb.base/annota3.exp: backtrace from shlibrary
+PASS: gdb.base/annota3.exp: send SIGUSR1
+PASS: gdb.base/annota3.exp: backtrace @ signal handler
+PASS: gdb.base/annota3.exp: delete bp 1
+PASS: gdb.base/annota3.exp: delete bp 2
+PASS: gdb.base/annota3.exp: delete bp 3
+PASS: gdb.base/annota3.exp: break at 28
+PASS: gdb.base/annota3.exp: set up display
+PASS: gdb.base/annota3.exp: re-run
+PASS: gdb.base/annota3.exp: break at 46
+PASS: gdb.base/annota3.exp: ignore 5 4
+PASS: gdb.base/annota3.exp: annotate ignore count change
+PASS: gdb.base/annota3.exp: next to exit loop
+PASS: gdb.base/annota3.exp: breakpoint ignore count
+PASS: gdb.base/annota3.exp: signal sent
+PASS: gdb.base/annota3.exp: cleanup core file (not dumped)
+Running ../../../master/gdb/testsuite/gdb.base/anon.exp ...
+PASS: gdb.base/anon.exp: set breakpoint in anon.c
+PASS: gdb.base/anon.exp: continue to breakpoint: continue to breakpoint in anon.c
+PASS: gdb.base/anon.exp: print val.data.six
+Running ../../../master/gdb/testsuite/gdb.base/args.exp ...
+PASS: gdb.base/args.exp: continue to breakpoint: breakpoint for basic
+PASS: gdb.base/args.exp: argc for basic
+PASS: gdb.base/args.exp: argv[1] for basic
+PASS: gdb.base/args.exp: argv[2] for basic
+PASS: gdb.base/args.exp: continue to breakpoint: breakpoint for one empty
+PASS: gdb.base/args.exp: argc for one empty
+PASS: gdb.base/args.exp: argv[1] for one empty
+PASS: gdb.base/args.exp: argv[2] for one empty
+PASS: gdb.base/args.exp: argv[3] for one empty
+PASS: gdb.base/args.exp: continue to breakpoint: breakpoint for two empty
+PASS: gdb.base/args.exp: argc for two empty
+PASS: gdb.base/args.exp: argv[1] for two empty
+PASS: gdb.base/args.exp: argv[2] for two empty
+PASS: gdb.base/args.exp: argv[3] for two empty
+PASS: gdb.base/args.exp: argv[4] for two empty
+PASS: gdb.base/args.exp: continue to breakpoint: breakpoint for one empty (with single quotes)
+PASS: gdb.base/args.exp: argc for one empty (with single quotes)
+PASS: gdb.base/args.exp: argv[1] for one empty (with single quotes)
+PASS: gdb.base/args.exp: argv[2] for one empty (with single quotes)
+PASS: gdb.base/args.exp: argv[3] for one empty (with single quotes)
+PASS: gdb.base/args.exp: continue to breakpoint: breakpoint for two empty (with single quotes)
+PASS: gdb.base/args.exp: argc for two empty (with single quotes)
+PASS: gdb.base/args.exp: argv[1] for two empty (with single quotes)
+PASS: gdb.base/args.exp: argv[2] for two empty (with single quotes)
+PASS: gdb.base/args.exp: argv[3] for two empty (with single quotes)
+PASS: gdb.base/args.exp: argv[4] for two empty (with single quotes)
+PASS: gdb.base/args.exp: continue to breakpoint: breakpoint for one newline
+PASS: gdb.base/args.exp: argc for one newline
+PASS: gdb.base/args.exp: argv[1] for one newline
+PASS: gdb.base/args.exp: argv[2] for one newline
+PASS: gdb.base/args.exp: argv[3] for one newline
+PASS: gdb.base/args.exp: continue to breakpoint: breakpoint for two newlines
+PASS: gdb.base/args.exp: argc for two newlines
+PASS: gdb.base/args.exp: argv[1] for two newlines
+PASS: gdb.base/args.exp: argv[2] for two newlines
+PASS: gdb.base/args.exp: argv[3] for two newlines
+PASS: gdb.base/args.exp: argv[4] for two newlines
+Running ../../../master/gdb/testsuite/gdb.base/arithmet.exp ...
+PASS: gdb.base/arithmet.exp: set variable x=14
+PASS: gdb.base/arithmet.exp: set variable y=2
+PASS: gdb.base/arithmet.exp: set variable z=2
+PASS: gdb.base/arithmet.exp: set variable w=3
+PASS: gdb.base/arithmet.exp: print x
+PASS: gdb.base/arithmet.exp: print y
+PASS: gdb.base/arithmet.exp: print z
+PASS: gdb.base/arithmet.exp: print w
+PASS: gdb.base/arithmet.exp: print x+y
+PASS: gdb.base/arithmet.exp: print x-y
+PASS: gdb.base/arithmet.exp: print x*y
+PASS: gdb.base/arithmet.exp: print x/y
+PASS: gdb.base/arithmet.exp: print x%y
+PASS: gdb.base/arithmet.exp: print x+y+z
+PASS: gdb.base/arithmet.exp: print x-y-z
+PASS: gdb.base/arithmet.exp: print x*y*z
+PASS: gdb.base/arithmet.exp: print x/y/z
+PASS: gdb.base/arithmet.exp: print x%y%z
+PASS: gdb.base/arithmet.exp: set variable x=10
+PASS: gdb.base/arithmet.exp: set variable y=4
+PASS: gdb.base/arithmet.exp: print x+y-z
+PASS: gdb.base/arithmet.exp: print x+y*z
+PASS: gdb.base/arithmet.exp: print x+y%w
+PASS: gdb.base/arithmet.exp: print x+y/w
+PASS: gdb.base/arithmet.exp: print x-y*z
+PASS: gdb.base/arithmet.exp: print x-y%z
+PASS: gdb.base/arithmet.exp: print x-y/z
+PASS: gdb.base/arithmet.exp: print x*y/z
+PASS: gdb.base/arithmet.exp: print x*y%w
+PASS: gdb.base/arithmet.exp: print x/y%w
+PASS: gdb.base/arithmet.exp: print x-(y+w)
+PASS: gdb.base/arithmet.exp: print x/(y*w)
+PASS: gdb.base/arithmet.exp: print x-(y/w)
+PASS: gdb.base/arithmet.exp: print (x+y)*w
+Running ../../../master/gdb/testsuite/gdb.base/arrayidx.exp ...
+PASS: gdb.base/arrayidx.exp: Set print array-indexes to off
+PASS: gdb.base/arrayidx.exp: Print array with array-indexes off
+PASS: gdb.base/arrayidx.exp: Set print array-indexes to on
+PASS: gdb.base/arrayidx.exp: Print array with array-indexes on
+Running ../../../master/gdb/testsuite/gdb.base/assign.exp ...
+PASS: gdb.base/assign.exp: continuing after dummy()
+PASS: gdb.base/assign.exp: v_int=57
+PASS: gdb.base/assign.exp: set v_int to 6
+PASS: gdb.base/assign.exp: v_int+=57
+PASS: gdb.base/assign.exp: set v_int to 6 (2)
+PASS: gdb.base/assign.exp: v_int-=57
+PASS: gdb.base/assign.exp: set v_int to 6 (3)
+PASS: gdb.base/assign.exp: v_int*=5
+PASS: gdb.base/assign.exp: set v_int to 6 (4)
+PASS: gdb.base/assign.exp: v_int/=4
+PASS: gdb.base/assign.exp: set v_int to 6 (5)
+PASS: gdb.base/assign.exp: v_int%=4
+PASS: gdb.base/assign.exp: set v_int to 6 (6)
+PASS: gdb.base/assign.exp: v_int+=char
+PASS: gdb.base/assign.exp: set v_int to 6 (7)
+PASS: gdb.base/assign.exp: v_int+=signed_char
+PASS: gdb.base/assign.exp: set v_int to 6 (8)
+PASS: gdb.base/assign.exp: v_int+=unsigned_char
+PASS: gdb.base/assign.exp: set v_int to 6 (9)
+PASS: gdb.base/assign.exp: v_int+=short
+PASS: gdb.base/assign.exp: set v_int to 6 (10)
+PASS: gdb.base/assign.exp: v_int+=signed_short
+PASS: gdb.base/assign.exp: set v_int to 6 (11)
+PASS: gdb.base/assign.exp: v_int=+unsigned_short
+PASS: gdb.base/assign.exp: set v_int to 6 (12)
+PASS: gdb.base/assign.exp: v_int+=signed_int
+PASS: gdb.base/assign.exp: set v_int to 6 (13)
+PASS: gdb.base/assign.exp: v_int+=unsigned_int
+PASS: gdb.base/assign.exp: set v_int to 6 (14)
+PASS: gdb.base/assign.exp: v_int+=long
+PASS: gdb.base/assign.exp: set v_int to 6 (15)
+PASS: gdb.base/assign.exp: v_int+=signed_long
+PASS: gdb.base/assign.exp: set v_int to 6 (16)
+PASS: gdb.base/assign.exp: v_int+=unsigned_long
+PASS: gdb.base/assign.exp: set v_int to 6 (17)
+PASS: gdb.base/assign.exp: v_int+=v_float
+PASS: gdb.base/assign.exp: set v_int to 6 (18)
+PASS: gdb.base/assign.exp: v_int+=double
+Running ../../../master/gdb/testsuite/gdb.base/async-shell.exp ...
+PASS: gdb.base/async-shell.exp: set target-async on
+PASS: gdb.base/async-shell.exp: set non-stop on
+PASS: gdb.base/async-shell.exp: run &
+PASS: gdb.base/async-shell.exp: shell echo foo
+PASS: gdb.base/async-shell.exp: interrupt
+PASS: gdb.base/async-shell.exp: process stopped
+Running ../../../master/gdb/testsuite/gdb.base/async.exp ...
+Running ../../../master/gdb/testsuite/gdb.base/attach-pie-misread.exp ...
+PASS: gdb.base/attach-pie-misread.exp: ldd attach-pie-misread
+PASS: gdb.base/attach-pie-misread.exp: ldd attach-pie-misread output contains libs
+PASS: gdb.base/attach-pie-misread.exp: copy ld-2.13.so to ld-linux.so.2
+PASS: gdb.base/attach-pie-misread.exp: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/attach-pie-misread.exp: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/attach-pie-misread.exp: readelf initial scan
+PASS: gdb.base/attach-pie-misread.exp: generate stub
+PASS: gdb.base/attach-pie-misread.exp: ldd attach-pie-misread
+PASS: gdb.base/attach-pie-misread.exp: ldd attach-pie-misread output contains libs
+PASS: gdb.base/attach-pie-misread.exp: copy ld-2.13.so to ld-linux.so.2
+PASS: gdb.base/attach-pie-misread.exp: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/attach-pie-misread.exp: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/attach-pie-misread.exp: readelf rebuilt with stub_size
+PASS: gdb.base/attach-pie-misread.exp: unprelink libc.so.6 pre-unprelink (missing /usr/sbin/prelink)
+XFAIL: gdb.base/attach-pie-misread.exp: prelink libc.so.6 (missing /usr/sbin/prelink)
+Running ../../../master/gdb/testsuite/gdb.base/attach.exp ...
+PASS: gdb.base/attach.exp: attach to nonsense is prohibited
+PASS: gdb.base/attach.exp: attach to digits-starting nonsense is prohibited
+PASS: gdb.base/attach.exp: attach to nonexistent process is prohibited
+PASS: gdb.base/attach.exp: set file, before attach1 (re-read)
+PASS: gdb.base/attach.exp: attach1, after setting file
+PASS: gdb.base/attach.exp: after attach1, print should_exit
+PASS: gdb.base/attach.exp: attach1 detach
+PASS: gdb.base/attach.exp: attach1, purging symbols after detach
+PASS: gdb.base/attach.exp: set file, before attach2
+PASS: gdb.base/attach.exp: after attach2, set should_exit
+PASS: gdb.base/attach.exp: after attach2, set tbreak postloop
+PASS: gdb.base/attach.exp: after attach2, reach tbreak postloop
+PASS: gdb.base/attach.exp: continue until exit at after attach2, exit
+PASS: gdb.base/attach.exp: set source path
+PASS: gdb.base/attach.exp: cd away from process working directory
+PASS: gdb.base/attach.exp: before attach3, flush symbols
+PASS: gdb.base/attach.exp: before attach3, flush exec
+PASS: gdb.base/attach.exp: attach when process' a.out not in cwd
+PASS: gdb.base/attach.exp: after attach3, exit
+PASS: gdb.base/attach.exp: force switch to gdb64, if necessary
+PASS: gdb.base/attach.exp: attach call
+PASS: gdb.base/attach.exp: info other register
+PASS: gdb.base/attach.exp: p should_exit = 1
+PASS: gdb.base/attach.exp: continue until exit
+Running ../../../master/gdb/testsuite/gdb.base/auxv.exp ...
+PASS: gdb.base/auxv.exp: set print sevenbit-strings
+PASS: gdb.base/auxv.exp: set width 0
+PASS: gdb.base/auxv.exp: cd to temporary directory for core dumps
+PASS: gdb.base/auxv.exp: tbreak 64
+PASS: gdb.base/auxv.exp: continue
+PASS: gdb.base/auxv.exp: info auxv on live process
+PASS: gdb.base/auxv.exp: gcore
+PASS: gdb.base/auxv.exp: continue
+PASS: gdb.base/auxv.exp: continue
+WARNING: can't generate a core file - core tests suppressed - check ulimit -c
+FAIL: gdb.base/auxv.exp: generate native core dump
+UNSUPPORTED: gdb.base/auxv.exp: info auxv on native core dump
+UNSUPPORTED: gdb.base/auxv.exp: matching auxv data from live and core
+PASS: gdb.base/auxv.exp: load core file for info auxv on gcore-created dump
+PASS: gdb.base/auxv.exp: info auxv on gcore-created dump
+PASS: gdb.base/auxv.exp: matching auxv data from live and gcore
+Running ../../../master/gdb/testsuite/gdb.base/bang.exp ...
+PASS: gdb.base/bang.exp: run program
+Running ../../../master/gdb/testsuite/gdb.base/bfp-test.exp ...
+PASS: gdb.base/bfp-test.exp: continue to breakpoint: return
+PASS: gdb.base/bfp-test.exp: The original value of b32 is 1.5
+PASS: gdb.base/bfp-test.exp: The original value of b64 is 2.25
+PASS: gdb.base/bfp-test.exp: The original value of b128 is 3.375
+PASS: gdb.base/bfp-test.exp: Try to change b32 to -1.5 with 'print b32=-1.5f'
+PASS: gdb.base/bfp-test.exp: Try to change b64 to -2.25 with 'print b64=-2.25f'
+PASS: gdb.base/bfp-test.exp: Try to change b128 to -3.375 with 'print b128=-3.375l'
+PASS: gdb.base/bfp-test.exp: set variable b32 = 10.5f
+PASS: gdb.base/bfp-test.exp: set variable b64 = 20.25f
+PASS: gdb.base/bfp-test.exp: set variable b128 = 30.375l
+PASS: gdb.base/bfp-test.exp: The value of b32 is changed to 10.5
+PASS: gdb.base/bfp-test.exp: The value of b64 is changed to 20.25
+PASS: gdb.base/bfp-test.exp: The value of b128 is changed to 30.375
+PASS: gdb.base/bfp-test.exp: set variable b32 = 100.5a
+PASS: gdb.base/bfp-test.exp: set variable b64 = 200.25x
+PASS: gdb.base/bfp-test.exp: set variable b128 = 300.375fl
+PASS: gdb.base/bfp-test.exp: set variable b128 = 300.375fff
+Running ../../../master/gdb/testsuite/gdb.base/bigcore.exp ...
+PASS: gdb.base/bigcore.exp: set print sevenbit-strings
+PASS: gdb.base/bigcore.exp: set width 0
+PASS: gdb.base/bigcore.exp: tbreak 269
+PASS: gdb.base/bigcore.exp: continue
+PASS: gdb.base/bigcore.exp: next
+PASS: gdb.base/bigcore.exp: extract next heap
+PASS: gdb.base/bigcore.exp: extract prev heap
+PASS: gdb.base/bigcore.exp: save heap size
+PASS: gdb.base/bigcore.exp: grab pid
+PASS: gdb.base/bigcore.exp: signal SIGABRT
+PASS: gdb.base/bigcore.exp: check core size
+PASS: gdb.base/bigcore.exp: load corefile
+PASS: gdb.base/bigcore.exp: check next heap
+PASS: gdb.base/bigcore.exp: check prev heap
+Running ../../../master/gdb/testsuite/gdb.base/bitfields.exp ...
+PASS: gdb.base/bitfields.exp: set print sevenbit-strings
+PASS: gdb.base/bitfields.exp: print flags
+PASS: gdb.base/bitfields.exp: continuing to break1 #1
+PASS: gdb.base/bitfields.exp: bitfield uniqueness (s1)
+PASS: gdb.base/bitfields.exp: continuing to break1 #2
+PASS: gdb.base/bitfields.exp: bitfield uniqueness (u1)
+PASS: gdb.base/bitfields.exp: continuing to break1 #3
+PASS: gdb.base/bitfields.exp: bitfield uniqueness (s2)
+PASS: gdb.base/bitfields.exp: continuing to break1 #4
+PASS: gdb.base/bitfields.exp: bitfield uniqueness (u2)
+PASS: gdb.base/bitfields.exp: continuing to break1 #5
+PASS: gdb.base/bitfields.exp: bitfield uniqueness (s3)
+PASS: gdb.base/bitfields.exp: continuing to break1 #6
+PASS: gdb.base/bitfields.exp: bitfield uniqueness (u3)
+PASS: gdb.base/bitfields.exp: continuing to break1 #7
+PASS: gdb.base/bitfields.exp: bitfield uniqueness (s9)
+PASS: gdb.base/bitfields.exp: continuing to break1 #8
+PASS: gdb.base/bitfields.exp: bitfield uniqueness (u9)
+PASS: gdb.base/bitfields.exp: continuing to break1 #9
+PASS: gdb.base/bitfields.exp: bitfield uniqueness (sc)
+PASS: gdb.base/bitfields.exp: bitfield containment #1
+PASS: gdb.base/bitfields.exp: continuing to break2
+PASS: gdb.base/bitfields.exp: bitfield containment #2
+PASS: gdb.base/bitfields.exp: unsigned bitfield ranges
+PASS: gdb.base/bitfields.exp: signed bitfields, max positive values
+PASS: gdb.base/bitfields.exp: continuing to break4 #1
+PASS: gdb.base/bitfields.exp: determining signed-ness of bitfields
+PASS: gdb.base/bitfields.exp: signed bitfields, max negative values
+PASS: gdb.base/bitfields.exp: continuing to break4 #2
+PASS: gdb.base/bitfields.exp: signed bitfields with -1
+PASS: gdb.base/bitfields.exp: continuing to break5
+PASS: gdb.base/bitfields.exp: distinct bitfields in container
+PASS: gdb.base/bitfields.exp: print container.one.u3
+PASS: gdb.base/bitfields.exp: print container.two.u3
+Running ../../../master/gdb/testsuite/gdb.base/bitfields2.exp ...
+PASS: gdb.base/bitfields2.exp: set print sevenbit-strings
+PASS: gdb.base/bitfields2.exp: break tester prior to break1
+PASS: gdb.base/bitfields2.exp: continuing to tester prior to break1
+PASS: gdb.base/bitfields2.exp: continuing to break1 #0
+PASS: gdb.base/bitfields2.exp: bitfield uniqueness; flags.s1 = 1
+PASS: gdb.base/bitfields2.exp: continuing to break1 #1
+PASS: gdb.base/bitfields2.exp: bitfield uniqueness; flags.u1 = 1
+PASS: gdb.base/bitfields2.exp: continuing to break1 #2
+PASS: gdb.base/bitfields2.exp: bitfield uniqueness; flags.s2 = 1
+PASS: gdb.base/bitfields2.exp: continuing to break1 #3
+PASS: gdb.base/bitfields2.exp: bitfield uniqueness; flags.u2 = 1
+PASS: gdb.base/bitfields2.exp: continuing to break1 #4
+PASS: gdb.base/bitfields2.exp: bitfield uniqueness; flags.s3 = 1
+PASS: gdb.base/bitfields2.exp: continuing to break1 #5
+PASS: gdb.base/bitfields2.exp: bitfield uniqueness; flags.u3 = 1
+PASS: gdb.base/bitfields2.exp: break tester prior to break2
+PASS: gdb.base/bitfields2.exp: continuing to tester prior to break2
+PASS: gdb.base/bitfields2.exp: continuing to break2 #0
+PASS: gdb.base/bitfields2.exp: bitfield containment; flags.u1, flags.u3, and flags.s3 to all 1s
+PASS: gdb.base/bitfields2.exp: continuing to break2 #1
+PASS: gdb.base/bitfields2.exp: bitfield containment; flags.u2, flags.s1, flags.s2 to all 1s
+PASS: gdb.base/bitfields2.exp: break tester prior to break3
+PASS: gdb.base/bitfields2.exp: continuing to tester prior to break3
+PASS: gdb.base/bitfields2.exp: continuing to break3 #0
+PASS: gdb.base/bitfields2.exp: maximum unsigned bitfield values
+PASS: gdb.base/bitfields2.exp: break tester prior to break4
+PASS: gdb.base/bitfields2.exp: continuing to tester prior to break4
+PASS: gdb.base/bitfields2.exp: continuing to break4 #0
+PASS: gdb.base/bitfields2.exp: maximum signed bitfield values
+PASS: gdb.base/bitfields2.exp: continuing to break4 #1
+PASS: gdb.base/bitfields2.exp: determining signed-ness of bitfields
+PASS: gdb.base/bitfields2.exp: most negative signed bitfield values
+PASS: gdb.base/bitfields2.exp: continuing to break4 #2
+PASS: gdb.base/bitfields2.exp: signed bitfields containing -1
+PASS: gdb.base/bitfields2.exp: break tester prior to break5
+PASS: gdb.base/bitfields2.exp: continuing to tester prior to break5
+PASS: gdb.base/bitfields2.exp: continuing to break5 #0
+PASS: gdb.base/bitfields2.exp: set long long unsigned bitfield
+PASS: gdb.base/bitfields2.exp: set long long signed bitfield positive
+PASS: gdb.base/bitfields2.exp: long long bitfield values after set
+PASS: gdb.base/bitfields2.exp: set long long signed bitfield negative
+PASS: gdb.base/bitfields2.exp: long long bitfield values after set negative
+Running ../../../master/gdb/testsuite/gdb.base/bitops.exp ...
+PASS: gdb.base/bitops.exp: print value of !1
+PASS: gdb.base/bitops.exp: print value of !0
+PASS: gdb.base/bitops.exp: print value of !100
+PASS: gdb.base/bitops.exp: print value of !1000
+PASS: gdb.base/bitops.exp: print value of !10
+PASS: gdb.base/bitops.exp: print value of !2
+PASS: gdb.base/bitops.exp: print value of 10 | 5
+PASS: gdb.base/bitops.exp: print value of 10 & 5
+PASS: gdb.base/bitops.exp: print value of 10 ^ 5
+PASS: gdb.base/bitops.exp: print value of -!0
+PASS: gdb.base/bitops.exp: print value of ~-!0
+PASS: gdb.base/bitops.exp: print value of 3 * 2 / 4.0 * 2.0
+PASS: gdb.base/bitops.exp: print value of 8 << 2 >> 4
+PASS: gdb.base/bitops.exp: print value of -1 < 0 > 1
+PASS: gdb.base/bitops.exp: print value of 15 ^ 10 ^ 5 ^ 7
+PASS: gdb.base/bitops.exp: print value of 3.5 < 4.0
+PASS: gdb.base/bitops.exp: print value of 3.5 < -4.0
+PASS: gdb.base/bitops.exp: print value of 2 > -3
+PASS: gdb.base/bitops.exp: print value of -3>4
+PASS: gdb.base/bitops.exp: print value of (-3 > 4)
+PASS: gdb.base/bitops.exp: print value of 3>=2.5
+PASS: gdb.base/bitops.exp: print value of 3>=4.5
+PASS: gdb.base/bitops.exp: print value of 3==3.0
+PASS: gdb.base/bitops.exp: print value of 3==4.0
+PASS: gdb.base/bitops.exp: print value of 3!=3.0
+PASS: gdb.base/bitops.exp: print value of 3!=5.0
+PASS: gdb.base/bitops.exp: print value of 0 || 1 && 0 | 0 ^ 0 == 8 > 128 >>1 +2 *2
+PASS: gdb.base/bitops.exp: print value of 1.0 || 0
+PASS: gdb.base/bitops.exp: print value of 0.0 || 1.0
+PASS: gdb.base/bitops.exp: print value of 0.0 || 0
+PASS: gdb.base/bitops.exp: print value of 0 || 1 && 0 | 0 ^ 0 == 8
+PASS: gdb.base/bitops.exp: print value of 0 == 8 > 128 >> 1 + 2 * 2
+Running ../../../master/gdb/testsuite/gdb.base/break-always.exp ...
+PASS: gdb.base/break-always.exp: set breakpoint always-inserted on
+PASS: gdb.base/break-always.exp: confirm breakpoint always-inserted
+PASS: gdb.base/break-always.exp: set breakpoint on bar
+PASS: gdb.base/break-always.exp: continue to breakpoint: bar
+Running ../../../master/gdb/testsuite/gdb.base/break-entry.exp ...
+PASS: gdb.base/break-entry.exp: info files
+PASS: gdb.base/break-entry.exp: p/x $pc
+PASS: gdb.base/break-entry.exp: continue to breakpoint: main
+Running ../../../master/gdb/testsuite/gdb.base/break-interp.exp ...
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: copy ld-2.13.so to break-interp-LDprelinkNOdebugNO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: unprelink break-interp-LDprelinkNOdebugNO (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: strip break-interp-LDprelinkNOdebugNO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: unprelink break-interp-LDprelinkNOdebugNO (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: set debug-file-directory
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: set disable-randomization off
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: set args OBJDIR/gdb.base/break-interp-test
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: reach-_dl_debug_state: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: dl bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: kill
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: reach-_dl_debug_state: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: symbol-less: set debug-file-directory
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: symbol-less: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: symbol-less: load
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: symbol-less: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: symbol-less: ld.so exit
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: copy break-interp-LDprelinkNOdebugNO to break-interp-LDprelinkNOdebugNO-saved
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: ldd break-interp-BINprelinkNOdebugNOpieNO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: ldd break-interp-BINprelinkNOdebugNOpieNO output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: unprelink break-interp-BINprelinkNOdebugNOpieNO (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: copy break-interp-LDprelinkNOdebugNO-saved to break-interp-LDprelinkNOdebugNO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: set debug-file-directory
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: set disable-randomization off
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: set args segv
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: dl bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: reach-main: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: reach-libfunc: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: kill
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: core: set debug-file-directory for core
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: core: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: core: core loaded
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: core: core main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: sleep function started
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: attach: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: attach: attach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: attach: attach final prompt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: attach: attach main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: symbol-less: set debug-file-directory
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: symbol-less: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: symbol-less: load
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: symbol-less: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: symbol-less: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: symbol-less: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: symbol-less: info files
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: symbol-less: break at entry point
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieNO: symbol-less: entry point reached
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: ldd break-interp-BINprelinkNOdebugNOpieYES
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: ldd break-interp-BINprelinkNOdebugNOpieYES output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: unprelink break-interp-BINprelinkNOdebugNOpieYES (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: copy break-interp-LDprelinkNOdebugNO-saved to break-interp-LDprelinkNOdebugNO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: set debug-file-directory
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: set disable-randomization off
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: set args segv
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: reach-_dl_debug_state: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: dl bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: reach-main: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: reach-libfunc: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: kill
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: reach-_dl_debug_state: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: core: set debug-file-directory for core
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: core: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: core: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: core: core loaded
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: core: core main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: sleep function started
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: attach: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: attach: attach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: attach: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: attach: attach final prompt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: attach: attach main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: symbol-less: set debug-file-directory
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: symbol-less: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: symbol-less: load
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: symbol-less: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: symbol-less: reach-_dl_debug_state: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: symbol-less: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: symbol-less: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: symbol-less: info files
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: symbol-less: break at entry point
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieYES: symbol-less: entry point reached
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieATTACH: ldd break-interp-BINprelinkNOdebugNOpieATTACH
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieATTACH: ldd break-interp-BINprelinkNOdebugNOpieATTACH output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieATTACH: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieATTACH: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieATTACH: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieATTACH: unprelink break-interp-BINprelinkNOdebugNOpieATTACH (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieATTACH: copy break-interp-LDprelinkNOdebugNO-saved to break-interp-LDprelinkNOdebugNO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieATTACH: sleep function started
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieATTACH: unprelink break-interp-BINprelinkNOdebugNOpieATTACH pre-unprelink (missing /usr/sbin/prelink)
+XFAIL: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieATTACH: prelink break-interp-BINprelinkNOdebugNOpieATTACH (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieATTACH: unprelink break-interp-BINprelinkNOdebugNOpieATTACH (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieATTACH: attach-relinkNO: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieATTACH: attach-relinkNO: file
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieATTACH: attach-relinkNO: attach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieATTACH: attach-relinkNO: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieATTACH: attach-relinkNO: attach final prompt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieATTACH: attach-relinkNO: attach main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugNOpieATTACH: copy break-interp-LDprelinkNOdebugNO-saved to break-interp-LDprelinkNOdebugNO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: ldd break-interp-BINprelinkNOdebugINpieNO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: ldd break-interp-BINprelinkNOdebugINpieNO output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: unprelink break-interp-BINprelinkNOdebugINpieNO (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: copy break-interp-LDprelinkNOdebugNO-saved to break-interp-LDprelinkNOdebugNO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: set debug-file-directory
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: set disable-randomization off
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: set args segv
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: dl bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: reach-main: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: reach-libfunc: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: kill
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: core: set debug-file-directory for core
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: core: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: core: core loaded
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: core: core main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: sleep function started
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: attach: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: attach: attach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: attach: attach final prompt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieNO: attach: attach main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: ldd break-interp-BINprelinkNOdebugINpieYES
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: ldd break-interp-BINprelinkNOdebugINpieYES output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: unprelink break-interp-BINprelinkNOdebugINpieYES (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: copy break-interp-LDprelinkNOdebugNO-saved to break-interp-LDprelinkNOdebugNO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: set debug-file-directory
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: set disable-randomization off
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: set args segv
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: reach-_dl_debug_state: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: dl bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: reach-main: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: reach-libfunc: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: kill
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: reach-_dl_debug_state: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: core: set debug-file-directory for core
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: core: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: core: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: core: core loaded
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: core: core main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: sleep function started
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: attach: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: attach: attach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: attach: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: attach: attach final prompt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieYES: attach: attach main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieATTACH: ldd break-interp-BINprelinkNOdebugINpieATTACH
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieATTACH: ldd break-interp-BINprelinkNOdebugINpieATTACH output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieATTACH: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieATTACH: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieATTACH: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieATTACH: unprelink break-interp-BINprelinkNOdebugINpieATTACH (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieATTACH: copy break-interp-LDprelinkNOdebugNO-saved to break-interp-LDprelinkNOdebugNO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieATTACH: sleep function started
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieATTACH: unprelink break-interp-BINprelinkNOdebugINpieATTACH pre-unprelink (missing /usr/sbin/prelink)
+XFAIL: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieATTACH: prelink break-interp-BINprelinkNOdebugINpieATTACH (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieATTACH: unprelink break-interp-BINprelinkNOdebugINpieATTACH (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieATTACH: attach-relinkNO: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieATTACH: attach-relinkNO: file
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieATTACH: attach-relinkNO: attach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieATTACH: attach-relinkNO: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieATTACH: attach-relinkNO: attach final prompt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieATTACH: attach-relinkNO: attach main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugINpieATTACH: copy break-interp-LDprelinkNOdebugNO-saved to break-interp-LDprelinkNOdebugNO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: ldd break-interp-BINprelinkNOdebugSEPpieNO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: ldd break-interp-BINprelinkNOdebugSEPpieNO output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: unprelink break-interp-BINprelinkNOdebugSEPpieNO (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: copy break-interp-LDprelinkNOdebugNO-saved to break-interp-LDprelinkNOdebugNO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: set debug-file-directory
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: set disable-randomization off
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: set args segv
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: dl bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: reach-main: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: reach-libfunc: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: kill
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: core: set debug-file-directory for core
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: core: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: core: core loaded
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: core: core main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: sleep function started
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: attach: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: attach: attach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: attach: attach final prompt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieNO: attach: attach main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: ldd break-interp-BINprelinkNOdebugSEPpieYES
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: ldd break-interp-BINprelinkNOdebugSEPpieYES output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: unprelink break-interp-BINprelinkNOdebugSEPpieYES (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: copy break-interp-LDprelinkNOdebugNO-saved to break-interp-LDprelinkNOdebugNO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: set debug-file-directory
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: set disable-randomization off
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: set args segv
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: reach-_dl_debug_state: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: dl bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: reach-main: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: reach-libfunc: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: kill
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: reach-_dl_debug_state: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: core: set debug-file-directory for core
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: core: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: core: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: core: core loaded
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: core: core main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: sleep function started
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: attach: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: attach: attach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: attach: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: attach: attach final prompt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieYES: attach: attach main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieATTACH: ldd break-interp-BINprelinkNOdebugSEPpieATTACH
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieATTACH: ldd break-interp-BINprelinkNOdebugSEPpieATTACH output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieATTACH: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieATTACH: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieATTACH: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieATTACH: unprelink break-interp-BINprelinkNOdebugSEPpieATTACH (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieATTACH: copy break-interp-LDprelinkNOdebugNO-saved to break-interp-LDprelinkNOdebugNO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieATTACH: sleep function started
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieATTACH: unprelink break-interp-BINprelinkNOdebugSEPpieATTACH pre-unprelink (missing /usr/sbin/prelink)
+XFAIL: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieATTACH: prelink break-interp-BINprelinkNOdebugSEPpieATTACH (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieATTACH: unprelink break-interp-BINprelinkNOdebugSEPpieATTACH (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieATTACH: attach-relinkNO: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieATTACH: attach-relinkNO: file
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieATTACH: attach-relinkNO: attach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieATTACH: attach-relinkNO: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieATTACH: attach-relinkNO: attach final prompt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieATTACH: attach-relinkNO: attach main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkNOdebugSEPpieATTACH: copy break-interp-LDprelinkNOdebugNO-saved to break-interp-LDprelinkNOdebugNO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugNOpieYES: ldd break-interp-BINprelinkYESdebugNOpieYES
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugNOpieYES: ldd break-interp-BINprelinkYESdebugNOpieYES output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugNOpieYES: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugNOpieYES: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugNOpieYES: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugNOpieYES: unprelink break-interp-BINprelinkYESdebugNOpieYES pre-unprelink (missing /usr/sbin/prelink)
+XFAIL: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugNOpieYES: prelink break-interp-BINprelinkYESdebugNOpieYES (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugNOpieATTACH: ldd break-interp-BINprelinkYESdebugNOpieATTACH
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugNOpieATTACH: ldd break-interp-BINprelinkYESdebugNOpieATTACH output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugNOpieATTACH: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugNOpieATTACH: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugNOpieATTACH: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugNOpieATTACH: unprelink break-interp-BINprelinkYESdebugNOpieATTACH pre-unprelink (missing /usr/sbin/prelink)
+XFAIL: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugNOpieATTACH: prelink break-interp-BINprelinkYESdebugNOpieATTACH (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugINpieYES: ldd break-interp-BINprelinkYESdebugINpieYES
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugINpieYES: ldd break-interp-BINprelinkYESdebugINpieYES output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugINpieYES: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugINpieYES: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugINpieYES: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugINpieYES: unprelink break-interp-BINprelinkYESdebugINpieYES pre-unprelink (missing /usr/sbin/prelink)
+XFAIL: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugINpieYES: prelink break-interp-BINprelinkYESdebugINpieYES (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugINpieATTACH: ldd break-interp-BINprelinkYESdebugINpieATTACH
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugINpieATTACH: ldd break-interp-BINprelinkYESdebugINpieATTACH output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugINpieATTACH: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugINpieATTACH: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugINpieATTACH: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugINpieATTACH: unprelink break-interp-BINprelinkYESdebugINpieATTACH pre-unprelink (missing /usr/sbin/prelink)
+XFAIL: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugINpieATTACH: prelink break-interp-BINprelinkYESdebugINpieATTACH (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugSEPpieYES: ldd break-interp-BINprelinkYESdebugSEPpieYES
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugSEPpieYES: ldd break-interp-BINprelinkYESdebugSEPpieYES output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugSEPpieYES: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugSEPpieYES: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugSEPpieYES: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugSEPpieYES: unprelink break-interp-BINprelinkYESdebugSEPpieYES pre-unprelink (missing /usr/sbin/prelink)
+XFAIL: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugSEPpieYES: prelink break-interp-BINprelinkYESdebugSEPpieYES (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugSEPpieATTACH: ldd break-interp-BINprelinkYESdebugSEPpieATTACH
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugSEPpieATTACH: ldd break-interp-BINprelinkYESdebugSEPpieATTACH output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugSEPpieATTACH: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugSEPpieATTACH: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugSEPpieATTACH: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugSEPpieATTACH: unprelink break-interp-BINprelinkYESdebugSEPpieATTACH pre-unprelink (missing /usr/sbin/prelink)
+XFAIL: gdb.base/break-interp.exp: LDprelinkNOdebugNO: BINprelinkYESdebugSEPpieATTACH: prelink break-interp-BINprelinkYESdebugSEPpieATTACH (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: copy ld-2.13.so to break-interp-LDprelinkNOdebugIN
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: unprelink break-interp-LDprelinkNOdebugIN (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: set debug-file-directory
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: set disable-randomization off
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: set args OBJDIR/gdb.base/break-interp-test
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: reach-_dl_debug_state: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: dl bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: kill
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: reach-_dl_debug_state: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: copy break-interp-LDprelinkNOdebugIN to break-interp-LDprelinkNOdebugIN-saved
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: ldd break-interp-BINprelinkNOdebugNOpieNO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: ldd break-interp-BINprelinkNOdebugNOpieNO output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: unprelink break-interp-BINprelinkNOdebugNOpieNO (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: copy break-interp-LDprelinkNOdebugIN-saved to break-interp-LDprelinkNOdebugIN
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: set debug-file-directory
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: set disable-randomization off
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: set args segv
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: dl bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: reach-main: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: reach-libfunc: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: kill
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: core: set debug-file-directory for core
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: core: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: core: core loaded
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: core: core main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: sleep function started
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: attach: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: attach: attach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: attach: attach final prompt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: attach: attach main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: symbol-less: set debug-file-directory
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: symbol-less: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: symbol-less: load
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: symbol-less: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: symbol-less: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: symbol-less: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: symbol-less: info files
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: symbol-less: break at entry point
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieNO: symbol-less: entry point reached
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: ldd break-interp-BINprelinkNOdebugNOpieYES
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: ldd break-interp-BINprelinkNOdebugNOpieYES output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: unprelink break-interp-BINprelinkNOdebugNOpieYES (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: copy break-interp-LDprelinkNOdebugIN-saved to break-interp-LDprelinkNOdebugIN
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: set debug-file-directory
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: set disable-randomization off
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: set args segv
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: reach-_dl_debug_state: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: dl bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: reach-main: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: reach-libfunc: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: kill
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: reach-_dl_debug_state: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: core: set debug-file-directory for core
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: core: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: core: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: core: core loaded
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: core: core main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: sleep function started
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: attach: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: attach: attach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: attach: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: attach: attach final prompt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: attach: attach main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: symbol-less: set debug-file-directory
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: symbol-less: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: symbol-less: load
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: symbol-less: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: symbol-less: reach-_dl_debug_state: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: symbol-less: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: symbol-less: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: symbol-less: info files
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: symbol-less: break at entry point
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieYES: symbol-less: entry point reached
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieATTACH: ldd break-interp-BINprelinkNOdebugNOpieATTACH
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieATTACH: ldd break-interp-BINprelinkNOdebugNOpieATTACH output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieATTACH: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieATTACH: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieATTACH: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieATTACH: unprelink break-interp-BINprelinkNOdebugNOpieATTACH (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieATTACH: copy break-interp-LDprelinkNOdebugIN-saved to break-interp-LDprelinkNOdebugIN
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieATTACH: sleep function started
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieATTACH: unprelink break-interp-BINprelinkNOdebugNOpieATTACH pre-unprelink (missing /usr/sbin/prelink)
+XFAIL: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieATTACH: prelink break-interp-BINprelinkNOdebugNOpieATTACH (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieATTACH: unprelink break-interp-BINprelinkNOdebugNOpieATTACH (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieATTACH: attach-relinkNO: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieATTACH: attach-relinkNO: file
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieATTACH: attach-relinkNO: attach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieATTACH: attach-relinkNO: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieATTACH: attach-relinkNO: attach final prompt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieATTACH: attach-relinkNO: attach main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugNOpieATTACH: copy break-interp-LDprelinkNOdebugIN-saved to break-interp-LDprelinkNOdebugIN
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: ldd break-interp-BINprelinkNOdebugINpieNO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: ldd break-interp-BINprelinkNOdebugINpieNO output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: unprelink break-interp-BINprelinkNOdebugINpieNO (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: copy break-interp-LDprelinkNOdebugIN-saved to break-interp-LDprelinkNOdebugIN
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: set debug-file-directory
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: set disable-randomization off
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: set args segv
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: dl bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: reach-main: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: reach-libfunc: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: kill
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: core: set debug-file-directory for core
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: core: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: core: core loaded
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: core: core main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: sleep function started
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: attach: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: attach: attach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: attach: attach final prompt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieNO: attach: attach main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: ldd break-interp-BINprelinkNOdebugINpieYES
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: ldd break-interp-BINprelinkNOdebugINpieYES output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: unprelink break-interp-BINprelinkNOdebugINpieYES (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: copy break-interp-LDprelinkNOdebugIN-saved to break-interp-LDprelinkNOdebugIN
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: set debug-file-directory
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: set disable-randomization off
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: set args segv
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: reach-_dl_debug_state: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: dl bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: reach-main: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: reach-libfunc: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: kill
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: reach-_dl_debug_state: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: core: set debug-file-directory for core
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: core: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: core: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: core: core loaded
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: core: core main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: sleep function started
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: attach: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: attach: attach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: attach: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: attach: attach final prompt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieYES: attach: attach main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieATTACH: ldd break-interp-BINprelinkNOdebugINpieATTACH
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieATTACH: ldd break-interp-BINprelinkNOdebugINpieATTACH output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieATTACH: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieATTACH: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieATTACH: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieATTACH: unprelink break-interp-BINprelinkNOdebugINpieATTACH (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieATTACH: copy break-interp-LDprelinkNOdebugIN-saved to break-interp-LDprelinkNOdebugIN
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieATTACH: sleep function started
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieATTACH: unprelink break-interp-BINprelinkNOdebugINpieATTACH pre-unprelink (missing /usr/sbin/prelink)
+XFAIL: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieATTACH: prelink break-interp-BINprelinkNOdebugINpieATTACH (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieATTACH: unprelink break-interp-BINprelinkNOdebugINpieATTACH (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieATTACH: attach-relinkNO: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieATTACH: attach-relinkNO: file
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieATTACH: attach-relinkNO: attach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieATTACH: attach-relinkNO: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieATTACH: attach-relinkNO: attach final prompt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieATTACH: attach-relinkNO: attach main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugINpieATTACH: copy break-interp-LDprelinkNOdebugIN-saved to break-interp-LDprelinkNOdebugIN
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: ldd break-interp-BINprelinkNOdebugSEPpieNO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: ldd break-interp-BINprelinkNOdebugSEPpieNO output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: unprelink break-interp-BINprelinkNOdebugSEPpieNO (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: copy break-interp-LDprelinkNOdebugIN-saved to break-interp-LDprelinkNOdebugIN
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: set debug-file-directory
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: set disable-randomization off
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: set args segv
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: dl bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: reach-main: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: reach-libfunc: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: kill
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: core: set debug-file-directory for core
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: core: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: core: core loaded
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: core: core main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: sleep function started
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: attach: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: attach: attach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: attach: attach final prompt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieNO: attach: attach main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: ldd break-interp-BINprelinkNOdebugSEPpieYES
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: ldd break-interp-BINprelinkNOdebugSEPpieYES output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: unprelink break-interp-BINprelinkNOdebugSEPpieYES (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: copy break-interp-LDprelinkNOdebugIN-saved to break-interp-LDprelinkNOdebugIN
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: set debug-file-directory
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: set disable-randomization off
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: set args segv
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: reach-_dl_debug_state: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: dl bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: reach-main: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: reach-libfunc: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: kill
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: reach-_dl_debug_state: set stop-on-solib-events 1
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: reach-_dl_debug_state: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: reach-_dl_debug_state: reach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: reach-_dl_debug_state: set stop-on-solib-events 0
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: core: set debug-file-directory for core
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: core: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: core: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: core: core loaded
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: core: core main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: sleep function started
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: attach: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: attach: attach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: attach: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: attach: attach final prompt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieYES: attach: attach main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieATTACH: ldd break-interp-BINprelinkNOdebugSEPpieATTACH
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieATTACH: ldd break-interp-BINprelinkNOdebugSEPpieATTACH output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieATTACH: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieATTACH: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieATTACH: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieATTACH: unprelink break-interp-BINprelinkNOdebugSEPpieATTACH (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieATTACH: copy break-interp-LDprelinkNOdebugIN-saved to break-interp-LDprelinkNOdebugIN
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieATTACH: sleep function started
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieATTACH: unprelink break-interp-BINprelinkNOdebugSEPpieATTACH pre-unprelink (missing /usr/sbin/prelink)
+XFAIL: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieATTACH: prelink break-interp-BINprelinkNOdebugSEPpieATTACH (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieATTACH: unprelink break-interp-BINprelinkNOdebugSEPpieATTACH (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieATTACH: attach-relinkNO: set verbose on
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieATTACH: attach-relinkNO: file
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieATTACH: attach-relinkNO: attach
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieATTACH: attach-relinkNO: seen displacement message as NONZERO
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieATTACH: attach-relinkNO: attach final prompt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieATTACH: attach-relinkNO: attach main bt
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkNOdebugSEPpieATTACH: copy break-interp-LDprelinkNOdebugIN-saved to break-interp-LDprelinkNOdebugIN
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugNOpieYES: ldd break-interp-BINprelinkYESdebugNOpieYES
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugNOpieYES: ldd break-interp-BINprelinkYESdebugNOpieYES output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugNOpieYES: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugNOpieYES: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugNOpieYES: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugNOpieYES: unprelink break-interp-BINprelinkYESdebugNOpieYES pre-unprelink (missing /usr/sbin/prelink)
+XFAIL: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugNOpieYES: prelink break-interp-BINprelinkYESdebugNOpieYES (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugNOpieATTACH: ldd break-interp-BINprelinkYESdebugNOpieATTACH
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugNOpieATTACH: ldd break-interp-BINprelinkYESdebugNOpieATTACH output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugNOpieATTACH: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugNOpieATTACH: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugNOpieATTACH: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugNOpieATTACH: unprelink break-interp-BINprelinkYESdebugNOpieATTACH pre-unprelink (missing /usr/sbin/prelink)
+XFAIL: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugNOpieATTACH: prelink break-interp-BINprelinkYESdebugNOpieATTACH (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugINpieYES: ldd break-interp-BINprelinkYESdebugINpieYES
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugINpieYES: ldd break-interp-BINprelinkYESdebugINpieYES output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugINpieYES: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugINpieYES: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugINpieYES: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugINpieYES: unprelink break-interp-BINprelinkYESdebugINpieYES pre-unprelink (missing /usr/sbin/prelink)
+XFAIL: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugINpieYES: prelink break-interp-BINprelinkYESdebugINpieYES (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugINpieATTACH: ldd break-interp-BINprelinkYESdebugINpieATTACH
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugINpieATTACH: ldd break-interp-BINprelinkYESdebugINpieATTACH output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugINpieATTACH: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugINpieATTACH: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugINpieATTACH: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugINpieATTACH: unprelink break-interp-BINprelinkYESdebugINpieATTACH pre-unprelink (missing /usr/sbin/prelink)
+XFAIL: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugINpieATTACH: prelink break-interp-BINprelinkYESdebugINpieATTACH (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugSEPpieYES: ldd break-interp-BINprelinkYESdebugSEPpieYES
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugSEPpieYES: ldd break-interp-BINprelinkYESdebugSEPpieYES output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugSEPpieYES: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugSEPpieYES: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugSEPpieYES: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugSEPpieYES: unprelink break-interp-BINprelinkYESdebugSEPpieYES pre-unprelink (missing /usr/sbin/prelink)
+XFAIL: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugSEPpieYES: prelink break-interp-BINprelinkYESdebugSEPpieYES (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugSEPpieATTACH: ldd break-interp-BINprelinkYESdebugSEPpieATTACH
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugSEPpieATTACH: ldd break-interp-BINprelinkYESdebugSEPpieATTACH output contains libs
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugSEPpieATTACH: copy break-interp.so to break-interp.so
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugSEPpieATTACH: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugSEPpieATTACH: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugSEPpieATTACH: unprelink break-interp-BINprelinkYESdebugSEPpieATTACH pre-unprelink (missing /usr/sbin/prelink)
+XFAIL: gdb.base/break-interp.exp: LDprelinkNOdebugIN: BINprelinkYESdebugSEPpieATTACH: prelink break-interp-BINprelinkYESdebugSEPpieATTACH (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkYESdebugNO: copy ld-2.13.so to break-interp-LDprelinkYESdebugNO
+PASS: gdb.base/break-interp.exp: LDprelinkYESdebugNO: unprelink break-interp-LDprelinkYESdebugNO (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkYESdebugNO: strip break-interp-LDprelinkYESdebugNO
+PASS: gdb.base/break-interp.exp: LDprelinkYESdebugNO: unprelink break-interp-LDprelinkYESdebugNO pre-unprelink (missing /usr/sbin/prelink)
+XFAIL: gdb.base/break-interp.exp: LDprelinkYESdebugNO: prelink break-interp-LDprelinkYESdebugNO (missing /usr/sbin/prelink)
+PASS: gdb.base/break-interp.exp: LDprelinkYESdebugIN: copy ld-2.13.so to break-interp-LDprelinkYESdebugIN
+PASS: gdb.base/break-interp.exp: LDprelinkYESdebugIN: unprelink break-interp-LDprelinkYESdebugIN pre-unprelink (missing /usr/sbin/prelink)
+XFAIL: gdb.base/break-interp.exp: LDprelinkYESdebugIN: prelink break-interp-LDprelinkYESdebugIN (missing /usr/sbin/prelink)
+Running ../../../master/gdb/testsuite/gdb.base/break-on-linker-gcd-function.exp ...
+PASS: gdb.base/break-on-linker-gcd-function.exp: b 25
+Running ../../../master/gdb/testsuite/gdb.base/break.exp ...
+PASS: gdb.base/break.exp: Delete all breakpoints when none
+PASS: gdb.base/break.exp: breakpoint function
+PASS: gdb.base/break.exp: breakpoint quoted function
+PASS: gdb.base/break.exp: breakpoint function in file
+PASS: gdb.base/break.exp: use `list' to establish default source file
+PASS: gdb.base/break.exp: breakpoint line number
+PASS: gdb.base/break.exp: breakpoint duplicate
+PASS: gdb.base/break.exp: breakpoint line number in file
+PASS: gdb.base/break.exp: breakpoint at start of multi line if conditional
+PASS: gdb.base/break.exp: breakpoint at start of multi line while conditional
+PASS: gdb.base/break.exp: breakpoint info
+PASS: gdb.base/break.exp: info break 2 4 6
+PASS: gdb.base/break.exp: info break 3-5
+PASS: gdb.base/break.exp: disable using history values
+PASS: gdb.base/break.exp: check disable with history values
+PASS: gdb.base/break.exp: disable with convenience values
+PASS: gdb.base/break.exp: check disable with convenience values
+PASS: gdb.base/break.exp: disable non-existent breakpoint 10
+PASS: gdb.base/break.exp: set $baz 1.234
+PASS: gdb.base/break.exp: disable with non-integer convenience var
+PASS: gdb.base/break.exp: disable with non-existent convenience var
+PASS: gdb.base/break.exp: disable with non-existent history value
+PASS: gdb.base/break.exp: disable with badly formed history value
+PASS: gdb.base/break.exp: run until function breakpoint
+PASS: gdb.base/break.exp: run until breakpoint set at a line number
+PASS: gdb.base/break.exp: run until file:function(6) breakpoint
+PASS: gdb.base/break.exp: run until file:function(5) breakpoint
+PASS: gdb.base/break.exp: run until file:function(4) breakpoint
+PASS: gdb.base/break.exp: run until file:function(3) breakpoint
+PASS: gdb.base/break.exp: run until file:function(2) breakpoint
+PASS: gdb.base/break.exp: run until file:function(1) breakpoint
+PASS: gdb.base/break.exp: run until quoted breakpoint
+PASS: gdb.base/break.exp: run until file:linenum breakpoint
+PASS: gdb.base/break.exp: breakpoint offset +1
+PASS: gdb.base/break.exp: step onto breakpoint
+PASS: gdb.base/break.exp: setting breakpoint at }
+PASS: gdb.base/break.exp: continue to breakpoint at }
+PASS: gdb.base/break.exp: Temporary breakpoint function
+PASS: gdb.base/break.exp: Temporary breakpoint function in file
+PASS: gdb.base/break.exp: Temporary breakpoint line number #1
+PASS: gdb.base/break.exp: Temporary breakpoint line number #2
+PASS: gdb.base/break.exp: Temporary breakpoint line number in file #1
+PASS: gdb.base/break.exp: Temporary breakpoint line number in file #2
+PASS: gdb.base/break.exp: Temporary breakpoint info
+PASS: gdb.base/break.exp: catch requires an event name
+PASS: gdb.base/break.exp: set catch fork, never expected to trigger
+PASS: gdb.base/break.exp: set catch vfork, never expected to trigger
+PASS: gdb.base/break.exp: set catch exec, never expected to trigger
+PASS: gdb.base/break.exp: break on non-existent source line
+PASS: gdb.base/break.exp: until bp_location1
+PASS: gdb.base/break.exp: break on default location, 1st time
+PASS: gdb.base/break.exp: break on default location, 2nd time
+PASS: gdb.base/break.exp: break on default location, 3rd time
+PASS: gdb.base/break.exp: break on default location, 4th time
+PASS: gdb.base/break.exp: set to-be-silent break bp_location1
+PASS: gdb.base/break.exp: set silent break bp_location1
+PASS: gdb.base/break.exp: info silent break bp_location1
+PASS: gdb.base/break.exp: hit silent break bp_location1
+PASS: gdb.base/break.exp: stopped for silent break bp_location1
+PASS: gdb.base/break.exp: thread-specific breakpoint on non-existent thread disallowed
+PASS: gdb.base/break.exp: thread-specific breakpoint on bogus thread ID disallowed
+PASS: gdb.base/break.exp: breakpoint with trailing garbage disallowed
+PASS: gdb.base/break.exp: step over breakpoint
+PASS: gdb.base/break.exp: clear line has no breakpoint disallowed
+PASS: gdb.base/break.exp: clear current line has no breakpoint disallowed
+PASS: gdb.base/break.exp: break marker3 #1
+PASS: gdb.base/break.exp: break marker3 #2
+PASS: gdb.base/break.exp: clear marker3
+PASS: gdb.base/break.exp: set convenience variable $foo to bp_location11
+PASS: gdb.base/break.exp: set breakpoint via convenience variable
+PASS: gdb.base/break.exp: set convenience variable $foo to 81.5
+PASS: gdb.base/break.exp: set breakpoint via non-integer convenience variable disallowed
+PASS: gdb.base/break.exp: set breakpoint on to-be-called function
+PASS: gdb.base/break.exp: hit breakpoint on called function
+PASS: gdb.base/break.exp: backtrace while in called function
+PASS: gdb.base/break.exp: finish from called function
+PASS: gdb.base/break.exp: finish with arguments disallowed
+PASS: gdb.base/break.exp: finish from outermost frame disallowed
+PASS: gdb.base/break.exp: kill program
+PASS: gdb.base/break.exp: break at factorial
+PASS: gdb.base/break.exp: continue to factorial(5)
+PASS: gdb.base/break.exp: backtrace from factorial(5)
+PASS: gdb.base/break.exp: next to recursive call
+PASS: gdb.base/break.exp: next over recursive call
+PASS: gdb.base/break.exp: backtrace from factorial(5.1)
+PASS: gdb.base/break.exp: continue until exit at recursive next test
+PASS: gdb.base/break.exp: breakpoint function, optimized file
+PASS: gdb.base/break.exp: breakpoint small function, optimized file
+PASS: gdb.base/break.exp: run until function breakpoint, optimized file (code motion)
+PASS: gdb.base/break.exp: run until breakpoint set at small function, optimized file
+PASS: gdb.base/break.exp: rbreak junk pending setup
+PASS: gdb.base/break.exp: rbreak junk set breakpoint
+PASS: gdb.base/break.exp: rbreak junk
+Running ../../../master/gdb/testsuite/gdb.base/breakpoint-shadow.exp ...
+PASS: gdb.base/breakpoint-shadow.exp: set breakpoint always-inserted on
+PASS: gdb.base/breakpoint-shadow.exp: show breakpoint always-inserted
+PASS: gdb.base/breakpoint-shadow.exp: disassembly without breakpoints
+PASS: gdb.base/breakpoint-shadow.exp: First breakpoint placed
+PASS: gdb.base/breakpoint-shadow.exp: Second breakpoint placed
+PASS: gdb.base/breakpoint-shadow.exp: disassembly with breakpoints
+Running ../../../master/gdb/testsuite/gdb.base/call-ar-st.exp ...
+PASS: gdb.base/call-ar-st.exp: set print sevenbit-strings
+PASS: gdb.base/call-ar-st.exp: set print address off
+PASS: gdb.base/call-ar-st.exp: set width 0
+PASS: gdb.base/call-ar-st.exp: tbreakpoint line 1209
+PASS: gdb.base/call-ar-st.exp: run until breakpoint set at a line
+PASS: gdb.base/call-ar-st.exp: print print_double_array(double_array)
+PASS: gdb.base/call-ar-st.exp: print print_char_array(char_array)
+PASS: gdb.base/call-ar-st.exp: tbreakpoint line 1216
+PASS: gdb.base/call-ar-st.exp: continue to 1216
+PASS: gdb.base/call-ar-st.exp: tbreakpoint line 1220
+PASS: gdb.base/call-ar-st.exp: continuing to breakpoint 1220
+PASS: gdb.base/call-ar-st.exp: step inside print_all_arrays
+PASS: gdb.base/call-ar-st.exp: next over print_int_array in print-all_arrays
+PASS: gdb.base/call-ar-st.exp: print print_double_array(array_d)
+PASS: gdb.base/call-ar-st.exp: tbreakpoint line 1236
+PASS: gdb.base/call-ar-st.exp: continuing to 1236
+PASS: gdb.base/call-ar-st.exp: print sum_array_print(10, *list1, *list2, *list3, *list4)
+PASS: gdb.base/call-ar-st.exp: next to 1237
+PASS: gdb.base/call-ar-st.exp: print print_array_rep(*list1, *list2, *list3)
+PASS: gdb.base/call-ar-st.exp: tbreakpoint line 1241
+PASS: gdb.base/call-ar-st.exp: continue to 1241
+PASS: gdb.base/call-ar-st.exp: set breakpoint in sum_array_print
+PASS: gdb.base/call-ar-st.exp: set print frame-arguments all
+PASS: gdb.base/call-ar-st.exp: check args of sum_array_print
+PASS: gdb.base/call-ar-st.exp: tbreakpoint line 1281
+PASS: gdb.base/call-ar-st.exp: continue to 1281
+PASS: gdb.base/call-ar-st.exp: print print_small_structs
+PASS: gdb.base/call-ar-st.exp: print compute_with_small_structs(20)
+PASS: gdb.base/call-ar-st.exp: print print_ten_doubles
+PASS: gdb.base/call-ar-st.exp: tbreakpoint line 1286
+PASS: gdb.base/call-ar-st.exp: continue to 1286
+PASS: gdb.base/call-ar-st.exp: tbreak in print_long_arg_list after stepping into memcpy
+PASS: gdb.base/call-ar-st.exp: step into print_long_arg_list
+PASS: gdb.base/call-ar-st.exp: print print_small_structs from print_long_arg_list
+PASS: gdb.base/call-ar-st.exp: tbreakpoint line 1300
+PASS: gdb.base/call-ar-st.exp: continue to 1300
+PASS: gdb.base/call-ar-st.exp: step into init_bit_flags_combo
+PASS: gdb.base/call-ar-st.exp: print print_bit_flags_combo from init_bit_flags_combo
+PASS: gdb.base/call-ar-st.exp: tbreakpoint line 1305
+PASS: gdb.base/call-ar-st.exp: continue to 1305
+PASS: gdb.base/call-ar-st.exp: print print_long_arg_list
+PASS: gdb.base/call-ar-st.exp: tbreakpoint line 1311
+PASS: gdb.base/call-ar-st.exp: continue to 1311
+PASS: gdb.base/call-ar-st.exp: print sum_struct_print(10, *struct1, *struct2, *struct3, *struct4)
+PASS: gdb.base/call-ar-st.exp: print print_struct_rep(*struct1, *struct2, *struct3)
+PASS: gdb.base/call-ar-st.exp: print print_one_large_struct(*list1)
+Running ../../../master/gdb/testsuite/gdb.base/call-rt-st.exp ...
+PASS: gdb.base/call-rt-st.exp: set print sevenbit-strings
+PASS: gdb.base/call-rt-st.exp: set print address off
+PASS: gdb.base/call-rt-st.exp: set width 0
+PASS: gdb.base/call-rt-st.exp: breakpoint loop_count
+PASS: gdb.base/call-rt-st.exp: continue to loop_count
+PASS: gdb.base/call-rt-st.exp: finish out from loop_count (line 777)
+PASS: gdb.base/call-rt-st.exp: print print_struct_rep(*struct1)
+PASS: gdb.base/call-rt-st.exp: print print_one_large_struct(*list1)
+PASS: gdb.base/call-rt-st.exp: print print_one_double(*d1)
+PASS: gdb.base/call-rt-st.exp: print print_two_floats(*f3)
+PASS: gdb.base/call-rt-st.exp: print print_bit_flags_char(*cflags)
+PASS: gdb.base/call-rt-st.exp: print print_bit_flags_short(*sflags)
+PASS: gdb.base/call-rt-st.exp: print print_bit_flags(*flags)
+PASS: gdb.base/call-rt-st.exp: print print_bit_flags_combo(*flags_combo)
+PASS: gdb.base/call-rt-st.exp: print print_three_chars(*three_char)
+PASS: gdb.base/call-rt-st.exp: print print_five_chars(*five_char)
+PASS: gdb.base/call-rt-st.exp: print print_int_char_combo(*int_char_combo)
+Running ../../../master/gdb/testsuite/gdb.base/call-sc.exp ...
+PASS: gdb.base/call-sc.exp: set print sevenbit-strings
+PASS: gdb.base/call-sc.exp: set print address off
+PASS: gdb.base/call-sc.exp: set width 0
+PASS: gdb.base/call-sc.exp: ptype; call-sc-tc (char)
+PASS: gdb.base/call-sc.exp: ptype foo; call-sc-tc char
+PASS: gdb.base/call-sc.exp: p/c fun(); call call-sc-tc
+PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-tc
+PASS: gdb.base/call-sc.exp: p/c L; call call-sc-tc
+PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-tc
+PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-tc
+PASS: gdb.base/call-sc.exp: return foo; return call-sc-tc
+PASS: gdb.base/call-sc.exp: return foo; synchronize pc to main()
+PASS: gdb.base/call-sc.exp: value foo returned; return call-sc-tc
+PASS: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-tc
+PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-tc
+PASS: gdb.base/call-sc.exp: finish foo; return call-sc-tc
+PASS: gdb.base/call-sc.exp: value foo finished; return call-sc-tc
+PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-tc
+PASS: gdb.base/call-sc.exp: set print sevenbit-strings
+PASS: gdb.base/call-sc.exp: set print address off
+PASS: gdb.base/call-sc.exp: set width 0
+PASS: gdb.base/call-sc.exp: ptype; call-sc-ts (short int)
+PASS: gdb.base/call-sc.exp: ptype foo; call-sc-ts short int
+PASS: gdb.base/call-sc.exp: p/c fun(); call call-sc-ts
+PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-ts
+PASS: gdb.base/call-sc.exp: p/c L; call call-sc-ts
+PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-ts
+PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-ts
+PASS: gdb.base/call-sc.exp: return foo; return call-sc-ts
+PASS: gdb.base/call-sc.exp: return foo; synchronize pc to main()
+PASS: gdb.base/call-sc.exp: value foo returned; return call-sc-ts
+PASS: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-ts
+PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-ts
+PASS: gdb.base/call-sc.exp: finish foo; return call-sc-ts
+PASS: gdb.base/call-sc.exp: value foo finished; return call-sc-ts
+PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-ts
+PASS: gdb.base/call-sc.exp: set print sevenbit-strings
+PASS: gdb.base/call-sc.exp: set print address off
+PASS: gdb.base/call-sc.exp: set width 0
+PASS: gdb.base/call-sc.exp: ptype; call-sc-ti (int)
+PASS: gdb.base/call-sc.exp: ptype foo; call-sc-ti int
+PASS: gdb.base/call-sc.exp: p/c fun(); call call-sc-ti
+PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-ti
+PASS: gdb.base/call-sc.exp: p/c L; call call-sc-ti
+PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-ti
+PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-ti
+PASS: gdb.base/call-sc.exp: return foo; return call-sc-ti
+PASS: gdb.base/call-sc.exp: return foo; synchronize pc to main()
+PASS: gdb.base/call-sc.exp: value foo returned; return call-sc-ti
+PASS: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-ti
+PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-ti
+PASS: gdb.base/call-sc.exp: finish foo; return call-sc-ti
+PASS: gdb.base/call-sc.exp: value foo finished; return call-sc-ti
+PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-ti
+PASS: gdb.base/call-sc.exp: set print sevenbit-strings
+PASS: gdb.base/call-sc.exp: set print address off
+PASS: gdb.base/call-sc.exp: set width 0
+PASS: gdb.base/call-sc.exp: ptype; call-sc-tl (long int)
+PASS: gdb.base/call-sc.exp: ptype foo; call-sc-tl long int
+PASS: gdb.base/call-sc.exp: p/c fun(); call call-sc-tl
+PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-tl
+PASS: gdb.base/call-sc.exp: p/c L; call call-sc-tl
+PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-tl
+PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-tl
+PASS: gdb.base/call-sc.exp: return foo; return call-sc-tl
+PASS: gdb.base/call-sc.exp: return foo; synchronize pc to main()
+PASS: gdb.base/call-sc.exp: value foo returned; return call-sc-tl
+PASS: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-tl
+PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-tl
+PASS: gdb.base/call-sc.exp: finish foo; return call-sc-tl
+PASS: gdb.base/call-sc.exp: value foo finished; return call-sc-tl
+PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-tl
+PASS: gdb.base/call-sc.exp: set print sevenbit-strings
+PASS: gdb.base/call-sc.exp: set print address off
+PASS: gdb.base/call-sc.exp: set width 0
+PASS: gdb.base/call-sc.exp: ptype; call-sc-tll (long long int)
+PASS: gdb.base/call-sc.exp: ptype foo; call-sc-tll long long int
+PASS: gdb.base/call-sc.exp: p/c fun(); call call-sc-tll
+PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-tll
+PASS: gdb.base/call-sc.exp: p/c L; call call-sc-tll
+PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-tll
+PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-tll
+PASS: gdb.base/call-sc.exp: return foo; return call-sc-tll
+PASS: gdb.base/call-sc.exp: return foo; synchronize pc to main()
+PASS: gdb.base/call-sc.exp: value foo returned; return call-sc-tll
+PASS: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-tll
+PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-tll
+PASS: gdb.base/call-sc.exp: finish foo; return call-sc-tll
+PASS: gdb.base/call-sc.exp: value foo finished; return call-sc-tll
+PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-tll
+PASS: gdb.base/call-sc.exp: set print sevenbit-strings
+PASS: gdb.base/call-sc.exp: set print address off
+PASS: gdb.base/call-sc.exp: set width 0
+PASS: gdb.base/call-sc.exp: ptype; call-sc-tf (float)
+PASS: gdb.base/call-sc.exp: ptype foo; call-sc-tf float
+PASS: gdb.base/call-sc.exp: p/c fun(); call call-sc-tf
+PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-tf
+PASS: gdb.base/call-sc.exp: p/c L; call call-sc-tf
+PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-tf
+PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-tf
+PASS: gdb.base/call-sc.exp: return foo; return call-sc-tf
+PASS: gdb.base/call-sc.exp: return foo; synchronize pc to main()
+PASS: gdb.base/call-sc.exp: value foo returned; return call-sc-tf
+PASS: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-tf
+PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-tf
+PASS: gdb.base/call-sc.exp: finish foo; return call-sc-tf
+PASS: gdb.base/call-sc.exp: value foo finished; return call-sc-tf
+PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-tf
+PASS: gdb.base/call-sc.exp: set print sevenbit-strings
+PASS: gdb.base/call-sc.exp: set print address off
+PASS: gdb.base/call-sc.exp: set width 0
+PASS: gdb.base/call-sc.exp: ptype; call-sc-td (double)
+PASS: gdb.base/call-sc.exp: ptype foo; call-sc-td double
+PASS: gdb.base/call-sc.exp: p/c fun(); call call-sc-td
+PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-td
+PASS: gdb.base/call-sc.exp: p/c L; call call-sc-td
+PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-td
+PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-td
+PASS: gdb.base/call-sc.exp: return foo; return call-sc-td
+PASS: gdb.base/call-sc.exp: return foo; synchronize pc to main()
+PASS: gdb.base/call-sc.exp: value foo returned; return call-sc-td
+PASS: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-td
+PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-td
+PASS: gdb.base/call-sc.exp: finish foo; return call-sc-td
+PASS: gdb.base/call-sc.exp: value foo finished; return call-sc-td
+PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-td
+PASS: gdb.base/call-sc.exp: set print sevenbit-strings
+PASS: gdb.base/call-sc.exp: set print address off
+PASS: gdb.base/call-sc.exp: set width 0
+PASS: gdb.base/call-sc.exp: ptype; call-sc-tld (long double)
+PASS: gdb.base/call-sc.exp: ptype foo; call-sc-tld long double
+PASS: gdb.base/call-sc.exp: p/c fun(); call call-sc-tld
+PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-tld
+PASS: gdb.base/call-sc.exp: p/c L; call call-sc-tld
+PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-tld
+PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-tld
+PASS: gdb.base/call-sc.exp: return foo; return call-sc-tld
+PASS: gdb.base/call-sc.exp: return foo; synchronize pc to main()
+PASS: gdb.base/call-sc.exp: value foo returned; return call-sc-tld
+PASS: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-tld
+PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-tld
+PASS: gdb.base/call-sc.exp: finish foo; return call-sc-tld
+PASS: gdb.base/call-sc.exp: value foo finished; return call-sc-tld
+PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-tld
+PASS: gdb.base/call-sc.exp: set print sevenbit-strings
+PASS: gdb.base/call-sc.exp: set print address off
+PASS: gdb.base/call-sc.exp: set width 0
+PASS: gdb.base/call-sc.exp: ptype; call-sc-te (enum {e = 49})
+PASS: gdb.base/call-sc.exp: ptype foo; call-sc-te enum {e = 49}
+PASS: gdb.base/call-sc.exp: p/c fun(); call call-sc-te
+PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-te
+PASS: gdb.base/call-sc.exp: p/c L; call call-sc-te
+PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-te
+PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-te
+PASS: gdb.base/call-sc.exp: return foo; return call-sc-te
+PASS: gdb.base/call-sc.exp: return foo; synchronize pc to main()
+PASS: gdb.base/call-sc.exp: value foo returned; return call-sc-te
+PASS: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-te
+PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-te
+PASS: gdb.base/call-sc.exp: finish foo; return call-sc-te
+PASS: gdb.base/call-sc.exp: value foo finished; return call-sc-te
+PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-te
+Running ../../../master/gdb/testsuite/gdb.base/call-signal-resume.exp ...
+PASS: gdb.base/call-signal-resume.exp: break stop_one
+PASS: gdb.base/call-signal-resume.exp: continue to breakpoint at stop_one
+PASS: gdb.base/call-signal-resume.exp: inferior function call signaled
+PASS: gdb.base/call-signal-resume.exp: dummy stack frame number
+PASS: gdb.base/call-signal-resume.exp: frame 3
+PASS: gdb.base/call-signal-resume.exp: set confirm off
+PASS: gdb.base/call-signal-resume.exp: return
+PASS: gdb.base/call-signal-resume.exp: break stop_two
+PASS: gdb.base/call-signal-resume.exp: continue to breakpoint at stop_two
+PASS: gdb.base/call-signal-resume.exp: continue to receipt of signal
+PASS: gdb.base/call-signal-resume.exp: break null_hand_call
+PASS: gdb.base/call-signal-resume.exp: null_hand_call
+PASS: gdb.base/call-signal-resume.exp: dummy stack frame number
+PASS: gdb.base/call-signal-resume.exp: frame 1
+PASS: gdb.base/call-signal-resume.exp: set confirm off
+PASS: gdb.base/call-signal-resume.exp: return
+PASS: gdb.base/call-signal-resume.exp: break handle_signal
+PASS: gdb.base/call-signal-resume.exp: continue to breakpoint at handle_signal
+PASS: gdb.base/call-signal-resume.exp: continue to program exit
+Running ../../../master/gdb/testsuite/gdb.base/call-strs.exp ...
+PASS: gdb.base/call-strs.exp: set print sevenbit-strings
+PASS: gdb.base/call-strs.exp: set print address off
+PASS: gdb.base/call-strs.exp: set width 0
+PASS: gdb.base/call-strs.exp: step after assignment to s
+PASS: gdb.base/call-strs.exp: next over strcpy
+PASS: gdb.base/call-strs.exp: print buf
+PASS: gdb.base/call-strs.exp: print s
+PASS: gdb.base/call-strs.exp: print str_func1(s)
+PASS: gdb.base/call-strs.exp: print str_func1("test string")
+PASS: gdb.base/call-strs.exp: call str_func1(s)
+PASS: gdb.base/call-strs.exp: call str_func1("test string")
+PASS: gdb.base/call-strs.exp: print str_func1(buf)
+PASS: gdb.base/call-strs.exp: call str_func1(buf)
+PASS: gdb.base/call-strs.exp: print str_func("a","b","c","d","e","f","g")
+PASS: gdb.base/call-strs.exp: call str_func("a","b","c","d","e","f","g")
+PASS: gdb.base/call-strs.exp: print str_func(s,s,s,s,s,s,s)
+PASS: gdb.base/call-strs.exp: call str_func(s,s,s,s,s,s,s)
+Running ../../../master/gdb/testsuite/gdb.base/callexit.exp ...
+PASS: gdb.base/callexit.exp: inferior function call terminated program
+Running ../../../master/gdb/testsuite/gdb.base/callfuncs.exp ...
+PASS: gdb.base/callfuncs.exp: set print sevenbit-strings
+PASS: gdb.base/callfuncs.exp: set print address off
+PASS: gdb.base/callfuncs.exp: set width 0
+PASS: gdb.base/callfuncs.exp: set language c
+PASS: gdb.base/callfuncs.exp: next to t_double_values
+PASS: gdb.base/callfuncs.exp: next to t_structs_c
+PASS: gdb.base/callfuncs.exp: retrieve original register contents
+PASS: gdb.base/callfuncs.exp: p t_char_values(0,0)
+PASS: gdb.base/callfuncs.exp: p t_char_values('a','b')
+PASS: gdb.base/callfuncs.exp: p t_char_values(char_val1,char_val2)
+PASS: gdb.base/callfuncs.exp: p t_char_values('a',char_val2)
+PASS: gdb.base/callfuncs.exp: p t_char_values(char_val1,'b')
+PASS: gdb.base/callfuncs.exp: p t_short_values(0,0)
+PASS: gdb.base/callfuncs.exp: p t_short_values(10,-23)
+PASS: gdb.base/callfuncs.exp: p t_short_values(short_val1,short_val2)
+PASS: gdb.base/callfuncs.exp: p t_short_values(10,short_val2)
+PASS: gdb.base/callfuncs.exp: p t_short_values(short_val1,-23)
+PASS: gdb.base/callfuncs.exp: p t_int_values(0,0)
+PASS: gdb.base/callfuncs.exp: p t_int_values(87,-26)
+PASS: gdb.base/callfuncs.exp: p t_int_values(int_val1,int_val2)
+PASS: gdb.base/callfuncs.exp: p t_int_values(87,int_val2)
+PASS: gdb.base/callfuncs.exp: p t_int_values(int_val1,-26)
+PASS: gdb.base/callfuncs.exp: p t_long_values(0,0)
+PASS: gdb.base/callfuncs.exp: p t_long_values(789,-321)
+PASS: gdb.base/callfuncs.exp: p t_long_values(long_val1,long_val2)
+PASS: gdb.base/callfuncs.exp: p t_long_values(789,long_val2)
+PASS: gdb.base/callfuncs.exp: p t_long_values(long_val1,-321)
+PASS: gdb.base/callfuncs.exp: p t_float_values(0.0,0.0)
+PASS: gdb.base/callfuncs.exp: p t_float_values(3.14159,-2.3765)
+PASS: gdb.base/callfuncs.exp: p t_float_values(float_val1,float_val2)
+PASS: gdb.base/callfuncs.exp: p t_float_values(3.14159,float_val2)
+PASS: gdb.base/callfuncs.exp: p t_float_values(float_val1,-2.3765)
+PASS: gdb.base/callfuncs.exp: p t_float_values2(0.0,0.0)
+PASS: gdb.base/callfuncs.exp: p t_float_values2(3.14159,float_val2)
+PASS: gdb.base/callfuncs.exp: Call function with many float arguments.
+PASS: gdb.base/callfuncs.exp: p t_small_values(1,2,3,4,5,6,7,8,9,10)
+PASS: gdb.base/callfuncs.exp: p t_double_values(0.0,0.0)
+PASS: gdb.base/callfuncs.exp: p t_double_values(45.654,-67.66)
+PASS: gdb.base/callfuncs.exp: p t_double_values(double_val1,double_val2)
+PASS: gdb.base/callfuncs.exp: p t_double_values(45.654,double_val2)
+PASS: gdb.base/callfuncs.exp: p t_double_values(double_val1,-67.66)
+PASS: gdb.base/callfuncs.exp: Call function with many double arguments.
+PASS: gdb.base/callfuncs.exp: p t_double_int(99.0, 1)
+PASS: gdb.base/callfuncs.exp: p t_double_int(99.0, 99)
+PASS: gdb.base/callfuncs.exp: p t_int_double(99, 1.0)
+PASS: gdb.base/callfuncs.exp: p t_int_double(99, 99.0)
+PASS: gdb.base/callfuncs.exp: p t_float_complex_values(fc1, fc2)
+PASS: gdb.base/callfuncs.exp: p t_float_complex_values(fc3, fc4)
+PASS: gdb.base/callfuncs.exp: p t_float_complex_many_args(fc1, fc2, fc3, fc4, fc1, fc2, fc3, fc4, fc1, fc2, fc3, fc4, fc1, fc2, fc3, fc4)
+PASS: gdb.base/callfuncs.exp: p t_float_complex_many_args(fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1)
+PASS: gdb.base/callfuncs.exp: p t_double_complex_values(dc1, dc2)
+PASS: gdb.base/callfuncs.exp: p t_double_complex_values(dc3, dc4)
+PASS: gdb.base/callfuncs.exp: p t_double_complex_many_args(dc1, dc2, dc3, dc4, dc1, dc2, dc3, dc4, dc1, dc2, dc3, dc4, dc1, dc2, dc3, dc4)
+PASS: gdb.base/callfuncs.exp: p t_double_complex_many_args(dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1)
+PASS: gdb.base/callfuncs.exp: p t_long_double_complex_values(ldc1, ldc2)
+PASS: gdb.base/callfuncs.exp: p t_long_double_complex_values(ldc3, ldc4)
+PASS: gdb.base/callfuncs.exp: p t_long_double_complex_many_args(ldc1, ldc2, ldc3, ldc4, ldc1, ldc2, ldc3, ldc4, ldc1, ldc2, ldc3, ldc4, ldc1, ldc2, ldc3, ldc4)
+PASS: gdb.base/callfuncs.exp: p t_long_double_complex_many_args(ldc1, ldc1, ldc1, ldc1, ldc1, ldc1, ldc1,ldc1, ldc1, ldc1, ldc1, ldc1, ldc1, ldc1, ldc1, ldc1)
+PASS: gdb.base/callfuncs.exp: p t_string_values(string_val2,string_val1)
+PASS: gdb.base/callfuncs.exp: p t_string_values(string_val1,string_val2)
+PASS: gdb.base/callfuncs.exp: p t_string_values("string 1","string 2")
+PASS: gdb.base/callfuncs.exp: p t_string_values("string 1",string_val2)
+PASS: gdb.base/callfuncs.exp: p t_string_values(string_val1,"string 2")
+PASS: gdb.base/callfuncs.exp: p t_char_array_values(char_array_val2,char_array_val1)
+PASS: gdb.base/callfuncs.exp: p t_char_array_values(char_array_val1,char_array_val2)
+PASS: gdb.base/callfuncs.exp: p t_char_array_values("carray 1","carray 2")
+PASS: gdb.base/callfuncs.exp: p t_char_array_values("carray 1",char_array_val2)
+PASS: gdb.base/callfuncs.exp: p t_char_array_values(char_array_val1,"carray 2")
+PASS: gdb.base/callfuncs.exp: p doubleit(4)
+PASS: gdb.base/callfuncs.exp: p add(4,5)
+PASS: gdb.base/callfuncs.exp: p t_func_values(func_val2,func_val1)
+PASS: gdb.base/callfuncs.exp: p t_func_values(func_val1,func_val2)
+PASS: gdb.base/callfuncs.exp: p function_struct.func(5)
+PASS: gdb.base/callfuncs.exp: p function_struct_ptr->func(10)
+PASS: gdb.base/callfuncs.exp: p t_func_values(add,func_val2)
+PASS: gdb.base/callfuncs.exp: p t_func_values(func_val1,doubleit)
+PASS: gdb.base/callfuncs.exp: p t_call_add(add,3,4)
+PASS: gdb.base/callfuncs.exp: p t_call_add(func_val1,3,4)
+PASS: gdb.base/callfuncs.exp: p t_enum_value1(enumval1)
+PASS: gdb.base/callfuncs.exp: p t_enum_value1(enum_val1)
+PASS: gdb.base/callfuncs.exp: p t_enum_value1(enum_val2)
+PASS: gdb.base/callfuncs.exp: p t_enum_value2(enumval2)
+PASS: gdb.base/callfuncs.exp: p t_enum_value2(enum_val2)
+PASS: gdb.base/callfuncs.exp: p t_enum_value2(enum_val1)
+PASS: gdb.base/callfuncs.exp: p sum_args(1,{2})
+PASS: gdb.base/callfuncs.exp: p sum_args(2,{2,3})
+PASS: gdb.base/callfuncs.exp: p sum_args(3,{2,3,4})
+PASS: gdb.base/callfuncs.exp: p sum_args(4,{2,3,4,5})
+PASS: gdb.base/callfuncs.exp: p sum10 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
+PASS: gdb.base/callfuncs.exp: p cmp10 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
+PASS: gdb.base/callfuncs.exp: call inferior func with struct - returns char
+PASS: gdb.base/callfuncs.exp: call inferior func with struct - returns short
+PASS: gdb.base/callfuncs.exp: call inferior func with struct - returns int
+PASS: gdb.base/callfuncs.exp: call inferior func with struct - returns long
+PASS: gdb.base/callfuncs.exp: call inferior func with struct - returns float
+PASS: gdb.base/callfuncs.exp: call inferior func with struct - returns double
+PASS: gdb.base/callfuncs.exp: call inferior func with struct - returns float _Complex
+KFAIL: gdb.base/callfuncs.exp: call inferior func with struct - returns double _Complex (PRMS: gdb/12783)
+KFAIL: gdb.base/callfuncs.exp: call inferior func with struct - returns long double _Complex (PRMS: gdb/12783)
+PASS: gdb.base/callfuncs.exp: call inferior func with struct - returns char *
+PASS: gdb.base/callfuncs.exp: register contents after gdb function calls
+FAIL: gdb.base/callfuncs.exp: gdb function calls preserve register contents
+PASS: gdb.base/callfuncs.exp: set language c
+PASS: gdb.base/callfuncs.exp: next to t_double_values
+PASS: gdb.base/callfuncs.exp: next to t_structs_c
+PASS: gdb.base/callfuncs.exp: retrieve original register contents
+PASS: gdb.base/callfuncs.exp: stop at breakpoint in call dummy function
+PASS: gdb.base/callfuncs.exp: continue from call dummy breakpoint
+PASS: gdb.base/callfuncs.exp: bt after continuing from call dummy breakpoint
+PASS: gdb.base/callfuncs.exp: register contents after stop in call dummy
+PASS: gdb.base/callfuncs.exp: continue after stop in call dummy preserves register contents
+PASS: gdb.base/callfuncs.exp: set language c
+PASS: gdb.base/callfuncs.exp: next to t_double_values
+PASS: gdb.base/callfuncs.exp: next to t_structs_c
+PASS: gdb.base/callfuncs.exp: retrieve original register contents
+PASS: gdb.base/callfuncs.exp: call function causing a breakpoint then do a finish
+PASS: gdb.base/callfuncs.exp: finish from call dummy breakpoint returns correct value
+PASS: gdb.base/callfuncs.exp: bt after finishing from call dummy breakpoint
+PASS: gdb.base/callfuncs.exp: register contents after finish in call dummy
+PASS: gdb.base/callfuncs.exp: finish after stop in call dummy preserves register contents
+PASS: gdb.base/callfuncs.exp: set language c
+PASS: gdb.base/callfuncs.exp: next to t_double_values
+PASS: gdb.base/callfuncs.exp: next to t_structs_c
+PASS: gdb.base/callfuncs.exp: retrieve original register contents
+PASS: gdb.base/callfuncs.exp: call function causing a breakpoint and then do a return
+PASS: gdb.base/callfuncs.exp: back at main after return from call dummy breakpoint
+PASS: gdb.base/callfuncs.exp: register contents after return in call dummy
+PASS: gdb.base/callfuncs.exp: return after stop in call dummy preserves register contents
+PASS: gdb.base/callfuncs.exp: set language c
+PASS: gdb.base/callfuncs.exp: next to t_double_values
+PASS: gdb.base/callfuncs.exp: next to t_structs_c
+PASS: gdb.base/callfuncs.exp: retrieve original register contents
+PASS: gdb.base/callfuncs.exp: stop at nested call level 1
+PASS: gdb.base/callfuncs.exp: backtrace at nested call level 1
+PASS: gdb.base/callfuncs.exp: stop at nested call level 2
+PASS: gdb.base/callfuncs.exp: backtrace at nested call level 2
+PASS: gdb.base/callfuncs.exp: stop at nested call level 3
+PASS: gdb.base/callfuncs.exp: backtrace at nested call level 3
+PASS: gdb.base/callfuncs.exp: stop at nested call level 4
+PASS: gdb.base/callfuncs.exp: backtrace at nested call level 4
+PASS: gdb.base/callfuncs.exp: Finish from nested call level 4
+PASS: gdb.base/callfuncs.exp: backtrace after finish from nested call level 4
+PASS: gdb.base/callfuncs.exp: Finish from nested call level 3
+PASS: gdb.base/callfuncs.exp: backtrace after finish from nested call level 3
+PASS: gdb.base/callfuncs.exp: Finish from nested call level 2
+PASS: gdb.base/callfuncs.exp: backtrace after finish from nested call level 2
+PASS: gdb.base/callfuncs.exp: Finish from nested call level 1
+PASS: gdb.base/callfuncs.exp: backtrace after finish from nested call level 1
+PASS: gdb.base/callfuncs.exp: register contents after nested call dummies
+PASS: gdb.base/callfuncs.exp: nested call dummies preserve register contents
+PASS: gdb.base/callfuncs.exp: set $old_sp = $sp
+PASS: gdb.base/callfuncs.exp: set $sp = 0
+PASS: gdb.base/callfuncs.exp: sp == 0: call doubleit (1)
+PASS: gdb.base/callfuncs.exp: set $sp = -1
+PASS: gdb.base/callfuncs.exp: sp == -1: call doubleit (1)
+PASS: gdb.base/callfuncs.exp: set $sp = $old_sp
+PASS: gdb.base/callfuncs.exp: print callfunc (Lcallfunc, 5)
+Running ../../../master/gdb/testsuite/gdb.base/catch-syscall.exp ...
+PASS: gdb.base/catch-syscall.exp: help catch syscall
+PASS: gdb.base/catch-syscall.exp: catch syscall to a nonsense syscall is prohibited
+PASS: gdb.base/catch-syscall.exp: setting catch syscall without arguments
+PASS: gdb.base/catch-syscall.exp: catch syscall appears in 'info breakpoints'
+PASS: gdb.base/catch-syscall.exp: program has called close
+PASS: gdb.base/catch-syscall.exp: syscall close has returned
+PASS: gdb.base/catch-syscall.exp: program has called chroot
+PASS: gdb.base/catch-syscall.exp: syscall chroot has returned
+PASS: gdb.base/catch-syscall.exp: program has called exit_group
+PASS: gdb.base/catch-syscall.exp: continue until exit
+PASS: gdb.base/catch-syscall.exp: catch syscall with arguments (close)
+PASS: gdb.base/catch-syscall.exp: syscall(s) close appears in 'info breakpoints'
+PASS: gdb.base/catch-syscall.exp: program has called close
+PASS: gdb.base/catch-syscall.exp: syscall close has returned
+PASS: gdb.base/catch-syscall.exp: continue until exit
+PASS: gdb.base/catch-syscall.exp: catch syscall with arguments ('close' [] 'chroot' [])
+PASS: gdb.base/catch-syscall.exp: syscalls close, chroot appears in 'info breakpoints'
+PASS: gdb.base/catch-syscall.exp: program has called close
+PASS: gdb.base/catch-syscall.exp: syscall close has returned
+PASS: gdb.base/catch-syscall.exp: program has called chroot
+PASS: gdb.base/catch-syscall.exp: syscall chroot has returned
+PASS: gdb.base/catch-syscall.exp: continue until exit
+PASS: gdb.base/catch-syscall.exp: catch syscall with arguments (mlock)
+PASS: gdb.base/catch-syscall.exp: syscall(s) mlock appears in 'info breakpoints'
+PASS: gdb.base/catch-syscall.exp: continue until exit at catch syscall with unused syscall (mlock)
+PASS: gdb.base/catch-syscall.exp: catch syscall with arguments (chroot)
+PASS: gdb.base/catch-syscall.exp: syscall(s) chroot appears in 'info breakpoints'
+PASS: gdb.base/catch-syscall.exp: program has called chroot
+PASS: gdb.base/catch-syscall.exp: rerun to main
+PASS: gdb.base/catch-syscall.exp: program has called chroot
+PASS: gdb.base/catch-syscall.exp: syscall chroot has returned
+PASS: gdb.base/catch-syscall.exp: continue until exit
+PASS: gdb.base/catch-syscall.exp: set data-directory /the/path/to/nowhere
+PASS: gdb.base/catch-syscall.exp: Catch syscall displays a warning when there is no XML support (no datadir set)
+PASS: gdb.base/catch-syscall.exp: catch syscall appears in 'info breakpoints'
+PASS: gdb.base/catch-syscall.exp: set data-directory /the/path/to/nowhere
+PASS: gdb.base/catch-syscall.exp: catch syscall
+PASS: gdb.base/catch-syscall.exp: program has called [0-9]*
+PASS: gdb.base/catch-syscall.exp: syscall [0-9]* has returned
+PASS: gdb.base/catch-syscall.exp: program has called [0-9]*
+PASS: gdb.base/catch-syscall.exp: syscall [0-9]* has returned
+PASS: gdb.base/catch-syscall.exp: program has called [0-9]*
+PASS: gdb.base/catch-syscall.exp: catch syscall with arguments (6)
+PASS: gdb.base/catch-syscall.exp: syscall(s) 6 appears in 'info breakpoints'
+PASS: gdb.base/catch-syscall.exp: program has called 6
+PASS: gdb.base/catch-syscall.exp: syscall 6 has returned
+PASS: gdb.base/catch-syscall.exp: Catch a nonsense syscall without XML support
+Running ../../../master/gdb/testsuite/gdb.base/charset.exp ...
+PASS: gdb.base/charset.exp: show charset
+PASS: gdb.base/charset.exp: show target-charset
+PASS: gdb.base/charset.exp: check `show target-charset' against `show charset'
+PASS: gdb.base/charset.exp: show host-charset
+PASS: gdb.base/charset.exp: check `show host-charset' against `show charset'
+PASS: gdb.base/charset.exp: try malformed `set charset'
+PASS: gdb.base/charset.exp: try `set host-charset' with invalid charset
+PASS: gdb.base/charset.exp: try `set target-charset' with invalid charset
+PASS: gdb.base/charset.exp: capture valid host charsets
+PASS: gdb.base/charset.exp: capture valid target charsets
+PASS: gdb.base/charset.exp: try `set host-charset ASCII'
+PASS: gdb.base/charset.exp: parse `show charset' after `set host-charset ASCII'
+PASS: gdb.base/charset.exp: check effect of `set host-charset ASCII'
+PASS: gdb.base/charset.exp: try `set target-charset ASCII'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset ASCII'
+PASS: gdb.base/charset.exp: check effect of `set target-charset ASCII'
+PASS: gdb.base/charset.exp: try `set target-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: check effect of `set target-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: try `set target-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: check effect of `set target-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: try `set target-charset IBM1047'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset IBM1047'
+PASS: gdb.base/charset.exp: check effect of `set target-charset IBM1047'
+PASS: gdb.base/charset.exp: try `set host-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: parse `show charset' after `set host-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: check effect of `set host-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: try `set target-charset ASCII'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset ASCII'
+PASS: gdb.base/charset.exp: check effect of `set target-charset ASCII'
+PASS: gdb.base/charset.exp: try `set target-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: check effect of `set target-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: try `set target-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: check effect of `set target-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: try `set target-charset IBM1047'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset IBM1047'
+PASS: gdb.base/charset.exp: check effect of `set target-charset IBM1047'
+PASS: gdb.base/charset.exp: try `set host-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: parse `show charset' after `set host-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: check effect of `set host-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: try `set target-charset ASCII'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset ASCII'
+PASS: gdb.base/charset.exp: check effect of `set target-charset ASCII'
+PASS: gdb.base/charset.exp: try `set target-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: check effect of `set target-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: try `set target-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: check effect of `set target-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: try `set target-charset IBM1047'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset IBM1047'
+PASS: gdb.base/charset.exp: check effect of `set target-charset IBM1047'
+PASS: gdb.base/charset.exp: try `set host-charset IBM1047'
+PASS: gdb.base/charset.exp: parse `show charset' after `set host-charset IBM1047'
+PASS: gdb.base/charset.exp: check effect of `set host-charset IBM1047'
+PASS: gdb.base/charset.exp: try `set target-charset ASCII'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset ASCII'
+PASS: gdb.base/charset.exp: check effect of `set target-charset ASCII'
+PASS: gdb.base/charset.exp: try `set target-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: check effect of `set target-charset ISO-8859-1'
+PASS: gdb.base/charset.exp: try `set target-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: check effect of `set target-charset EBCDIC-US'
+PASS: gdb.base/charset.exp: try `set target-charset IBM1047'
+PASS: gdb.base/charset.exp: parse `show charset' after `set target-charset IBM1047'
+PASS: gdb.base/charset.exp: check effect of `set target-charset IBM1047'
+PASS: gdb.base/charset.exp: set breakpoint after all strings have been initialized
+PASS: gdb.base/charset.exp: run until all strings have been initialized
+PASS: gdb.base/charset.exp: get integer valueof "sizeof (wchar_t)" (4)
+PASS: gdb.base/charset.exp: set host-charset ASCII
+PASS: gdb.base/charset.exp: set target-charset ASCII
+PASS: gdb.base/charset.exp: print the null character in ASCII
+PASS: gdb.base/charset.exp: print string in ASCII
+PASS: gdb.base/charset.exp: parse character literal in ASCII
+PASS: gdb.base/charset.exp: check value of parsed character literal in ASCII
+PASS: gdb.base/charset.exp: parse string literal in ASCII
+PASS: gdb.base/charset.exp: check value of parsed string literal in ASCII
+PASS: gdb.base/charset.exp: try printing '\a' in ASCII
+PASS: gdb.base/charset.exp: check value of '\a' in ASCII
+PASS: gdb.base/charset.exp: check value of "\a" in ASCII
+PASS: gdb.base/charset.exp: try printing '\b' in ASCII
+PASS: gdb.base/charset.exp: check value of '\b' in ASCII
+PASS: gdb.base/charset.exp: check value of "\b" in ASCII
+PASS: gdb.base/charset.exp: try printing '\f' in ASCII
+PASS: gdb.base/charset.exp: check value of '\f' in ASCII
+PASS: gdb.base/charset.exp: check value of "\f" in ASCII
+PASS: gdb.base/charset.exp: try printing '\n' in ASCII
+PASS: gdb.base/charset.exp: check value of '\n' in ASCII
+PASS: gdb.base/charset.exp: check value of "\n" in ASCII
+PASS: gdb.base/charset.exp: try printing '\r' in ASCII
+PASS: gdb.base/charset.exp: check value of '\r' in ASCII
+PASS: gdb.base/charset.exp: check value of "\r" in ASCII
+PASS: gdb.base/charset.exp: try printing '\t' in ASCII
+PASS: gdb.base/charset.exp: check value of '\t' in ASCII
+PASS: gdb.base/charset.exp: check value of "\t" in ASCII
+PASS: gdb.base/charset.exp: try printing '\v' in ASCII
+PASS: gdb.base/charset.exp: check value of '\v' in ASCII
+PASS: gdb.base/charset.exp: check value of "\v" in ASCII
+PASS: gdb.base/charset.exp: print escape that doesn't exist in ASCII
+PASS: gdb.base/charset.exp: check value of escape that doesn't exist in ASCII
+PASS: gdb.base/charset.exp: set target-charset ISO-8859-1
+PASS: gdb.base/charset.exp: print the null character in ISO-8859-1
+PASS: gdb.base/charset.exp: print string in ISO-8859-1
+PASS: gdb.base/charset.exp: parse character literal in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of parsed character literal in ISO-8859-1
+PASS: gdb.base/charset.exp: parse string literal in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of parsed string literal in ISO-8859-1
+PASS: gdb.base/charset.exp: try printing '\a' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of '\a' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of "\a" in ISO-8859-1
+PASS: gdb.base/charset.exp: try printing '\b' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of '\b' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of "\b" in ISO-8859-1
+PASS: gdb.base/charset.exp: try printing '\f' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of '\f' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of "\f" in ISO-8859-1
+PASS: gdb.base/charset.exp: try printing '\n' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of '\n' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of "\n" in ISO-8859-1
+PASS: gdb.base/charset.exp: try printing '\r' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of '\r' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of "\r" in ISO-8859-1
+PASS: gdb.base/charset.exp: try printing '\t' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of '\t' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of "\t" in ISO-8859-1
+PASS: gdb.base/charset.exp: try printing '\v' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of '\v' in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of "\v" in ISO-8859-1
+PASS: gdb.base/charset.exp: print escape that doesn't exist in ISO-8859-1
+PASS: gdb.base/charset.exp: check value of escape that doesn't exist in ISO-8859-1
+PASS: gdb.base/charset.exp: set target-charset EBCDIC-US
+PASS: gdb.base/charset.exp: print the null character in EBCDIC-US
+PASS: gdb.base/charset.exp: print string in EBCDIC-US
+PASS: gdb.base/charset.exp: parse character literal in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of parsed character literal in EBCDIC-US
+PASS: gdb.base/charset.exp: parse string literal in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of parsed string literal in EBCDIC-US
+PASS: gdb.base/charset.exp: try printing '\a' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of '\a' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of "\a" in EBCDIC-US
+PASS: gdb.base/charset.exp: try printing '\b' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of '\b' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of "\b" in EBCDIC-US
+PASS: gdb.base/charset.exp: try printing '\f' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of '\f' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of "\f" in EBCDIC-US
+PASS: gdb.base/charset.exp: try printing '\n' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of '\n' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of "\n" in EBCDIC-US
+PASS: gdb.base/charset.exp: try printing '\r' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of '\r' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of "\r" in EBCDIC-US
+PASS: gdb.base/charset.exp: try printing '\t' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of '\t' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of "\t" in EBCDIC-US
+PASS: gdb.base/charset.exp: try printing '\v' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of '\v' in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of "\v" in EBCDIC-US
+PASS: gdb.base/charset.exp: print escape that doesn't exist in EBCDIC-US
+PASS: gdb.base/charset.exp: check value of escape that doesn't exist in EBCDIC-US
+PASS: gdb.base/charset.exp: set target-charset IBM1047
+PASS: gdb.base/charset.exp: print the null character in IBM1047
+PASS: gdb.base/charset.exp: print string in IBM1047
+PASS: gdb.base/charset.exp: parse character literal in IBM1047
+PASS: gdb.base/charset.exp: check value of parsed character literal in IBM1047
+PASS: gdb.base/charset.exp: parse string literal in IBM1047
+PASS: gdb.base/charset.exp: check value of parsed string literal in IBM1047
+PASS: gdb.base/charset.exp: try printing '\a' in IBM1047
+PASS: gdb.base/charset.exp: check value of '\a' in IBM1047
+PASS: gdb.base/charset.exp: check value of "\a" in IBM1047
+PASS: gdb.base/charset.exp: try printing '\b' in IBM1047
+PASS: gdb.base/charset.exp: check value of '\b' in IBM1047
+PASS: gdb.base/charset.exp: check value of "\b" in IBM1047
+PASS: gdb.base/charset.exp: try printing '\f' in IBM1047
+PASS: gdb.base/charset.exp: check value of '\f' in IBM1047
+PASS: gdb.base/charset.exp: check value of "\f" in IBM1047
+PASS: gdb.base/charset.exp: try printing '\n' in IBM1047
+PASS: gdb.base/charset.exp: check value of '\n' in IBM1047
+PASS: gdb.base/charset.exp: check value of "\n" in IBM1047
+PASS: gdb.base/charset.exp: try printing '\r' in IBM1047
+PASS: gdb.base/charset.exp: check value of '\r' in IBM1047
+PASS: gdb.base/charset.exp: check value of "\r" in IBM1047
+PASS: gdb.base/charset.exp: try printing '\t' in IBM1047
+PASS: gdb.base/charset.exp: check value of '\t' in IBM1047
+PASS: gdb.base/charset.exp: check value of "\t" in IBM1047
+PASS: gdb.base/charset.exp: try printing '\v' in IBM1047
+PASS: gdb.base/charset.exp: check value of '\v' in IBM1047
+PASS: gdb.base/charset.exp: check value of "\v" in IBM1047
+PASS: gdb.base/charset.exp: print escape that doesn't exist in IBM1047
+PASS: gdb.base/charset.exp: check value of escape that doesn't exist in IBM1047
+PASS: gdb.base/charset.exp: set target-wide-charset UTF-32
+PASS: gdb.base/charset.exp: print the null character in UTF-32
+PASS: gdb.base/charset.exp: print string in UTF-32
+PASS: gdb.base/charset.exp: parse character literal in UTF-32
+PASS: gdb.base/charset.exp: check value of parsed character literal in UTF-32
+PASS: gdb.base/charset.exp: parse string literal in UTF-32
+PASS: gdb.base/charset.exp: check value of parsed string literal in UTF-32
+PASS: gdb.base/charset.exp: try printing '\a' in UTF-32
+PASS: gdb.base/charset.exp: check value of '\a' in UTF-32
+PASS: gdb.base/charset.exp: check value of "\a" in UTF-32
+PASS: gdb.base/charset.exp: try printing '\b' in UTF-32
+PASS: gdb.base/charset.exp: check value of '\b' in UTF-32
+PASS: gdb.base/charset.exp: check value of "\b" in UTF-32
+PASS: gdb.base/charset.exp: try printing '\f' in UTF-32
+PASS: gdb.base/charset.exp: check value of '\f' in UTF-32
+PASS: gdb.base/charset.exp: check value of "\f" in UTF-32
+PASS: gdb.base/charset.exp: try printing '\n' in UTF-32
+PASS: gdb.base/charset.exp: check value of '\n' in UTF-32
+PASS: gdb.base/charset.exp: check value of "\n" in UTF-32
+PASS: gdb.base/charset.exp: try printing '\r' in UTF-32
+PASS: gdb.base/charset.exp: check value of '\r' in UTF-32
+PASS: gdb.base/charset.exp: check value of "\r" in UTF-32
+PASS: gdb.base/charset.exp: try printing '\t' in UTF-32
+PASS: gdb.base/charset.exp: check value of '\t' in UTF-32
+PASS: gdb.base/charset.exp: check value of "\t" in UTF-32
+PASS: gdb.base/charset.exp: try printing '\v' in UTF-32
+PASS: gdb.base/charset.exp: check value of '\v' in UTF-32
+PASS: gdb.base/charset.exp: check value of "\v" in UTF-32
+PASS: gdb.base/charset.exp: print escape that doesn't exist in UTF-32
+PASS: gdb.base/charset.exp: check value of escape that doesn't exist in UTF-32
+PASS: gdb.base/charset.exp: set target-charset UTF-8
+PASS: gdb.base/charset.exp: non-representable target character
+PASS: gdb.base/charset.exp: print '\x'
+PASS: gdb.base/charset.exp: print '\u'
+PASS: gdb.base/charset.exp: print '\9'
+PASS: gdb.base/charset.exp: print "\1011"
+PASS: gdb.base/charset.exp: basic wide string concatenation
+PASS: gdb.base/charset.exp: narrow and wide string concatenation
+PASS: gdb.base/charset.exp: wide and narrow string concatenation
+PASS: gdb.base/charset.exp: wide string concatenation with escape
+PASS: gdb.base/charset.exp: concatenate three strings with empty wide string
+PASS: gdb.base/charset.exp: basic wide character
+PASS: gdb.base/charset.exp: get integer valueof "sizeof (char16_t)" (2)
+PASS: gdb.base/charset.exp: basic UTF-16 string concatenation
+PASS: gdb.base/charset.exp: narrow and UTF-16 string concatenation
+PASS: gdb.base/charset.exp: UTF-16 and narrow string concatenation
+PASS: gdb.base/charset.exp: UTF-16 string concatenation with escape
+PASS: gdb.base/charset.exp: concatenate three strings with empty UTF-16 string
+PASS: gdb.base/charset.exp: basic UTF-16 character
+PASS: gdb.base/charset.exp: get integer valueof "sizeof (char32_t)" (4)
+PASS: gdb.base/charset.exp: basic UTF-32 string concatenation
+PASS: gdb.base/charset.exp: narrow and UTF-32 string concatenation
+PASS: gdb.base/charset.exp: UTF-32 and narrow string concatenation
+PASS: gdb.base/charset.exp: UTF-32 string concatenation with escape
+PASS: gdb.base/charset.exp: concatenate three strings with empty UTF-32 string
+PASS: gdb.base/charset.exp: basic UTF-32 character
+PASS: gdb.base/charset.exp: undefined concatenation of wide and UTF-16
+PASS: gdb.base/charset.exp: undefined concatenation of wide and UTF-32
+PASS: gdb.base/charset.exp: typedef to wchar_t
+PASS: gdb.base/charset.exp: undefined concatenation of UTF-16 and UTF-32
+PASS: gdb.base/charset.exp: set up for python printing of utf-16 string
+PASS: gdb.base/charset.exp: extract utf-16 string using python
+PASS: gdb.base/charset.exp: EVAL_SKIP cleanup handling regression test
+PASS: gdb.base/charset.exp: Assign String16 with prefix u
+PASS: gdb.base/charset.exp: Display String String16 with x/hs
+PASS: gdb.base/charset.exp: Assign String32 with prefix U
+PASS: gdb.base/charset.exp: Display String String32 with x/ws
+PASS: gdb.base/charset.exp: Assign String32 with prefix L
+PASS: gdb.base/charset.exp: Display String String32 with x/ws
+PASS: gdb.base/charset.exp: assign string to short array
+PASS: gdb.base/charset.exp: assign string to int array
+PASS: gdb.base/charset.exp: assign string to long array
+Running ../../../master/gdb/testsuite/gdb.base/checkpoint.exp ...
+PASS: gdb.base/checkpoint.exp: break1 start
+PASS: gdb.base/checkpoint.exp: break1 two
+PASS: gdb.base/checkpoint.exp: break1 three
+PASS: gdb.base/checkpoint.exp: break1 four
+PASS: gdb.base/checkpoint.exp: break1 five
+PASS: gdb.base/checkpoint.exp: break1 six
+PASS: gdb.base/checkpoint.exp: break1 seven
+PASS: gdb.base/checkpoint.exp: break1 eight
+PASS: gdb.base/checkpoint.exp: break1 nine
+PASS: gdb.base/checkpoint.exp: break1 ten
+PASS: gdb.base/checkpoint.exp: info checkpoints one
+PASS: gdb.base/checkpoint.exp: break2 one
+PASS: gdb.base/checkpoint.exp: restart 1 one
+PASS: gdb.base/checkpoint.exp: verify i 1 one
+PASS: gdb.base/checkpoint.exp: step in 1 one
+PASS: gdb.base/checkpoint.exp: verify lines 1 one
+PASS: gdb.base/checkpoint.exp: restart 2 one
+PASS: gdb.base/checkpoint.exp: step in 2 one
+PASS: gdb.base/checkpoint.exp: verify i 2 one
+PASS: gdb.base/checkpoint.exp: verify lines 2 one
+PASS: gdb.base/checkpoint.exp: restart 3 one
+PASS: gdb.base/checkpoint.exp: step in 3 one
+PASS: gdb.base/checkpoint.exp: verify i 3 one
+PASS: gdb.base/checkpoint.exp: verify lines 3 one
+PASS: gdb.base/checkpoint.exp: restart 4 one
+PASS: gdb.base/checkpoint.exp: step in 4 one
+PASS: gdb.base/checkpoint.exp: verify i 4 one
+PASS: gdb.base/checkpoint.exp: verify lines 4 one
+PASS: gdb.base/checkpoint.exp: restart 5 one
+PASS: gdb.base/checkpoint.exp: step in 5 one
+PASS: gdb.base/checkpoint.exp: verify i 5 one
+PASS: gdb.base/checkpoint.exp: verify lines 5 one
+PASS: gdb.base/checkpoint.exp: restart 6 one
+PASS: gdb.base/checkpoint.exp: step in 6 one
+PASS: gdb.base/checkpoint.exp: verify i 6 one
+PASS: gdb.base/checkpoint.exp: verify lines 6 one
+PASS: gdb.base/checkpoint.exp: restart 7 one
+PASS: gdb.base/checkpoint.exp: step in 7 one
+PASS: gdb.base/checkpoint.exp: verify i 7 one
+PASS: gdb.base/checkpoint.exp: verify lines 7 one
+PASS: gdb.base/checkpoint.exp: restart 8 one
+PASS: gdb.base/checkpoint.exp: step in 8 one
+PASS: gdb.base/checkpoint.exp: verify i 8 one
+PASS: gdb.base/checkpoint.exp: verify lines 8 one
+PASS: gdb.base/checkpoint.exp: restart 9 one
+PASS: gdb.base/checkpoint.exp: step in 9 one
+PASS: gdb.base/checkpoint.exp: verify i 9 one
+PASS: gdb.base/checkpoint.exp: verify lines 9 one
+PASS: gdb.base/checkpoint.exp: restart 10 one
+PASS: gdb.base/checkpoint.exp: step in 10 one
+PASS: gdb.base/checkpoint.exp: verify i 10 one
+PASS: gdb.base/checkpoint.exp: verify lines 10 one
+PASS: gdb.base/checkpoint.exp: restart 0 one
+PASS: gdb.base/checkpoint.exp: break3 one
+PASS: gdb.base/checkpoint.exp: Diff input and output one
+PASS: gdb.base/checkpoint.exp: restart 1 two
+PASS: gdb.base/checkpoint.exp: breakpoint 1 1 one
+PASS: gdb.base/checkpoint.exp: step in 1 two
+PASS: gdb.base/checkpoint.exp: verify lines 1 two
+PASS: gdb.base/checkpoint.exp: restart 2 two
+PASS: gdb.base/checkpoint.exp: breakpoint 1 2 one
+PASS: gdb.base/checkpoint.exp: step in 2 two
+PASS: gdb.base/checkpoint.exp: verify lines 2 two
+PASS: gdb.base/checkpoint.exp: restart 3 two
+PASS: gdb.base/checkpoint.exp: breakpoint 1 3 one
+PASS: gdb.base/checkpoint.exp: step in 3 two
+PASS: gdb.base/checkpoint.exp: verify lines 3 two
+PASS: gdb.base/checkpoint.exp: restart 4 two
+PASS: gdb.base/checkpoint.exp: breakpoint 1 4 one
+PASS: gdb.base/checkpoint.exp: step in 4 two
+PASS: gdb.base/checkpoint.exp: verify lines 4 two
+PASS: gdb.base/checkpoint.exp: restart 5 two
+PASS: gdb.base/checkpoint.exp: breakpoint 1 5 one
+PASS: gdb.base/checkpoint.exp: step in 5 two
+PASS: gdb.base/checkpoint.exp: verify lines 5 two
+PASS: gdb.base/checkpoint.exp: restart 6 two
+PASS: gdb.base/checkpoint.exp: breakpoint 1 6 one
+PASS: gdb.base/checkpoint.exp: step in 6 two
+PASS: gdb.base/checkpoint.exp: verify lines 5 two
+PASS: gdb.base/checkpoint.exp: restart 7 two
+PASS: gdb.base/checkpoint.exp: breakpoint 1 7 one
+PASS: gdb.base/checkpoint.exp: step in 7 two
+PASS: gdb.base/checkpoint.exp: verify lines 7 two
+PASS: gdb.base/checkpoint.exp: Diff input and output two
+PASS: gdb.base/checkpoint.exp: restart 0 one
+PASS: gdb.base/checkpoint.exp: break4 one
+PASS: gdb.base/checkpoint.exp: delete copy1
+PASS: gdb.base/checkpoint.exp: restart 1 three
+PASS: gdb.base/checkpoint.exp: break2 1 one
+PASS: gdb.base/checkpoint.exp: outfile still open 1
+PASS: gdb.base/checkpoint.exp: restart 1 three
+PASS: gdb.base/checkpoint.exp: break2 2 one
+PASS: gdb.base/checkpoint.exp: outfile still open 2
+PASS: gdb.base/checkpoint.exp: restart 1 three
+PASS: gdb.base/checkpoint.exp: break2 3 one
+PASS: gdb.base/checkpoint.exp: outfile still open 3
+PASS: gdb.base/checkpoint.exp: restart 1 three
+PASS: gdb.base/checkpoint.exp: break2 4 one
+PASS: gdb.base/checkpoint.exp: outfile still open 4
+PASS: gdb.base/checkpoint.exp: restart 1 three
+PASS: gdb.base/checkpoint.exp: break2 5 one
+PASS: gdb.base/checkpoint.exp: outfile still open 5
+PASS: gdb.base/checkpoint.exp: restart 1 three
+PASS: gdb.base/checkpoint.exp: break2 6 one
+PASS: gdb.base/checkpoint.exp: outfile still open 6
+PASS: gdb.base/checkpoint.exp: restart 1 three
+PASS: gdb.base/checkpoint.exp: break2 7 one
+PASS: gdb.base/checkpoint.exp: outfile still open 7
+PASS: gdb.base/checkpoint.exp: restart 1 three
+PASS: gdb.base/checkpoint.exp: break2 8 one
+PASS: gdb.base/checkpoint.exp: outfile still open 8
+PASS: gdb.base/checkpoint.exp: restart 1 three
+PASS: gdb.base/checkpoint.exp: break2 9 one
+PASS: gdb.base/checkpoint.exp: outfile still open 9
+PASS: gdb.base/checkpoint.exp: restart 1 three
+PASS: gdb.base/checkpoint.exp: break2 10 one
+PASS: gdb.base/checkpoint.exp: outfile still open 10
+PASS: gdb.base/checkpoint.exp: Exit, dropped into next fork one
+PASS: gdb.base/checkpoint.exp: Exit, dropped into next fork two
+PASS: gdb.base/checkpoint.exp: Exit, dropped into next fork three
+PASS: gdb.base/checkpoint.exp: Exit, dropped into next fork four
+PASS: gdb.base/checkpoint.exp: Exit, dropped into next fork five
+PASS: gdb.base/checkpoint.exp: info checkpoints two
+PASS: gdb.base/checkpoint.exp: kill all one
+PASS: gdb.base/checkpoint.exp: no more checkpoint 0
+PASS: gdb.base/checkpoint.exp: no more checkpoint 1
+PASS: gdb.base/checkpoint.exp: no more checkpoint 2
+PASS: gdb.base/checkpoint.exp: no more checkpoint 3
+PASS: gdb.base/checkpoint.exp: no more checkpoint 4
+PASS: gdb.base/checkpoint.exp: no more checkpoint 5
+PASS: gdb.base/checkpoint.exp: no more checkpoint 6
+PASS: gdb.base/checkpoint.exp: no more checkpoint 7
+PASS: gdb.base/checkpoint.exp: no more checkpoint 8
+PASS: gdb.base/checkpoint.exp: no more checkpoint 9
+PASS: gdb.base/checkpoint.exp: no more checkpoint 10
+PASS: gdb.base/checkpoint.exp: set checkpoint breakpoint
+PASS: gdb.base/checkpoint.exp: break2 with many checkpoints
+PASS: gdb.base/checkpoint.exp: info checkpoints with at least 600 checkpoints
+PASS: gdb.base/checkpoint.exp: kill all one with many checkpoints
+Running ../../../master/gdb/testsuite/gdb.base/chng-syms.exp ...
+PASS: gdb.base/chng-syms.exp: setting conditional breakpoint on function
+PASS: gdb.base/chng-syms.exp: continue until exit at breakpoint first time through
+PASS: gdb.base/chng-syms.exp: running with invalidated bpt condition after executable changes
+Running ../../../master/gdb/testsuite/gdb.base/code-expr.exp ...
+PASS: gdb.base/code-expr.exp: set print sevenbit-strings
+PASS: gdb.base/code-expr.exp: set print address off
+PASS: gdb.base/code-expr.exp: set width 0
+PASS: gdb.base/code-expr.exp: (@code char)
+PASS: gdb.base/code-expr.exp: (@code signed char)
+PASS: gdb.base/code-expr.exp: (@code unsigned char)
+PASS: gdb.base/code-expr.exp: (@code short)
+PASS: gdb.base/code-expr.exp: (@code signed short)
+PASS: gdb.base/code-expr.exp: (@code unsigned short)
+PASS: gdb.base/code-expr.exp: (@code int)
+PASS: gdb.base/code-expr.exp: (@code signed int)
+PASS: gdb.base/code-expr.exp: (@code unsigned int)
+PASS: gdb.base/code-expr.exp: (@code long)
+PASS: gdb.base/code-expr.exp: (@code signed long)
+PASS: gdb.base/code-expr.exp: (@code unsigned long)
+PASS: gdb.base/code-expr.exp: (@code long long)
+PASS: gdb.base/code-expr.exp: (@code signed long long)
+PASS: gdb.base/code-expr.exp: (@code unsigned long long)
+PASS: gdb.base/code-expr.exp: (@code float)
+PASS: gdb.base/code-expr.exp: (@code double)
+PASS: gdb.base/code-expr.exp: (@data char)
+PASS: gdb.base/code-expr.exp: (@data signed char)
+PASS: gdb.base/code-expr.exp: (@data unsigned char)
+PASS: gdb.base/code-expr.exp: (@data short)
+PASS: gdb.base/code-expr.exp: (@data signed short)
+PASS: gdb.base/code-expr.exp: (@data unsigned short)
+PASS: gdb.base/code-expr.exp: (@data int)
+PASS: gdb.base/code-expr.exp: (@data signed int)
+PASS: gdb.base/code-expr.exp: (@data unsigned int)
+PASS: gdb.base/code-expr.exp: (@data long)
+PASS: gdb.base/code-expr.exp: (@data signed long)
+PASS: gdb.base/code-expr.exp: (@data unsigned long)
+PASS: gdb.base/code-expr.exp: (@data long long)
+PASS: gdb.base/code-expr.exp: (@data signed long long)
+PASS: gdb.base/code-expr.exp: (@data unsigned long long)
+PASS: gdb.base/code-expr.exp: (@data float)
+PASS: gdb.base/code-expr.exp: (@data double)
+PASS: gdb.base/code-expr.exp: (char @code)
+PASS: gdb.base/code-expr.exp: (signed char @code)
+PASS: gdb.base/code-expr.exp: (unsigned char @code)
+PASS: gdb.base/code-expr.exp: (short @code)
+PASS: gdb.base/code-expr.exp: (signed short @code)
+PASS: gdb.base/code-expr.exp: (unsigned short @code)
+PASS: gdb.base/code-expr.exp: (int @code)
+PASS: gdb.base/code-expr.exp: (signed int @code)
+PASS: gdb.base/code-expr.exp: (unsigned int @code)
+PASS: gdb.base/code-expr.exp: (long @code)
+PASS: gdb.base/code-expr.exp: (signed long @code)
+PASS: gdb.base/code-expr.exp: (unsigned long @code)
+PASS: gdb.base/code-expr.exp: (long long @code)
+PASS: gdb.base/code-expr.exp: (signed long long @code)
+PASS: gdb.base/code-expr.exp: (unsigned long long @code)
+PASS: gdb.base/code-expr.exp: (float @code)
+PASS: gdb.base/code-expr.exp: (double @code)
+PASS: gdb.base/code-expr.exp: (char @data)
+PASS: gdb.base/code-expr.exp: (signed char @data)
+PASS: gdb.base/code-expr.exp: (unsigned char @data)
+PASS: gdb.base/code-expr.exp: (short @data)
+PASS: gdb.base/code-expr.exp: (signed short @data)
+PASS: gdb.base/code-expr.exp: (unsigned short @data)
+PASS: gdb.base/code-expr.exp: (int @data)
+PASS: gdb.base/code-expr.exp: (signed int @data)
+PASS: gdb.base/code-expr.exp: (unsigned int @data)
+PASS: gdb.base/code-expr.exp: (long @data)
+PASS: gdb.base/code-expr.exp: (signed long @data)
+PASS: gdb.base/code-expr.exp: (unsigned long @data)
+PASS: gdb.base/code-expr.exp: (long long @data)
+PASS: gdb.base/code-expr.exp: (signed long long @data)
+PASS: gdb.base/code-expr.exp: (unsigned long long @data)
+PASS: gdb.base/code-expr.exp: (float @data)
+PASS: gdb.base/code-expr.exp: (double @data)
+PASS: gdb.base/code-expr.exp: (@code enum misordered)
+PASS: gdb.base/code-expr.exp: (enum misordered @code)
+PASS: gdb.base/code-expr.exp: (@data enum misordered)
+PASS: gdb.base/code-expr.exp: (enum misordered @data)
+PASS: gdb.base/code-expr.exp: (@code int *)
+PASS: gdb.base/code-expr.exp: (int @code *)
+PASS: gdb.base/code-expr.exp: (int * @code)
+PASS: gdb.base/code-expr.exp: (@code int * @code)
+PASS: gdb.base/code-expr.exp: (int @code * @code)
+PASS: gdb.base/code-expr.exp: (@code int **)
+PASS: gdb.base/code-expr.exp: (int @code **)
+PASS: gdb.base/code-expr.exp: (int ** @code)
+PASS: gdb.base/code-expr.exp: (@code int * @code *)
+PASS: gdb.base/code-expr.exp: (int @code * @code *)
+PASS: gdb.base/code-expr.exp: (@code int * @code * @code)
+PASS: gdb.base/code-expr.exp: (int @code * @code * @code)
+PASS: gdb.base/code-expr.exp: (@code struct t_struct)
+PASS: gdb.base/code-expr.exp: (@code union t_union)
+PASS: gdb.base/code-expr.exp: (struct t_struct @code)
+PASS: gdb.base/code-expr.exp: (union t_union @code)
+PASS: gdb.base/code-expr.exp: (@code struct t_struct *)
+PASS: gdb.base/code-expr.exp: (@code union t_union *)
+PASS: gdb.base/code-expr.exp: (struct t_struct @code *)
+PASS: gdb.base/code-expr.exp: (union t_union @code *)
+PASS: gdb.base/code-expr.exp: (struct t_struct * @code)
+PASS: gdb.base/code-expr.exp: (union t_union * @code)
+PASS: gdb.base/code-expr.exp: (@code struct t_struct * @code)
+PASS: gdb.base/code-expr.exp: (@code union t_union * @code)
+PASS: gdb.base/code-expr.exp: (struct t_struct @code * @code)
+PASS: gdb.base/code-expr.exp: (union t_union @code * @code)
+Running ../../../master/gdb/testsuite/gdb.base/code_elim.exp ...
+PASS: gdb.base/code_elim.exp: add-symbol-file code_elim1 0x100000
+PASS: gdb.base/code_elim.exp: test eliminated var my_global_symbol
+PASS: gdb.base/code_elim.exp: test eliminated var my_static_symbol
+PASS: gdb.base/code_elim.exp: test eliminated var my_global_func
+PASS: gdb.base/code_elim.exp: get address of main
+PASS: gdb.base/code_elim.exp: test eliminated var my_global_symbol
+PASS: gdb.base/code_elim.exp: test eliminated var my_static_symbol
+PASS: gdb.base/code_elim.exp: test eliminated var my_global_func
+PASS: gdb.base/code_elim.exp: get address of main
+PASS: gdb.base/code_elim.exp: add-symbol-file code_elim1 0x100000
+PASS: gdb.base/code_elim.exp: add-symbol-file code_elim2 0x200000
+PASS: gdb.base/code_elim.exp: get address of my_global_symbol
+PASS: gdb.base/code_elim.exp: get address of my_static_symbol
+PASS: gdb.base/code_elim.exp: get address of my_global_func
+PASS: gdb.base/code_elim.exp: get address of main
+PASS: gdb.base/code_elim.exp: add-symbol-file code_elim2 0x200000
+PASS: gdb.base/code_elim.exp: add-symbol-file code_elim1 0x100000
+PASS: gdb.base/code_elim.exp: get address of my_global_symbol
+PASS: gdb.base/code_elim.exp: get address of my_static_symbol
+PASS: gdb.base/code_elim.exp: get address of my_global_func
+PASS: gdb.base/code_elim.exp: get address of main
+Running ../../../master/gdb/testsuite/gdb.base/commands.exp ...
+PASS: gdb.base/commands.exp: set foo in gdbvar_simple_if_test
+PASS: gdb.base/commands.exp: gdbvar_simple_if_test #1
+PASS: gdb.base/commands.exp: gdbvar_simple_if_test #2
+PASS: gdb.base/commands.exp: set foo in gdbvar_simple_while_test
+PASS: gdb.base/commands.exp: gdbvar_simple_while_test #1
+PASS: gdb.base/commands.exp: set foo in gdbvar complex_if_while_test
+PASS: gdb.base/commands.exp: gdbvar_complex_if_while_test #1
+PASS: gdb.base/commands.exp: set value to 5 in progvar_simple_if_test #1
+PASS: gdb.base/commands.exp: progvar_simple_if_test #1
+PASS: gdb.base/commands.exp: progvar_simple_if_test #2
+PASS: gdb.base/commands.exp: set args in progvar_simple_while_test
+PASS: gdb.base/commands.exp: set value to 5 in progvar_simple_if_test #2
+PASS: gdb.base/commands.exp: progvar_simple_while_test #1
+PASS: gdb.base/commands.exp: set args in progvar_complex_if_while_test
+PASS: gdb.base/commands.exp: set value to 4 in progvar_simple_if_test
+PASS: gdb.base/commands.exp: progvar_complex_if_while_test #1
+PASS: gdb.base/commands.exp: set args in if_while_breakpoint_command_test
+PASS: gdb.base/commands.exp: set value to 5 in progvar_simple_if_test
+PASS: gdb.base/commands.exp: break factorial #1
+PASS: gdb.base/commands.exp: commands in if_while_breakpoint_command_test
+PASS: gdb.base/commands.exp: commands part 2 in if_while_breakpoint_command_test
+PASS: gdb.base/commands.exp: if_while_breakpoint_command_test #1
+PASS: gdb.base/commands.exp: info break in if_while_breakpoint_command_test
+PASS: gdb.base/commands.exp: set args in infrun_breakpoint_command_test
+PASS: gdb.base/commands.exp: set value to 6 in progvar_simple_if_test #1
+PASS: gdb.base/commands.exp: break factorial if value == 5
+PASS: gdb.base/commands.exp: commands in infrun_breakpoint_command_test #1
+PASS: gdb.base/commands.exp: commands in infrun_breakpoint_command_test #2
+PASS: gdb.base/commands.exp: continue in infrun_breakpoint_command_test
+PASS: gdb.base/commands.exp: set args in breakpoint_command_test
+PASS: gdb.base/commands.exp: set value to 6 in progvar_simple_if_test #2
+PASS: gdb.base/commands.exp: break factorial #2
+PASS: gdb.base/commands.exp: commands in breakpoint_command_test
+PASS: gdb.base/commands.exp: continue in breakpoint_command_test
+PASS: gdb.base/commands.exp: print value in breakpoint_command_test
+PASS: gdb.base/commands.exp: set foo in user_defined_command_test
+PASS: gdb.base/commands.exp: define mycommand in user_defined_command_test
+PASS: gdb.base/commands.exp: enter commands in user_defined_command_test
+PASS: gdb.base/commands.exp: execute user defined command in user_defined_command_test
+PASS: gdb.base/commands.exp: display user command in user_defined_command_test
+PASS: gdb.base/commands.exp: set args in watchpoint_command_test
+PASS: gdb.base/commands.exp: watch local_var
+PASS: gdb.base/commands.exp: begin commands on watch
+PASS: gdb.base/commands.exp: add print command to watch
+PASS: gdb.base/commands.exp: add continue command to watch
+PASS: gdb.base/commands.exp: end commands on watch
+PASS: gdb.base/commands.exp: continue with watch
+PASS: gdb.base/commands.exp: break factorial #3
+PASS: gdb.base/commands.exp: set value to 5 in test_command_prompt_position
+PASS: gdb.base/commands.exp: if test in test_command_prompt_position
+PASS: gdb.base/commands.exp: > OK in test_command_prompt_position
+PASS: gdb.base/commands.exp: tried to deprecate non-existing command
+PASS: gdb.base/commands.exp: maintenance deprecate p "new_p" /1/
+PASS: gdb.base/commands.exp: p deprecated warning, with replacement
+PASS: gdb.base/commands.exp: Deprecated warning goes away /1/
+PASS: gdb.base/commands.exp: maintenance deprecate p "new_p" /2/
+PASS: gdb.base/commands.exp: maintenance deprecate print "new_print"
+PASS: gdb.base/commands.exp: both alias and command are deprecated
+PASS: gdb.base/commands.exp: Deprecated warning goes away /2/
+PASS: gdb.base/commands.exp: deprecate long command /1/
+PASS: gdb.base/commands.exp: long command deprecated /1/
+PASS: gdb.base/commands.exp: deprecate long command /2/
+PASS: gdb.base/commands.exp: long command deprecated with no alternative /2/
+PASS: gdb.base/commands.exp: deprecate with no arguments
+PASS: gdb.base/commands.exp: set args in bp_deleted_in_command_test
+PASS: gdb.base/commands.exp: breakpoint in bp_deleted_in_command_test
+PASS: gdb.base/commands.exp: begin commands in bp_deleted_in_command_test
+PASS: gdb.base/commands.exp: add silent command
+PASS: gdb.base/commands.exp: add clear command
+PASS: gdb.base/commands.exp: add printf command
+PASS: gdb.base/commands.exp: add cont command
+PASS: gdb.base/commands.exp: end commands
+PASS: gdb.base/commands.exp: run factorial until breakpoint
+PASS: gdb.base/commands.exp: set args in temporary_breakpoint_commands
+PASS: gdb.base/commands.exp: breakpoint in temporary_breakpoint_commands
+PASS: gdb.base/commands.exp: begin commands in bp_deleted_in_command_test
+PASS: gdb.base/commands.exp: add silent tbreak command
+PASS: gdb.base/commands.exp: add printf tbreak command
+PASS: gdb.base/commands.exp: add cont tbreak command
+PASS: gdb.base/commands.exp: end tbreak commands
+PASS: gdb.base/commands.exp: run factorial until temporary breakpoint
+PASS: gdb.base/commands.exp: stray_arg0_test #1
+PASS: gdb.base/commands.exp: stray_arg0_test #2
+PASS: gdb.base/commands.exp: stray_arg0_test #3
+PASS: gdb.base/commands.exp: stray_arg0_test #4
+PASS: gdb.base/commands.exp: source file with indented comment
+PASS: gdb.base/commands.exp: recursive source test
+PASS: gdb.base/commands.exp: set $tem in if_commands_test
+PASS: gdb.base/commands.exp: if $tem == 2 - if_commands_test 1
+PASS: gdb.base/commands.exp: break main - if_commands_test 1
+PASS: gdb.base/commands.exp: else - if_commands_test 1
+PASS: gdb.base/commands.exp: break factorial - if_commands_test 1
+PASS: gdb.base/commands.exp: commands - if_commands_test 1
+PASS: gdb.base/commands.exp: silent - if_commands_test 1
+PASS: gdb.base/commands.exp: set $tem = 3 - if_commands_test 1
+PASS: gdb.base/commands.exp: continue - if_commands_test 1
+PASS: gdb.base/commands.exp: first end - if_commands_test 1
+PASS: gdb.base/commands.exp: second end - if_commands_test 1
+PASS: gdb.base/commands.exp: if $tem == 1 - if_commands_test 2
+PASS: gdb.base/commands.exp: break main - if_commands_test 2
+PASS: gdb.base/commands.exp: else - if_commands_test 2
+PASS: gdb.base/commands.exp: break factorial - if_commands_test 2
+PASS: gdb.base/commands.exp: commands - if_commands_test 2
+PASS: gdb.base/commands.exp: silent - if_commands_test 2
+PASS: gdb.base/commands.exp: set $tem = 3 - if_commands_test 2
+PASS: gdb.base/commands.exp: continue - if_commands_test 2
+PASS: gdb.base/commands.exp: first end - if_commands_test 2
+PASS: gdb.base/commands.exp: second end - if_commands_test 2
+PASS: gdb.base/commands.exp: define one
+PASS: gdb.base/commands.exp: define hook-one
+PASS: gdb.base/commands.exp: define one in redefine_hook_test
+PASS: gdb.base/commands.exp: enter commands for one redefinition in redefine_hook_test
+PASS: gdb.base/commands.exp: execute one command in redefine_hook_test
+PASS: gdb.base/commands.exp: define backtrace
+PASS: gdb.base/commands.exp: expect response to define backtrace
+PASS: gdb.base/commands.exp: enter commands in redefine_backtrace_test
+PASS: gdb.base/commands.exp: execute backtrace command in redefine_backtrace_test
+PASS: gdb.base/commands.exp: execute bt command in redefine_backtrace_test
+Running ../../../master/gdb/testsuite/gdb.base/completion.exp ...
+PASS: gdb.base/completion.exp: complete 'hfgfh'
+PASS: gdb.base/completion.exp: complete 'show output'
+PASS: gdb.base/completion.exp: complete 'show output-'
+PASS: gdb.base/completion.exp: complete 'p'
+PASS: gdb.base/completion.exp: complete 'p '
+PASS: gdb.base/completion.exp: complete 'info t foo'
+PASS: gdb.base/completion.exp: complete 'info t'
+PASS: gdb.base/completion.exp: complete 'info t '
+PASS: gdb.base/completion.exp: complete 'info asdfgh'
+PASS: gdb.base/completion.exp: complete 'info asdfgh '
+PASS: gdb.base/completion.exp: complete 'info'
+PASS: gdb.base/completion.exp: complete 'info '
+PASS: gdb.base/completion.exp: complete (2) 'info '
+PASS: gdb.base/completion.exp: complete 'help info wat'
+PASS: gdb.base/completion.exp: complete 'p "break1'
+XFAIL: gdb.base/completion.exp: complete 'p "break1.'
+PASS: gdb.base/completion.exp: complete 'p 'arg'
+PASS: gdb.base/completion.exp: complete (2) 'p 'arg'
+PASS: gdb.base/completion.exp: complete 'p no_var_named_this-arg'
+PASS: gdb.base/completion.exp: complete (2) 'p no_var_named_this-arg'
+PASS: gdb.base/completion.exp: complete (2) 'p no_var_named_this-' (eat prompt)
+PASS: gdb.base/completion.exp: complete (2) 'p no_var_named_this-'
+PASS: gdb.base/completion.exp: complete 'p values[0].a'
+PASS: gdb.base/completion.exp: complete 'p values[0] . a'
+PASS: gdb.base/completion.exp: complete 'p &values[0] -> a'
+PASS: gdb.base/completion.exp: completion of field in anonymous union
+PASS: gdb.base/completion.exp: cd to ${srcdir}
+PASS: gdb.base/completion.exp: directory completion
+PASS: gdb.base/completion.exp: directory completion 2
+PASS: gdb.base/completion.exp: Glob remaining of directory test
+PASS: gdb.base/completion.exp: complete-command 'file ./gdb.base/compl'
+PASS: gdb.base/completion.exp: complete 'file ./gdb.base/complet'
+PASS: gdb.base/completion.exp: complete 'info func marke'
+PASS: gdb.base/completion.exp: complete 'set follow-fork-mode'
+PASS: gdb.base/completion.exp: field completion with invalid field
+PASS: gdb.base/completion.exp: test non-deprecated completion
+PASS: gdb.base/completion.exp: test deprecated completion
+Running ../../../master/gdb/testsuite/gdb.base/complex.exp ...
+PASS: gdb.base/complex.exp: print complex packed value in C
+PASS: gdb.base/complex.exp: print complex value in C
+Running ../../../master/gdb/testsuite/gdb.base/cond-expr.exp ...
+PASS: gdb.base/cond-expr.exp: print value of cond expr (const true)
+PASS: gdb.base/cond-expr.exp: print value of cond expr (const false)
+PASS: gdb.base/cond-expr.exp: set variable x=14
+PASS: gdb.base/cond-expr.exp: set variable y=2
+PASS: gdb.base/cond-expr.exp: set variable z=3
+PASS: gdb.base/cond-expr.exp: print value of cond expr (var true)
+PASS: gdb.base/cond-expr.exp: set variable x=0
+PASS: gdb.base/cond-expr.exp: print value of cond expr (var false)
+PASS: gdb.base/cond-expr.exp: print whatis of cond expr
+Running ../../../master/gdb/testsuite/gdb.base/condbreak.exp ...
+PASS: gdb.base/condbreak.exp: breakpoint function
+PASS: gdb.base/condbreak.exp: break marker1 if 1==1
+PASS: gdb.base/condbreak.exp: delete 2
+PASS: gdb.base/condbreak.exp: break break.c:97 if 1==1
+PASS: gdb.base/condbreak.exp: delete 3
+PASS: gdb.base/condbreak.exp: break marker1 if (1==1)
+PASS: gdb.base/condbreak.exp: break break.c:97 if (1==1)
+PASS: gdb.base/condbreak.exp: break marker2 if (a==43)
+PASS: gdb.base/condbreak.exp: break marker3 if (multi_line_if_conditional(1,1,1)==0)
+PASS: gdb.base/condbreak.exp: break marker4
+PASS: gdb.base/condbreak.exp: breakpoint info
+PASS: gdb.base/condbreak.exp: rerun to main
+PASS: gdb.base/condbreak.exp: run until breakpoint set at a line number
+PASS: gdb.base/condbreak.exp: run until breakpoint at marker1
+PASS: gdb.base/condbreak.exp: run until breakpoint at marker2
+PASS: gdb.base/condbreak.exp: break main if (1==1) thread 999
+PASS: gdb.base/condbreak.exp: break main thread 999 if (1==1)
+PASS: gdb.base/condbreak.exp: break *main if (1==1) thread 999
+PASS: gdb.base/condbreak.exp: break *main thread 999 if (1==1)
+PASS: gdb.base/condbreak.exp: break *main if (1==1) task 999
+PASS: gdb.base/condbreak.exp: break *main task 999 if (1==1)
+PASS: gdb.base/condbreak.exp: break *main if (1==1) t 999
+PASS: gdb.base/condbreak.exp: break *main if (1==1) th 999
+PASS: gdb.base/condbreak.exp: break *main if (1==1) ta 999
+PASS: gdb.base/condbreak.exp: run until breakpoint at marker3
+PASS: gdb.base/condbreak.exp: run until breakpoint at marker4
+Running ../../../master/gdb/testsuite/gdb.base/consecutive.exp ...
+PASS: gdb.base/consecutive.exp: continue to breakpoint in foo
+PASS: gdb.base/consecutive.exp: get breakpoint address for foo
+PASS: gdb.base/consecutive.exp: set bp, 2nd instr
+PASS: gdb.base/consecutive.exp: stopped at bp, 2nd instr
+Running ../../../master/gdb/testsuite/gdb.base/constvars.exp ...
+PASS: gdb.base/constvars.exp: break marker1
+PASS: gdb.base/constvars.exp: continue to marker1
+PASS: gdb.base/constvars.exp: up from marker1
+PASS: gdb.base/constvars.exp: ptype qux1
+PASS: gdb.base/constvars.exp: print lave
+PASS: gdb.base/constvars.exp: ptype lave
+PASS: gdb.base/constvars.exp: print lavish
+PASS: gdb.base/constvars.exp: ptype lavish
+PASS: gdb.base/constvars.exp: print lax
+PASS: gdb.base/constvars.exp: ptype lax
+PASS: gdb.base/constvars.exp: print lecherous
+PASS: gdb.base/constvars.exp: ptype lecherous
+PASS: gdb.base/constvars.exp: print lechery
+PASS: gdb.base/constvars.exp: ptype lechery
+PASS: gdb.base/constvars.exp: print lectern
+PASS: gdb.base/constvars.exp: ptype lectern
+PASS: gdb.base/constvars.exp: print leeway
+PASS: gdb.base/constvars.exp: ptype leeway
+PASS: gdb.base/constvars.exp: print legacy
+PASS: gdb.base/constvars.exp: ptype legacy
+PASS: gdb.base/constvars.exp: print laconic
+PASS: gdb.base/constvars.exp: ptype laconic
+PASS: gdb.base/constvars.exp: print laggard
+PASS: gdb.base/constvars.exp: ptype laggard
+PASS: gdb.base/constvars.exp: print lagoon
+PASS: gdb.base/constvars.exp: ptype lagoon
+PASS: gdb.base/constvars.exp: print laity
+PASS: gdb.base/constvars.exp: ptype laity
+PASS: gdb.base/constvars.exp: print lambent
+PASS: gdb.base/constvars.exp: ptype lambent
+PASS: gdb.base/constvars.exp: print laminated
+PASS: gdb.base/constvars.exp: ptype laminated
+PASS: gdb.base/constvars.exp: print lampoon
+PASS: gdb.base/constvars.exp: ptype lampoon
+PASS: gdb.base/constvars.exp: print languid
+PASS: gdb.base/constvars.exp: ptype languid
+PASS: gdb.base/constvars.exp: print *legend
+PASS: gdb.base/constvars.exp: ptype legend
+PASS: gdb.base/constvars.exp: print *legerdemain
+PASS: gdb.base/constvars.exp: ptype legerdemain
+PASS: gdb.base/constvars.exp: print *leniency
+PASS: gdb.base/constvars.exp: ptype leniency
+PASS: gdb.base/constvars.exp: print *leonine
+PASS: gdb.base/constvars.exp: ptype leonine
+PASS: gdb.base/constvars.exp: print *lesion
+PASS: gdb.base/constvars.exp: ptype lesion
+PASS: gdb.base/constvars.exp: print *lethal
+PASS: gdb.base/constvars.exp: ptype lethal
+PASS: gdb.base/constvars.exp: print *lethargic
+PASS: gdb.base/constvars.exp: ptype lethargic
+PASS: gdb.base/constvars.exp: print *levity
+PASS: gdb.base/constvars.exp: ptype levity
+PASS: gdb.base/constvars.exp: print *lewd
+PASS: gdb.base/constvars.exp: ptype lewd
+PASS: gdb.base/constvars.exp: print *lexicographer
+PASS: gdb.base/constvars.exp: ptype lexicographer
+PASS: gdb.base/constvars.exp: print *lexicon
+PASS: gdb.base/constvars.exp: ptype lexicon
+PASS: gdb.base/constvars.exp: print *liaison
+PASS: gdb.base/constvars.exp: ptype liaison
+PASS: gdb.base/constvars.exp: print *libation
+PASS: gdb.base/constvars.exp: ptype libation
+PASS: gdb.base/constvars.exp: print *libelous
+PASS: gdb.base/constvars.exp: ptype libelous
+PASS: gdb.base/constvars.exp: print *libertine
+PASS: gdb.base/constvars.exp: ptype libertine
+PASS: gdb.base/constvars.exp: print *libidinous
+PASS: gdb.base/constvars.exp: ptype libidinous
+PASS: gdb.base/constvars.exp: print *languish
+PASS: gdb.base/constvars.exp: ptype languish
+PASS: gdb.base/constvars.exp: print *languor
+PASS: gdb.base/constvars.exp: ptype languor
+PASS: gdb.base/constvars.exp: print *lank
+PASS: gdb.base/constvars.exp: ptype lank
+PASS: gdb.base/constvars.exp: print *lapidary
+PASS: gdb.base/constvars.exp: ptype lapidary
+PASS: gdb.base/constvars.exp: print *larceny
+PASS: gdb.base/constvars.exp: ptype larceny
+PASS: gdb.base/constvars.exp: print *largess
+PASS: gdb.base/constvars.exp: ptype largess
+PASS: gdb.base/constvars.exp: print *lascivious
+PASS: gdb.base/constvars.exp: ptype lascivious
+PASS: gdb.base/constvars.exp: print *lassitude
+PASS: gdb.base/constvars.exp: ptype lassitude
+PASS: gdb.base/constvars.exp: print *lamprey
+PASS: gdb.base/constvars.exp: ptype lamprey
+PASS: gdb.base/constvars.exp: print *lariat
+PASS: gdb.base/constvars.exp: ptype lariat
+PASS: gdb.base/constvars.exp: print *laudanum
+PASS: gdb.base/constvars.exp: ptype laudanum
+PASS: gdb.base/constvars.exp: print *lecithin
+PASS: gdb.base/constvars.exp: ptype lecithin
+PASS: gdb.base/constvars.exp: print *leviathan
+PASS: gdb.base/constvars.exp: ptype leviathan
+PASS: gdb.base/constvars.exp: print *libretto
+PASS: gdb.base/constvars.exp: ptype libretto
+PASS: gdb.base/constvars.exp: print *lissome
+PASS: gdb.base/constvars.exp: ptype lissome
+PASS: gdb.base/constvars.exp: print *locust
+PASS: gdb.base/constvars.exp: ptype locust
+PASS: gdb.base/constvars.exp: ptype logical
+PASS: gdb.base/constvars.exp: ptype lugged
+PASS: gdb.base/constvars.exp: ptype luck
+PASS: gdb.base/constvars.exp: ptype lunar
+PASS: gdb.base/constvars.exp: ptype lumen
+PASS: gdb.base/constvars.exp: ptype lurk
+PASS: gdb.base/constvars.exp: ptype lush
+PASS: gdb.base/constvars.exp: ptype lynx
+PASS: gdb.base/constvars.exp: ptype crass
+PASS: gdb.base/constvars.exp: ptype crisp
+Running ../../../master/gdb/testsuite/gdb.base/corefile.exp ...
+PASS: gdb.base/corefile.exp: args: -core=coremaker.core (with bad program name)
+PASS: gdb.base/corefile.exp: args: execfile -core=coremaker.core (with bad program name)
+PASS: gdb.base/corefile.exp: core-file command (with bad program name)
+PASS: gdb.base/corefile.exp: print coremaker_data
+PASS: gdb.base/corefile.exp: print coremaker_bss
+PASS: gdb.base/corefile.exp: print coremaker_ro
+PASS: gdb.base/corefile.exp: print func2::coremaker_local
+PASS: gdb.base/corefile.exp: backtrace in corefile.exp
+PASS: gdb.base/corefile.exp: up in corefile.exp
+PASS: gdb.base/corefile.exp: accessing original mmap data in core file
+PASS: gdb.base/corefile.exp: accessing mmapped data in core file
+PASS: gdb.base/corefile.exp: up in corefile.exp (reinit)
+PASS: gdb.base/corefile.exp: core
+PASS: gdb.base/corefile.exp: run: load core again
+PASS: gdb.base/corefile.exp: run: sanity check we see the core file
+PASS: gdb.base/corefile.exp: run: with core
+PASS: gdb.base/corefile.exp: run: core file is cleared
+PASS: gdb.base/corefile.exp: quit with a process
+PASS: gdb.base/corefile.exp: quit with processes: n
+PASS: gdb.base/corefile.exp: no question: load core
+PASS: gdb.base/corefile.exp: quit with a core file
+PASS: gdb.base/corefile.exp: attach: load core again
+PASS: gdb.base/corefile.exp: attach: sanity check we see the core file
+PASS: gdb.base/corefile.exp: attach: with core
+PASS: gdb.base/corefile.exp: attach: core file is cleared
+Running ../../../master/gdb/testsuite/gdb.base/cursal.exp ...
+PASS: gdb.base/cursal.exp: set listsize 1
+PASS: gdb.base/cursal.exp: list before run
+PASS: gdb.base/cursal.exp: list in main
+PASS: gdb.base/cursal.exp: list in func2
+PASS: gdb.base/cursal.exp: backtrace
+PASS: gdb.base/cursal.exp: list after backtrace
+PASS: gdb.base/cursal.exp: set listsize 3
+PASS: gdb.base/cursal.exp: list size 3
+Running ../../../master/gdb/testsuite/gdb.base/cvexpr.exp ...
+PASS: gdb.base/cvexpr.exp: set print sevenbit-strings
+PASS: gdb.base/cvexpr.exp: set print address off
+PASS: gdb.base/cvexpr.exp: set width 0
+PASS: gdb.base/cvexpr.exp: (const char)
+PASS: gdb.base/cvexpr.exp: (const signed char)
+PASS: gdb.base/cvexpr.exp: (const unsigned char)
+PASS: gdb.base/cvexpr.exp: (const short)
+PASS: gdb.base/cvexpr.exp: (const signed short)
+PASS: gdb.base/cvexpr.exp: (const unsigned short)
+PASS: gdb.base/cvexpr.exp: (const int)
+PASS: gdb.base/cvexpr.exp: (const signed int)
+PASS: gdb.base/cvexpr.exp: (const unsigned int)
+PASS: gdb.base/cvexpr.exp: (const long)
+PASS: gdb.base/cvexpr.exp: (const signed long)
+PASS: gdb.base/cvexpr.exp: (const unsigned long)
+PASS: gdb.base/cvexpr.exp: (const long long)
+PASS: gdb.base/cvexpr.exp: (const signed long long)
+PASS: gdb.base/cvexpr.exp: (const unsigned long long)
+PASS: gdb.base/cvexpr.exp: (const float)
+PASS: gdb.base/cvexpr.exp: (const double)
+PASS: gdb.base/cvexpr.exp: (volatile char)
+PASS: gdb.base/cvexpr.exp: (volatile signed char)
+PASS: gdb.base/cvexpr.exp: (volatile unsigned char)
+PASS: gdb.base/cvexpr.exp: (volatile short)
+PASS: gdb.base/cvexpr.exp: (volatile signed short)
+PASS: gdb.base/cvexpr.exp: (volatile unsigned short)
+PASS: gdb.base/cvexpr.exp: (volatile int)
+PASS: gdb.base/cvexpr.exp: (volatile signed int)
+PASS: gdb.base/cvexpr.exp: (volatile unsigned int)
+PASS: gdb.base/cvexpr.exp: (volatile long)
+PASS: gdb.base/cvexpr.exp: (volatile signed long)
+PASS: gdb.base/cvexpr.exp: (volatile unsigned long)
+PASS: gdb.base/cvexpr.exp: (volatile long long)
+PASS: gdb.base/cvexpr.exp: (volatile signed long long)
+PASS: gdb.base/cvexpr.exp: (volatile unsigned long long)
+PASS: gdb.base/cvexpr.exp: (volatile float)
+PASS: gdb.base/cvexpr.exp: (volatile double)
+PASS: gdb.base/cvexpr.exp: (const volatile int)
+PASS: gdb.base/cvexpr.exp: (volatile const int)
+PASS: gdb.base/cvexpr.exp: (const int volatile)
+PASS: gdb.base/cvexpr.exp: (volatile int const)
+PASS: gdb.base/cvexpr.exp: (int const volatile)
+PASS: gdb.base/cvexpr.exp: (int volatile const)
+PASS: gdb.base/cvexpr.exp: (const volatile int *)
+PASS: gdb.base/cvexpr.exp: (volatile const int *)
+PASS: gdb.base/cvexpr.exp: (const int volatile)
+PASS: gdb.base/cvexpr.exp: (volatile int const *)
+PASS: gdb.base/cvexpr.exp: (int const volatile *)
+PASS: gdb.base/cvexpr.exp: (int volatile const *)
+PASS: gdb.base/cvexpr.exp: (int * const volatile)
+PASS: gdb.base/cvexpr.exp: (int * volatile const)
+PASS: gdb.base/cvexpr.exp: (char const)
+PASS: gdb.base/cvexpr.exp: (signed char const)
+PASS: gdb.base/cvexpr.exp: (unsigned char const)
+PASS: gdb.base/cvexpr.exp: (short const)
+PASS: gdb.base/cvexpr.exp: (signed short const)
+PASS: gdb.base/cvexpr.exp: (unsigned short const)
+PASS: gdb.base/cvexpr.exp: (int const)
+PASS: gdb.base/cvexpr.exp: (signed int const)
+PASS: gdb.base/cvexpr.exp: (unsigned int const)
+PASS: gdb.base/cvexpr.exp: (long const)
+PASS: gdb.base/cvexpr.exp: (signed long const)
+PASS: gdb.base/cvexpr.exp: (unsigned long const)
+PASS: gdb.base/cvexpr.exp: (long long const)
+PASS: gdb.base/cvexpr.exp: (signed long long const)
+PASS: gdb.base/cvexpr.exp: (unsigned long long const)
+PASS: gdb.base/cvexpr.exp: (float const)
+PASS: gdb.base/cvexpr.exp: (double const)
+PASS: gdb.base/cvexpr.exp: (char volatile)
+PASS: gdb.base/cvexpr.exp: (signed char volatile)
+PASS: gdb.base/cvexpr.exp: (unsigned char volatile)
+PASS: gdb.base/cvexpr.exp: (short volatile)
+PASS: gdb.base/cvexpr.exp: (signed short volatile)
+PASS: gdb.base/cvexpr.exp: (unsigned short volatile)
+PASS: gdb.base/cvexpr.exp: (int volatile)
+PASS: gdb.base/cvexpr.exp: (signed int volatile)
+PASS: gdb.base/cvexpr.exp: (unsigned int volatile)
+PASS: gdb.base/cvexpr.exp: (long volatile)
+PASS: gdb.base/cvexpr.exp: (signed long volatile)
+PASS: gdb.base/cvexpr.exp: (unsigned long volatile)
+PASS: gdb.base/cvexpr.exp: (long long volatile)
+PASS: gdb.base/cvexpr.exp: (signed long long volatile)
+PASS: gdb.base/cvexpr.exp: (unsigned long long volatile)
+PASS: gdb.base/cvexpr.exp: (float volatile)
+PASS: gdb.base/cvexpr.exp: (double volatile)
+PASS: gdb.base/cvexpr.exp: (const enum misordered)
+PASS: gdb.base/cvexpr.exp: (enum misordered const)
+PASS: gdb.base/cvexpr.exp: (volatile enum misordered)
+PASS: gdb.base/cvexpr.exp: (enum misordered volatile)
+PASS: gdb.base/cvexpr.exp: (const int *)
+PASS: gdb.base/cvexpr.exp: (int const *)
+PASS: gdb.base/cvexpr.exp: (int * const)
+PASS: gdb.base/cvexpr.exp: (const int * const)
+PASS: gdb.base/cvexpr.exp: (int const * const)
+PASS: gdb.base/cvexpr.exp: (const int **)
+PASS: gdb.base/cvexpr.exp: (int const **)
+PASS: gdb.base/cvexpr.exp: (int ** const)
+PASS: gdb.base/cvexpr.exp: (const int * const *)
+PASS: gdb.base/cvexpr.exp: (int const * const *)
+PASS: gdb.base/cvexpr.exp: (const int * const * const)
+PASS: gdb.base/cvexpr.exp: (int const * const * const)
+PASS: gdb.base/cvexpr.exp: (const struct t_struct)
+PASS: gdb.base/cvexpr.exp: (const union t_union)
+PASS: gdb.base/cvexpr.exp: (struct t_struct const)
+PASS: gdb.base/cvexpr.exp: (union t_union const)
+PASS: gdb.base/cvexpr.exp: (const struct t_struct *)
+PASS: gdb.base/cvexpr.exp: (const union t_union *)
+PASS: gdb.base/cvexpr.exp: (struct t_struct const *)
+PASS: gdb.base/cvexpr.exp: (union t_union const *)
+PASS: gdb.base/cvexpr.exp: (struct t_struct * const)
+PASS: gdb.base/cvexpr.exp: (union t_union * const)
+PASS: gdb.base/cvexpr.exp: (const struct t_struct * const)
+PASS: gdb.base/cvexpr.exp: (const union t_union * const)
+PASS: gdb.base/cvexpr.exp: (struct t_struct const * const)
+PASS: gdb.base/cvexpr.exp: (union t_union const * const)
+Running ../../../master/gdb/testsuite/gdb.base/dbx.exp ...
+PASS: gdb.base/dbx.exp: stop in main
+PASS: gdb.base/dbx.exp: status
+PASS: gdb.base/dbx.exp: stop at average.c:43
+PASS: gdb.base/dbx.exp: stop in average.c:43
+PASS: gdb.base/dbx.exp: stop at main
+PASS: gdb.base/dbx.exp: running to main
+PASS: gdb.base/dbx.exp: assign first
+PASS: gdb.base/dbx.exp: print first
+PASS: gdb.base/dbx.exp: whereis my_list
+PASS: gdb.base/dbx.exp: file average.c:1
+PASS: gdb.base/dbx.exp: cont 1
+PASS: gdb.base/dbx.exp: step
+XFAIL: gdb.base/dbx.exp: func sum
+PASS: gdb.base/dbx.exp: stop in sum
+PASS: gdb.base/dbx.exp: cont 2
+XFAIL: gdb.base/dbx.exp: func print_average
+Running ../../../master/gdb/testsuite/gdb.base/default.exp ...
+PASS: gdb.base/default.exp: add-symbol-file
+PASS: gdb.base/default.exp: append
+PASS: gdb.base/default.exp: append binary
+PASS: gdb.base/default.exp: append memory
+PASS: gdb.base/default.exp: append value
+PASS: gdb.base/default.exp: append binary memory
+PASS: gdb.base/default.exp: append binary value
+PASS: gdb.base/default.exp: attach
+PASS: gdb.base/default.exp: break
+PASS: gdb.base/default.exp: break "b" abbreviation
+PASS: gdb.base/default.exp: break "br" abbreviation
+PASS: gdb.base/default.exp: break "bre" abbreviation
+PASS: gdb.base/default.exp: break "brea" abbreviation
+PASS: gdb.base/default.exp: backtrace
+PASS: gdb.base/default.exp: backtrace "bt" abbreviation
+PASS: gdb.base/default.exp: backtrace "ba" abbreviation
+PASS: gdb.base/default.exp: backtrace "bac" abbreviation
+PASS: gdb.base/default.exp: continue
+PASS: gdb.base/default.exp: continue "c" abbreviation
+PASS: gdb.base/default.exp: call
+PASS: gdb.base/default.exp: catch
+PASS: gdb.base/default.exp: cd
+PASS: gdb.base/default.exp: clear
+PASS: gdb.base/default.exp: commands
+PASS: gdb.base/default.exp: condition
+PASS: gdb.base/default.exp: core-file
+PASS: gdb.base/default.exp: delete "d" abbreviation
+PASS: gdb.base/default.exp: delete
+PASS: gdb.base/default.exp: define
+PASS: gdb.base/default.exp: delete breakpoints
+PASS: gdb.base/default.exp: delete display prompt
+PASS: gdb.base/default.exp: detach
+PASS: gdb.base/default.exp: directory prompt
+PASS: gdb.base/default.exp: disable "dis" abbreviation
+PASS: gdb.base/default.exp: disable "disa" abbreviation
+PASS: gdb.base/default.exp: disable
+PASS: gdb.base/default.exp: disable breakpoints
+PASS: gdb.base/default.exp: disable display
+PASS: gdb.base/default.exp: disassemble
+PASS: gdb.base/default.exp: display
+PASS: gdb.base/default.exp: do
+PASS: gdb.base/default.exp: document
+PASS: gdb.base/default.exp: down
+PASS: gdb.base/default.exp: down-silently
+PASS: gdb.base/default.exp: dump
+PASS: gdb.base/default.exp: dump binary
+PASS: gdb.base/default.exp: dump ihex
+PASS: gdb.base/default.exp: dump memory
+PASS: gdb.base/default.exp: dump srec
+PASS: gdb.base/default.exp: dump tekhex
+PASS: gdb.base/default.exp: dump value
+PASS: gdb.base/default.exp: dump binary memory
+PASS: gdb.base/default.exp: dump binary value
+PASS: gdb.base/default.exp: dump ihex memory
+PASS: gdb.base/default.exp: dump ihex value
+PASS: gdb.base/default.exp: dump srec memory
+PASS: gdb.base/default.exp: dump srec value
+PASS: gdb.base/default.exp: dump tekhex memory
+PASS: gdb.base/default.exp: dump tekhex value
+PASS: gdb.base/default.exp: echo
+PASS: gdb.base/default.exp: enable breakpoints delete
+PASS: gdb.base/default.exp: enable breakpoints once
+PASS: gdb.base/default.exp: enable breakpoints
+PASS: gdb.base/default.exp: enable delete
+PASS: gdb.base/default.exp: enable display
+PASS: gdb.base/default.exp: enable once
+PASS: gdb.base/default.exp: enable
+PASS: gdb.base/default.exp: exec-file
+PASS: gdb.base/default.exp: frame "f" abbreviation
+PASS: gdb.base/default.exp: frame
+PASS: gdb.base/default.exp: fg
+PASS: gdb.base/default.exp: file
+PASS: gdb.base/default.exp: finish
+PASS: gdb.base/default.exp: forward-search
+PASS: gdb.base/default.exp: gcore
+PASS: gdb.base/default.exp: generate-core-file
+PASS: gdb.base/default.exp: help "h" abbreviation
+PASS: gdb.base/default.exp: help
+PASS: gdb.base/default.exp: handle
+PASS: gdb.base/default.exp: info "i" abbreviation
+PASS: gdb.base/default.exp: info
+PASS: gdb.base/default.exp: ignore
+PASS: gdb.base/default.exp: info address
+PASS: gdb.base/default.exp: info all-registers
+PASS: gdb.base/default.exp: info args
+PASS: gdb.base/default.exp: info bogus-gdb-command
+PASS: gdb.base/default.exp: info breakpoints
+PASS: gdb.base/default.exp: info catch
+PASS: gdb.base/default.exp: info copying
+PASS: gdb.base/default.exp: info display
+PASS: gdb.base/default.exp: info frame "f" abbreviation
+PASS: gdb.base/default.exp: info frame
+PASS: gdb.base/default.exp: info files
+PASS: gdb.base/default.exp: info float
+PASS: gdb.base/default.exp: info functions
+PASS: gdb.base/default.exp: info locals
+PASS: gdb.base/default.exp: info program
+PASS: gdb.base/default.exp: info registers
+PASS: gdb.base/default.exp: info stack "s" abbreviation
+PASS: gdb.base/default.exp: info stack
+PASS: gdb.base/default.exp: info set
+PASS: gdb.base/default.exp: info symbol
+PASS: gdb.base/default.exp: info source
+PASS: gdb.base/default.exp: info sources
+PASS: gdb.base/default.exp: info target
+PASS: gdb.base/default.exp: info terminal
+PASS: gdb.base/default.exp: info threads
+PASS: gdb.base/default.exp: info types
+PASS: gdb.base/default.exp: info variables
+PASS: gdb.base/default.exp: info vector
+PASS: gdb.base/default.exp: info warranty
+PASS: gdb.base/default.exp: info watchpoints
+PASS: gdb.base/default.exp: inspect
+PASS: gdb.base/default.exp: jump
+PASS: gdb.base/default.exp: kill
+PASS: gdb.base/default.exp: list "l" abbreviation
+PASS: gdb.base/default.exp: list
+PASS: gdb.base/default.exp: load
+PASS: gdb.base/default.exp: next "n" abbreviation
+PASS: gdb.base/default.exp: next
+PASS: gdb.base/default.exp: nexti "ni" abbreviation
+PASS: gdb.base/default.exp: nexti
+PASS: gdb.base/default.exp: output
+PASS: gdb.base/default.exp: overlay
+PASS: gdb.base/default.exp: overlay on
+PASS: gdb.base/default.exp: overlay manual #1
+PASS: gdb.base/default.exp: overlay auto
+PASS: gdb.base/default.exp: overlay off
+PASS: gdb.base/default.exp: overlay list
+PASS: gdb.base/default.exp: overlay map #1
+PASS: gdb.base/default.exp: overlay unmap #1
+PASS: gdb.base/default.exp: overlay manual #2
+PASS: gdb.base/default.exp: overlay map #2
+PASS: gdb.base/default.exp: overlay unmap #2
+PASS: gdb.base/default.exp: print "p" abbreviation
+PASS: gdb.base/default.exp: print
+PASS: gdb.base/default.exp: printf
+PASS: gdb.base/default.exp: ptype
+PASS: gdb.base/default.exp: pwd
+PASS: gdb.base/default.exp: run "r" abbreviation
+PASS: gdb.base/default.exp: run
+PASS: gdb.base/default.exp: rbreak
+PASS: gdb.base/default.exp: restore
+PASS: gdb.base/default.exp: return
+PASS: gdb.base/default.exp: reverse-search
+PASS: gdb.base/default.exp: step "s" abbreviation #1
+PASS: gdb.base/default.exp: step #1
+PASS: gdb.base/default.exp: search
+PASS: gdb.base/default.exp: section
+PASS: gdb.base/default.exp: set annotate
+PASS: gdb.base/default.exp: set args
+PASS: gdb.base/default.exp: set check "c" abbreviation
+PASS: gdb.base/default.exp: set check "ch" abbreviation
+PASS: gdb.base/default.exp: set check
+PASS: gdb.base/default.exp: set check range
+PASS: gdb.base/default.exp: set check type
+PASS: gdb.base/default.exp: set complaints
+PASS: gdb.base/default.exp: set confirm
+PASS: gdb.base/default.exp: set environment
+PASS: gdb.base/default.exp: set height
+PASS: gdb.base/default.exp: set history expansion
+PASS: gdb.base/default.exp: set history filename
+PASS: gdb.base/default.exp: set history save
+PASS: gdb.base/default.exp: set history size
+PASS: gdb.base/default.exp: set history
+PASS: gdb.base/default.exp: set language
+PASS: gdb.base/default.exp: set listsize
+PASS: gdb.base/default.exp: set print "p" abbreviation
+PASS: gdb.base/default.exp: set print "pr" abbreviation
+PASS: gdb.base/default.exp: set print
+PASS: gdb.base/default.exp: set print address
+PASS: gdb.base/default.exp: set print array
+PASS: gdb.base/default.exp: set print asm-demangle
+PASS: gdb.base/default.exp: set print demangle
+PASS: gdb.base/default.exp: set print elements
+PASS: gdb.base/default.exp: set print object
+PASS: gdb.base/default.exp: set print pretty
+PASS: gdb.base/default.exp: set print sevenbit-strings
+PASS: gdb.base/default.exp: set print union
+PASS: gdb.base/default.exp: set print vtbl
+PASS: gdb.base/default.exp: set radix
+PASS: gdb.base/default.exp: set symbol-reloading
+PASS: gdb.base/default.exp: set variable
+PASS: gdb.base/default.exp: set verbose
+PASS: gdb.base/default.exp: set width
+PASS: gdb.base/default.exp: set write
+PASS: gdb.base/default.exp: set
+PASS: gdb.base/default.exp: shell echo Hi dad!
+PASS: gdb.base/default.exp: show annotate
+PASS: gdb.base/default.exp: show args
+PASS: gdb.base/default.exp: show check "c" abbreviation
+PASS: gdb.base/default.exp: show check "ch" abbreviation
+PASS: gdb.base/default.exp: show check
+PASS: gdb.base/default.exp: show check range
+PASS: gdb.base/default.exp: show check type
+PASS: gdb.base/default.exp: show commands
+PASS: gdb.base/default.exp: show complaints
+PASS: gdb.base/default.exp: show confirm
+PASS: gdb.base/default.exp: show convenience
+PASS: gdb.base/default.exp: show directories
+PASS: gdb.base/default.exp: show editing
+PASS: gdb.base/default.exp: show height
+PASS: gdb.base/default.exp: show history expansion
+PASS: gdb.base/default.exp: show history filename
+PASS: gdb.base/default.exp: show history save
+PASS: gdb.base/default.exp: show history size
+PASS: gdb.base/default.exp: show history
+PASS: gdb.base/default.exp: show language
+PASS: gdb.base/default.exp: show listsize
+PASS: gdb.base/default.exp: show p
+PASS: gdb.base/default.exp: show pr
+PASS: gdb.base/default.exp: show print
+PASS: gdb.base/default.exp: show paths
+PASS: gdb.base/default.exp: show print address
+PASS: gdb.base/default.exp: show print array
+PASS: gdb.base/default.exp: show print asm-demangle
+PASS: gdb.base/default.exp: show print demangle
+PASS: gdb.base/default.exp: show print elements
+PASS: gdb.base/default.exp: show print object
+PASS: gdb.base/default.exp: show print pretty
+PASS: gdb.base/default.exp: show print sevenbit-strings
+PASS: gdb.base/default.exp: show print union
+PASS: gdb.base/default.exp: show print vtbl
+PASS: gdb.base/default.exp: show prompt
+PASS: gdb.base/default.exp: show radix
+PASS: gdb.base/default.exp: show symbol-reloading
+PASS: gdb.base/default.exp: show user
+PASS: gdb.base/default.exp: show values
+PASS: gdb.base/default.exp: show verbose
+PASS: gdb.base/default.exp: show version
+PASS: gdb.base/default.exp: show width
+PASS: gdb.base/default.exp: show write
+PASS: gdb.base/default.exp: show
+PASS: gdb.base/default.exp: stepi "si" abbreviation
+PASS: gdb.base/default.exp: stepi
+PASS: gdb.base/default.exp: signal
+PASS: gdb.base/default.exp: source
+PASS: gdb.base/default.exp: step "s" abbreviation #2
+PASS: gdb.base/default.exp: step #2
+PASS: gdb.base/default.exp: symbol-file
+PASS: gdb.base/default.exp: target child
+PASS: gdb.base/default.exp: target procfs
+PASS: gdb.base/default.exp: target core
+PASS: gdb.base/default.exp: target exec
+PASS: gdb.base/default.exp: target remote
+PASS: gdb.base/default.exp: target
+PASS: gdb.base/default.exp: tbreak
+PASS: gdb.base/default.exp: thread
+PASS: gdb.base/default.exp: thread apply
+PASS: gdb.base/default.exp: thread find
+PASS: gdb.base/default.exp: thread name
+PASS: gdb.base/default.exp: tty
+PASS: gdb.base/default.exp: until "u" abbreviation
+PASS: gdb.base/default.exp: until
+PASS: gdb.base/default.exp: undisplay prompt
+PASS: gdb.base/default.exp: unset environment prompt
+PASS: gdb.base/default.exp: unset
+PASS: gdb.base/default.exp: up-silently
+PASS: gdb.base/default.exp: watch
+PASS: gdb.base/default.exp: whatis
+PASS: gdb.base/default.exp: where
+PASS: gdb.base/default.exp: x
+Running ../../../master/gdb/testsuite/gdb.base/define.exp ...
+PASS: gdb.base/define.exp: define user command: nextwhere
+PASS: gdb.base/define.exp: use user command: nextwhere
+PASS: gdb.base/define.exp: define user command: nextwh
+PASS: gdb.base/define.exp: redefine user command aborted: nextwhere
+PASS: gdb.base/define.exp: redefine user command: nextwhere
+PASS: gdb.base/define.exp: redocumenting builtin command disallowed
+PASS: gdb.base/define.exp: document user command: nextwhere
+PASS: gdb.base/define.exp: re-document user command: nextwhere
+PASS: gdb.base/define.exp: help user command: nextwhere
+PASS: gdb.base/define.exp: set up whitespace in help string
+PASS: gdb.base/define.exp: preserve whitespace in help string
+PASS: gdb.base/define.exp: define user command: ifnospace
+PASS: gdb.base/define.exp: test ifnospace is parsed correctly
+PASS: gdb.base/define.exp: define user command: whilenospace
+PASS: gdb.base/define.exp: test whilenospace is parsed correctly
+PASS: gdb.base/define.exp: define user command: user-bt
+PASS: gdb.base/define.exp: define hook-stop command
+PASS: gdb.base/define.exp: use hook-stop command
+PASS: gdb.base/define.exp: define hook undefined command aborted: bar
+PASS: gdb.base/define.exp: define hook undefined command: bar
+PASS: gdb.base/define.exp: define target testsuite
+PASS: gdb.base/define.exp: document target testsuite
+PASS: gdb.base/define.exp: help target
+PASS: gdb.base/define.exp: target testsuite
+PASS: gdb.base/define.exp: show user target testsuite
+PASS: gdb.base/define.exp: define target hook-testsuite
+PASS: gdb.base/define.exp: define target hookpost-testsuite
+PASS: gdb.base/define.exp: target testsuite with hooks
+PASS: gdb.base/define.exp: set gdb_prompt
+PASS: gdb.base/define.exp: reset gdb_prompt
+Running ../../../master/gdb/testsuite/gdb.base/del.exp ...
+PASS: gdb.base/del.exp: Remove all breakpoints (del)
+PASS: gdb.base/del.exp: info break after removing break on main
+PASS: gdb.base/del.exp: breakpoint insertion (del)
+PASS: gdb.base/del.exp: Remove last breakpoint (del)
+PASS: gdb.base/del.exp: info break after removing break on main (del)
+PASS: gdb.base/del.exp: Remove all breakpoints (d)
+PASS: gdb.base/del.exp: info break after removing break on main
+PASS: gdb.base/del.exp: breakpoint insertion (d)
+PASS: gdb.base/del.exp: Remove last breakpoint (d)
+PASS: gdb.base/del.exp: info break after removing break on main (d)
+Running ../../../master/gdb/testsuite/gdb.base/detach.exp ...
+PASS: gdb.base/detach.exp: set should_exit, one
+PASS: gdb.base/detach.exp: detach, one
+PASS: gdb.base/detach.exp: set should_exit, two
+PASS: gdb.base/detach.exp: detach, two
+Running ../../../master/gdb/testsuite/gdb.base/dfp-exprs.exp ...
+PASS: gdb.base/dfp-exprs.exp: p 1.2df
+PASS: gdb.base/dfp-exprs.exp: p -1.2df
+PASS: gdb.base/dfp-exprs.exp: p 1.234567df
+PASS: gdb.base/dfp-exprs.exp: p -1.234567df
+PASS: gdb.base/dfp-exprs.exp: p 1234567.df
+PASS: gdb.base/dfp-exprs.exp: p -1234567.df
+PASS: gdb.base/dfp-exprs.exp: p 1.2E1df
+PASS: gdb.base/dfp-exprs.exp: p 1.2E10df
+PASS: gdb.base/dfp-exprs.exp: p 1.2E-10df
+PASS: gdb.base/dfp-exprs.exp: p 1.2E96df
+PASS: gdb.base/dfp-exprs.exp: p 1.2dd
+PASS: gdb.base/dfp-exprs.exp: p -1.2dd
+PASS: gdb.base/dfp-exprs.exp: p 1.234567890123456dd
+PASS: gdb.base/dfp-exprs.exp: p -1.234567890123456dd
+PASS: gdb.base/dfp-exprs.exp: p 1234567890123456.dd
+PASS: gdb.base/dfp-exprs.exp: p -1234567890123456.dd
+PASS: gdb.base/dfp-exprs.exp: p 1.2E1dd
+PASS: gdb.base/dfp-exprs.exp: p 1.2E10dd
+PASS: gdb.base/dfp-exprs.exp: p 1.2E-10dd
+PASS: gdb.base/dfp-exprs.exp: p 1.2E384dd
+PASS: gdb.base/dfp-exprs.exp: p 1.2dl
+PASS: gdb.base/dfp-exprs.exp: p -1.2dl
+PASS: gdb.base/dfp-exprs.exp: p 1.234567890123456789012345678901234dl
+PASS: gdb.base/dfp-exprs.exp: p -1.234567890123456789012345678901234dl
+PASS: gdb.base/dfp-exprs.exp: p 1234567890123456789012345678901234.dl
+PASS: gdb.base/dfp-exprs.exp: p -1234567890123456789012345678901234.dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2E1dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2E10dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2E-10dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2E6144dl
+PASS: gdb.base/dfp-exprs.exp: p 1.4df + 1.2df
+PASS: gdb.base/dfp-exprs.exp: p 1.4df - 1.2df
+PASS: gdb.base/dfp-exprs.exp: p 1.4df * 1.2df
+PASS: gdb.base/dfp-exprs.exp: p 1.4df / 1.2df
+PASS: gdb.base/dfp-exprs.exp: p 1.4dd + 1.2dd
+PASS: gdb.base/dfp-exprs.exp: p 1.4dd - 1.2dd
+PASS: gdb.base/dfp-exprs.exp: p 1.4dd * 1.2dd
+PASS: gdb.base/dfp-exprs.exp: p 1.4dd / 1.2dd
+PASS: gdb.base/dfp-exprs.exp: p 1.4dl + 1.2dl
+PASS: gdb.base/dfp-exprs.exp: p 1.4dl - 1.2dl
+PASS: gdb.base/dfp-exprs.exp: p 1.4dl * 1.2dl
+PASS: gdb.base/dfp-exprs.exp: p 1.4dl / 1.2dl
+PASS: gdb.base/dfp-exprs.exp: ptype 2.df + 2.df
+PASS: gdb.base/dfp-exprs.exp: ptype 2.dd + 2.dd
+PASS: gdb.base/dfp-exprs.exp: ptype 2.dl + 2.dl
+PASS: gdb.base/dfp-exprs.exp: p 2.1df + 2.7dd
+PASS: gdb.base/dfp-exprs.exp: p 2.1dd + 2.7df
+PASS: gdb.base/dfp-exprs.exp: p 2.6df + 2.7dl
+PASS: gdb.base/dfp-exprs.exp: p 2.6dl + 2.7df
+PASS: gdb.base/dfp-exprs.exp: p 2.3dd + 2.2dl
+PASS: gdb.base/dfp-exprs.exp: p 2.3dl + 2.2dd
+PASS: gdb.base/dfp-exprs.exp: ptype 2.df + 2.dd
+PASS: gdb.base/dfp-exprs.exp: ptype 2.df + 2.dl
+PASS: gdb.base/dfp-exprs.exp: ptype 2.dd + 2.dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2df + 1
+PASS: gdb.base/dfp-exprs.exp: p 2 + 1.7dd
+PASS: gdb.base/dfp-exprs.exp: p 3 + 2.1dl
+PASS: gdb.base/dfp-exprs.exp: ptype 1.2df + 1
+PASS: gdb.base/dfp-exprs.exp: ptype 2 + 1.7dd
+PASS: gdb.base/dfp-exprs.exp: ptype 3 + 2.1dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2df + 2ll
+PASS: gdb.base/dfp-exprs.exp: p 1.2df + 1.2f
+PASS: gdb.base/dfp-exprs.exp: p !0.df
+PASS: gdb.base/dfp-exprs.exp: p !0.dd
+PASS: gdb.base/dfp-exprs.exp: p !0.dl
+PASS: gdb.base/dfp-exprs.exp: p !0.5df
+PASS: gdb.base/dfp-exprs.exp: p !0.5dd
+PASS: gdb.base/dfp-exprs.exp: p !0.5dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2df == 1.2df
+PASS: gdb.base/dfp-exprs.exp: p 1.2df == 1.2dd
+PASS: gdb.base/dfp-exprs.exp: p 1.2df == 1.2dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2dd == 1.2df
+PASS: gdb.base/dfp-exprs.exp: p 1.2dd == 1.2dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2dl == 1.2df
+PASS: gdb.base/dfp-exprs.exp: p 1.2dl == 1.2dd
+PASS: gdb.base/dfp-exprs.exp: p 1.2df == 1.3df
+PASS: gdb.base/dfp-exprs.exp: p 1.2df == 1.3dd
+PASS: gdb.base/dfp-exprs.exp: p 1.2df == 1.3dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2dd == 1.3df
+PASS: gdb.base/dfp-exprs.exp: p 1.2dd == 1.3dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2dl == 1.3df
+PASS: gdb.base/dfp-exprs.exp: p 1.2dl == 1.3dd
+PASS: gdb.base/dfp-exprs.exp: p +1.2df
+PASS: gdb.base/dfp-exprs.exp: p +1.2dd
+PASS: gdb.base/dfp-exprs.exp: p +1.2dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2df < 1.3df
+PASS: gdb.base/dfp-exprs.exp: p 1.2df < 1.3dd
+PASS: gdb.base/dfp-exprs.exp: p 1.2dl < 1.3df
+PASS: gdb.base/dfp-exprs.exp: p 1.2dd < 1.3dd
+PASS: gdb.base/dfp-exprs.exp: p 1.2dd < 1.3dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2dl < 1.3dl
+PASS: gdb.base/dfp-exprs.exp: p 1.2dl < 1.3df
+PASS: gdb.base/dfp-exprs.exp: p 1.2df > 1
+PASS: gdb.base/dfp-exprs.exp: p 1.2dl > 2
+PASS: gdb.base/dfp-exprs.exp: p 2 > 1.2dd
+PASS: gdb.base/dfp-exprs.exp: p 2 > 3.1dl
+PASS: gdb.base/dfp-exprs.exp: p (float) -0.1df
+PASS: gdb.base/dfp-exprs.exp: p (int) 8.3dd
+PASS: gdb.base/dfp-exprs.exp: p (_Decimal64) 3.1
+PASS: gdb.base/dfp-exprs.exp: p (_Decimal128) 3.7df
+PASS: gdb.base/dfp-exprs.exp: p (_Decimal32) 4
+Running ../../../master/gdb/testsuite/gdb.base/dfp-test.exp ...
+PASS: gdb.base/dfp-test.exp: get integer valueof "sizeof (long)" (4)
+PASS: gdb.base/dfp-test.exp: next after initializing d32
+PASS: gdb.base/dfp-test.exp: d32 is initialized to 1.2345
+PASS: gdb.base/dfp-test.exp: next after assigning builtin infinity to d32
+PASS: gdb.base/dfp-test.exp: d32 is positive Infinity
+PASS: gdb.base/dfp-test.exp: next after assigning negative builtin infinity to d32
+PASS: gdb.base/dfp-test.exp: d32 is negative Infinity
+PASS: gdb.base/dfp-test.exp: next after assigning builtin NaN to d32
+PASS: gdb.base/dfp-test.exp: d32 is NaN
+PASS: gdb.base/dfp-test.exp: p d32=123.45df
+PASS: gdb.base/dfp-test.exp: p d32=12345.df
+PASS: gdb.base/dfp-test.exp: p d32=12345.67df
+PASS: gdb.base/dfp-test.exp: p d32=1234567.df
+PASS: gdb.base/dfp-test.exp: p d32=1.234567E0df
+PASS: gdb.base/dfp-test.exp: p d32=1.234567E10df
+PASS: gdb.base/dfp-test.exp: p d32=1.234567E+96df
+PASS: gdb.base/dfp-test.exp: p d32=9.999999E96df
+PASS: gdb.base/dfp-test.exp: p d32=1.0E-95df
+PASS: gdb.base/dfp-test.exp: p d32=1.E-101df
+PASS: gdb.base/dfp-test.exp: p d32=0.000001E-95df
+PASS: gdb.base/dfp-test.exp: 1.2345678 is rounded to 1.234568
+PASS: gdb.base/dfp-test.exp: 1.0E-101 is rounded to 1E-101
+PASS: gdb.base/dfp-test.exp: 1.234567E+97 is Infinity
+PASS: gdb.base/dfp-test.exp: 12345. is a valid number
+PASS: gdb.base/dfp-test.exp: 12345 is an invalid number
+PASS: gdb.base/dfp-test.exp: 1.23E is an invalid number
+PASS: gdb.base/dfp-test.exp: 1.23E45A is an invalid number
+PASS: gdb.base/dfp-test.exp: next after initializing d64
+PASS: gdb.base/dfp-test.exp: d64 is initialized to 1.2345
+PASS: gdb.base/dfp-test.exp: next after assigning builtin infinity to d64
+PASS: gdb.base/dfp-test.exp: d64 is positive Infinity
+PASS: gdb.base/dfp-test.exp: next after assigning negative builtin infinity to d64
+PASS: gdb.base/dfp-test.exp: d64 is negative Infinity
+PASS: gdb.base/dfp-test.exp: next after assigning builtin NaN to d64
+PASS: gdb.base/dfp-test.exp: d64 is NaN
+PASS: gdb.base/dfp-test.exp: p d64=123.45dd
+PASS: gdb.base/dfp-test.exp: p d64=12345.dd
+PASS: gdb.base/dfp-test.exp: p d64=12345.67dd
+PASS: gdb.base/dfp-test.exp: p d64=1.234567890123456dd
+PASS: gdb.base/dfp-test.exp: p d64=1.234567890123456E10dd
+PASS: gdb.base/dfp-test.exp: p d64=1.234567890123456E100dd
+PASS: gdb.base/dfp-test.exp: p d64=1.234567890123456E384dd
+PASS: gdb.base/dfp-test.exp: p d64=9.999999999999999E384dd
+PASS: gdb.base/dfp-test.exp: p d64=1.E-383dd
+PASS: gdb.base/dfp-test.exp: p d64=1.E-398dd
+PASS: gdb.base/dfp-test.exp: p d64=0.000000000000001E-383dd
+PASS: gdb.base/dfp-test.exp: 1.2345678901234567 is rounded to 1.234567890123457
+PASS: gdb.base/dfp-test.exp: d64=9.9999999999999999E384 is Infinity
+PASS: gdb.base/dfp-test.exp: d64=1.234567890123456E385 is Infinity
+PASS: gdb.base/dfp-test.exp: 12345dd is an invalid number
+PASS: gdb.base/dfp-test.exp: 1.23E is an invalid number
+PASS: gdb.base/dfp-test.exp: 1.23E45A is an invalid number
+PASS: gdb.base/dfp-test.exp: next after initializing d128
+PASS: gdb.base/dfp-test.exp: d128 is initialized to 1.2345
+PASS: gdb.base/dfp-test.exp: p d128=123.45dl
+PASS: gdb.base/dfp-test.exp: p d128=12345.dl
+PASS: gdb.base/dfp-test.exp: p d128=12345.67dl
+PASS: gdb.base/dfp-test.exp: p d128=1.234567890123456789012345678901234dl
+PASS: gdb.base/dfp-test.exp: p d128=1.234567890123456E10dl
+PASS: gdb.base/dfp-test.exp: p d128=1.234567890123456E100dl
+PASS: gdb.base/dfp-test.exp: p d128=1.234567890123456E1000dl
+PASS: gdb.base/dfp-test.exp: p d128=9.999999999999999999999999999999999E6144dl
+PASS: gdb.base/dfp-test.exp: p d128=1.E-6143dl
+PASS: gdb.base/dfp-test.exp: p d128=1.E-6176dl
+PASS: gdb.base/dfp-test.exp: p d128=0.000000000000000000000000000000001E-6143dl
+PASS: gdb.base/dfp-test.exp: 1.2345678901234567890123456789012345 is rounded to 1.234567890123456789012345678901234
+PASS: gdb.base/dfp-test.exp: d128=1.234567890123456E6145 is Infinity
+PASS: gdb.base/dfp-test.exp: 12345dl is an invalid number
+PASS: gdb.base/dfp-test.exp: 1.23E is an invalid number
+PASS: gdb.base/dfp-test.exp: 1.23E45A is an invalid number
+PASS: gdb.base/dfp-test.exp: next after assigning builtin infinity to d128
+PASS: gdb.base/dfp-test.exp: d128 is positive Infinity
+PASS: gdb.base/dfp-test.exp: next after assigning negative builtin infinity to d128
+PASS: gdb.base/dfp-test.exp: d128 is negative Infinity
+PASS: gdb.base/dfp-test.exp: next after assigning builtin NaN to d128
+PASS: gdb.base/dfp-test.exp: d128 is NaN
+PASS: gdb.base/dfp-test.exp: continue to breakpoint: entry to arg0_32
+PASS: gdb.base/dfp-test.exp: backtrace at arg0_32
+PASS: gdb.base/dfp-test.exp: continue to breakpoint: entry to arg0_64
+PASS: gdb.base/dfp-test.exp: backtrace at arg0_64
+PASS: gdb.base/dfp-test.exp: continue to breakpoint: entry to arg0_128
+PASS: gdb.base/dfp-test.exp: backtrace at arg0_128
+PASS: gdb.base/dfp-test.exp: Call function with correct _Decimal32 arguments.
+PASS: gdb.base/dfp-test.exp: Backtrace function with correct _Decimal32 arguments.
+PASS: gdb.base/dfp-test.exp: Correct _Decimal32 return value from called function.
+PASS: gdb.base/dfp-test.exp: Call function with correct _Decimal64 arguments.
+PASS: gdb.base/dfp-test.exp: Backtrace function with correct _Decimal64 arguments.
+PASS: gdb.base/dfp-test.exp: Correct _Decimal64 return value from called function.
+PASS: gdb.base/dfp-test.exp: Call function with correct _Decimal128 arguments.
+PASS: gdb.base/dfp-test.exp: Backtrace function with correct _Decimal128 arguments.
+PASS: gdb.base/dfp-test.exp: Correct _Decimal128 return value from called function.
+PASS: gdb.base/dfp-test.exp: Call function with mixed decimal float arguments TEST.
+PASS: gdb.base/dfp-test.exp: Call function with mixed decimal float arguments.
+PASS: gdb.base/dfp-test.exp: Call function with many _Decimal32 arguments.
+PASS: gdb.base/dfp-test.exp: Call function with many _Decimal64 arguments.
+PASS: gdb.base/dfp-test.exp: Call function with many _Decimal128 arguments.
+PASS: gdb.base/dfp-test.exp: Call function with many mixed decimal float arguments.
+PASS: gdb.base/dfp-test.exp: continue to breakpoint: Setting a decimal struct
+PASS: gdb.base/dfp-test.exp: print ds.dec32
+PASS: gdb.base/dfp-test.exp: print ds.dec64
+PASS: gdb.base/dfp-test.exp: print ds.dec128
+PASS: gdb.base/dfp-test.exp: print d32 + ds.dec32
+PASS: gdb.base/dfp-test.exp: print d64 + ds.dec64
+PASS: gdb.base/dfp-test.exp: print d128 + ds.dec128
+PASS: gdb.base/dfp-test.exp: ptype d64 + ds.dec32
+PASS: gdb.base/dfp-test.exp: ptype d128 + ds.dec32
+PASS: gdb.base/dfp-test.exp: ptype d128 + ds.dec64
+PASS: gdb.base/dfp-test.exp: p d32 + 1
+PASS: gdb.base/dfp-test.exp: p 2 + d64
+PASS: gdb.base/dfp-test.exp: p ds.int4 + d128
+PASS: gdb.base/dfp-test.exp: ptype d32 + 1
+PASS: gdb.base/dfp-test.exp: ptype ds.int4 + d128
+PASS: gdb.base/dfp-test.exp: p !d32
+PASS: gdb.base/dfp-test.exp: p !d64
+PASS: gdb.base/dfp-test.exp: p !d128
+PASS: gdb.base/dfp-test.exp: p +d32
+PASS: gdb.base/dfp-test.exp: p +d64
+PASS: gdb.base/dfp-test.exp: p +d128
+PASS: gdb.base/dfp-test.exp: p d64 == d128
+PASS: gdb.base/dfp-test.exp: p d128 == ds.dec32
+PASS: gdb.base/dfp-test.exp: p d128 == d32
+PASS: gdb.base/dfp-test.exp: p ds.dec32 == ds.dec64
+PASS: gdb.base/dfp-test.exp: p d32 < ds.dec32
+PASS: gdb.base/dfp-test.exp: p d64 < ds.dec64
+PASS: gdb.base/dfp-test.exp: p d128 < ds.dec128
+PASS: gdb.base/dfp-test.exp: p ds.dec32 < d32
+PASS: gdb.base/dfp-test.exp: p d64 > ds.dec64
+PASS: gdb.base/dfp-test.exp: p ds.dec128 > d128
+PASS: gdb.base/dfp-test.exp: p d32 < ds.int4
+PASS: gdb.base/dfp-test.exp: p ds.int4 > d32
+PASS: gdb.base/dfp-test.exp: p ds.dec32 < ds.int4
+PASS: gdb.base/dfp-test.exp: p ds.int4 > ds.dec64
+PASS: gdb.base/dfp-test.exp: p ds.dec128 > ds.int4
+PASS: gdb.base/dfp-test.exp: p d64 + ds.float4
+PASS: gdb.base/dfp-test.exp: p ds.double8 + d128
+PASS: gdb.base/dfp-test.exp: print ds.dec32=d32
+PASS: gdb.base/dfp-test.exp: print ds.dec64=d64
+PASS: gdb.base/dfp-test.exp: print ds.dec128=d128
+PASS: gdb.base/dfp-test.exp: print ds.dec32 = -d32
+PASS: gdb.base/dfp-test.exp: print ds.dec64 = -d64
+PASS: gdb.base/dfp-test.exp: print ds.dec128 = -d128
+PASS: gdb.base/dfp-test.exp: print ds.double8 = ds.dec64
+PASS: gdb.base/dfp-test.exp: print ds.dec64 = ds.float4
+PASS: gdb.base/dfp-test.exp: print ds.dec128 = -ds.double8
+PASS: gdb.base/dfp-test.exp: print ds.dec128 = ds.dec32
+PASS: gdb.base/dfp-test.exp: print ds.dec32 = ds.int4
+PASS: gdb.base/dfp-test.exp: print ds.int4 = 7.3dl
+Running ../../../master/gdb/testsuite/gdb.base/disasm-end-cu.exp ...
+PASS: gdb.base/disasm-end-cu.exp: get hexadecimal valueof "&main"
+PASS: gdb.base/disasm-end-cu.exp: get hexadecimal valueof "&dummy_3"
+PASS: gdb.base/disasm-end-cu.exp: disassemble command returned some output
+Running ../../../master/gdb/testsuite/gdb.base/display.exp ...
+PASS: gdb.base/display.exp: kill
+PASS: gdb.base/display.exp: detach
+PASS: gdb.base/display.exp: run
+PASS: gdb.base/display.exp: kill again
+PASS: gdb.base/display.exp: detach again
+PASS: gdb.base/display.exp: break do_loops
+PASS: gdb.base/display.exp: get to do_loops
+PASS: gdb.base/display.exp: set watch
+PASS: gdb.base/display.exp: break loop end
+PASS: gdb.base/display.exp: inf disp
+PASS: gdb.base/display.exp: display i
+PASS: gdb.base/display.exp: display j
+PASS: gdb.base/display.exp: display &k
+PASS: gdb.base/display.exp: display/f f
+PASS: gdb.base/display.exp: display/s &sum
+PASS: gdb.base/display.exp: first disp
+PASS: gdb.base/display.exp: second disp
+PASS: gdb.base/display.exp: catch err
+PASS: gdb.base/display.exp: disab disp 1
+PASS: gdb.base/display.exp: disab disp 2
+PASS: gdb.base/display.exp: re-enab
+PASS: gdb.base/display.exp: re-enab of enab
+PASS: gdb.base/display.exp: undisp
+PASS: gdb.base/display.exp: info disp
+PASS: gdb.base/display.exp: next hit
+PASS: gdb.base/display.exp: undisp all
+PASS: gdb.base/display.exp: disab 3
+PASS: gdb.base/display.exp: watch off
+PASS: gdb.base/display.exp: finish
+PASS: gdb.base/display.exp: step
+PASS: gdb.base/display.exp: tbreak in do_vars
+PASS: gdb.base/display.exp: cont
+PASS: gdb.base/display.exp: printf
+PASS: gdb.base/display.exp: printf %d
+PASS: gdb.base/display.exp: printf "%d
+PASS: gdb.base/display.exp: printf "%d%d",i
+PASS: gdb.base/display.exp: printf "\\!\a\f\r\t\v\b\n"
+PASS: gdb.base/display.exp: re-set term
+PASS: gdb.base/display.exp: printf "\w"
+PASS: gdb.base/display.exp: printf "%d" j
+PASS: gdb.base/display.exp: printf "%p\n", 0
+PASS: gdb.base/display.exp: printf "%p\n", 1
+PASS: gdb.base/display.exp: print/z j
+PASS: gdb.base/display.exp: debug test output 1
+PASS: gdb.base/display.exp: debug test output 1a
+PASS: gdb.base/display.exp: debug test output 2
+PASS: gdb.base/display.exp: debug test output 2a
+PASS: gdb.base/display.exp: debug test output 3
+PASS: gdb.base/display.exp: x/0 j
+PASS: gdb.base/display.exp: print/0 j
+PASS: gdb.base/display.exp: ignored s
+PASS: gdb.base/display.exp: no i
+PASS: gdb.base/display.exp: print/a &sum
+PASS: gdb.base/display.exp: print/a main+4
+PASS: gdb.base/display.exp: print/a $pc
+PASS: gdb.base/display.exp: print/a &&j
+Running ../../../master/gdb/testsuite/gdb.base/dump.exp ...
+PASS: gdb.base/dump.exp: inaccessible memory is reported
+PASS: gdb.base/dump.exp: endianness: little
+PASS: gdb.base/dump.exp: dump array as value, default
+PASS: gdb.base/dump.exp: dump struct as value, default
+PASS: gdb.base/dump.exp: dump array as value, binary
+PASS: gdb.base/dump.exp: dump struct as value, binary
+PASS: gdb.base/dump.exp: dump array as value, srec
+PASS: gdb.base/dump.exp: dump struct as value, srec
+PASS: gdb.base/dump.exp: dump array as value, intel hex
+PASS: gdb.base/dump.exp: dump struct as value, intel hex
+PASS: gdb.base/dump.exp: dump array as value, tekhex
+PASS: gdb.base/dump.exp: dump struct as value, tekhex
+PASS: gdb.base/dump.exp: capture /x &intarray[0]
+PASS: gdb.base/dump.exp: capture /x &intarray[32]
+PASS: gdb.base/dump.exp: capture /x &intstruct
+PASS: gdb.base/dump.exp: capture /x &intstruct + 1
+PASS: gdb.base/dump.exp: capture intarray
+PASS: gdb.base/dump.exp: capture intstruct
+PASS: gdb.base/dump.exp: capture type of pointer &intarray
+PASS: gdb.base/dump.exp: capture type of pointer &intstruct
+PASS: gdb.base/dump.exp: dump array as memory, default
+PASS: gdb.base/dump.exp: dump struct as memory, default
+PASS: gdb.base/dump.exp: dump array as memory, binary
+PASS: gdb.base/dump.exp: dump struct as memory, binary
+PASS: gdb.base/dump.exp: dump array as memory, srec
+PASS: gdb.base/dump.exp: dump struct as memory, srec
+PASS: gdb.base/dump.exp: dump array as memory, ihex
+PASS: gdb.base/dump.exp: dump struct as memory, ihex
+PASS: gdb.base/dump.exp: dump array as memory, tekhex
+PASS: gdb.base/dump.exp: dump struct as memory, tekhex
+PASS: gdb.base/dump.exp: dump array as mem, srec, expressions
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array as value, srec; file restored ok
+PASS: gdb.base/dump.exp: array as value, srec; capture intarray
+PASS: gdb.base/dump.exp: array as value, srec; value restored ok
+PASS: gdb.base/dump.exp: struct as value, srec; file restored ok
+PASS: gdb.base/dump.exp: struct as value, srec; capture intstruct
+PASS: gdb.base/dump.exp: struct as value, srec; value restored ok
+PASS: gdb.base/dump.exp: zero all
+PASS: gdb.base/dump.exp: array as memory, srec; file restored ok
+PASS: gdb.base/dump.exp: array as memory, srec; capture intarray
+PASS: gdb.base/dump.exp: array as memory, srec; value restored ok
+PASS: gdb.base/dump.exp: struct as memory, srec; file restored ok
+PASS: gdb.base/dump.exp: struct as memory, srec; capture intstruct
+PASS: gdb.base/dump.exp: struct as memory, srec; value restored ok
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array as value, ihex; file restored ok
+PASS: gdb.base/dump.exp: array as value, ihex; capture intarray
+PASS: gdb.base/dump.exp: array as value, ihex; value restored ok
+PASS: gdb.base/dump.exp: struct as value, ihex; file restored ok
+PASS: gdb.base/dump.exp: struct as value, ihex; capture intstruct
+PASS: gdb.base/dump.exp: struct as value, ihex; value restored ok
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array as memory, ihex; file restored ok
+PASS: gdb.base/dump.exp: array as memory, ihex; capture intarray
+PASS: gdb.base/dump.exp: array as memory, ihex; value restored ok
+PASS: gdb.base/dump.exp: struct as memory, ihex; file restored ok
+PASS: gdb.base/dump.exp: struct as memory, ihex; capture intstruct
+PASS: gdb.base/dump.exp: struct as memory, ihex; value restored ok
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array as value, tekhex; file restored ok
+PASS: gdb.base/dump.exp: array as value, tekhex; capture intarray
+PASS: gdb.base/dump.exp: array as value, tekhex; value restored ok
+PASS: gdb.base/dump.exp: struct as value, tekhex; file restored ok
+PASS: gdb.base/dump.exp: struct as value, tekhex; capture intstruct
+PASS: gdb.base/dump.exp: struct as value, tekhex; value restored ok
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array as memory, tekhex; file restored ok
+PASS: gdb.base/dump.exp: array as memory, tekhex; capture intarray
+PASS: gdb.base/dump.exp: array as memory, tekhex; value restored ok
+PASS: gdb.base/dump.exp: struct as memory, tekhex; file restored ok
+PASS: gdb.base/dump.exp: struct as memory, tekhex; capture intstruct
+PASS: gdb.base/dump.exp: struct as memory, tekhex; value restored ok
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array as value, binary; file restored ok
+PASS: gdb.base/dump.exp: array as value, binary; capture intarray
+PASS: gdb.base/dump.exp: array as value, binary; value restored ok
+PASS: gdb.base/dump.exp: struct as value, binary; file restored ok
+PASS: gdb.base/dump.exp: struct as value, binary; capture intstruct
+PASS: gdb.base/dump.exp: struct as value, binary; value restored ok
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array as memory, binary; file restored ok
+PASS: gdb.base/dump.exp: array as memory, binary; capture intarray
+PASS: gdb.base/dump.exp: array as memory, binary; value restored ok
+PASS: gdb.base/dump.exp: struct as memory, binary; file restored ok
+PASS: gdb.base/dump.exp: struct as memory, binary; capture intstruct
+PASS: gdb.base/dump.exp: struct as memory, binary; value restored ok
+PASS: gdb.base/dump.exp: capture /x &intarray2[0]
+PASS: gdb.base/dump.exp: capture /x &intstruct2
+PASS: gdb.base/dump.exp: capture (char *) &intarray2 - (char *) &intarray
+PASS: gdb.base/dump.exp: capture (char *) &intstruct2 - (char *) &intstruct
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array copy, srec; file restored ok
+PASS: gdb.base/dump.exp: array copy, srec; capture intarray2
+PASS: gdb.base/dump.exp: array copy, srec; value restored ok
+PASS: gdb.base/dump.exp: struct copy, srec; file restored ok
+PASS: gdb.base/dump.exp: struct copy, srec; capture intstruct2
+PASS: gdb.base/dump.exp: struct copy, srec; value restored ok
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array copy, ihex; file restored ok
+PASS: gdb.base/dump.exp: array copy, ihex; capture intarray2
+PASS: gdb.base/dump.exp: array copy, ihex; value restored ok
+PASS: gdb.base/dump.exp: struct copy, ihex; file restored ok
+PASS: gdb.base/dump.exp: struct copy, ihex; capture intstruct2
+PASS: gdb.base/dump.exp: struct copy, ihex; value restored ok
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array copy, tekhex; file restored ok
+PASS: gdb.base/dump.exp: array copy, tekhex; capture intarray2
+PASS: gdb.base/dump.exp: array copy, tekhex; value restored ok
+PASS: gdb.base/dump.exp: struct copy, tekhex; file restored ok
+PASS: gdb.base/dump.exp: struct copy, tekhex; capture intstruct2
+PASS: gdb.base/dump.exp: struct copy, tekhex; value restored ok
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array copy, binary; file restored ok
+PASS: gdb.base/dump.exp: array copy, binary; capture intarray2
+PASS: gdb.base/dump.exp: array copy, binary; value restored ok
+PASS: gdb.base/dump.exp: struct copy, binary; file restored ok
+PASS: gdb.base/dump.exp: struct copy, binary; capture intstruct2
+PASS: gdb.base/dump.exp: struct copy, binary; value restored ok
+PASS: gdb.base/dump.exp: capture /x &intarray[3]
+PASS: gdb.base/dump.exp: capture /x &intarray[4]
+PASS: gdb.base/dump.exp: capture /x (char *) &intarray[3] - (char *) &intarray[0]
+PASS: gdb.base/dump.exp: capture /x (char *) &intarray[4] - (char *) &intarray[0]
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array partial, srec; file restored ok
+PASS: gdb.base/dump.exp: array partial, srec; capture intarray[3]
+PASS: gdb.base/dump.exp: array partial, srec; value restored ok
+PASS: gdb.base/dump.exp: element 2 not changed - 1
+PASS: gdb.base/dump.exp: element 4 not changed - 1
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array partial, ihex; file restored ok
+PASS: gdb.base/dump.exp: array partial, ihex; capture intarray[3]
+PASS: gdb.base/dump.exp: array partial, ihex; value restored ok
+PASS: gdb.base/dump.exp: element 2 not changed - 2
+PASS: gdb.base/dump.exp: element 4 not changed - 2
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array partial, tekhex; file restored ok
+PASS: gdb.base/dump.exp: array partial, tekhex; capture intarray[3]
+PASS: gdb.base/dump.exp: array partial, tekhex; value restored ok
+PASS: gdb.base/dump.exp: element 2 not changed - 3
+PASS: gdb.base/dump.exp: element 4 not changed - 3
+PASS: gdb.base/dump.exp: print zero_all ()
+PASS: gdb.base/dump.exp: array partial, binary; file restored ok
+PASS: gdb.base/dump.exp: array partial, binary; capture intarray[3]
+PASS: gdb.base/dump.exp: array partial, binary; value restored ok
+PASS: gdb.base/dump.exp: element 2 not changed - 4
+PASS: gdb.base/dump.exp: element 4 not changed - 4
+PASS: gdb.base/dump.exp: array partial with expressions; file restored ok
+PASS: gdb.base/dump.exp: array partial with expressions; capture intarray2[3]
+PASS: gdb.base/dump.exp: array partial with expressions; value restored ok
+PASS: gdb.base/dump.exp: element 2 not changed, == 4
+PASS: gdb.base/dump.exp: element 4 not changed, == 4
+PASS: gdb.base/dump.exp: setting little endianness
+PASS: gdb.base/dump.exp: file binfile; capture intarray
+PASS: gdb.base/dump.exp: start with intarray un-initialized
+PASS: gdb.base/dump.exp: file binfile; capture intstruct
+PASS: gdb.base/dump.exp: start with intstruct un-initialized
+PASS: gdb.base/dump.exp: reload array as value, srec; capture * (int (*)[32]) 0x80497a0
+PASS: gdb.base/dump.exp: reload array as value, srec; value restored ok
+PASS: gdb.base/dump.exp: reload struct as value, srec; capture * (struct teststruct *) 0x8049780
+PASS: gdb.base/dump.exp: reload struct as value, srec; value restored ok
+PASS: gdb.base/dump.exp: reload array as memory, srec; capture * (int (*)[32]) 0x80497a0
+PASS: gdb.base/dump.exp: reload array as memory, srec; value restored ok
+PASS: gdb.base/dump.exp: reload struct as memory, srec; capture * (struct teststruct *) 0x8049780
+PASS: gdb.base/dump.exp: reload struct as memory, srec; value restored ok
+PASS: gdb.base/dump.exp: reload array as value, intel hex; capture * (int (*)[32]) 0x80497a0
+PASS: gdb.base/dump.exp: reload array as value, intel hex; value restored ok
+PASS: gdb.base/dump.exp: reload struct as value, intel hex; capture * (struct teststruct *) 0x8049780
+PASS: gdb.base/dump.exp: reload struct as value, intel hex; value restored ok
+PASS: gdb.base/dump.exp: reload array as memory, intel hex; capture * (int (*)[32]) 0x80497a0
+PASS: gdb.base/dump.exp: reload array as memory, intel hex; value restored ok
+PASS: gdb.base/dump.exp: reload struct as memory, intel hex; capture * (struct teststruct *) 0x8049780
+PASS: gdb.base/dump.exp: reload struct as memory, intel hex; value restored ok
+PASS: gdb.base/dump.exp: reload array as value, tekhex; capture * (int (*)[32]) 0x80497a0
+PASS: gdb.base/dump.exp: reload array as value, tekhex; value restored ok
+PASS: gdb.base/dump.exp: reload struct as value, tekhex; capture * (struct teststruct *) 0x8049780
+PASS: gdb.base/dump.exp: reload struct as value, tekhex; value restored ok
+PASS: gdb.base/dump.exp: reload array as memory, tekhex; capture * (int (*)[32]) 0x80497a0
+PASS: gdb.base/dump.exp: reload array as memory, tekhex; value restored ok
+PASS: gdb.base/dump.exp: reload struct as memory, tekhex; capture * (struct teststruct *) 0x8049780
+PASS: gdb.base/dump.exp: reload struct as memory, tekhex; value restored ok
+Running ../../../master/gdb/testsuite/gdb.base/dup-sect.exp ...
+PASS: gdb.base/dup-sect.exp: rename section
+PASS: gdb.base/dup-sect.exp: split
+PASS: gdb.base/dup-sect.exp: strip
+PASS: gdb.base/dup-sect.exp: var1 after strip
+PASS: gdb.base/dup-sect.exp: var2 after strip
+Running ../../../master/gdb/testsuite/gdb.base/echo.exp ...
+PASS: gdb.base/echo.exp: Echo test
+Running ../../../master/gdb/testsuite/gdb.base/ena-dis-br.exp ...
+PASS: gdb.base/ena-dis-br.exp: break marker1
+PASS: gdb.base/ena-dis-br.exp: enable break marker1
+PASS: gdb.base/ena-dis-br.exp: info break marker1
+PASS: gdb.base/ena-dis-br.exp: continue to break marker1
+PASS: gdb.base/ena-dis-br.exp: delete break marker1
+PASS: gdb.base/ena-dis-br.exp: break marker2
+PASS: gdb.base/ena-dis-br.exp: enable once break marker2
+PASS: gdb.base/ena-dis-br.exp: info auto-disabled break marker2
+PASS: gdb.base/ena-dis-br.exp: continue to auto-disabled break marker2
+PASS: gdb.base/ena-dis-br.exp: info auto-disabled break marker2
+PASS: gdb.base/ena-dis-br.exp: continue until exit at no stop
+PASS: gdb.base/ena-dis-br.exp: rerun to main
+PASS: gdb.base/ena-dis-br.exp: continue until exit at no stop at auto-disabled break marker2
+PASS: gdb.base/ena-dis-br.exp: break marker3
+PASS: gdb.base/ena-dis-br.exp: enable del break marker3
+PASS: gdb.base/ena-dis-br.exp: info auto-deleted break marker2
+PASS: gdb.base/ena-dis-br.exp: continue to auto-deleted break marker3
+PASS: gdb.base/ena-dis-br.exp: info auto-deleted break marker3
+PASS: gdb.base/ena-dis-br.exp: break marker4
+PASS: gdb.base/ena-dis-br.exp: disable break marker4
+PASS: gdb.base/ena-dis-br.exp: info break marker4
+PASS: gdb.base/ena-dis-br.exp: break marker1
+PASS: gdb.base/ena-dis-br.exp: ignore non-existent break
+PASS: gdb.base/ena-dis-br.exp: ignore break with missing ignore count
+PASS: gdb.base/ena-dis-br.exp: ignore break marker1 -1
+PASS: gdb.base/ena-dis-br.exp: ignore break marker1 0
+PASS: gdb.base/ena-dis-br.exp: ignore break marker1
+PASS: gdb.base/ena-dis-br.exp: info ignored break marker1
+PASS: gdb.base/ena-dis-br.exp: continue until exit at no stop at ignored break marker1
+PASS: gdb.base/ena-dis-br.exp: rerun to main
+PASS: gdb.base/ena-dis-br.exp: continue to break marker1, 2nd time
+PASS: gdb.base/ena-dis-br.exp: break marker1
+PASS: gdb.base/ena-dis-br.exp: ignore break marker1
+PASS: gdb.base/ena-dis-br.exp: enable del break marker1
+PASS: gdb.base/ena-dis-br.exp: info break marker1
+PASS: gdb.base/ena-dis-br.exp: continue until exit at no stop at ignored & auto-deleted break marker1
+PASS: gdb.base/ena-dis-br.exp: rerun to main
+PASS: gdb.base/ena-dis-br.exp: continue to ignored & auto-deleted break marker1
+PASS: gdb.base/ena-dis-br.exp: break marker1
+PASS: gdb.base/ena-dis-br.exp: ignore break marker1
+PASS: gdb.base/ena-dis-br.exp: disable break marker1
+PASS: gdb.base/ena-dis-br.exp: continue until exit at no stop at ignored & disabled break marker1
+PASS: gdb.base/ena-dis-br.exp: rerun to main
+PASS: gdb.base/ena-dis-br.exp: info ignored & disabled break marker1
+PASS: gdb.base/ena-dis-br.exp: prepare to continue with ignore count
+PASS: gdb.base/ena-dis-br.exp: continue with ignore count
+PASS: gdb.base/ena-dis-br.exp: step
+PASS: gdb.base/ena-dis-br.exp: continue with ignore count, not stopped at bpt
+Running ../../../master/gdb/testsuite/gdb.base/ending-run.exp ...
+PASS: gdb.base/ending-run.exp: bpt at line before routine
+PASS: gdb.base/ending-run.exp: b ending-run.c:14, one
+PASS: gdb.base/ending-run.exp: b ending-run.c:31
+PASS: gdb.base/ending-run.exp: run
+PASS: gdb.base/ending-run.exp: clear worked
+PASS: gdb.base/ending-run.exp: cleared bp at line before routine
+PASS: gdb.base/ending-run.exp: b ending-run.c:1
+PASS: gdb.base/ending-run.exp: b ending-run.c:14, two
+PASS: gdb.base/ending-run.exp: Cleared 2 by line
+PASS: gdb.base/ending-run.exp: b ending-run.c:14
+PASS: gdb.base/ending-run.exp: Breakpoint 7 at *ending-run.c:14
+PASS: gdb.base/ending-run.exp: Clear 2 by default
+PASS: gdb.base/ending-run.exp: all set to continue
+PASS: gdb.base/ending-run.exp: cont
+PASS: gdb.base/ending-run.exp: Step to return
+PASS: gdb.base/ending-run.exp: step out of main
+PASS: gdb.base/ending-run.exp: step to end of run
+UNSUPPORTED: gdb.base/ending-run.exp: continue after exit
+PASS: gdb.base/ending-run.exp: don't step after run
+PASS: gdb.base/ending-run.exp: ls: core (No core dumped on quit)
+Running ../../../master/gdb/testsuite/gdb.base/environ.exp ...
+Running ../../../master/gdb/testsuite/gdb.base/eu-strip-infcall.exp ...
+UNTESTED: gdb.base/eu-strip-infcall.exp: eu-strip-infcall.exp
+Running ../../../master/gdb/testsuite/gdb.base/eval-skip.exp ...
+PASS: gdb.base/eval-skip.exp: set variable x=14
+PASS: gdb.base/eval-skip.exp: set variable y=2
+PASS: gdb.base/eval-skip.exp: set variable z=2
+PASS: gdb.base/eval-skip.exp: set variable w=3
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x+y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x-y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x*y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x/y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x%y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x&&y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x||y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x&y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x|y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x^y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x < y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x <= y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x>y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x>=y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x==y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x!=y))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x<<31))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x>>31))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (!x))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (~x))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (-x))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x++))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (++x))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x--))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (--x))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x+=7))
+PASS: gdb.base/eval-skip.exp: print value of (0 && (x=y))
+Running ../../../master/gdb/testsuite/gdb.base/eval.exp ...
+PASS: gdb.base/eval.exp: Initialize $a.
+PASS: gdb.base/eval.exp: First eval.
+PASS: gdb.base/eval.exp: Second eval.
+Running ../../../master/gdb/testsuite/gdb.base/exe-lock.exp ...
+PASS: gdb.base/exe-lock.exp: continue until exit
+Running ../../../master/gdb/testsuite/gdb.base/expand-psymtabs.exp ...
+PASS: gdb.base/expand-psymtabs.exp: Expand psymtabs
+Running ../../../master/gdb/testsuite/gdb.base/exprs.exp ...
+PASS: gdb.base/exprs.exp: print char == (setup)
+PASS: gdb.base/exprs.exp: print char == (print v_char == 0)
+PASS: gdb.base/exprs.exp: print char == (print v_char == 127)
+PASS: gdb.base/exprs.exp: print char != (setup)
+PASS: gdb.base/exprs.exp: print char != (print v_char != 0)
+PASS: gdb.base/exprs.exp: print char != (print v_char != 127)
+PASS: gdb.base/exprs.exp: print char < (setup)
+PASS: gdb.base/exprs.exp: print char < (print v_char < 0)
+PASS: gdb.base/exprs.exp: print char < (print v_char < 127)
+PASS: gdb.base/exprs.exp: print char > (setup)
+PASS: gdb.base/exprs.exp: print char > (print v_char > 0)
+PASS: gdb.base/exprs.exp: print char > (print v_char > 127)
+PASS: gdb.base/exprs.exp: print signed char == (setup)
+PASS: gdb.base/exprs.exp: print signed char == (print v_signed_char == 0)
+PASS: gdb.base/exprs.exp: print signed char == (print v_signed_char == 127)
+PASS: gdb.base/exprs.exp: print signed char != (setup)
+PASS: gdb.base/exprs.exp: print signed char != (print v_signed_char != 0)
+PASS: gdb.base/exprs.exp: print signed char != (print v_signed_char != 127)
+PASS: gdb.base/exprs.exp: print signed char < (setup)
+PASS: gdb.base/exprs.exp: print signed char < (print v_signed_char < 0)
+PASS: gdb.base/exprs.exp: print signed char < (print v_signed_char < 127)
+PASS: gdb.base/exprs.exp: print signed char > (setup)
+PASS: gdb.base/exprs.exp: print signed char > (print v_signed_char > 0)
+PASS: gdb.base/exprs.exp: print signed char > (print v_signed_char > 127)
+PASS: gdb.base/exprs.exp: print signed char == (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed char == (minus) (print v_signed_char == 0)
+PASS: gdb.base/exprs.exp: print signed char == (minus) (print v_signed_char == -1)
+PASS: gdb.base/exprs.exp: print signed char != (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed char != (minus) (print v_signed_char != 0)
+PASS: gdb.base/exprs.exp: print signed char != (minus) (print v_signed_char != -1)
+PASS: gdb.base/exprs.exp: print signed char < (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed char < (minus) (print v_signed_char < 0)
+PASS: gdb.base/exprs.exp: print signed char < (minus) (print v_signed_char < 127)
+PASS: gdb.base/exprs.exp: print signed char > (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed char > (minus) (print v_signed_char > 0)
+PASS: gdb.base/exprs.exp: print signed char > (minus) (print v_signed_char > 127)
+PASS: gdb.base/exprs.exp: print unsigned char == (setup)
+PASS: gdb.base/exprs.exp: print unsigned char == (print v_unsigned_char == 0)
+PASS: gdb.base/exprs.exp: print unsigned char == (print v_unsigned_char == 127)
+PASS: gdb.base/exprs.exp: print unsigned char != (setup)
+PASS: gdb.base/exprs.exp: print unsigned char != (print v_unsigned_char != 0)
+PASS: gdb.base/exprs.exp: print unsigned char != (print v_unsigned_char != 127)
+PASS: gdb.base/exprs.exp: print unsigned char < (setup)
+PASS: gdb.base/exprs.exp: print unsigned char < (print v_unsigned_char < 0)
+PASS: gdb.base/exprs.exp: print unsigned char < (print v_unsigned_char < 127)
+PASS: gdb.base/exprs.exp: print unsigned char > (setup)
+PASS: gdb.base/exprs.exp: print unsigned char > (print v_unsigned_char > 0)
+PASS: gdb.base/exprs.exp: print unsigned char > (print v_unsigned_char > 127)
+PASS: gdb.base/exprs.exp: print unsigned char == (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned char == (~0) (print v_unsigned_char == 0)
+PASS: gdb.base/exprs.exp: print unsigned char == (~0) (print v_unsigned_char == ~0)
+PASS: gdb.base/exprs.exp: print unsigned char == (~0) (print v_unsigned_char == (unsigned char)~0)
+PASS: gdb.base/exprs.exp: print unsigned char != (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned char != (~0) (print v_unsigned_char != 0)
+PASS: gdb.base/exprs.exp: print unsigned char != (~0) (print v_unsigned_char != (unsigned char)~0)
+PASS: gdb.base/exprs.exp: print unsigned char != (~0) (print v_unsigned_char != ~0)
+PASS: gdb.base/exprs.exp: print unsigned char < (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned char < (~0) (print v_unsigned_char < 0)
+PASS: gdb.base/exprs.exp: print unsigned char < (~0) (print v_unsigned_char < 127)
+PASS: gdb.base/exprs.exp: print unsigned char > (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned char > (~0) (print v_unsigned_char > 0)
+PASS: gdb.base/exprs.exp: print unsigned char > (~0) (print v_unsigned_char > 127)
+PASS: gdb.base/exprs.exp: print signed short == (setup)
+PASS: gdb.base/exprs.exp: print signed short == (print v_short == 0)
+PASS: gdb.base/exprs.exp: print signed short == (print v_short == 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed short != (setup)
+PASS: gdb.base/exprs.exp: print signed short != (print v_short != 0)
+PASS: gdb.base/exprs.exp: print signed short != (print v_short != 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed short < (setup)
+PASS: gdb.base/exprs.exp: print signed short < (print v_short < 0)
+PASS: gdb.base/exprs.exp: print signed short < (print v_short < 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed short > (setup)
+PASS: gdb.base/exprs.exp: print signed short > (print v_short > 0)
+PASS: gdb.base/exprs.exp: print signed short > (print v_short > 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed short == (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed short == (minus) (print v_short == 0)
+PASS: gdb.base/exprs.exp: print signed short == (minus) (print v_short == -1)
+PASS: gdb.base/exprs.exp: print signed short != (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed short != (minus) (print v_short != 0)
+PASS: gdb.base/exprs.exp: print signed short != (minus) (print v_short != -1)
+PASS: gdb.base/exprs.exp: print signed short < (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed short < (minus) (print v_short < 0)
+PASS: gdb.base/exprs.exp: print signed short < (minus) (print v_short < 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed short > (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed short > (minus) (print v_short > 0)
+PASS: gdb.base/exprs.exp: print signed short > (minus) (print v_short > 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed short == (setup)
+PASS: gdb.base/exprs.exp: print signed signed short == (print v_signed_short == 0)
+PASS: gdb.base/exprs.exp: print signed signed short == (print v_signed_short == 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed short != (setup)
+PASS: gdb.base/exprs.exp: print signed signed short != (print v_signed_short != 0)
+PASS: gdb.base/exprs.exp: print signed signed short != (print v_signed_short != 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed short < (setup)
+PASS: gdb.base/exprs.exp: print signed signed short < (print v_signed_short < 0)
+PASS: gdb.base/exprs.exp: print signed signed short < (print v_signed_short < 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed short > (setup)
+PASS: gdb.base/exprs.exp: print signed signed short > (print v_signed_short > 0)
+PASS: gdb.base/exprs.exp: print signed signed short > (print v_signed_short > 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed short == (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed signed short == (minus) (print v_signed_short == 0)
+PASS: gdb.base/exprs.exp: print signed signed short == (minus) (print v_signed_short == -1)
+PASS: gdb.base/exprs.exp: print signed signed short != (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed signed short != (minus) (print v_signed_short != 0)
+PASS: gdb.base/exprs.exp: print signed signed short != (minus) (print v_signed_short != -1)
+PASS: gdb.base/exprs.exp: print signed signed short < (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed signed short < (minus) (print v_signed_short < 0)
+PASS: gdb.base/exprs.exp: print signed signed short < (minus) (print v_signed_short < 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed short > (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed signed short > (minus) (print v_signed_short > 0)
+PASS: gdb.base/exprs.exp: print signed signed short > (minus) (print v_signed_short > 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned short == (setup)
+PASS: gdb.base/exprs.exp: print unsigned short == (print v_unsigned_short == 0)
+PASS: gdb.base/exprs.exp: print unsigned short == (print v_unsigned_short == 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned short != (setup)
+PASS: gdb.base/exprs.exp: print unsigned short != (print v_unsigned_short != 0)
+PASS: gdb.base/exprs.exp: print unsigned short != (print v_unsigned_short != 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned short < (setup)
+PASS: gdb.base/exprs.exp: print unsigned short < (print v_unsigned_short < 0)
+PASS: gdb.base/exprs.exp: print unsigned short < (print v_unsigned_short < 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned short > (setup)
+PASS: gdb.base/exprs.exp: print unsigned short > (print v_unsigned_short > 0)
+PASS: gdb.base/exprs.exp: print unsigned short > (print v_unsigned_short > 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned short == (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned short == (~0) (print v_unsigned_short == 0)
+PASS: gdb.base/exprs.exp: print unsigned short == (~0) (print sizeof (v_unsigned_short) < sizeof (~0) && v_unsigned_short == ~0)
+PASS: gdb.base/exprs.exp: print unsigned short == (~0) (print v_unsigned_short == (unsigned short)~0)
+PASS: gdb.base/exprs.exp: print unsigned short != (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned short != (~0) (print v_unsigned_short != 0)
+PASS: gdb.base/exprs.exp: print unsigned short != (~0) (print v_unsigned_short != (unsigned short)~0)
+PASS: gdb.base/exprs.exp: print unsigned short < (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned short < (~0) (print v_unsigned_short < 0)
+PASS: gdb.base/exprs.exp: print unsigned short < (~0) (print v_unsigned_short < 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned short > (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned short > (~0) (print v_unsigned_short > 0)
+PASS: gdb.base/exprs.exp: print unsigned short > (~0) (print v_unsigned_short > 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed int == (setup)
+PASS: gdb.base/exprs.exp: print signed int == (print v_int == 0)
+PASS: gdb.base/exprs.exp: print signed int == (print v_int == 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed int != (setup)
+PASS: gdb.base/exprs.exp: print signed int != (print v_int != 0)
+PASS: gdb.base/exprs.exp: print signed int != (print v_int != 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed int < (setup)
+PASS: gdb.base/exprs.exp: print signed int < (print v_int < 0)
+PASS: gdb.base/exprs.exp: print signed int < (print v_int < 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed int > (setup)
+PASS: gdb.base/exprs.exp: print signed int > (print v_int > 0)
+PASS: gdb.base/exprs.exp: print signed int > (print v_int > 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed int == (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed int == (minus) (print v_int == 0)
+PASS: gdb.base/exprs.exp: print signed int == (minus) (print v_int == -1)
+PASS: gdb.base/exprs.exp: print signed int != (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed int != (minus) (print v_int != 0)
+PASS: gdb.base/exprs.exp: print signed int != (minus) (print v_int != -1)
+PASS: gdb.base/exprs.exp: print signed int < (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed int < (minus) (print v_int < 0)
+PASS: gdb.base/exprs.exp: print signed int < (minus) (print v_int < 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed int > (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed int > (minus) (print v_int > 0)
+PASS: gdb.base/exprs.exp: print signed int > (minus) (print v_int > 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed int == (setup)
+PASS: gdb.base/exprs.exp: print signed signed int == (print v_signed_int == 0)
+PASS: gdb.base/exprs.exp: print signed signed int == (print v_signed_int == 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed int != (setup)
+PASS: gdb.base/exprs.exp: print signed signed int != (print v_signed_int != 0)
+PASS: gdb.base/exprs.exp: print signed signed int != (print v_signed_int != 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed int < (setup)
+PASS: gdb.base/exprs.exp: print signed signed int < (print v_signed_int < 0)
+PASS: gdb.base/exprs.exp: print signed signed int < (print v_signed_int < 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed int > (setup)
+PASS: gdb.base/exprs.exp: print signed signed int > (print v_signed_int > 0)
+PASS: gdb.base/exprs.exp: print signed signed int > (print v_signed_int > 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed int == (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed signed int == (minus) (print v_signed_int == 0)
+PASS: gdb.base/exprs.exp: print signed signed int == (minus) (print v_signed_int == -1)
+PASS: gdb.base/exprs.exp: print signed signed int != (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed signed int != (minus) (print v_signed_int != 0)
+PASS: gdb.base/exprs.exp: print signed signed int != (minus) (print v_signed_int != -1)
+PASS: gdb.base/exprs.exp: print signed signed int < (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed signed int < (minus) (print v_signed_int < 0)
+PASS: gdb.base/exprs.exp: print signed signed int < (minus) (print v_signed_int < 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed int > (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed signed int > (minus) (print v_signed_int > 0)
+PASS: gdb.base/exprs.exp: print signed signed int > (minus) (print v_signed_int > 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned int == (setup)
+PASS: gdb.base/exprs.exp: print unsigned int == (print v_unsigned_int == 0)
+PASS: gdb.base/exprs.exp: print unsigned int == (print v_unsigned_int == 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned int != (setup)
+PASS: gdb.base/exprs.exp: print unsigned int != (print v_unsigned_int != 0)
+PASS: gdb.base/exprs.exp: print unsigned int != (print v_unsigned_int != 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned int < (setup)
+PASS: gdb.base/exprs.exp: print unsigned int < (print v_unsigned_int < 0)
+PASS: gdb.base/exprs.exp: print unsigned int < (print v_unsigned_int < 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned int > (setup)
+PASS: gdb.base/exprs.exp: print unsigned int > (print v_unsigned_int > 0)
+PASS: gdb.base/exprs.exp: print unsigned int > (print v_unsigned_int > 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned int == (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned int == (~0) (print v_unsigned_int == 0)
+PASS: gdb.base/exprs.exp: print unsigned int == (~0) (print v_unsigned_int == ~0)
+PASS: gdb.base/exprs.exp: print unsigned int == (~0) (print v_unsigned_int == (unsigned int)~0)
+PASS: gdb.base/exprs.exp: print unsigned int != (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned int != (~0) (print v_unsigned_int != 0)
+PASS: gdb.base/exprs.exp: print unsigned int != (~0) (print v_unsigned_int != (unsigned int)~0)
+PASS: gdb.base/exprs.exp: print unsigned int < (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned int < (~0) (print v_unsigned_int < 0)
+PASS: gdb.base/exprs.exp: print unsigned int < (~0) (print v_unsigned_int < 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned int > (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned int > (~0) (print v_unsigned_int > 0)
+PASS: gdb.base/exprs.exp: print unsigned int > (~0) (print v_unsigned_int > 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed long == (setup)
+PASS: gdb.base/exprs.exp: print signed long == (print v_long == 0)
+PASS: gdb.base/exprs.exp: print signed long == (print v_long == 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed long != (setup)
+PASS: gdb.base/exprs.exp: print signed long != (print v_long != 0)
+PASS: gdb.base/exprs.exp: print signed long != (print v_long != 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed long < (setup)
+PASS: gdb.base/exprs.exp: print signed long < (print v_long < 0)
+PASS: gdb.base/exprs.exp: print signed long < (print v_long < 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed long > (setup)
+PASS: gdb.base/exprs.exp: print signed long > (print v_long > 0)
+PASS: gdb.base/exprs.exp: print signed long > (print v_long > 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed long == (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed long == (minus) (print v_long == 0)
+PASS: gdb.base/exprs.exp: print signed long == (minus) (print v_long == -1)
+PASS: gdb.base/exprs.exp: print signed long != (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed long != (minus) (print v_long != 0)
+PASS: gdb.base/exprs.exp: print signed long != (minus) (print v_long != -1)
+PASS: gdb.base/exprs.exp: print signed long < (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed long < (minus) (print v_long < 0)
+PASS: gdb.base/exprs.exp: print signed long < (minus) (print v_long < 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed long > (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed long > (minus) (print v_long > 0)
+PASS: gdb.base/exprs.exp: print signed long > (minus) (print v_long > 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed long == (setup)
+PASS: gdb.base/exprs.exp: print signed signed long == (print v_signed_long == 0)
+PASS: gdb.base/exprs.exp: print signed signed long == (print v_signed_long == 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed long != (setup)
+PASS: gdb.base/exprs.exp: print signed signed long != (print v_signed_long != 0)
+PASS: gdb.base/exprs.exp: print signed signed long != (print v_signed_long != 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed long < (setup)
+PASS: gdb.base/exprs.exp: print signed signed long < (print v_signed_long < 0)
+PASS: gdb.base/exprs.exp: print signed signed long < (print v_signed_long < 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed long > (setup)
+PASS: gdb.base/exprs.exp: print signed signed long > (print v_signed_long > 0)
+PASS: gdb.base/exprs.exp: print signed signed long > (print v_signed_long > 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed long == (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed signed long == (minus) (print v_signed_long == 0)
+PASS: gdb.base/exprs.exp: print signed signed long == (minus) (print v_signed_long == -1)
+PASS: gdb.base/exprs.exp: print signed signed long != (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed signed long != (minus) (print v_signed_long != 0)
+PASS: gdb.base/exprs.exp: print signed signed long != (minus) (print v_signed_long != -1)
+PASS: gdb.base/exprs.exp: print signed signed long < (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed signed long < (minus) (print v_signed_long < 0)
+PASS: gdb.base/exprs.exp: print signed signed long < (minus) (print v_signed_long < 0x7FFF)
+PASS: gdb.base/exprs.exp: print signed signed long > (minus) (setup)
+PASS: gdb.base/exprs.exp: print signed signed long > (minus) (print v_signed_long > 0)
+PASS: gdb.base/exprs.exp: print signed signed long > (minus) (print v_signed_long > 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned long == (setup)
+PASS: gdb.base/exprs.exp: print unsigned long == (print v_unsigned_long == 0)
+PASS: gdb.base/exprs.exp: print unsigned long == (print v_unsigned_long == 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned long != (setup)
+PASS: gdb.base/exprs.exp: print unsigned long != (print v_unsigned_long != 0)
+PASS: gdb.base/exprs.exp: print unsigned long != (print v_unsigned_long != 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned long < (setup)
+PASS: gdb.base/exprs.exp: print unsigned long < (print v_unsigned_long < 0)
+PASS: gdb.base/exprs.exp: print unsigned long < (print v_unsigned_long < 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned long > (setup)
+PASS: gdb.base/exprs.exp: print unsigned long > (print v_unsigned_long > 0)
+PASS: gdb.base/exprs.exp: print unsigned long > (print v_unsigned_long > 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned long == (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned long == (~0) (print v_unsigned_long == 0)
+PASS: gdb.base/exprs.exp: print unsigned long == (~0) (print v_unsigned_long == ~0)
+PASS: gdb.base/exprs.exp: print unsigned long == (~0) (print v_unsigned_long == (unsigned long)~0)
+PASS: gdb.base/exprs.exp: print unsigned long != (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned long != (~0) (print v_unsigned_long != 0)
+PASS: gdb.base/exprs.exp: print unsigned long != (~0) (print v_unsigned_long != (unsigned long)~0)
+PASS: gdb.base/exprs.exp: print unsigned long < (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned long < (~0) (print v_unsigned_long < 0)
+PASS: gdb.base/exprs.exp: print unsigned long < (~0) (print v_unsigned_long < 0x7FFF)
+PASS: gdb.base/exprs.exp: print unsigned long > (~0) (setup)
+PASS: gdb.base/exprs.exp: print unsigned long > (~0) (print v_unsigned_long > 0)
+PASS: gdb.base/exprs.exp: print unsigned long > (~0) (print v_unsigned_long > 0x7FFF)
+PASS: gdb.base/exprs.exp: print (void*)v_signed_char (setup)
+PASS: gdb.base/exprs.exp: print (void*)v_signed_char (print (void*)v_signed_char)
+PASS: gdb.base/exprs.exp: print (void*)v_signed_short (setup)
+PASS: gdb.base/exprs.exp: print (void*)v_signed_short (print (void*)v_signed_short)
+PASS: gdb.base/exprs.exp: print (void*)v_signed_int (setup)
+PASS: gdb.base/exprs.exp: print (void*)v_signed_int (print (void*)v_signed_int)
+PASS: gdb.base/exprs.exp: print (void*)v_signed_long (setup)
+PASS: gdb.base/exprs.exp: print (void*)v_signed_long (print (void*)v_signed_long)
+PASS: gdb.base/exprs.exp: print (void*)v_unsigned_char (setup)
+PASS: gdb.base/exprs.exp: print (void*)v_unsigned_char (print (void*)v_unsigned_char)
+PASS: gdb.base/exprs.exp: print (void*)v_unsigned_short (setup)
+PASS: gdb.base/exprs.exp: print (void*)v_unsigned_short (print (void*)v_unsigned_short)
+PASS: gdb.base/exprs.exp: print (void*)v_unsigned_int (setup)
+PASS: gdb.base/exprs.exp: print (void*)v_unsigned_int (print (void*)v_unsigned_int)
+PASS: gdb.base/exprs.exp: print (void*)v_unsigned_long (setup)
+PASS: gdb.base/exprs.exp: print (void*)v_unsigned_long (print (void*)v_unsigned_long)
+PASS: gdb.base/exprs.exp: sizeof (long long) > sizeof (long) (true)
+PASS: gdb.base/exprs.exp: truncate (void*) 0x00000000ffffffff + 1
+PASS: gdb.base/exprs.exp: truncate (void*) 0xffffffff00000000 - 1
+PASS: gdb.base/exprs.exp: \$[0-9]* = "xy" (setup)
+PASS: gdb.base/exprs.exp: \$[0-9]* = "xyz" (setup)
+PASS: gdb.base/exprs.exp: \$[0-9]* = red (setup)
+PASS: gdb.base/exprs.exp: set output-radix 8
+PASS: gdb.base/exprs.exp: \$[0-9]* = red (setup)
+PASS: gdb.base/exprs.exp: \$[0-9]* = 0 (setup)
+PASS: gdb.base/exprs.exp: set output-radix 10
+PASS: gdb.base/exprs.exp: set variable v_int = 1
+PASS: gdb.base/exprs.exp: print v_int++
+PASS: gdb.base/exprs.exp: print ++v_int
+PASS: gdb.base/exprs.exp: print v_int--
+PASS: gdb.base/exprs.exp: print --v_int
+PASS: gdb.base/exprs.exp: print v_int++ = 5
+PASS: gdb.base/exprs.exp: print v_int-- = 5
+Running ../../../master/gdb/testsuite/gdb.base/fileio.exp ...
+PASS: gdb.base/fileio.exp: set print sevenbit-strings
+PASS: gdb.base/fileio.exp: set print address off
+PASS: gdb.base/fileio.exp: set width 0
+PASS: gdb.base/fileio.exp: break stop
+PASS: gdb.base/fileio.exp: Open a file
+PASS: gdb.base/fileio.exp: Creating already existing file returns EEXIST
+PASS: gdb.base/fileio.exp: Open directory for writing returns EISDIR
+PASS: gdb.base/fileio.exp: Opening nonexistant file returns ENOENT
+PASS: gdb.base/fileio.exp: Open for write but no write permission returns EACCES
+PASS: gdb.base/fileio.exp: Writing to a file
+PASS: gdb.base/fileio.exp: Write using invalid file descriptor returns EBADF
+PASS: gdb.base/fileio.exp: Writing to a read-only file returns EBADF
+PASS: gdb.base/fileio.exp: Reading from a file
+PASS: gdb.base/fileio.exp: Read using invalid file descriptor returns EBADF
+PASS: gdb.base/fileio.exp: Lseeking CUR a file
+PASS: gdb.base/fileio.exp: Lseeking END a file
+PASS: gdb.base/fileio.exp: Lseeking SET a file
+PASS: gdb.base/fileio.exp: Closing a file
+PASS: gdb.base/fileio.exp: Closing an invalid file descriptor returns EBADF
+PASS: gdb.base/fileio.exp: Stat a file
+PASS: gdb.base/fileio.exp: Stat a NULL pathname returns ENOENT or EFAULT
+PASS: gdb.base/fileio.exp: Stat an empty pathname returns ENOENT
+PASS: gdb.base/fileio.exp: Stat a nonexistant file returns ENOENT
+PASS: gdb.base/fileio.exp: Fstat an open file
+PASS: gdb.base/fileio.exp: Fstat an invalid file descriptor returns EBADF
+PASS: gdb.base/fileio.exp: Isatty (stdin)
+PASS: gdb.base/fileio.exp: Isatty (stdout)
+PASS: gdb.base/fileio.exp: Isatty (stderr)
+PASS: gdb.base/fileio.exp: Isatty (invalid fd)
+PASS: gdb.base/fileio.exp: Isatty (open file)
+PASS: gdb.base/fileio.exp: System says shell is available
+PASS: gdb.base/fileio.exp: set remote system-call-allowed 1
+PASS: gdb.base/fileio.exp: System(3) call
+PASS: gdb.base/fileio.exp: System with invalid command returns 127
+PASS: gdb.base/fileio.exp: Rename a file
+PASS: gdb.base/fileio.exp: Renaming a file to existing directory returns EISDIR
+PASS: gdb.base/fileio.exp: Renaming a directory to a non-empty directory returns ENOTEMPTY or EEXIST
+PASS: gdb.base/fileio.exp: Renaming a directory to a subdir of itself returns EINVAL
+PASS: gdb.base/fileio.exp: Renaming a nonexistant file returns ENOENT
+PASS: gdb.base/fileio.exp: Unlink a file
+PASS: gdb.base/fileio.exp: Unlinking a file in a directory w/o write access returns EACCES
+PASS: gdb.base/fileio.exp: Unlinking a nonexistant file returns ENOENT
+PASS: gdb.base/fileio.exp: Time(2) call returns the same value as in parameter
+PASS: gdb.base/fileio.exp: Time(2) returns feasible values
+Running ../../../master/gdb/testsuite/gdb.base/find.exp ...
+PASS: gdb.base/find.exp: breakpoint function in file
+PASS: gdb.base/find.exp: run until function breakpoint
+PASS: gdb.base/find.exp: find string pattern
+PASS: gdb.base/find.exp: pattern not found at end of range
+PASS: gdb.base/find.exp: pattern found at end of range
+PASS: gdb.base/find.exp: max-count
+PASS: gdb.base/find.exp: $_
+PASS: gdb.base/find.exp: $numfound
+PASS: gdb.base/find.exp: size,max-count, /1b
+PASS: gdb.base/find.exp: size,max-count, /b1
+PASS: gdb.base/find.exp: size,max-count, /b/1
+PASS: gdb.base/find.exp: size,max-count, /1/b
+PASS: gdb.base/find.exp: find byte pattern with end address
+PASS: gdb.base/find.exp: find 16-bit pattern
+PASS: gdb.base/find.exp: find 16-bit pattern
+PASS: gdb.base/find.exp: find 32-bit pattern
+PASS: gdb.base/find.exp: find 32-bit pattern
+PASS: gdb.base/find.exp: find 64-bit pattern
+PASS: gdb.base/find.exp: find 64-bit pattern
+PASS: gdb.base/find.exp: find mixed-sized pattern
+PASS: gdb.base/find.exp: search spanning large range
+PASS: gdb.base/find.exp: find pattern straddling chunk boundary
+Running ../../../master/gdb/testsuite/gdb.base/finish.exp ...
+PASS: gdb.base/finish.exp: set break on void_func
+PASS: gdb.base/finish.exp: continue to void_func
+PASS: gdb.base/finish.exp: finish from void_func
+PASS: gdb.base/finish.exp: set break on char_func
+PASS: gdb.base/finish.exp: continue to char_func
+PASS: gdb.base/finish.exp: finish from char_func
+PASS: gdb.base/finish.exp: set break on short_func
+PASS: gdb.base/finish.exp: continue to short_func
+PASS: gdb.base/finish.exp: finish from short_func
+PASS: gdb.base/finish.exp: set break on int_func
+PASS: gdb.base/finish.exp: continue to int_func
+PASS: gdb.base/finish.exp: finish from int_func
+PASS: gdb.base/finish.exp: set break on long_func
+PASS: gdb.base/finish.exp: continue to long_func
+PASS: gdb.base/finish.exp: finish from long_func
+PASS: gdb.base/finish.exp: set break on long_long_func
+PASS: gdb.base/finish.exp: continue to long_long_func
+PASS: gdb.base/finish.exp: finish from long_long_func
+PASS: gdb.base/finish.exp: set break on float_func
+PASS: gdb.base/finish.exp: continue to float_func
+PASS: gdb.base/finish.exp: finish from float_func
+PASS: gdb.base/finish.exp: set break on double_func
+PASS: gdb.base/finish.exp: continue to double_func
+PASS: gdb.base/finish.exp: finish from double_func
+PASS: gdb.base/finish.exp: Testing the "fin" abbreviation for "finish"
+Running ../../../master/gdb/testsuite/gdb.base/fixsection.exp ...
+PASS: gdb.base/fixsection.exp: breakpoint at static_fun
+Running ../../../master/gdb/testsuite/gdb.base/float.exp ...
+PASS: gdb.base/float.exp: info float
+Running ../../../master/gdb/testsuite/gdb.base/foll-exec.exp ...
+PASS: gdb.base/foll-exec.exp: insert first exec catchpoint
+PASS: gdb.base/foll-exec.exp: continue to first exec catchpoint
+PASS: gdb.base/foll-exec.exp: step to exec call
+PASS: gdb.base/foll-exec.exp: print follow-exec/global_i
+PASS: gdb.base/foll-exec.exp: print follow-exec/local_j
+PASS: gdb.base/foll-exec.exp: print follow-exec/local_k
+PASS: gdb.base/foll-exec.exp: step through execlp call
+PASS: gdb.base/foll-exec.exp: step after execlp call
+PASS: gdb.base/foll-exec.exp: print execd-program/global_i (after execlp)
+PASS: gdb.base/foll-exec.exp: print execd-program/local_j (after execlp)
+PASS: gdb.base/foll-exec.exp: print follow-exec/local_k (after execlp)
+PASS: gdb.base/foll-exec.exp: set catch exec
+PASS: gdb.base/foll-exec.exp: info shows catchpoint without exec pathname
+PASS: gdb.base/foll-exec.exp: hit catch exec
+PASS: gdb.base/foll-exec.exp: sync up after possible failure 1
+PASS: gdb.base/foll-exec.exp: sync up after possible failure 2
+PASS: gdb.base/foll-exec.exp: info shows catchpoint exec pathname
+PASS: gdb.base/foll-exec.exp: continue after hit catch exec
+PASS: gdb.base/foll-exec.exp: prepare to jump to execl call
+PASS: gdb.base/foll-exec.exp: jump to execl call
+PASS: gdb.base/foll-exec.exp: step through execl call
+PASS: gdb.base/foll-exec.exp: step after execl call
+PASS: gdb.base/foll-exec.exp: print execd-program/local_j (after execl)
+PASS: gdb.base/foll-exec.exp: prepare to jump to execv call
+PASS: gdb.base/foll-exec.exp: jump to execv call
+PASS: gdb.base/foll-exec.exp: step through execv call
+PASS: gdb.base/foll-exec.exp: step after execv call
+PASS: gdb.base/foll-exec.exp: print execd-program/local_j (after execv)
+PASS: gdb.base/foll-exec.exp: continue through exec
+Running ../../../master/gdb/testsuite/gdb.base/foll-fork.exp ...
+PASS: gdb.base/foll-fork.exp: set verbose
+PASS: gdb.base/foll-fork.exp: help set follow-fork
+PASS: gdb.base/foll-fork.exp: set follow-fork ch
+PASS: gdb.base/foll-fork.exp: set follow-fork, using abbreviations
+PASS: gdb.base/foll-fork.exp: set follow-fork to nonsense is prohibited
+PASS: gdb.base/foll-fork.exp: reset parent
+PASS: gdb.base/foll-fork.exp: insert first fork catchpoint
+PASS: gdb.base/foll-fork.exp: continue to first fork catchpoint
+PASS: gdb.base/foll-fork.exp: default show parent follow, no catchpoints
+PASS: gdb.base/foll-fork.exp: default parent follow, no catchpoints
+PASS: gdb.base/foll-fork.exp: set follow-fork parent
+PASS: gdb.base/foll-fork.exp: explicit show parent follow, no catchpoints
+PASS: gdb.base/foll-fork.exp: explicit parent follow, no catchpoints
+PASS: gdb.base/foll-fork.exp: set follow-fork child
+PASS: gdb.base/foll-fork.exp: explicit show child follow, no catchpoints
+PASS: gdb.base/foll-fork.exp: explicit child follow, no catchpoints
+PASS: gdb.base/foll-fork.exp: explicit child follow, set catch fork
+PASS: gdb.base/foll-fork.exp: info shows catchpoint without pid
+PASS: gdb.base/foll-fork.exp: explicit child follow, catch fork
+PASS: gdb.base/foll-fork.exp: info shows catchpoint without pid
+PASS: gdb.base/foll-fork.exp: set follow-fork child
+PASS: gdb.base/foll-fork.exp: set follow-fork child, tbreak
+PASS: gdb.base/foll-fork.exp: set follow-fork child, hit tbreak
+PASS: gdb.base/foll-fork.exp: set follow-fork child, cleanup
+PASS: gdb.base/foll-fork.exp: unpatch child, break at callee
+PASS: gdb.base/foll-fork.exp: unpatch child, set catch fork
+PASS: gdb.base/foll-fork.exp: unpatch child, catch fork
+PASS: gdb.base/foll-fork.exp: unpatch child, breakpoint at exit call
+PASS: gdb.base/foll-fork.exp: unpatch child, set follow-fork child
+PASS: gdb.base/foll-fork.exp: unpatch child, unpatched parent breakpoints from child
+PASS: gdb.base/foll-fork.exp: explicit parent follow, set tcatch fork
+PASS: gdb.base/foll-fork.exp: explicit parent follow, tcatch fork
+PASS: gdb.base/foll-fork.exp: set follow-fork parent
+PASS: gdb.base/foll-fork.exp: set follow-fork parent, tbreak
+PASS: gdb.base/foll-fork.exp: set follow-fork parent, hit tbreak
+PASS: gdb.base/foll-fork.exp: set follow-fork parent, cleanup
+Running ../../../master/gdb/testsuite/gdb.base/foll-vfork.exp ...
+PASS: gdb.base/foll-vfork.exp: set verbose
+PASS: gdb.base/foll-vfork.exp: insert first vfork catchpoint
+PASS: gdb.base/foll-vfork.exp: continue to first vfork catchpoint
+PASS: gdb.base/foll-vfork.exp: set follow-fork parent, vfork through step
+PASS: gdb.base/foll-vfork.exp: vfork parent follow, through step
+PASS: gdb.base/foll-vfork.exp: set follow-fork parent, vfork to bp
+PASS: gdb.base/foll-vfork.exp: break, vfork to bp
+PASS: gdb.base/foll-vfork.exp: vfork parent follow, to bp
+PASS: gdb.base/foll-vfork.exp: set follow-fork child, vfork and exec to main bp
+PASS: gdb.base/foll-vfork.exp: vfork and exec child follow, to main bp
+PASS: gdb.base/foll-vfork.exp: set follow-fork parent, tcatch vfork
+PASS: gdb.base/foll-vfork.exp: vfork parent follow, set tcatch vfork
+PASS: gdb.base/foll-vfork.exp: vfork parent follow, tcatch vfork
+PASS: gdb.base/foll-vfork.exp: vfork parent follow, finish after tcatch vfork
+PASS: gdb.base/foll-vfork.exp: set follow-fork child, tcatch vfork
+PASS: gdb.base/foll-vfork.exp: vfork child follow, set tcatch vfork
+PASS: gdb.base/foll-vfork.exp: vfork child follow, tcatch vfork
+PASS: gdb.base/foll-vfork.exp: vfork child follow, finish after tcatch vfork (followed exec)
+Running ../../../master/gdb/testsuite/gdb.base/fortran-sym-case.exp ...
+PASS: gdb.base/fortran-sym-case.exp: set language fortran
+PASS: gdb.base/fortran-sym-case.exp: frame
+Running ../../../master/gdb/testsuite/gdb.base/frame-args.exp ...
+PASS: gdb.base/frame-args.exp: set print frame-arguments all
+PASS: gdb.base/frame-args.exp: frame 1 with print frame-arguments set to all
+PASS: gdb.base/frame-args.exp: set print frame-arguments scalars
+PASS: gdb.base/frame-args.exp: frame 1 with print frame-arguments set to scalars
+PASS: gdb.base/frame-args.exp: set print frame-arguments none
+PASS: gdb.base/frame-args.exp: frame 1 with print frame-arguments set to none
+Running ../../../master/gdb/testsuite/gdb.base/freebpcmd.exp ...
+PASS: gdb.base/freebpcmd.exp: set breakpoint
+PASS: gdb.base/freebpcmd.exp: send breakpoint commands
+PASS: gdb.base/freebpcmd.exp: run program with breakpoint commands
+Running ../../../master/gdb/testsuite/gdb.base/fullname.exp ...
+PASS: gdb.base/fullname.exp: set breakpoint by full path before loading symbols - built absolute
+PASS: gdb.base/fullname.exp: set breakpoint at main - built absolute
+PASS: gdb.base/fullname.exp: set breakpoint by full path after loading symbols - built absolute
+PASS: gdb.base/fullname.exp: set breakpoint by full path before loading symbols - built relative
+PASS: gdb.base/fullname.exp: set breakpoint at main - built relative
+PASS: gdb.base/fullname.exp: set breakpoint by full path after loading symbols - built relative
+PASS: gdb.base/fullname.exp: set breakpoint by full path before loading symbols - built other
+PASS: gdb.base/fullname.exp: set breakpoint at main - built other
+PASS: gdb.base/fullname.exp: set breakpoint by full path after loading symbols - built other
+Running ../../../master/gdb/testsuite/gdb.base/funcargs.exp ...
+PASS: gdb.base/funcargs.exp: set print frame-arguments all
+PASS: gdb.base/funcargs.exp: run to call0a
+PASS: gdb.base/funcargs.exp: print c after run to call0a
+PASS: gdb.base/funcargs.exp: print s after run to call0a
+PASS: gdb.base/funcargs.exp: print i after run to call0a
+PASS: gdb.base/funcargs.exp: print l after run to call0a
+PASS: gdb.base/funcargs.exp: continue to call0b
+PASS: gdb.base/funcargs.exp: continue to call0c
+PASS: gdb.base/funcargs.exp: continue to call0d
+PASS: gdb.base/funcargs.exp: continue to call0e
+PASS: gdb.base/funcargs.exp: run to call1a
+PASS: gdb.base/funcargs.exp: print uc
+PASS: gdb.base/funcargs.exp: print us
+PASS: gdb.base/funcargs.exp: print ui
+PASS: gdb.base/funcargs.exp: print ul
+PASS: gdb.base/funcargs.exp: continue to call1b
+PASS: gdb.base/funcargs.exp: continue to call1c
+PASS: gdb.base/funcargs.exp: continue to call1d
+PASS: gdb.base/funcargs.exp: continue to call1e
+PASS: gdb.base/funcargs.exp: run to call2a
+PASS: gdb.base/funcargs.exp: print c after run to call2a
+PASS: gdb.base/funcargs.exp: print f1 after run to call2a
+PASS: gdb.base/funcargs.exp: print s after run to call2a
+PASS: gdb.base/funcargs.exp: print d1 after run to call2a
+PASS: gdb.base/funcargs.exp: print i after run to call2a
+PASS: gdb.base/funcargs.exp: print f2 after run to call2a
+PASS: gdb.base/funcargs.exp: print l after run to call2a
+PASS: gdb.base/funcargs.exp: print d2 after run to call2a
+PASS: gdb.base/funcargs.exp: continue to call2b
+PASS: gdb.base/funcargs.exp: continue to call2c
+PASS: gdb.base/funcargs.exp: continue to call2d
+PASS: gdb.base/funcargs.exp: continue to call2e
+PASS: gdb.base/funcargs.exp: continue to call2f
+PASS: gdb.base/funcargs.exp: continue to call2g
+PASS: gdb.base/funcargs.exp: continue to call2h
+PASS: gdb.base/funcargs.exp: continue to call2i
+PASS: gdb.base/funcargs.exp: run to call2a
+PASS: gdb.base/funcargs.exp: continue to callcb
+PASS: gdb.base/funcargs.exp: continue to callcb
+PASS: gdb.base/funcargs.exp: continue to callcd
+PASS: gdb.base/funcargs.exp: continue to callce
+PASS: gdb.base/funcargs.exp: continue to callcf
+PASS: gdb.base/funcargs.exp: run to callc1a
+PASS: gdb.base/funcargs.exp: continue to callc1b
+PASS: gdb.base/funcargs.exp: run to callc2a
+PASS: gdb.base/funcargs.exp: continue to callc2b
+PASS: gdb.base/funcargs.exp: run to call3a
+PASS: gdb.base/funcargs.exp: print *cp
+PASS: gdb.base/funcargs.exp: print *sp
+PASS: gdb.base/funcargs.exp: print *ip
+PASS: gdb.base/funcargs.exp: print *lp
+PASS: gdb.base/funcargs.exp: continue to call3b
+PASS: gdb.base/funcargs.exp: print *ucp
+PASS: gdb.base/funcargs.exp: print *usp
+PASS: gdb.base/funcargs.exp: print *uip
+PASS: gdb.base/funcargs.exp: print *ulp
+PASS: gdb.base/funcargs.exp: continue to call3c
+PASS: gdb.base/funcargs.exp: print *fp
+PASS: gdb.base/funcargs.exp: print *dp
+PASS: gdb.base/funcargs.exp: run to call4a
+PASS: gdb.base/funcargs.exp: print *stp
+PASS: gdb.base/funcargs.exp: continue to call4b
+PASS: gdb.base/funcargs.exp: print *unp (sizeof long == sizeof int)
+PASS: gdb.base/funcargs.exp: locate actual args, structs/unions passed by reference
+PASS: gdb.base/funcargs.exp: run to call5a
+PASS: gdb.base/funcargs.exp: print st
+PASS: gdb.base/funcargs.exp: continue to call5b (sizeof long == sizeof int)
+PASS: gdb.base/funcargs.exp: print un (sizeof long == sizeof int)
+PASS: gdb.base/funcargs.exp: run to call6a
+PASS: gdb.base/funcargs.exp: backtrace from call6a
+PASS: gdb.base/funcargs.exp: continue to call6b
+PASS: gdb.base/funcargs.exp: backtrace from call6b
+PASS: gdb.base/funcargs.exp: continue to call6c
+PASS: gdb.base/funcargs.exp: backtrace from call6c
+PASS: gdb.base/funcargs.exp: continue to call6d
+PASS: gdb.base/funcargs.exp: backtrace from call6d
+PASS: gdb.base/funcargs.exp: continue to call6e
+PASS: gdb.base/funcargs.exp: backtrace from call6e
+PASS: gdb.base/funcargs.exp: continue to call6f
+PASS: gdb.base/funcargs.exp: backtrace from call6f
+PASS: gdb.base/funcargs.exp: continue to call6g
+PASS: gdb.base/funcargs.exp: backtrace from call6g
+PASS: gdb.base/funcargs.exp: continue to call6h
+PASS: gdb.base/funcargs.exp: backtrace from call6h
+PASS: gdb.base/funcargs.exp: continue to call6i
+PASS: gdb.base/funcargs.exp: backtrace from call6i
+PASS: gdb.base/funcargs.exp: continue to call6j
+PASS: gdb.base/funcargs.exp: backtrace from call6j
+PASS: gdb.base/funcargs.exp: continue to call6k
+PASS: gdb.base/funcargs.exp: backtrace from call6k
+PASS: gdb.base/funcargs.exp: run to call7a
+PASS: gdb.base/funcargs.exp: backtrace from call7a
+PASS: gdb.base/funcargs.exp: continue to call7b
+PASS: gdb.base/funcargs.exp: backtrace from call7b
+PASS: gdb.base/funcargs.exp: continue to call7c
+PASS: gdb.base/funcargs.exp: backtrace from call7c
+PASS: gdb.base/funcargs.exp: continue to call7d
+PASS: gdb.base/funcargs.exp: backtrace from call7d
+PASS: gdb.base/funcargs.exp: continue to call7e
+PASS: gdb.base/funcargs.exp: backtrace from call7e
+PASS: gdb.base/funcargs.exp: continue to call7f
+PASS: gdb.base/funcargs.exp: backtrace from call7f
+PASS: gdb.base/funcargs.exp: continue to call7g
+PASS: gdb.base/funcargs.exp: backtrace from call7g
+PASS: gdb.base/funcargs.exp: continue to call7h
+PASS: gdb.base/funcargs.exp: backtrace from call7h
+PASS: gdb.base/funcargs.exp: continue to call7i
+PASS: gdb.base/funcargs.exp: backtrace from call7i
+PASS: gdb.base/funcargs.exp: continue to call7j
+PASS: gdb.base/funcargs.exp: backtrace from call7j
+PASS: gdb.base/funcargs.exp: continue to call7k
+PASS: gdb.base/funcargs.exp: backtrace from call7k
+PASS: gdb.base/funcargs.exp: run to hitbottom
+PASS: gdb.base/funcargs.exp: recursive passing of structs by value
+PASS: gdb.base/funcargs.exp: print c after runto localvars_after_alloca
+PASS: gdb.base/funcargs.exp: print s after runto localvars_after_alloca
+PASS: gdb.base/funcargs.exp: print i after runto localvars_after_alloca
+PASS: gdb.base/funcargs.exp: print l after runto localvars_after_alloca
+PASS: gdb.base/funcargs.exp: next in localvars_after_alloca()
+PASS: gdb.base/funcargs.exp: print c in localvars_after_alloca
+PASS: gdb.base/funcargs.exp: print s in localvars_after_alloca
+PASS: gdb.base/funcargs.exp: print i in localvars_after_alloca
+PASS: gdb.base/funcargs.exp: print l in localvars_after_alloca
+PASS: gdb.base/funcargs.exp: backtrace after alloca
+PASS: gdb.base/funcargs.exp: print c in call_after_alloca
+PASS: gdb.base/funcargs.exp: print s in call_after_alloca
+PASS: gdb.base/funcargs.exp: print i in call_after_alloca
+PASS: gdb.base/funcargs.exp: print l in call_after_alloca
+PASS: gdb.base/funcargs.exp: backtrace from call_after_alloca_subr
+PASS: gdb.base/funcargs.exp: continue to call0a
+PASS: gdb.base/funcargs.exp: print c in localvars_in_indirect_call
+PASS: gdb.base/funcargs.exp: print s in localvars_in_indirect_call
+PASS: gdb.base/funcargs.exp: print i in localvars_in_indirect_call
+PASS: gdb.base/funcargs.exp: print l in localvars_in_indirect_call
+PASS: gdb.base/funcargs.exp: backtrace in indirectly called function
+PASS: gdb.base/funcargs.exp: finish from indirectly called function
+PASS: gdb.base/funcargs.exp: stepping into indirectly called function
+PASS: gdb.base/funcargs.exp: finish from marker_call_with_trampolines
+PASS: gdb.base/funcargs.exp: stepping into function called with trampolines
+PASS: gdb.base/funcargs.exp: backtrace through call with trampolines
+PASS: gdb.base/funcargs.exp: stepping back to main from function called with trampolines
+Running ../../../master/gdb/testsuite/gdb.base/gcore-buffer-overflow.exp ...
+PASS: gdb.base/gcore-buffer-overflow.exp: help gcore
+PASS: gdb.base/gcore-buffer-overflow.exp: Set buffer exceeding arguments
+PASS: gdb.base/gcore-buffer-overflow.exp: save a corefile
+Running ../../../master/gdb/testsuite/gdb.base/gcore.exp ...
+PASS: gdb.base/gcore.exp: help gcore
+PASS: gdb.base/gcore.exp: set breakpoint at terminal_func
+PASS: gdb.base/gcore.exp: continue to terminal_func
+PASS: gdb.base/gcore.exp: save a corefile
+PASS: gdb.base/gcore.exp: re-load generated corefile
+PASS: gdb.base/gcore.exp: where in corefile
+PASS: gdb.base/gcore.exp: corefile restored general registers
+PASS: gdb.base/gcore.exp: corefile restored all registers
+PASS: gdb.base/gcore.exp: corefile restored extern array
+PASS: gdb.base/gcore.exp: corefile restored static array
+PASS: gdb.base/gcore.exp: corefile restored un-initialized array
+PASS: gdb.base/gcore.exp: corefile restored heap array
+PASS: gdb.base/gcore.exp: corefile restored stack array
+PASS: gdb.base/gcore.exp: corefile restored backtrace
+Running ../../../master/gdb/testsuite/gdb.base/gdb1056.exp ...
+PASS: gdb.base/gdb1056.exp: print 1/0
+PASS: gdb.base/gdb1056.exp: Test unsigned division by zero
+Running ../../../master/gdb/testsuite/gdb.base/gdb1090.exp ...
+PASS: gdb.base/gdb1090.exp: continue to breakpoint: break-here
+PASS: gdb.base/gdb1090.exp: print s24
+Running ../../../master/gdb/testsuite/gdb.base/gdb11530.exp ...
+PASS: gdb.base/gdb11530.exp: print a.i
+PASS: gdb.base/gdb11530.exp: print sizeof (a.i)
+PASS: gdb.base/gdb11530.exp: print sizeof (a.i) == sizeof (int)
+Running ../../../master/gdb/testsuite/gdb.base/gdb11531.exp ...
+PASS: gdb.base/gdb11531.exp: Set watchpoint
+PASS: gdb.base/gdb11531.exp: watchpoint variable triggers at next
+PASS: gdb.base/gdb11531.exp: watchpoint variable triggers at continue
+Running ../../../master/gdb/testsuite/gdb.base/gdb1250.exp ...
+PASS: gdb.base/gdb1250.exp: backtrace from abort
+Running ../../../master/gdb/testsuite/gdb.base/gdb1555.exp ...
+PASS: gdb.base/gdb1555.exp: Step into shared lib function
+PASS: gdb.base/gdb1555.exp: Next while in a shared lib function
+Running ../../../master/gdb/testsuite/gdb.base/gdb1821.exp ...
+PASS: gdb.base/gdb1821.exp: print /x bar
+Running ../../../master/gdb/testsuite/gdb.base/gdbindex-stabs.exp ...
+PASS: gdb.base/gdbindex-stabs.exp: list stabs_function
+Running ../../../master/gdb/testsuite/gdb.base/gdbvars.exp ...
+PASS: gdb.base/gdbvars.exp: set print sevenbit-strings
+PASS: gdb.base/gdbvars.exp: Set value-history[1] using $1
+PASS: gdb.base/gdbvars.exp: Set value-history[2] using $2
+PASS: gdb.base/gdbvars.exp: Set value-history[3] using $3
+PASS: gdb.base/gdbvars.exp: Print value-history[MAX-1] using inplicit index $$
+PASS: gdb.base/gdbvars.exp: Print value-history[MAX-1] again using implicit index $$
+PASS: gdb.base/gdbvars.exp: Print value-history[MAX] using implicit index $
+PASS: gdb.base/gdbvars.exp: Print value-history[MAX-2] using explicit index $$2
+PASS: gdb.base/gdbvars.exp: Print value-history[MAX] using explicit index $0
+PASS: gdb.base/gdbvars.exp: print 108
+PASS: gdb.base/gdbvars.exp: Print value-history[MAX] using explicit index $$0
+PASS: gdb.base/gdbvars.exp: Print value-history[1] using explicit index $1
+PASS: gdb.base/gdbvars.exp: Print value-history[2] using explicit index $2
+PASS: gdb.base/gdbvars.exp: Print value-history[3] using explicit index $3
+PASS: gdb.base/gdbvars.exp: Print (value-history[MAX] - 3) using implicit index $
+PASS: gdb.base/gdbvars.exp: Use value-history element in arithmetic expression
+PASS: gdb.base/gdbvars.exp: Set a new convenience variable
+PASS: gdb.base/gdbvars.exp: Print contents of new convenience variable
+PASS: gdb.base/gdbvars.exp: Set convenience variable to a new value
+PASS: gdb.base/gdbvars.exp: Print new contents of convenience variable
+PASS: gdb.base/gdbvars.exp: Set convenience variable $_
+PASS: gdb.base/gdbvars.exp: Print contents of convenience variable $_
+PASS: gdb.base/gdbvars.exp: Use convenience variable in arithmetic expression
+PASS: gdb.base/gdbvars.exp: Use convenience variable assignment in arithmetic expression
+PASS: gdb.base/gdbvars.exp: Print contents of uninitialized convenience variable
+PASS: gdb.base/gdbvars.exp: Set a new convenience variable to a program variable
+PASS: gdb.base/gdbvars.exp: Print contents of new convenience variable of program variable
+Running ../../../master/gdb/testsuite/gdb.base/gnu-ifunc.exp ...
+PASS: gdb.base/gnu-ifunc.exp: continue to breakpoint: break-at-call
+PASS: gdb.base/gnu-ifunc.exp: p gnu_ifunc (3)
+FAIL: gdb.base/gnu-ifunc.exp: step
+PASS: gdb.base/gnu-ifunc.exp: continue to break-at-nextcall
+PASS: gdb.base/gnu-ifunc.exp: continue to breakpoint: nextcall gnu_ifunc
+PASS: gdb.base/gnu-ifunc.exp: nextcall gnu_ifunc skipped
+PASS: gdb.base/gnu-ifunc.exp: p gnu_ifunc executing
+PASS: gdb.base/gnu-ifunc.exp: info sym gnu_ifunc executing
+PASS: gdb.base/gnu-ifunc.exp: info addr gnu_ifunc
+PASS: gdb.base/gnu-ifunc.exp: info sym <gnu_ifunc-address>
+PASS: gdb.base/gnu-ifunc.exp: static gnu_ifunc
+Running ../../../master/gdb/testsuite/gdb.base/gnu_vector.exp ...
+PASS: gdb.base/gnu_vector.exp: print c4
+PASS: gdb.base/gnu_vector.exp: print c4[2]
+PASS: gdb.base/gnu_vector.exp: print i4a
+PASS: gdb.base/gnu_vector.exp: print i4b
+PASS: gdb.base/gnu_vector.exp: print i4a + i4b
+PASS: gdb.base/gnu_vector.exp: print i4a - i4b
+PASS: gdb.base/gnu_vector.exp: print i4a * i4b
+PASS: gdb.base/gnu_vector.exp: print i4a / i4b
+PASS: gdb.base/gnu_vector.exp: print i4a % i4b
+PASS: gdb.base/gnu_vector.exp: print i4a++
+PASS: gdb.base/gnu_vector.exp: print ++i4a
+PASS: gdb.base/gnu_vector.exp: print i4a--
+PASS: gdb.base/gnu_vector.exp: print --i4a
+PASS: gdb.base/gnu_vector.exp: print +i4a
+PASS: gdb.base/gnu_vector.exp: print -i4a
+PASS: gdb.base/gnu_vector.exp: print i4a & i4b
+PASS: gdb.base/gnu_vector.exp: print i4a | i4b
+PASS: gdb.base/gnu_vector.exp: print i4a ^ i4b
+PASS: gdb.base/gnu_vector.exp: print ~i4a
+PASS: gdb.base/gnu_vector.exp: print i4a << i4b
+PASS: gdb.base/gnu_vector.exp: print i4a >> i4b
+PASS: gdb.base/gnu_vector.exp: print f4a
+PASS: gdb.base/gnu_vector.exp: print f4b
+PASS: gdb.base/gnu_vector.exp: print f4a + f4b
+PASS: gdb.base/gnu_vector.exp: print f4a - f4b
+PASS: gdb.base/gnu_vector.exp: print f4a * f4b
+PASS: gdb.base/gnu_vector.exp: print f4a / f4b
+PASS: gdb.base/gnu_vector.exp: print +f4a
+PASS: gdb.base/gnu_vector.exp: print -f4a
+PASS: gdb.base/gnu_vector.exp: print (int2) 1
+PASS: gdb.base/gnu_vector.exp: print (longlong2) 2
+PASS: gdb.base/gnu_vector.exp: print (float2) 3
+PASS: gdb.base/gnu_vector.exp: print (double2) 4
+PASS: gdb.base/gnu_vector.exp: print (char4) 12
+PASS: gdb.base/gnu_vector.exp: print (uint4) ia
+PASS: gdb.base/gnu_vector.exp: print (int4) -3
+PASS: gdb.base/gnu_vector.exp: print (float4) 4
+PASS: gdb.base/gnu_vector.exp: print i4a + ib
+PASS: gdb.base/gnu_vector.exp: print fa - f4b
+PASS: gdb.base/gnu_vector.exp: print f4a * fb
+PASS: gdb.base/gnu_vector.exp: print ia / i4b
+PASS: gdb.base/gnu_vector.exp: print i4a % ib
+PASS: gdb.base/gnu_vector.exp: print ia & i4b
+PASS: gdb.base/gnu_vector.exp: print i4a | ib
+PASS: gdb.base/gnu_vector.exp: print ia ^ i4b
+PASS: gdb.base/gnu_vector.exp: print i4a << ib
+PASS: gdb.base/gnu_vector.exp: print i4a >> ib
+PASS: gdb.base/gnu_vector.exp: print i4b = ia
+PASS: gdb.base/gnu_vector.exp: print i4a = 3
+PASS: gdb.base/gnu_vector.exp: print f4a = fb
+PASS: gdb.base/gnu_vector.exp: print f4b = 2
+PASS: gdb.base/gnu_vector.exp: print i4a = {2, 4, 8, 16}
+PASS: gdb.base/gnu_vector.exp: print i4a <<= ib
+PASS: gdb.base/gnu_vector.exp: print i4a + d2
+PASS: gdb.base/gnu_vector.exp: print d2 + i4a
+PASS: gdb.base/gnu_vector.exp: print f4a + ll2
+PASS: gdb.base/gnu_vector.exp: print ll2 + f4a
+PASS: gdb.base/gnu_vector.exp: print i2 + ll2
+PASS: gdb.base/gnu_vector.exp: print ll2 + i2
+PASS: gdb.base/gnu_vector.exp: print i4a + ll2
+PASS: gdb.base/gnu_vector.exp: print ll2 + i4a
+PASS: gdb.base/gnu_vector.exp: print f4a + d2
+PASS: gdb.base/gnu_vector.exp: print d2 + f4a
+PASS: gdb.base/gnu_vector.exp: print ui4 + i4a
+PASS: gdb.base/gnu_vector.exp: print i4a + ui4
+PASS: gdb.base/gnu_vector.exp: print i4a + i2
+PASS: gdb.base/gnu_vector.exp: print i2 + i4a
+PASS: gdb.base/gnu_vector.exp: print f4a + f2
+PASS: gdb.base/gnu_vector.exp: print f2 + f4a
+Running ../../../master/gdb/testsuite/gdb.base/hashline1.exp ...
+PASS: gdb.base/hashline1.exp: set breakpoint
+Running ../../../master/gdb/testsuite/gdb.base/hashline2.exp ...
+PASS: gdb.base/hashline2.exp: set breakpoint
+Running ../../../master/gdb/testsuite/gdb.base/hashline3.exp ...
+PASS: gdb.base/hashline3.exp: set breakpoint
+Running ../../../master/gdb/testsuite/gdb.base/hbreak.exp ...
+PASS: gdb.base/hbreak.exp: hbreak
+PASS: gdb.base/hbreak.exp: continue to break-at-exit after hbreak
+Running ../../../master/gdb/testsuite/gdb.base/help.exp ...
+PASS: gdb.base/help.exp: test set height
+PASS: gdb.base/help.exp: help add-symbol-file
+PASS: gdb.base/help.exp: help advance
+PASS: gdb.base/help.exp: help aliases
+PASS: gdb.base/help.exp: help append
+PASS: gdb.base/help.exp: help append binary
+PASS: gdb.base/help.exp: help append memory
+PASS: gdb.base/help.exp: help append value
+PASS: gdb.base/help.exp: help append binary memory
+PASS: gdb.base/help.exp: help append binary value
+PASS: gdb.base/help.exp: help attach
+PASS: gdb.base/help.exp: help breakpoint "b" abbreviation
+PASS: gdb.base/help.exp: help breakpoint "br" abbreviation
+PASS: gdb.base/help.exp: help breakpoint "bre" abbreviation
+PASS: gdb.base/help.exp: help breakpoint "brea" abbreviation
+PASS: gdb.base/help.exp: help breakpoint "break" abbreviation
+PASS: gdb.base/help.exp: help breakpoints
+PASS: gdb.base/help.exp: help backtrace "bt" abbreviation
+PASS: gdb.base/help.exp: help backtrace
+PASS: gdb.base/help.exp: help continue "c" abbreviation
+PASS: gdb.base/help.exp: help continue
+PASS: gdb.base/help.exp: help call
+PASS: gdb.base/help.exp: help catch
+PASS: gdb.base/help.exp: help cd
+PASS: gdb.base/help.exp: help clear
+PASS: gdb.base/help.exp: help commands
+PASS: gdb.base/help.exp: help condition
+PASS: gdb.base/help.exp: help core-file
+PASS: gdb.base/help.exp: help delete "d" abbreviation
+PASS: gdb.base/help.exp: help delete
+PASS: gdb.base/help.exp: help data
+PASS: gdb.base/help.exp: help define
+PASS: gdb.base/help.exp: help delete breakpoints
+PASS: gdb.base/help.exp: help delete display
+PASS: gdb.base/help.exp: help detach
+PASS: gdb.base/help.exp: help directory
+PASS: gdb.base/help.exp: help disable "dis" abbreviation
+PASS: gdb.base/help.exp: help disable "disa" abbreviation
+PASS: gdb.base/help.exp: help disable
+PASS: gdb.base/help.exp: help disable breakpoints
+PASS: gdb.base/help.exp: help disable display
+PASS: gdb.base/help.exp: help disassemble
+PASS: gdb.base/help.exp: help display
+PASS: gdb.base/help.exp: help do
+PASS: gdb.base/help.exp: help document
+PASS: gdb.base/help.exp: help down
+PASS: gdb.base/help.exp: help down-silently
+PASS: gdb.base/help.exp: help dump
+PASS: gdb.base/help.exp: help dump binary
+PASS: gdb.base/help.exp: help dump ihex
+PASS: gdb.base/help.exp: help dump memory
+PASS: gdb.base/help.exp: help dump srec
+PASS: gdb.base/help.exp: help dump tekhex
+PASS: gdb.base/help.exp: help dump value
+PASS: gdb.base/help.exp: help dump binary memory
+PASS: gdb.base/help.exp: help dump binary value
+PASS: gdb.base/help.exp: help dump ihex memory
+PASS: gdb.base/help.exp: help dump ihex value
+PASS: gdb.base/help.exp: help dump srec memory
+PASS: gdb.base/help.exp: help dump srec value
+PASS: gdb.base/help.exp: help dump tekhex memory
+PASS: gdb.base/help.exp: help dump tekhex value
+PASS: gdb.base/help.exp: help echo
+PASS: gdb.base/help.exp: help enable breakpoints delete
+PASS: gdb.base/help.exp: help enable breakpoints once
+PASS: gdb.base/help.exp: help enable breakpoints
+PASS: gdb.base/help.exp: help enable delete
+PASS: gdb.base/help.exp: help enable display
+PASS: gdb.base/help.exp: help enable once
+PASS: gdb.base/help.exp: help enable
+PASS: gdb.base/help.exp: help exec-file
+PASS: gdb.base/help.exp: help frame "f" abbreviation
+PASS: gdb.base/help.exp: help frame
+PASS: gdb.base/help.exp: help fg
+PASS: gdb.base/help.exp: help file
+PASS: gdb.base/help.exp: help files
+PASS: gdb.base/help.exp: help finish
+PASS: gdb.base/help.exp: help forward-search
+PASS: gdb.base/help.exp: help gcore
+PASS: gdb.base/help.exp: help gcore
+PASS: gdb.base/help.exp: help help "h" abbreviation
+PASS: gdb.base/help.exp: help help
+PASS: gdb.base/help.exp: help handle
+PASS: gdb.base/help.exp: help info "i" abbreviation
+PASS: gdb.base/help.exp: help info
+PASS: gdb.base/help.exp: help ignore
+PASS: gdb.base/help.exp: help info address
+PASS: gdb.base/help.exp: help info all-registers
+PASS: gdb.base/help.exp: help info args
+PASS: gdb.base/help.exp: help info breakpoints
+PASS: gdb.base/help.exp: help info catch
+PASS: gdb.base/help.exp: help info copying
+PASS: gdb.base/help.exp: help info display
+PASS: gdb.base/help.exp: help info frame "f" abbreviation
+PASS: gdb.base/help.exp: help info frame
+PASS: gdb.base/help.exp: help info files
+PASS: gdb.base/help.exp: help info float
+PASS: gdb.base/help.exp: help info functions
+PASS: gdb.base/help.exp: help info line
+PASS: gdb.base/help.exp: help info locals
+PASS: gdb.base/help.exp: help info program
+PASS: gdb.base/help.exp: help info registers
+PASS: gdb.base/help.exp: help info stack "s" abbreviation
+PASS: gdb.base/help.exp: help info stack
+PASS: gdb.base/help.exp: help info set
+PASS: gdb.base/help.exp: help info signals
+PASS: gdb.base/help.exp: help info source
+PASS: gdb.base/help.exp: help info sources
+PASS: gdb.base/help.exp: help info symbol
+PASS: gdb.base/help.exp: help info target
+PASS: gdb.base/help.exp: help info terminal
+PASS: gdb.base/help.exp: help info threads
+PASS: gdb.base/help.exp: help info types
+PASS: gdb.base/help.exp: help info variables
+PASS: gdb.base/help.exp: help info warranty
+PASS: gdb.base/help.exp: help info watchpoints
+PASS: gdb.base/help.exp: help inspect
+PASS: gdb.base/help.exp: help jump
+PASS: gdb.base/help.exp: help kill
+PASS: gdb.base/help.exp: help list "l" abbreviation
+PASS: gdb.base/help.exp: help list
+PASS: gdb.base/help.exp: help load
+PASS: gdb.base/help.exp: help make
+PASS: gdb.base/help.exp: help next "n" abbreviation
+PASS: gdb.base/help.exp: help next
+PASS: gdb.base/help.exp: help nexti
+PASS: gdb.base/help.exp: help obscure
+PASS: gdb.base/help.exp: help output
+PASS: gdb.base/help.exp: help overlay
+PASS: gdb.base/help.exp: help overlay off
+PASS: gdb.base/help.exp: help overlay manual
+PASS: gdb.base/help.exp: help overlay auto
+PASS: gdb.base/help.exp: help overlay list
+PASS: gdb.base/help.exp: help overlay map
+PASS: gdb.base/help.exp: help overlay unmap
+PASS: gdb.base/help.exp: help overlay load
+PASS: gdb.base/help.exp: help print "p" abbreviation
+PASS: gdb.base/help.exp: help print
+PASS: gdb.base/help.exp: help path
+PASS: gdb.base/help.exp: help printcmds
+PASS: gdb.base/help.exp: help printf
+PASS: gdb.base/help.exp: help ptype
+PASS: gdb.base/help.exp: help pwd
+PASS: gdb.base/help.exp: help quit "q" abbreviation
+PASS: gdb.base/help.exp: help quit
+PASS: gdb.base/help.exp: help run "r" abbreviation
+PASS: gdb.base/help.exp: help run
+PASS: gdb.base/help.exp: help rbreak
+PASS: gdb.base/help.exp: help restore
+PASS: gdb.base/help.exp: help return
+PASS: gdb.base/help.exp: help reverse-search
+PASS: gdb.base/help.exp: help running
+PASS: gdb.base/help.exp: help step "s" abbreviation
+PASS: gdb.base/help.exp: help step #1
+PASS: gdb.base/help.exp: help search
+PASS: gdb.base/help.exp: help section
+PASS: gdb.base/help.exp: help set annotate
+PASS: gdb.base/help.exp: help set args
+PASS: gdb.base/help.exp: help set check "c" abbreviation
+PASS: gdb.base/help.exp: help set check "ch" abbreviation
+PASS: gdb.base/help.exp: help set check
+PASS: gdb.base/help.exp: help set check range
+PASS: gdb.base/help.exp: help set check type
+PASS: gdb.base/help.exp: help set complaints
+PASS: gdb.base/help.exp: help set confirm
+PASS: gdb.base/help.exp: help set editing
+PASS: gdb.base/help.exp: help set environment
+PASS: gdb.base/help.exp: help set height
+PASS: gdb.base/help.exp: help set history expansion
+PASS: gdb.base/help.exp: help set history filename
+PASS: gdb.base/help.exp: help set history save
+PASS: gdb.base/help.exp: help set history size
+PASS: gdb.base/help.exp: help set history
+PASS: gdb.base/help.exp: help set language
+PASS: gdb.base/help.exp: help set listsize
+PASS: gdb.base/help.exp: help set print "p" abbreviation
+PASS: gdb.base/help.exp: help set print "pr" abbreviation
+PASS: gdb.base/help.exp: help set print
+PASS: gdb.base/help.exp: help set print address
+PASS: gdb.base/help.exp: help set print array
+PASS: gdb.base/help.exp: help set print asm-demangle
+PASS: gdb.base/help.exp: help set print demangle
+PASS: gdb.base/help.exp: help set print elements
+PASS: gdb.base/help.exp: help set print object
+PASS: gdb.base/help.exp: help set print pretty
+PASS: gdb.base/help.exp: help set print sevenbit-strings
+PASS: gdb.base/help.exp: help set print union
+PASS: gdb.base/help.exp: help set print vtbl
+PASS: gdb.base/help.exp: help set prompt
+PASS: gdb.base/help.exp: help set radix
+PASS: gdb.base/help.exp: help set symbol-reloading
+PASS: gdb.base/help.exp: help set variable
+PASS: gdb.base/help.exp: help set verbose
+PASS: gdb.base/help.exp: help set width
+PASS: gdb.base/help.exp: help set write
+PASS: gdb.base/help.exp: help set
+PASS: gdb.base/help.exp: help shell
+PASS: gdb.base/help.exp: help show annotate
+PASS: gdb.base/help.exp: help show args
+PASS: gdb.base/help.exp: help show check "c" abbreviation
+PASS: gdb.base/help.exp: help show check
+PASS: gdb.base/help.exp: help show check range
+PASS: gdb.base/help.exp: help show check type
+PASS: gdb.base/help.exp: help show commands
+PASS: gdb.base/help.exp: help show complaints
+PASS: gdb.base/help.exp: help show confirm
+PASS: gdb.base/help.exp: help show convenience
+PASS: gdb.base/help.exp: help show directories
+PASS: gdb.base/help.exp: help show editing
+PASS: gdb.base/help.exp: help show environment
+PASS: gdb.base/help.exp: help show height
+PASS: gdb.base/help.exp: help show history expansion
+PASS: gdb.base/help.exp: help show history filename
+PASS: gdb.base/help.exp: help show history save
+PASS: gdb.base/help.exp: help show history size
+PASS: gdb.base/help.exp: help show history
+PASS: gdb.base/help.exp: help show language
+PASS: gdb.base/help.exp: help show listsize
+PASS: gdb.base/help.exp: help show print "p" abbreviation
+PASS: gdb.base/help.exp: help show print "pr" abbreviation
+PASS: gdb.base/help.exp: help show print "p" abbreviation
+PASS: gdb.base/help.exp: help show paths
+PASS: gdb.base/help.exp: help show print address
+PASS: gdb.base/help.exp: help show print array
+PASS: gdb.base/help.exp: help show print asm-demangle
+PASS: gdb.base/help.exp: help show print demangle
+PASS: gdb.base/help.exp: help show print elements
+PASS: gdb.base/help.exp: help show print object
+PASS: gdb.base/help.exp: help show print pretty
+PASS: gdb.base/help.exp: help show print sevenbit-strings
+PASS: gdb.base/help.exp: help show print union
+PASS: gdb.base/help.exp: help show print vtbl
+PASS: gdb.base/help.exp: help show prompt
+PASS: gdb.base/help.exp: help show radix
+PASS: gdb.base/help.exp: help show symbol-reloading
+PASS: gdb.base/help.exp: help show user
+PASS: gdb.base/help.exp: help show values
+PASS: gdb.base/help.exp: help show verbose
+PASS: gdb.base/help.exp: help show version
+PASS: gdb.base/help.exp: help show width
+PASS: gdb.base/help.exp: help show write
+PASS: gdb.base/help.exp: help show
+PASS: gdb.base/help.exp: help step #2
+PASS: gdb.base/help.exp: help stepi "si" abbreviation
+PASS: gdb.base/help.exp: help stepi
+PASS: gdb.base/help.exp: help signal
+PASS: gdb.base/help.exp: help source
+PASS: gdb.base/help.exp: help stack
+PASS: gdb.base/help.exp: help status
+PASS: gdb.base/help.exp: help support
+PASS: gdb.base/help.exp: help symbol-file
+PASS: gdb.base/help.exp: help target child
+PASS: gdb.base/help.exp: help target procfs (procfs version)
+PASS: gdb.base/help.exp: help target core
+PASS: gdb.base/help.exp: help target exec
+PASS: gdb.base/help.exp: help target remote
+PASS: gdb.base/help.exp: help target
+PASS: gdb.base/help.exp: help tbreak
+PASS: gdb.base/help.exp: help thread
+PASS: gdb.base/help.exp: help thread apply
+PASS: gdb.base/help.exp: help thread find
+PASS: gdb.base/help.exp: help thread name
+PASS: gdb.base/help.exp: help tty
+PASS: gdb.base/help.exp: help until "u" abbreviation
+PASS: gdb.base/help.exp: help until
+PASS: gdb.base/help.exp: help undisplay
+PASS: gdb.base/help.exp: help unset environment
+PASS: gdb.base/help.exp: help unset
+PASS: gdb.base/help.exp: help up
+PASS: gdb.base/help.exp: help up-silently
+PASS: gdb.base/help.exp: help user-defined
+PASS: gdb.base/help.exp: help watch
+PASS: gdb.base/help.exp: help whatis
+PASS: gdb.base/help.exp: help where
+PASS: gdb.base/help.exp: help x
+PASS: gdb.base/help.exp: help info bogus-gdb-command
+PASS: gdb.base/help.exp: help gotcha
+PASS: gdb.base/help.exp: apropos \(print[^ bsiedf\".-]\)
+PASS: gdb.base/help.exp: apropos handle a signal
+PASS: gdb.base/help.exp: apropos apropos
+Running ../../../master/gdb/testsuite/gdb.base/hook-stop-continue.exp ...
+PASS: gdb.base/hook-stop-continue.exp: breakpoint line number
+PASS: gdb.base/hook-stop-continue.exp: print $do_continue = 1
+PASS: gdb.base/hook-stop-continue.exp: define hook-stop command
+PASS: gdb.base/hook-stop-continue.exp: next triggering hook-stop
+PASS: gdb.base/hook-stop-continue.exp: next no hook-stop
+Running ../../../master/gdb/testsuite/gdb.base/hook-stop-frame.exp ...
+PASS: gdb.base/hook-stop-frame.exp: breakpoint line number
+PASS: gdb.base/hook-stop-frame.exp: define hook-stop command
+PASS: gdb.base/hook-stop-frame.exp: hook-stop runs before frame print
+Running ../../../master/gdb/testsuite/gdb.base/huge.exp ...
+PASS: gdb.base/huge.exp: print a very large data object
+Running ../../../master/gdb/testsuite/gdb.base/ifelse.exp ...
+PASS: gdb.base/ifelse.exp: if 1 with empty body
+PASS: gdb.base/ifelse.exp: if 0 with empty body
+PASS: gdb.base/ifelse.exp: if true else false #1
+PASS: gdb.base/ifelse.exp: if 1 .. else with empty body
+PASS: gdb.base/ifelse.exp: if true else false #2
+PASS: gdb.base/ifelse.exp: if 0 .. else with empty body
+PASS: gdb.base/ifelse.exp: if true else false #3
+PASS: gdb.base/ifelse.exp: create define with empty else
+PASS: gdb.base/ifelse.exp: call original define
+PASS: gdb.base/ifelse.exp: replace define with if .. else with empty body
+PASS: gdb.base/ifelse.exp: call replacement define
+Running ../../../master/gdb/testsuite/gdb.base/included.exp ...
+PASS: gdb.base/included.exp: set listsize 1
+PASS: gdb.base/included.exp: list main
+PASS: gdb.base/included.exp: list integer
+PASS: gdb.base/included.exp: ptype integer
+PASS: gdb.base/included.exp: info variables integer
+Running ../../../master/gdb/testsuite/gdb.base/infnan.exp ...
+PASS: gdb.base/infnan.exp: print a
+PASS: gdb.base/infnan.exp: print b
+Running ../../../master/gdb/testsuite/gdb.base/info-proc.exp ...
+PASS: gdb.base/info-proc.exp: help info proc
+PASS: gdb.base/info-proc.exp: info proc without a process
+PASS: gdb.base/info-proc.exp: info proc with process
+PASS: gdb.base/info-proc.exp: info proc mapping
+Running ../../../master/gdb/testsuite/gdb.base/info-target.exp ...
+PASS: gdb.base/info-target.exp: info target
+Running ../../../master/gdb/testsuite/gdb.base/interact.exp ...
+PASS: gdb.base/interact.exp: set interactive-mode auto
+PASS: gdb.base/interact.exp: source script with interactive-mode auto
+PASS: gdb.base/interact.exp: sanity check with interactive-mode auto
+PASS: gdb.base/interact.exp: show interactive-mode (auto)
+PASS: gdb.base/interact.exp: set interactive-mode on
+PASS: gdb.base/interact.exp: source script with interactive-mode on
+PASS: gdb.base/interact.exp: sanity check with interactive-mode on
+PASS: gdb.base/interact.exp: show interactive-mode (on)
+PASS: gdb.base/interact.exp: set interactive-mode off
+PASS: gdb.base/interact.exp: source script with interactive-mode off
+PASS: gdb.base/interact.exp: sanity check with interactive-mode off
+PASS: gdb.base/interact.exp: show interactive-mode (off)
+Running ../../../master/gdb/testsuite/gdb.base/interp.exp ...
+PASS: gdb.base/interp.exp: interpreter-exec mi "-var-update *"
+PASS: gdb.base/interp.exp: interpreter-exec console "show version"
+PASS: gdb.base/interp.exp: interpreter-exec mi "-var-update *"
+Running ../../../master/gdb/testsuite/gdb.base/interrupt.exp ...
+PASS: gdb.base/interrupt.exp: set interrupt character in interrupt.exp
+PASS: gdb.base/interrupt.exp: child process is alive
+PASS: gdb.base/interrupt.exp: child process ate our char
+PASS: gdb.base/interrupt.exp: send_gdb control C
+PASS: gdb.base/interrupt.exp: call function when asleep
+PASS: gdb.base/interrupt.exp: call function a second time
+PASS: gdb.base/interrupt.exp: continue
+PASS: gdb.base/interrupt.exp: echo data
+PASS: gdb.base/interrupt.exp: Send Control-C, second time
+PASS: gdb.base/interrupt.exp: signal SIGINT
+PASS: gdb.base/interrupt.exp: echo more data
+PASS: gdb.base/interrupt.exp: send end of file
+Running ../../../master/gdb/testsuite/gdb.base/jit.exp ...
+PASS: one_jit_test-1 continue to breakpoint: break here 0
+PASS: one_jit_test-1 set var argc = 2
+PASS: one_jit_test-1 set var libname = "OBJDIR/gdb.base/jit-solib.so"
+PASS: one_jit_test-1 set var count = 1
+PASS: one_jit_test-1 continue to breakpoint: break here 1
+PASS: one_jit_test-1 info function jit_function
+PASS: one_jit_test-1 continue to breakpoint: break here 2
+PASS: one_jit_test-1 set
+PASS: one_jit_test-2 continue to breakpoint: break here 0
+PASS: one_jit_test-2 set var argc = 2
+PASS: one_jit_test-2 set var libname = "OBJDIR/gdb.base/jit-solib.so"
+PASS: one_jit_test-2 set var count = 2
+PASS: one_jit_test-2 continue to breakpoint: break here 1
+PASS: one_jit_test-2 info function jit_function
+PASS: one_jit_test-2 continue to breakpoint: break here 2
+PASS: one_jit_test-2 set
+Running ../../../master/gdb/testsuite/gdb.base/jump.exp ...
+PASS: gdb.base/jump.exp: break before jump to non-call
+PASS: gdb.base/jump.exp: jump to non-call
+PASS: gdb.base/jump.exp: break before jump to call
+PASS: gdb.base/jump.exp: jump to call
+PASS: gdb.base/jump.exp: disable breakpoint on call
+PASS: gdb.base/jump.exp: jump to call with disabled breakpoint
+PASS: gdb.base/jump.exp: jump without argument disallowed
+PASS: gdb.base/jump.exp: jump with trailing argument junk
+PASS: gdb.base/jump.exp: aborted jump out of current function
+PASS: gdb.base/jump.exp: jump out of current function
+Running ../../../master/gdb/testsuite/gdb.base/kill-after-signal.exp ...
+PASS: gdb.base/kill-after-signal.exp: handle SIGUSR1 stop print pass
+PASS: gdb.base/kill-after-signal.exp: continue
+PASS: gdb.base/kill-after-signal.exp: stepi
+PASS: gdb.base/kill-after-signal.exp: kill
+Running ../../../master/gdb/testsuite/gdb.base/label.exp ...
+PASS: gdb.base/label.exp: breakpoint here
+PASS: gdb.base/label.exp: breakpoint there
+PASS: gdb.base/label.exp: continue to 'there'
+PASS: gdb.base/label.exp: continue to 'here'
+PASS: gdb.base/label.exp: rerun to main
+PASS: gdb.base/label.exp: continue to 'there' after re-run
+Running ../../../master/gdb/testsuite/gdb.base/langs.exp ...
+PASS: gdb.base/langs.exp: break on nonexistent function in langs.exp
+PASS: gdb.base/langs.exp: show language at csub in langs.exp
+PASS: gdb.base/langs.exp: backtrace in langs.exp
+PASS: gdb.base/langs.exp: up to foo in langs.exp
+PASS: gdb.base/langs.exp: show language at foo in langs.exp
+PASS: gdb.base/langs.exp: up to cppsub_ in langs.exp
+PASS: gdb.base/langs.exp: show language at cppsub_ in langs.exp
+PASS: gdb.base/langs.exp: up to fsub in langs.exp
+PASS: gdb.base/langs.exp: show language at fsub in langs.exp
+PASS: gdb.base/langs.exp: up to langs0__2do in langs.exp
+PASS: gdb.base/langs.exp: show language at langs0__2do in langs.exp
+PASS: gdb.base/langs.exp: up to main in langs.exp
+PASS: gdb.base/langs.exp: show language at main in langs.exp
+PASS: gdb.base/langs.exp: continue until exit at langs.exp
+PASS: gdb.base/langs.exp: set lang to minimal
+PASS: gdb.base/langs.exp: print parameter value
+Running ../../../master/gdb/testsuite/gdb.base/lineinc.exp ...
+PASS: gdb.base/lineinc.exp: tolerate macro info with multiple #inclusions per line
+Running ../../../master/gdb/testsuite/gdb.base/list.exp ...
+PASS: gdb.base/list.exp: set width 0
+PASS: gdb.base/list.exp: show default list size
+PASS: gdb.base/list.exp: list default lines around main
+PASS: gdb.base/list.exp: setting listsize to 1 #1
+PASS: gdb.base/list.exp: show listsize 1 #1
+PASS: gdb.base/list.exp: list line 1 with listsize 1
+PASS: gdb.base/list.exp: list line 2 with listsize 1
+PASS: gdb.base/list.exp: setting listsize to 2 #2
+PASS: gdb.base/list.exp: show listsize 2 #2
+PASS: gdb.base/list.exp: list line 1 with listsize 2
+PASS: gdb.base/list.exp: list line 2 with listsize 2
+PASS: gdb.base/list.exp: list line 3 with listsize 2
+PASS: gdb.base/list.exp: setting listsize to 3 #3
+PASS: gdb.base/list.exp: show listsize 3 #3
+PASS: gdb.base/list.exp: list line 1 with listsize 3
+PASS: gdb.base/list.exp: list line 2 with listsize 3
+PASS: gdb.base/list.exp: list line 3 with listsize 3
+PASS: gdb.base/list.exp: setting listsize to 4 #4
+PASS: gdb.base/list.exp: show listsize 4 #4
+PASS: gdb.base/list.exp: list line 1 with listsize 4
+PASS: gdb.base/list.exp: list line 2 with listsize 4
+PASS: gdb.base/list.exp: list line 3 with listsize 4
+PASS: gdb.base/list.exp: list line 4 with listsize 4
+PASS: gdb.base/list.exp: setting listsize to 100 #5
+PASS: gdb.base/list.exp: show listsize 100 #5
+PASS: gdb.base/list.exp: list line 1 with listsize 100
+PASS: gdb.base/list.exp: list line 10 with listsize 100
+PASS: gdb.base/list.exp: setting listsize to 0 #6
+PASS: gdb.base/list.exp: show listsize unlimited #6
+PASS: gdb.base/list.exp: listsize of 0 suppresses output
+PASS: gdb.base/list.exp: setting listsize to -1 #7
+PASS: gdb.base/list.exp: show listsize unlimited #7
+XFAIL: gdb.base/list.exp: list line 1 with unlimited listsize
+PASS: gdb.base/list.exp: setting listsize to 10 #8
+PASS: gdb.base/list.exp: show listsize 10 #8
+PASS: gdb.base/list.exp: list line 1 in include file
+PASS: gdb.base/list.exp: list message for lines past EOF
+PASS: gdb.base/list.exp: list filename:number (4 tests)
+PASS: gdb.base/list.exp: list function in source file 1
+PASS: gdb.base/list.exp: list function in source file 2
+PASS: gdb.base/list.exp: list function in include file
+PASS: gdb.base/list.exp: successive list commands to page forward (4 tests)
+PASS: gdb.base/list.exp: 4 successive "list -" commands to page backwards
+PASS: gdb.base/list.exp: repeat list commands to page forward using 'return' (4 tests)
+PASS: gdb.base/list.exp: list range; filename:line1,filename:line2
+PASS: gdb.base/list.exp: list range; line1,line2
+PASS: gdb.base/list.exp: list range; upper bound past EOF
+PASS: gdb.base/list.exp: list range; both bounds past EOF
+PASS: gdb.base/list.exp: list range, must be same files
+PASS: gdb.base/list.exp: list filename:function (5 tests)
+PASS: gdb.base/list.exp: list 'list0.c:main'
+XFAIL: gdb.base/list.exp: list filename:function; wrong filename rejected
+PASS: gdb.base/list.exp: list filename:function; nonexistant file
+PASS: gdb.base/list.exp: list filename:function; nonexistant function
+PASS: gdb.base/list.exp: set listsize 4
+PASS: gdb.base/list.exp: list long_line
+PASS: gdb.base/list.exp: search 4321
+PASS: gdb.base/list.exp: search 6789
+PASS: gdb.base/list.exp: search extremely long line (> 5000 chars)
+Running ../../../master/gdb/testsuite/gdb.base/logical.exp ...
+PASS: gdb.base/logical.exp: evaluate x; variables x = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x; variables x = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate !!x; variables x = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x; variables x = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x; variables x = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate !!x; variables x = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && y; variables x = 0, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x && y; variables x = 0, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x && !y; variables x = 0, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x && !y; variables x = 0, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || y; variables x = 0, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x || y; variables x = 0, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || !y; variables x = 0, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || !y; variables x = 0, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x < y; variables x = 0, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x <= y; variables x = 0, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x == y; variables x = 0, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x != y; variables x = 0, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x >= y; variables x = 0, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x > y; variables x = 0, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x && y; variables x = 0, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x && y; variables x = 0, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && !y; variables x = 0, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x && !y; variables x = 0, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y; variables x = 0, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y; variables x = 0, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || !y; variables x = 0, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x || !y; variables x = 0, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x < y; variables x = 0, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x <= y; variables x = 0, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x == y; variables x = 0, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x != y; variables x = 0, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x >= y; variables x = 0, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x > y; variables x = 0, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x && y; variables x = 1, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x && y; variables x = 1, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x && !y; variables x = 1, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x && !y; variables x = 1, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y; variables x = 1, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y; variables x = 1, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || !y; variables x = 1, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || !y; variables x = 1, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x < y; variables x = 1, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x <= y; variables x = 1, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x == y; variables x = 1, y = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x != y; variables x = 1, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x >= y; variables x = 1, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x > y; variables x = 1, y = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && y; variables x = 1, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x && y; variables x = 1, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x && !y; variables x = 1, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x && !y; variables x = 1, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y; variables x = 1, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y; variables x = 1, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || !y; variables x = 1, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || !y; variables x = 1, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x < y; variables x = 1, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x <= y; variables x = 1, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x == y; variables x = 1, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x != y; variables x = 1, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x >= y; variables x = 1, y = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x > y; variables x = 1, y = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x && y && z; variables x = 0, y = 0, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y && z; variables x = 0, y = 0, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x && y || z; variables x = 0, y = 0, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y || z; variables x = 0, y = 0, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || !y && z; variables x = 0, y = 0, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x || y && z; variables x = 0, y = 0, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y && !z; variables x = 0, y = 0, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && y && z; variables x = 0, y = 0, z = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y && z; variables x = 0, y = 0, z = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x && y || z; variables x = 0, y = 0, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || y || z; variables x = 0, y = 0, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || !y && z; variables x = 0, y = 0, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y && z; variables x = 0, y = 0, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y && !z; variables x = 0, y = 0, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && y && z; variables x = 0, y = 1, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y && z; variables x = 0, y = 1, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x && y || z; variables x = 0, y = 1, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y || z; variables x = 0, y = 1, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || !y && z; variables x = 0, y = 1, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x || y && z; variables x = 0, y = 1, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y && !z; variables x = 0, y = 1, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && y && z; variables x = 0, y = 1, z = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y && z; variables x = 0, y = 1, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && y || z; variables x = 0, y = 1, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || y || z; variables x = 0, y = 1, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || !y && z; variables x = 0, y = 1, z = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x || y && z; variables x = 0, y = 1, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y && !z; variables x = 0, y = 1, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && y && z; variables x = 1, y = 0, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y && z; variables x = 1, y = 0, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && y || z; variables x = 1, y = 0, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y || z; variables x = 1, y = 0, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || !y && z; variables x = 1, y = 0, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y && z; variables x = 1, y = 0, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x || y && !z; variables x = 1, y = 0, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x && y && z; variables x = 1, y = 0, z = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y && z; variables x = 1, y = 0, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && y || z; variables x = 1, y = 0, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || y || z; variables x = 1, y = 0, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || !y && z; variables x = 1, y = 0, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y && z; variables x = 1, y = 0, z = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x || y && !z; variables x = 1, y = 0, z = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x && y && z; variables x = 1, y = 1, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate x || y && z; variables x = 1, y = 1, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && y || z; variables x = 1, y = 1, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || y || z; variables x = 1, y = 1, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || !y && z; variables x = 1, y = 1, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y && z; variables x = 1, y = 1, z = 0; expecting 0
+PASS: gdb.base/logical.exp: evaluate !x || y && !z; variables x = 1, y = 1, z = 0; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && y && z; variables x = 1, y = 1, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || y && z; variables x = 1, y = 1, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x && y || z; variables x = 1, y = 1, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || y || z; variables x = 1, y = 1, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate x || !y && z; variables x = 1, y = 1, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y && z; variables x = 1, y = 1, z = 1; expecting 1
+PASS: gdb.base/logical.exp: evaluate !x || y && !z; variables x = 1, y = 1, z = 1; expecting 0
+PASS: gdb.base/logical.exp: evaluate x > y || w == z; variables x = 1, y = 2, w = 3, z = 3; expecting 1
+PASS: gdb.base/logical.exp: evaluate x >= y && w != z; variables x = 1, y = 2, w = 3, z = 3; expecting 0
+PASS: gdb.base/logical.exp: evaluate ! x > y || w + z; variables x = 1, y = 2, w = 3, z = 3; expecting 1
+PASS: gdb.base/logical.exp: evaluate x > y || w == z; variables x = 1, y = 2, w = 1, z = 3; expecting 0
+PASS: gdb.base/logical.exp: evaluate x >= y && w != z; variables x = 1, y = 2, w = 1, z = 3; expecting 0
+PASS: gdb.base/logical.exp: evaluate ! x > y || w + z; variables x = 1, y = 2, w = 1, z = 3; expecting 1
+PASS: gdb.base/logical.exp: evaluate x > y || w == z; variables x = 2, y = 2, w = 2, z = 3; expecting 0
+PASS: gdb.base/logical.exp: evaluate x >= y && w != z; variables x = 2, y = 2, w = 2, z = 3; expecting 1
+PASS: gdb.base/logical.exp: evaluate ! x > y || w + z; variables x = 2, y = 2, w = 2, z = 3; expecting 1
+Running ../../../master/gdb/testsuite/gdb.base/long_long.exp ...
+PASS: gdb.base/long_long.exp: get integer valueof "sizeof (char)" (1)
+PASS: gdb.base/long_long.exp: get integer valueof "sizeof (short)" (2)
+PASS: gdb.base/long_long.exp: get integer valueof "sizeof (int)" (4)
+PASS: gdb.base/long_long.exp: get integer valueof "sizeof (long)" (4)
+PASS: gdb.base/long_long.exp: get integer valueof "sizeof (long long)" (8)
+PASS: gdb.base/long_long.exp: get integer valueof "sizeof (void *)" (4)
+PASS: gdb.base/long_long.exp: get integer valueof "sizeof (double)" (8)
+PASS: gdb.base/long_long.exp: get integer valueof "sizeof (long double)" (12)
+PASS: gdb.base/long_long.exp: continue to breakpoint: Stop here and look
+PASS: gdb.base/long_long.exp: hex print p/x
+PASS: gdb.base/long_long.exp: decimal print p/x
+PASS: gdb.base/long_long.exp: default print val.dec
+PASS: gdb.base/long_long.exp: default print val.bin
+PASS: gdb.base/long_long.exp: default print val.oct
+PASS: gdb.base/long_long.exp: default print hex
+PASS: gdb.base/long_long.exp: decimal print p/u
+PASS: gdb.base/long_long.exp: binary print
+PASS: gdb.base/long_long.exp: octal print
+PASS: gdb.base/long_long.exp: print +ve long long
+PASS: gdb.base/long_long.exp: decimal print p/d
+PASS: gdb.base/long_long.exp: p/d val.oct
+PASS: gdb.base/long_long.exp: p/u val.oct
+PASS: gdb.base/long_long.exp: p/o val.oct
+PASS: gdb.base/long_long.exp: p/t val.oct
+PASS: gdb.base/long_long.exp: p/a val.oct
+PASS: gdb.base/long_long.exp: p/c val.oct
+PASS: gdb.base/long_long.exp: p/f val.oct
+PASS: gdb.base/long_long.exp: p/x *(char *)c
+PASS: gdb.base/long_long.exp: p/d *(char *)c
+PASS: gdb.base/long_long.exp: p/u *(char *)c
+PASS: gdb.base/long_long.exp: p/o *(char *)c
+PASS: gdb.base/long_long.exp: p/t *(char *)c
+PASS: gdb.base/long_long.exp: p/a *(char *)c
+PASS: gdb.base/long_long.exp: p/f *(char *)c
+PASS: gdb.base/long_long.exp: p/c *(char *)c
+PASS: gdb.base/long_long.exp: p/x *(short *)s
+PASS: gdb.base/long_long.exp: p/d *(short *)s
+PASS: gdb.base/long_long.exp: p/u *(short *)s
+PASS: gdb.base/long_long.exp: p/o *(short *)s
+PASS: gdb.base/long_long.exp: p/t *(short *)s
+PASS: gdb.base/long_long.exp: p/a *(short *)s
+PASS: gdb.base/long_long.exp: p/f *(short *)s
+PASS: gdb.base/long_long.exp: p/c *(short *)s
+PASS: gdb.base/long_long.exp: p/x *(int *)i
+PASS: gdb.base/long_long.exp: p/d *(int *)i
+PASS: gdb.base/long_long.exp: p/u *(int *)i
+PASS: gdb.base/long_long.exp: p/o *(int *)i
+PASS: gdb.base/long_long.exp: p/t *(int *)i
+PASS: gdb.base/long_long.exp: p/a *(int *)i
+PASS: gdb.base/long_long.exp: p/f *(int *)i
+PASS: gdb.base/long_long.exp: p/c *(int *)i
+PASS: gdb.base/long_long.exp: p/x *(long *)l
+PASS: gdb.base/long_long.exp: p/d *(long *)l
+PASS: gdb.base/long_long.exp: p/u *(long *)l
+PASS: gdb.base/long_long.exp: p/o *(long *)l
+PASS: gdb.base/long_long.exp: p/t *(long *)l
+PASS: gdb.base/long_long.exp: p/a *(long *)l
+PASS: gdb.base/long_long.exp: p/f *(long *)l
+PASS: gdb.base/long_long.exp: p/c *(long *)l
+PASS: gdb.base/long_long.exp: p/x *(long long *)ll
+PASS: gdb.base/long_long.exp: p/d *(long long *)ll
+PASS: gdb.base/long_long.exp: p/u *(long long *)ll
+PASS: gdb.base/long_long.exp: p/o *(long long *)ll
+PASS: gdb.base/long_long.exp: p/t *(long long *)ll
+PASS: gdb.base/long_long.exp: p/a *(long long *)ll
+PASS: gdb.base/long_long.exp: p/f *(long long *)ll
+PASS: gdb.base/long_long.exp: p/c *(long long *)ll
+PASS: gdb.base/long_long.exp: set examine size to w
+PASS: gdb.base/long_long.exp: x/x w
+PASS: gdb.base/long_long.exp: x/d w
+PASS: gdb.base/long_long.exp: x/u w
+PASS: gdb.base/long_long.exp: x/o w
+PASS: gdb.base/long_long.exp: x/t w
+PASS: gdb.base/long_long.exp: x/a
+PASS: gdb.base/long_long.exp: x/c b
+PASS: gdb.base/long_long.exp: x/f &val.oct
+PASS: gdb.base/long_long.exp: set examine size to g
+PASS: gdb.base/long_long.exp: x/2x g
+PASS: gdb.base/long_long.exp: x/2d g
+PASS: gdb.base/long_long.exp: x/2u g
+PASS: gdb.base/long_long.exp: x/2o g
+PASS: gdb.base/long_long.exp: x/2t g
+PASS: gdb.base/long_long.exp: x/2a
+PASS: gdb.base/long_long.exp: x/2c b
+PASS: gdb.base/long_long.exp: x/2f &val.oct
+PASS: gdb.base/long_long.exp: x/2bx b
+PASS: gdb.base/long_long.exp: x/2bd b
+PASS: gdb.base/long_long.exp: x/2bu b
+PASS: gdb.base/long_long.exp: x/2bo b
+PASS: gdb.base/long_long.exp: x/2bt b
+PASS: gdb.base/long_long.exp: x/2ba b
+PASS: gdb.base/long_long.exp: x/2bc b
+PASS: gdb.base/long_long.exp: x/2bf b
+PASS: gdb.base/long_long.exp: x/2hx h
+PASS: gdb.base/long_long.exp: x/2hd h
+PASS: gdb.base/long_long.exp: x/2hu h
+PASS: gdb.base/long_long.exp: x/2ho h
+PASS: gdb.base/long_long.exp: x/2ht h
+PASS: gdb.base/long_long.exp: x/2ha h
+PASS: gdb.base/long_long.exp: x/2hc h
+PASS: gdb.base/long_long.exp: x/2hf h
+PASS: gdb.base/long_long.exp: x/2wx w
+PASS: gdb.base/long_long.exp: x/2wd w
+PASS: gdb.base/long_long.exp: x/2wu w
+PASS: gdb.base/long_long.exp: x/2wo w
+PASS: gdb.base/long_long.exp: x/2wt w
+PASS: gdb.base/long_long.exp: x/2wa w
+PASS: gdb.base/long_long.exp: x/2wc w
+PASS: gdb.base/long_long.exp: x/2wf w
+PASS: gdb.base/long_long.exp: x/2gx g
+PASS: gdb.base/long_long.exp: x/2gd g
+PASS: gdb.base/long_long.exp: x/2gu g
+PASS: gdb.base/long_long.exp: x/2go g
+PASS: gdb.base/long_long.exp: x/2gt g
+PASS: gdb.base/long_long.exp: x/2ga g
+PASS: gdb.base/long_long.exp: x/2gc g
+PASS: gdb.base/long_long.exp: x/2gf g
+Running ../../../master/gdb/testsuite/gdb.base/longjmp.exp ...
+PASS: gdb.base/longjmp.exp: breakpoint at pattern 1 start
+PASS: gdb.base/longjmp.exp: continue to breakpoint at pattern 1 start
+PASS: gdb.base/longjmp.exp: breakpoint at miss_step_1
+PASS: gdb.base/longjmp.exp: next over setjmp (1)
+PASS: gdb.base/longjmp.exp: next to longjmp (1)
+FAIL: gdb.base/longjmp.exp: next over longjmp(1)
+PASS: gdb.base/longjmp.exp: breakpoint at pattern 2 start
+PASS: gdb.base/longjmp.exp: continue to breakpoint at pattern 2 start
+PASS: gdb.base/longjmp.exp: breakpoint at miss_step_2
+PASS: gdb.base/longjmp.exp: next over setjmp (2)
+FAIL: gdb.base/longjmp.exp: next over call_longjmp (2)
+PASS: gdb.base/longjmp.exp: breakpoint at pattern 3 start
+PASS: gdb.base/longjmp.exp: continue to breakpoint at pattern 3 start
+FAIL: gdb.base/longjmp.exp: next over patt3
+Running ../../../master/gdb/testsuite/gdb.base/macscp.exp ...
+PASS: gdb.base/macscp.exp: list main for support check
+PASS: gdb.base/macscp.exp: list main for WHERE
+PASS: gdb.base/macscp.exp: info macro WHERE after `list main'
+PASS: gdb.base/macscp.exp: list macscp2_2 for WHERE
+PASS: gdb.base/macscp.exp: info macro WHERE after `list macscp2_2'
+PASS: gdb.base/macscp.exp: list macscp3_2 for WHERE
+PASS: gdb.base/macscp.exp: info macro WHERE after `list macscp3_2'
+PASS: gdb.base/macscp.exp: info macro FROM_COMMANDLINE
+PASS: gdb.base/macscp.exp: list macscp4_2_from_macscp2
+PASS: gdb.base/macscp.exp: info macro WHERE after `list macscp_4_2_from_macscp2'
+PASS: gdb.base/macscp.exp: list macscp4_2_from_macscp3
+KFAIL: gdb.base/macscp.exp: info macro WHERE after `list macscp_4_2_from_macscp3' (gdb/555) (PRMS: gdb/555)
+PASS: gdb.base/macscp.exp: break macscp1_1
+PASS: gdb.base/macscp.exp: break macscp2_1
+PASS: gdb.base/macscp.exp: break macscp4_1_from_macscp2
+PASS: gdb.base/macscp.exp: break macscp4_2_from_macscp2
+PASS: gdb.base/macscp.exp: break macscp2_2
+PASS: gdb.base/macscp.exp: break macscp1_2
+PASS: gdb.base/macscp.exp: break macscp3_1
+PASS: gdb.base/macscp.exp: break macscp4_1_from_macscp3
+PASS: gdb.base/macscp.exp: break macscp4_2_from_macscp3
+PASS: gdb.base/macscp.exp: break macscp3_2
+PASS: gdb.base/macscp.exp: break macscp1_3
+PASS: gdb.base/macscp.exp: continue to macscp1_1
+PASS: gdb.base/macscp.exp: info macro WHERE stopped in macscp1_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP2_1 defined/undefined when stopped at macscp1_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP2_1 defined/undefined when stopped at macscp1_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_1_FROM_MACSCP2 defined/undefined when stopped at macscp1_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_1_FROM_MACSCP2 defined/undefined when stopped at macscp1_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_2_FROM_MACSCP2 defined/undefined when stopped at macscp1_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_2_FROM_MACSCP2 defined/undefined when stopped at macscp1_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP2_2 defined/undefined when stopped at macscp1_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP2_2 defined/undefined when stopped at macscp1_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_2 defined/undefined when stopped at macscp1_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_2 defined/undefined when stopped at macscp1_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP3_1 defined/undefined when stopped at macscp1_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP3_1 defined/undefined when stopped at macscp1_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_1_FROM_MACSCP3 defined/undefined when stopped at macscp1_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_1_FROM_MACSCP3 defined/undefined when stopped at macscp1_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_2_FROM_MACSCP3 defined/undefined when stopped at macscp1_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_2_FROM_MACSCP3 defined/undefined when stopped at macscp1_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP3_2 defined/undefined when stopped at macscp1_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP3_2 defined/undefined when stopped at macscp1_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_3 defined/undefined when stopped at macscp1_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_3 defined/undefined when stopped at macscp1_1
+PASS: gdb.base/macscp.exp: continue to macscp2_1
+PASS: gdb.base/macscp.exp: info macro WHERE stopped in macscp2_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_1 defined/undefined when stopped at macscp2_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_1 defined/undefined when stopped at macscp2_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_1_FROM_MACSCP2 defined/undefined when stopped at macscp2_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_1_FROM_MACSCP2 defined/undefined when stopped at macscp2_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_2_FROM_MACSCP2 defined/undefined when stopped at macscp2_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_2_FROM_MACSCP2 defined/undefined when stopped at macscp2_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP2_2 defined/undefined when stopped at macscp2_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP2_2 defined/undefined when stopped at macscp2_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_2 defined/undefined when stopped at macscp2_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_2 defined/undefined when stopped at macscp2_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP3_1 defined/undefined when stopped at macscp2_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP3_1 defined/undefined when stopped at macscp2_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_1_FROM_MACSCP3 defined/undefined when stopped at macscp2_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_1_FROM_MACSCP3 defined/undefined when stopped at macscp2_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_2_FROM_MACSCP3 defined/undefined when stopped at macscp2_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_2_FROM_MACSCP3 defined/undefined when stopped at macscp2_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP3_2 defined/undefined when stopped at macscp2_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP3_2 defined/undefined when stopped at macscp2_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_3 defined/undefined when stopped at macscp2_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_3 defined/undefined when stopped at macscp2_1
+PASS: gdb.base/macscp.exp: continue to macscp4_1_from_macscp2
+PASS: gdb.base/macscp.exp: info macro WHERE stopped in macscp4_1_from_macscp2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_1 defined/undefined when stopped at macscp4_1_from_macscp2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_1 defined/undefined when stopped at macscp4_1_from_macscp2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP2_1 defined/undefined when stopped at macscp4_1_from_macscp2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP2_1 defined/undefined when stopped at macscp4_1_from_macscp2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_2_FROM_MACSCP2 defined/undefined when stopped at macscp4_1_from_macscp2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_2_FROM_MACSCP2 defined/undefined when stopped at macscp4_1_from_macscp2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP2_2 defined/undefined when stopped at macscp4_1_from_macscp2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP2_2 defined/undefined when stopped at macscp4_1_from_macscp2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_2 defined/undefined when stopped at macscp4_1_from_macscp2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_2 defined/undefined when stopped at macscp4_1_from_macscp2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP3_1 defined/undefined when stopped at macscp4_1_from_macscp2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP3_1 defined/undefined when stopped at macscp4_1_from_macscp2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_1_FROM_MACSCP3 defined/undefined when stopped at macscp4_1_from_macscp2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_1_FROM_MACSCP3 defined/undefined when stopped at macscp4_1_from_macscp2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_2_FROM_MACSCP3 defined/undefined when stopped at macscp4_1_from_macscp2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_2_FROM_MACSCP3 defined/undefined when stopped at macscp4_1_from_macscp2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP3_2 defined/undefined when stopped at macscp4_1_from_macscp2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP3_2 defined/undefined when stopped at macscp4_1_from_macscp2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_3 defined/undefined when stopped at macscp4_1_from_macscp2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_3 defined/undefined when stopped at macscp4_1_from_macscp2
+PASS: gdb.base/macscp.exp: continue to macscp4_2_from_macscp2
+PASS: gdb.base/macscp.exp: info macro WHERE stopped in macscp4_2_from_macscp2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_1 defined/undefined when stopped at macscp4_2_from_macscp2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_1 defined/undefined when stopped at macscp4_2_from_macscp2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP2_1 defined/undefined when stopped at macscp4_2_from_macscp2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP2_1 defined/undefined when stopped at macscp4_2_from_macscp2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_1_FROM_MACSCP2 defined/undefined when stopped at macscp4_2_from_macscp2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_1_FROM_MACSCP2 defined/undefined when stopped at macscp4_2_from_macscp2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP2_2 defined/undefined when stopped at macscp4_2_from_macscp2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP2_2 defined/undefined when stopped at macscp4_2_from_macscp2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_2 defined/undefined when stopped at macscp4_2_from_macscp2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_2 defined/undefined when stopped at macscp4_2_from_macscp2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP3_1 defined/undefined when stopped at macscp4_2_from_macscp2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP3_1 defined/undefined when stopped at macscp4_2_from_macscp2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_1_FROM_MACSCP3 defined/undefined when stopped at macscp4_2_from_macscp2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_1_FROM_MACSCP3 defined/undefined when stopped at macscp4_2_from_macscp2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_2_FROM_MACSCP3 defined/undefined when stopped at macscp4_2_from_macscp2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_2_FROM_MACSCP3 defined/undefined when stopped at macscp4_2_from_macscp2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP3_2 defined/undefined when stopped at macscp4_2_from_macscp2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP3_2 defined/undefined when stopped at macscp4_2_from_macscp2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_3 defined/undefined when stopped at macscp4_2_from_macscp2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_3 defined/undefined when stopped at macscp4_2_from_macscp2
+PASS: gdb.base/macscp.exp: continue to macscp2_2
+PASS: gdb.base/macscp.exp: info macro WHERE stopped in macscp2_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_1 defined/undefined when stopped at macscp2_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_1 defined/undefined when stopped at macscp2_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP2_1 defined/undefined when stopped at macscp2_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP2_1 defined/undefined when stopped at macscp2_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_1_FROM_MACSCP2 defined/undefined when stopped at macscp2_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_1_FROM_MACSCP2 defined/undefined when stopped at macscp2_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_2_FROM_MACSCP2 defined/undefined when stopped at macscp2_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_2_FROM_MACSCP2 defined/undefined when stopped at macscp2_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_2 defined/undefined when stopped at macscp2_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_2 defined/undefined when stopped at macscp2_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP3_1 defined/undefined when stopped at macscp2_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP3_1 defined/undefined when stopped at macscp2_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_1_FROM_MACSCP3 defined/undefined when stopped at macscp2_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_1_FROM_MACSCP3 defined/undefined when stopped at macscp2_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_2_FROM_MACSCP3 defined/undefined when stopped at macscp2_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_2_FROM_MACSCP3 defined/undefined when stopped at macscp2_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP3_2 defined/undefined when stopped at macscp2_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP3_2 defined/undefined when stopped at macscp2_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_3 defined/undefined when stopped at macscp2_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_3 defined/undefined when stopped at macscp2_2
+PASS: gdb.base/macscp.exp: continue to macscp1_2
+PASS: gdb.base/macscp.exp: info macro WHERE stopped in macscp1_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_1 defined/undefined when stopped at macscp1_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_1 defined/undefined when stopped at macscp1_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP2_1 defined/undefined when stopped at macscp1_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP2_1 defined/undefined when stopped at macscp1_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_1_FROM_MACSCP2 defined/undefined when stopped at macscp1_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_1_FROM_MACSCP2 defined/undefined when stopped at macscp1_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_2_FROM_MACSCP2 defined/undefined when stopped at macscp1_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_2_FROM_MACSCP2 defined/undefined when stopped at macscp1_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP2_2 defined/undefined when stopped at macscp1_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP2_2 defined/undefined when stopped at macscp1_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP3_1 defined/undefined when stopped at macscp1_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP3_1 defined/undefined when stopped at macscp1_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_1_FROM_MACSCP3 defined/undefined when stopped at macscp1_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_1_FROM_MACSCP3 defined/undefined when stopped at macscp1_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_2_FROM_MACSCP3 defined/undefined when stopped at macscp1_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_2_FROM_MACSCP3 defined/undefined when stopped at macscp1_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP3_2 defined/undefined when stopped at macscp1_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP3_2 defined/undefined when stopped at macscp1_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_3 defined/undefined when stopped at macscp1_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_3 defined/undefined when stopped at macscp1_2
+PASS: gdb.base/macscp.exp: continue to macscp3_1
+PASS: gdb.base/macscp.exp: info macro WHERE stopped in macscp3_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_1 defined/undefined when stopped at macscp3_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_1 defined/undefined when stopped at macscp3_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP2_1 defined/undefined when stopped at macscp3_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP2_1 defined/undefined when stopped at macscp3_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_1_FROM_MACSCP2 defined/undefined when stopped at macscp3_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_1_FROM_MACSCP2 defined/undefined when stopped at macscp3_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_2_FROM_MACSCP2 defined/undefined when stopped at macscp3_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_2_FROM_MACSCP2 defined/undefined when stopped at macscp3_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP2_2 defined/undefined when stopped at macscp3_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP2_2 defined/undefined when stopped at macscp3_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_2 defined/undefined when stopped at macscp3_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_2 defined/undefined when stopped at macscp3_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_1_FROM_MACSCP3 defined/undefined when stopped at macscp3_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_1_FROM_MACSCP3 defined/undefined when stopped at macscp3_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_2_FROM_MACSCP3 defined/undefined when stopped at macscp3_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_2_FROM_MACSCP3 defined/undefined when stopped at macscp3_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP3_2 defined/undefined when stopped at macscp3_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP3_2 defined/undefined when stopped at macscp3_1
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_3 defined/undefined when stopped at macscp3_1
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_3 defined/undefined when stopped at macscp3_1
+PASS: gdb.base/macscp.exp: continue to macscp4_1_from_macscp3
+KFAIL: gdb.base/macscp.exp: info macro WHERE stopped in macscp4_1_from_macscp3 (gdb/555) (PRMS: gdb/555)
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_1 defined/undefined when stopped at macscp4_1_from_macscp3
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_1 defined/undefined when stopped at macscp4_1_from_macscp3
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP2_1 defined/undefined when stopped at macscp4_1_from_macscp3
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP2_1 defined/undefined when stopped at macscp4_1_from_macscp3
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_1_FROM_MACSCP2 defined/undefined when stopped at macscp4_1_from_macscp3
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_1_FROM_MACSCP2 defined/undefined when stopped at macscp4_1_from_macscp3
+KFAIL: gdb.base/macscp.exp: BEFORE_MACSCP4_2_FROM_MACSCP2 defined/undefined when stopped at macscp4_1_from_macscp3 (PRMS: gdb/555)
+KFAIL: gdb.base/macscp.exp: UNTIL_MACSCP4_2_FROM_MACSCP2 defined/undefined when stopped at macscp4_1_from_macscp3 (PRMS: gdb/555)
+KFAIL: gdb.base/macscp.exp: BEFORE_MACSCP2_2 defined/undefined when stopped at macscp4_1_from_macscp3 (PRMS: gdb/555)
+KFAIL: gdb.base/macscp.exp: UNTIL_MACSCP2_2 defined/undefined when stopped at macscp4_1_from_macscp3 (PRMS: gdb/555)
+KFAIL: gdb.base/macscp.exp: BEFORE_MACSCP1_2 defined/undefined when stopped at macscp4_1_from_macscp3 (PRMS: gdb/555)
+KFAIL: gdb.base/macscp.exp: UNTIL_MACSCP1_2 defined/undefined when stopped at macscp4_1_from_macscp3 (PRMS: gdb/555)
+KFAIL: gdb.base/macscp.exp: BEFORE_MACSCP3_1 defined/undefined when stopped at macscp4_1_from_macscp3 (PRMS: gdb/555)
+KFAIL: gdb.base/macscp.exp: UNTIL_MACSCP3_1 defined/undefined when stopped at macscp4_1_from_macscp3 (PRMS: gdb/555)
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_2_FROM_MACSCP3 defined/undefined when stopped at macscp4_1_from_macscp3
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_2_FROM_MACSCP3 defined/undefined when stopped at macscp4_1_from_macscp3
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP3_2 defined/undefined when stopped at macscp4_1_from_macscp3
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP3_2 defined/undefined when stopped at macscp4_1_from_macscp3
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_3 defined/undefined when stopped at macscp4_1_from_macscp3
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_3 defined/undefined when stopped at macscp4_1_from_macscp3
+PASS: gdb.base/macscp.exp: continue to macscp4_2_from_macscp3
+KFAIL: gdb.base/macscp.exp: info macro WHERE stopped in macscp4_2_from_macscp3 (gdb/555) (PRMS: gdb/555)
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_1 defined/undefined when stopped at macscp4_2_from_macscp3
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_1 defined/undefined when stopped at macscp4_2_from_macscp3
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP2_1 defined/undefined when stopped at macscp4_2_from_macscp3
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP2_1 defined/undefined when stopped at macscp4_2_from_macscp3
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_1_FROM_MACSCP2 defined/undefined when stopped at macscp4_2_from_macscp3
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_1_FROM_MACSCP2 defined/undefined when stopped at macscp4_2_from_macscp3
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_2_FROM_MACSCP2 defined/undefined when stopped at macscp4_2_from_macscp3
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_2_FROM_MACSCP2 defined/undefined when stopped at macscp4_2_from_macscp3
+KFAIL: gdb.base/macscp.exp: BEFORE_MACSCP2_2 defined/undefined when stopped at macscp4_2_from_macscp3 (PRMS: gdb/555)
+KFAIL: gdb.base/macscp.exp: UNTIL_MACSCP2_2 defined/undefined when stopped at macscp4_2_from_macscp3 (PRMS: gdb/555)
+KFAIL: gdb.base/macscp.exp: BEFORE_MACSCP1_2 defined/undefined when stopped at macscp4_2_from_macscp3 (PRMS: gdb/555)
+KFAIL: gdb.base/macscp.exp: UNTIL_MACSCP1_2 defined/undefined when stopped at macscp4_2_from_macscp3 (PRMS: gdb/555)
+KFAIL: gdb.base/macscp.exp: BEFORE_MACSCP3_1 defined/undefined when stopped at macscp4_2_from_macscp3 (PRMS: gdb/555)
+KFAIL: gdb.base/macscp.exp: UNTIL_MACSCP3_1 defined/undefined when stopped at macscp4_2_from_macscp3 (PRMS: gdb/555)
+KFAIL: gdb.base/macscp.exp: BEFORE_MACSCP4_1_FROM_MACSCP3 defined/undefined when stopped at macscp4_2_from_macscp3 (PRMS: gdb/555)
+KFAIL: gdb.base/macscp.exp: UNTIL_MACSCP4_1_FROM_MACSCP3 defined/undefined when stopped at macscp4_2_from_macscp3 (PRMS: gdb/555)
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP3_2 defined/undefined when stopped at macscp4_2_from_macscp3
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP3_2 defined/undefined when stopped at macscp4_2_from_macscp3
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_3 defined/undefined when stopped at macscp4_2_from_macscp3
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_3 defined/undefined when stopped at macscp4_2_from_macscp3
+PASS: gdb.base/macscp.exp: continue to macscp3_2
+PASS: gdb.base/macscp.exp: info macro WHERE stopped in macscp3_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_1 defined/undefined when stopped at macscp3_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_1 defined/undefined when stopped at macscp3_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP2_1 defined/undefined when stopped at macscp3_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP2_1 defined/undefined when stopped at macscp3_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_1_FROM_MACSCP2 defined/undefined when stopped at macscp3_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_1_FROM_MACSCP2 defined/undefined when stopped at macscp3_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_2_FROM_MACSCP2 defined/undefined when stopped at macscp3_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_2_FROM_MACSCP2 defined/undefined when stopped at macscp3_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP2_2 defined/undefined when stopped at macscp3_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP2_2 defined/undefined when stopped at macscp3_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_2 defined/undefined when stopped at macscp3_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_2 defined/undefined when stopped at macscp3_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP3_1 defined/undefined when stopped at macscp3_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP3_1 defined/undefined when stopped at macscp3_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_1_FROM_MACSCP3 defined/undefined when stopped at macscp3_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_1_FROM_MACSCP3 defined/undefined when stopped at macscp3_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_2_FROM_MACSCP3 defined/undefined when stopped at macscp3_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_2_FROM_MACSCP3 defined/undefined when stopped at macscp3_2
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_3 defined/undefined when stopped at macscp3_2
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_3 defined/undefined when stopped at macscp3_2
+PASS: gdb.base/macscp.exp: continue to macscp1_3
+PASS: gdb.base/macscp.exp: info macro WHERE stopped in macscp1_3
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_1 defined/undefined when stopped at macscp1_3
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_1 defined/undefined when stopped at macscp1_3
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP2_1 defined/undefined when stopped at macscp1_3
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP2_1 defined/undefined when stopped at macscp1_3
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_1_FROM_MACSCP2 defined/undefined when stopped at macscp1_3
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_1_FROM_MACSCP2 defined/undefined when stopped at macscp1_3
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_2_FROM_MACSCP2 defined/undefined when stopped at macscp1_3
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_2_FROM_MACSCP2 defined/undefined when stopped at macscp1_3
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP2_2 defined/undefined when stopped at macscp1_3
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP2_2 defined/undefined when stopped at macscp1_3
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP1_2 defined/undefined when stopped at macscp1_3
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP1_2 defined/undefined when stopped at macscp1_3
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP3_1 defined/undefined when stopped at macscp1_3
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP3_1 defined/undefined when stopped at macscp1_3
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_1_FROM_MACSCP3 defined/undefined when stopped at macscp1_3
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_1_FROM_MACSCP3 defined/undefined when stopped at macscp1_3
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP4_2_FROM_MACSCP3 defined/undefined when stopped at macscp1_3
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP4_2_FROM_MACSCP3 defined/undefined when stopped at macscp1_3
+PASS: gdb.base/macscp.exp: BEFORE_MACSCP3_2 defined/undefined when stopped at macscp1_3
+PASS: gdb.base/macscp.exp: UNTIL_MACSCP3_2 defined/undefined when stopped at macscp1_3
+PASS: gdb.base/macscp.exp: breakpoint macscp_expr
+PASS: gdb.base/macscp.exp: continue to macsp_expr
+PASS: gdb.base/macscp.exp: print address.addr
+PASS: gdb.base/macscp.exp: print expression with macro before define.
+PASS: gdb.base/macscp.exp: next to definition 1
+PASS: gdb.base/macscp.exp: print expression with macro in scope.
+PASS: gdb.base/macscp.exp: user macro override
+PASS: gdb.base/macscp.exp: choose user macro
+PASS: gdb.base/macscp.exp: remove user override
+PASS: gdb.base/macscp.exp: print expression with macro after removing override
+PASS: gdb.base/macscp.exp: next to definition 2
+PASS: gdb.base/macscp.exp: print expression with macro after undef.
+PASS: gdb.base/macscp.exp: basic macro define
+PASS: gdb.base/macscp.exp: expansion of defined macro
+PASS: gdb.base/macscp.exp: basic macro list
+PASS: gdb.base/macscp.exp: basic redefine, macro with args
+PASS: gdb.base/macscp.exp: expansion of macro with arguments
+PASS: gdb.base/macscp.exp: basic macro undef
+PASS: gdb.base/macscp.exp: print expression with macro after user undef.
+PASS: gdb.base/macscp.exp: macro define with no arguments
+PASS: gdb.base/macscp.exp: macro undef with no arguments
+PASS: gdb.base/macscp.exp: complete 'p FIFTY_SEVEN'
+PASS: gdb.base/macscp.exp: complete 'p TWENTY_'
+PASS: gdb.base/macscp.exp: complete 'p FORTY_'
+PASS: gdb.base/macscp.exp: defining TWENTY_THREE
+PASS: gdb.base/macscp.exp: complete 'p TWENTY_THREE'
+PASS: gdb.base/macscp.exp: basic macro splicing
+PASS: gdb.base/macscp.exp: define splice helper
+PASS: gdb.base/macscp.exp: splicing plus expansion
+PASS: gdb.base/macscp.exp: define first varargs helper
+PASS: gdb.base/macscp.exp: define second varargs helper
+PASS: gdb.base/macscp.exp: define third varargs helper
+PASS: gdb.base/macscp.exp: define fourth varargs helper
+PASS: gdb.base/macscp.exp: c99 varargs expansion
+PASS: gdb.base/macscp.exp: c99 varargs expansion without an argument
+PASS: gdb.base/macscp.exp: c99 varargs expansion, multiple formal arguments
+PASS: gdb.base/macscp.exp: gnu varargs expansion
+PASS: gdb.base/macscp.exp: gnu varargs expansion without an argument
+PASS: gdb.base/macscp.exp: gnu varargs expansion special splicing without an argument
+PASS: gdb.base/macscp.exp: define stringification macro
+PASS: gdb.base/macscp.exp: define first stringification helper
+PASS: gdb.base/macscp.exp: define second stringification helper
+PASS: gdb.base/macscp.exp: simple stringify
+PASS: gdb.base/macscp.exp: stringify with one space
+PASS: gdb.base/macscp.exp: stringify with many spaces
+PASS: gdb.base/macscp.exp: stringify with quotes
+PASS: gdb.base/macscp.exp: stringify with backslashes
+PASS: gdb.base/macscp.exp: stringify without substitution
+PASS: gdb.base/macscp.exp: stringify with substitution
+PASS: gdb.base/macscp.exp: define si_addr macro
+PASS: gdb.base/macscp.exp: macro expand siginfo.si_addr
+Running ../../../master/gdb/testsuite/gdb.base/maint.exp ...
+PASS: gdb.base/maint.exp: set height 0
+PASS: gdb.base/maint.exp: maint print registers
+PASS: gdb.base/maint.exp: maint check-symtabs
+PASS: gdb.base/maint.exp: maint space
+PASS: gdb.base/maint.exp: maint space 1
+PASS: gdb.base/maint.exp: maint time
+PASS: gdb.base/maint.exp: maint time 1
+PASS: gdb.base/maint.exp: maint time 0
+PASS: gdb.base/maint.exp: maint space 0
+PASS: gdb.base/maint.exp: maint demangle
+PASS: gdb.base/maint.exp: maint demangle main
+PASS: gdb.base/maint.exp: maint print statistics
+PASS: gdb.base/maint.exp: maint print dummy-frames
+PASS: gdb.base/maint.exp: maint print objfiles: header
+PASS: gdb.base/maint.exp: maint print objfiles: psymtabs
+PASS: gdb.base/maint.exp: maint print objfiles: symtabs
+PASS: gdb.base/maint.exp: maint print psymbols w/o args
+PASS: gdb.base/maint.exp: maint print psymbols 1
+PASS: gdb.base/maint.exp: shell rm -f psymbols_output
+PASS: gdb.base/maint.exp: maint print msymbols w/o args
+PASS: gdb.base/maint.exp: maint print msymbols
+PASS: gdb.base/maint.exp: shell rm -f msymbols_output
+PASS: gdb.base/maint.exp: cd to objdir
+PASS: gdb.base/maint.exp: maint print msymbols
+PASS: gdb.base/maint.exp: shell rm -f msymbols_output2
+PASS: gdb.base/maint.exp: cd to mydir
+PASS: gdb.base/maint.exp: maint print symbols w/o args
+PASS: gdb.base/maint.exp: maint print symbols
+PASS: gdb.base/maint.exp: shell rm -f symbols_output
+PASS: gdb.base/maint.exp: maint print type
+PASS: gdb.base/maint.exp: maint info sections
+PASS: gdb.base/maint.exp: maint info sections .text
+PASS: gdb.base/maint.exp: maint info sections CODE
+PASS: gdb.base/maint.exp: maint info sections DATA
+PASS: gdb.base/maint.exp: maint info breakpoints
+PASS: gdb.base/maint.exp: maint print w/o args
+PASS: gdb.base/maint.exp: maint info w/o args
+PASS: gdb.base/maint.exp: maint w/o args
+PASS: gdb.base/maint.exp: help maint
+PASS: gdb.base/maint.exp: help maint check-symtabs
+PASS: gdb.base/maint.exp: help maint space
+PASS: gdb.base/maint.exp: help maint time
+PASS: gdb.base/maint.exp: help maint demangle
+PASS: gdb.base/maint.exp: help maint dump-me
+PASS: gdb.base/maint.exp: help maint internal-error
+PASS: gdb.base/maint.exp: help maint internal-warning
+PASS: gdb.base/maint.exp: help maint print statistics
+PASS: gdb.base/maint.exp: help maint print dummy-frames
+PASS: gdb.base/maint.exp: help maint print objfiles
+PASS: gdb.base/maint.exp: help maint print psymbols
+PASS: gdb.base/maint.exp: help maint print msymbols
+PASS: gdb.base/maint.exp: help maint print symbols
+PASS: gdb.base/maint.exp: help maint print type
+PASS: gdb.base/maint.exp: help maint info sections
+PASS: gdb.base/maint.exp: help maint info breakpoints
+PASS: gdb.base/maint.exp: help maint info
+PASS: gdb.base/maint.exp: help maint print
+PASS: gdb.base/maint.exp: help maint
+PASS: gdb.base/maint.exp: maint dump-me
+PASS: gdb.base/maint.exp: maint internal-error
+PASS: gdb.base/maint.exp: internal-error resync
+Running ../../../master/gdb/testsuite/gdb.base/memattr.exp ...
+PASS: gdb.base/memattr.exp: create mem region 1
+PASS: gdb.base/memattr.exp: create mem region 2
+PASS: gdb.base/memattr.exp: create mem region 3
+PASS: gdb.base/memattr.exp: create mem region 4
+PASS: gdb.base/memattr.exp: create mem region 5
+PASS: gdb.base/memattr.exp: info mem (1)
+PASS: gdb.base/memattr.exp: mem1 cannot be read
+PASS: gdb.base/memattr.exp: mem1 can be written
+PASS: gdb.base/memattr.exp: mem2 cannot be written
+PASS: gdb.base/memattr.exp: mem2 can be read
+PASS: gdb.base/memattr.exp: disable mem 1
+PASS: gdb.base/memattr.exp: mem 1 was disabled
+PASS: gdb.base/memattr.exp: enable mem 1
+PASS: gdb.base/memattr.exp: mem 1 was enabled
+PASS: gdb.base/memattr.exp: disable mem 2 4
+PASS: gdb.base/memattr.exp: mem 2 and 4 were disabled
+PASS: gdb.base/memattr.exp: enable mem 2-4
+PASS: gdb.base/memattr.exp: mem 2-4 were enabled
+PASS: gdb.base/memattr.exp: disable mem
+PASS: gdb.base/memattr.exp: mem 1 to 5 were disabled
+PASS: gdb.base/memattr.exp: enable mem
+PASS: gdb.base/memattr.exp: mem 1 to 5 were enabled
+PASS: gdb.base/memattr.exp: disable non-existant regions
+PASS: gdb.base/memattr.exp: delete mem 1
+PASS: gdb.base/memattr.exp: mem 1 was deleted
+PASS: gdb.base/memattr.exp: delete mem 2 4
+PASS: gdb.base/memattr.exp: mem 2 and 4 were deleted
+PASS: gdb.base/memattr.exp: delete mem 2-4
+PASS: gdb.base/memattr.exp: mem 2-4 were deleted
+PASS: gdb.base/memattr.exp: delete non-existant region
+Running ../../../master/gdb/testsuite/gdb.base/mips_pro.exp ...
+PASS: gdb.base/mips_pro.exp: backtrace
+Running ../../../master/gdb/testsuite/gdb.base/miscexprs.exp ...
+PASS: gdb.base/miscexprs.exp: continue to marker1
+PASS: gdb.base/miscexprs.exp: up from marker1
+PASS: gdb.base/miscexprs.exp: print value of &ibig.i[0]
+PASS: gdb.base/miscexprs.exp: print value of &cbig.c[0]
+PASS: gdb.base/miscexprs.exp: print value of &fbig.f[0]
+PASS: gdb.base/miscexprs.exp: print value of &dbig.d[0]
+PASS: gdb.base/miscexprs.exp: print value of &sbig.s[0]
+PASS: gdb.base/miscexprs.exp: print value of &lbig.l[0]
+PASS: gdb.base/miscexprs.exp: print value of ibig.i[100] | 1
+PASS: gdb.base/miscexprs.exp: print value of sbig.s[90] & 127
+PASS: gdb.base/miscexprs.exp: print value of !ibig.i[100]
+PASS: gdb.base/miscexprs.exp: print value of !sbig.s[90]
+PASS: gdb.base/miscexprs.exp: print value of !ibig.i[100]
+PASS: gdb.base/miscexprs.exp: print value of !ibig.i[100]
+PASS: gdb.base/miscexprs.exp: print value of !sbig.s[90] * 10
+PASS: gdb.base/miscexprs.exp: print value of ibig.i[100] * sbig.s[90]
+PASS: gdb.base/miscexprs.exp: print value of fbig.f[100] * dbig.d[202]
+PASS: gdb.base/miscexprs.exp: print value of !(sbig.s[90] * 2)
+PASS: gdb.base/miscexprs.exp: print value of sizeof sbig
+PASS: gdb.base/miscexprs.exp: print value of sizeof cbig
+PASS: gdb.base/miscexprs.exp: print value of sizeof lbig / sizeof long
+PASS: gdb.base/miscexprs.exp: print value of ibig.i[100] << 2
+PASS: gdb.base/miscexprs.exp: print value of sbig.s[90] >> 4
+PASS: gdb.base/miscexprs.exp: print value of lbig.l[333] >> 6
+Running ../../../master/gdb/testsuite/gdb.base/morestack.exp ...
+gdb compile failed, cc1: error: unrecognized command line option "-fsplit-stack"
+UNTESTED: gdb.base/morestack.exp: morestack.exp
+Running ../../../master/gdb/testsuite/gdb.base/moribund-step.exp ...
+PASS: gdb.base/moribund-step.exp: set non-stop on
+PASS: gdb.base/moribund-step.exp: step
+Running ../../../master/gdb/testsuite/gdb.base/multi-forks.exp ...
+PASS: gdb.base/multi-forks.exp: set follow-fork child
+PASS: gdb.base/multi-forks.exp: run to exit 2
+PASS: gdb.base/multi-forks.exp: follow child, print pids
+PASS: gdb.base/multi-forks.exp: run to exit 2
+PASS: gdb.base/multi-forks.exp: follow parent, print pids
+PASS: gdb.base/multi-forks.exp: help set detach
+PASS: gdb.base/multi-forks.exp: show detach default on
+PASS: gdb.base/multi-forks.exp: set detach off
+PASS: gdb.base/multi-forks.exp: Run to exit 1
+PASS: gdb.base/multi-forks.exp: info inferior 1
+PASS: gdb.base/multi-forks.exp: inferior 1
+PASS: gdb.base/multi-forks.exp: Run to exit 2
+PASS: gdb.base/multi-forks.exp: info inferior 2
+PASS: gdb.base/multi-forks.exp: inferior 2
+PASS: gdb.base/multi-forks.exp: Run to exit 3
+PASS: gdb.base/multi-forks.exp: info inferior 3
+PASS: gdb.base/multi-forks.exp: inferior 3
+PASS: gdb.base/multi-forks.exp: Run to exit 4
+PASS: gdb.base/multi-forks.exp: info inferior 4
+PASS: gdb.base/multi-forks.exp: inferior 4
+PASS: gdb.base/multi-forks.exp: Run to exit 5
+PASS: gdb.base/multi-forks.exp: info inferior 5
+PASS: gdb.base/multi-forks.exp: inferior 5
+PASS: gdb.base/multi-forks.exp: Run to exit 6
+PASS: gdb.base/multi-forks.exp: info inferior 6
+PASS: gdb.base/multi-forks.exp: inferior 6
+PASS: gdb.base/multi-forks.exp: Run to exit 7
+PASS: gdb.base/multi-forks.exp: info inferior 7
+PASS: gdb.base/multi-forks.exp: inferior 7
+PASS: gdb.base/multi-forks.exp: Run to exit 8
+PASS: gdb.base/multi-forks.exp: info inferior 8
+PASS: gdb.base/multi-forks.exp: inferior 8
+PASS: gdb.base/multi-forks.exp: Run to exit 9
+PASS: gdb.base/multi-forks.exp: info inferior 9
+PASS: gdb.base/multi-forks.exp: inferior 9
+PASS: gdb.base/multi-forks.exp: Run to exit 10
+PASS: gdb.base/multi-forks.exp: info inferior 10
+PASS: gdb.base/multi-forks.exp: inferior 10
+PASS: gdb.base/multi-forks.exp: Run to exit 11
+PASS: gdb.base/multi-forks.exp: info inferior 11
+PASS: gdb.base/multi-forks.exp: inferior 11
+PASS: gdb.base/multi-forks.exp: Run to exit 12
+PASS: gdb.base/multi-forks.exp: info inferior 12
+PASS: gdb.base/multi-forks.exp: inferior 12
+PASS: gdb.base/multi-forks.exp: Run to exit 13
+PASS: gdb.base/multi-forks.exp: info inferior 13
+PASS: gdb.base/multi-forks.exp: inferior 13
+PASS: gdb.base/multi-forks.exp: Run to exit 14
+PASS: gdb.base/multi-forks.exp: info inferior 14
+PASS: gdb.base/multi-forks.exp: inferior 14
+PASS: gdb.base/multi-forks.exp: Run to exit 15
+PASS: gdb.base/multi-forks.exp: info inferior 15
+PASS: gdb.base/multi-forks.exp: inferior 15
+PASS: gdb.base/multi-forks.exp: Run to exit 16
+PASS: gdb.base/multi-forks.exp: info inferior 16
+PASS: gdb.base/multi-forks.exp: restart final
+PASS: gdb.base/multi-forks.exp: Detach 2
+PASS: gdb.base/multi-forks.exp: Detach 3
+PASS: gdb.base/multi-forks.exp: Detach 4
+PASS: gdb.base/multi-forks.exp: Detach 5
+PASS: gdb.base/multi-forks.exp: Kill 6
+PASS: gdb.base/multi-forks.exp: Did kill 6
+PASS: gdb.base/multi-forks.exp: Kill 7
+PASS: gdb.base/multi-forks.exp: Did kill 7
+PASS: gdb.base/multi-forks.exp: Kill 8
+PASS: gdb.base/multi-forks.exp: Did kill 8
+PASS: gdb.base/multi-forks.exp: Kill 9
+PASS: gdb.base/multi-forks.exp: Did kill 9
+PASS: gdb.base/multi-forks.exp: Kill 10
+PASS: gdb.base/multi-forks.exp: Did kill 10
+PASS: gdb.base/multi-forks.exp: Kill 11
+PASS: gdb.base/multi-forks.exp: Did kill 11
+PASS: gdb.base/multi-forks.exp: Kill 12
+PASS: gdb.base/multi-forks.exp: Did kill 12
+PASS: gdb.base/multi-forks.exp: Kill 13
+PASS: gdb.base/multi-forks.exp: Did kill 13
+PASS: gdb.base/multi-forks.exp: Kill 14
+PASS: gdb.base/multi-forks.exp: Did kill 14
+PASS: gdb.base/multi-forks.exp: Kill 15
+PASS: gdb.base/multi-forks.exp: Did kill 15
+PASS: gdb.base/multi-forks.exp: Kill 16
+PASS: gdb.base/multi-forks.exp: Did kill 16
+Running ../../../master/gdb/testsuite/gdb.base/nodebug.exp ...
+PASS: gdb.base/nodebug.exp: p top
+PASS: gdb.base/nodebug.exp: whatis top
+PASS: gdb.base/nodebug.exp: ptype top
+PASS: gdb.base/nodebug.exp: p middle
+PASS: gdb.base/nodebug.exp: whatis middle
+PASS: gdb.base/nodebug.exp: ptype middle
+PASS: gdb.base/nodebug.exp: p dataglobal
+PASS: gdb.base/nodebug.exp: whatis dataglobal
+PASS: gdb.base/nodebug.exp: ptype dataglobal
+PASS: gdb.base/nodebug.exp: p datalocal
+PASS: gdb.base/nodebug.exp: whatis datalocal
+PASS: gdb.base/nodebug.exp: ptype datalocal
+PASS: gdb.base/nodebug.exp: p bssglobal
+PASS: gdb.base/nodebug.exp: whatis bssglobal
+PASS: gdb.base/nodebug.exp: ptype bssglobal
+PASS: gdb.base/nodebug.exp: p bsslocal
+PASS: gdb.base/nodebug.exp: whatis bsslocal
+PASS: gdb.base/nodebug.exp: ptype bsslocal
+PASS: gdb.base/nodebug.exp: backtrace from inner in nodebug.exp
+PASS: gdb.base/nodebug.exp: p/c array_index("abcdef",2)
+PASS: gdb.base/nodebug.exp: backtrace from middle in nodebug.exp
+Running ../../../master/gdb/testsuite/gdb.base/nofield.exp ...
+PASS: gdb.base/nofield.exp: ptype struct not_empty
+PASS: gdb.base/nofield.exp: ptype struct empty
+PASS: gdb.base/nofield.exp: ptype union empty_union
+Running ../../../master/gdb/testsuite/gdb.base/nostdlib.exp ...
+PASS: gdb.base/nostdlib.exp: stop at run
+PASS: gdb.base/nostdlib.exp: continue to marker
+Running ../../../master/gdb/testsuite/gdb.base/opaque.exp ...
+PASS: gdb.base/opaque.exp: whatis on opaque struct pointer (statically)
+PASS: gdb.base/opaque.exp: ptype on opaque struct pointer (statically)
+PASS: gdb.base/opaque.exp: whatis on opaque struct instance (statically)
+PASS: gdb.base/opaque.exp: ptype on opaque struct instance (statically)
+PASS: gdb.base/opaque.exp: ptype on opaque struct tagname (statically)
+PASS: gdb.base/opaque.exp: whatis on opaque struct pointer (dynamically)
+PASS: gdb.base/opaque.exp: ptype on opaque struct pointer (dynamically) 1
+PASS: gdb.base/opaque.exp: whatis on opaque struct instance (dynamically) 1
+PASS: gdb.base/opaque.exp: ptype on opaque struct instance (dynamically) 1
+PASS: gdb.base/opaque.exp: ptype on opaque struct tagname (dynamically) 1
+PASS: gdb.base/opaque.exp: whatis on opaque struct pointer (dynamically) 1
+PASS: gdb.base/opaque.exp: ptype on opaque struct pointer (dynamically) 2
+PASS: gdb.base/opaque.exp: whatis on opaque struct instance (dynamically) 2
+PASS: gdb.base/opaque.exp: ptype on opaque struct instance (dynamically) 2
+PASS: gdb.base/opaque.exp: ptype on opaque struct tagname (dynamically) 2
+Running ../../../master/gdb/testsuite/gdb.base/overlays.exp ...
+Running ../../../master/gdb/testsuite/gdb.base/page.exp ...
+PASS: gdb.base/page.exp: set pagination off
+PASS: gdb.base/page.exp: pagination is off
+PASS: gdb.base/page.exp: unpaged help
+PASS: gdb.base/page.exp: set pagination on
+PASS: gdb.base/page.exp: pagination is on
+PASS: gdb.base/page.exp: set height 10
+PASS: gdb.base/page.exp: paged help
+PASS: gdb.base/page.exp: q
+Running ../../../master/gdb/testsuite/gdb.base/pc-fp.exp ...
+PASS: gdb.base/pc-fp.exp: get hexadecimal valueof "$pc"
+PASS: gdb.base/pc-fp.exp: get hexadecimal valueof "$fp"
+PASS: gdb.base/pc-fp.exp: display/i $pc
+PASS: gdb.base/pc-fp.exp: display/w $fp
+Running ../../../master/gdb/testsuite/gdb.base/pending.exp ...
+PASS: gdb.base/pending.exp: set pending breakpoint (without symbols)
+PASS: gdb.base/pending.exp: single pending breakpoint info (without symbols)
+PASS: gdb.base/pending.exp: run to resolved breakpoint 1 (without symbols)
+PASS: gdb.base/pending.exp: set pending breakpoint
+PASS: gdb.base/pending.exp: single pending breakpoint info
+PASS: gdb.base/pending.exp: breakpoint function
+PASS: gdb.base/pending.exp: pending plus real breakpoint info
+PASS: gdb.base/pending.exp: Don't set pending breakpoint
+PASS: gdb.base/pending.exp: condition 1 k == 1
+PASS: gdb.base/pending.exp: pending plus condition
+PASS: gdb.base/pending.exp: disable 1
+PASS: gdb.base/pending.exp: pending disabled
+PASS: gdb.base/pending.exp: Set commands for pending breakpoint
+PASS: gdb.base/pending.exp: pending disabled plus commands
+PASS: gdb.base/pending.exp: Set pending breakpoint 2
+PASS: gdb.base/pending.exp: multiple pending breakpoints
+PASS: gdb.base/pending.exp: Set pending breakpoint 3
+PASS: gdb.base/pending.exp: set ignore count on pending breakpoint 3
+PASS: gdb.base/pending.exp: multiple pending breakpoints 2
+PASS: gdb.base/pending.exp: running to main
+PASS: gdb.base/pending.exp: re-enabling pending breakpoint that can resolve instantly
+PASS: gdb.base/pending.exp: continue to resolved breakpoint 2
+PASS: gdb.base/pending.exp: continue to resolved breakpoint 1
+PASS: gdb.base/pending.exp: Disable other breakpoints
+PASS: gdb.base/pending.exp: Disable other breakpoints
+PASS: gdb.base/pending.exp: continue to resolved breakpoint 3
+PASS: gdb.base/pending.exp: set imaginary pending breakpoint
+PASS: gdb.base/pending.exp: rerun to main
+PASS: gdb.base/pending.exp: verify pending breakpoint after restart
+Running ../../../master/gdb/testsuite/gdb.base/permissions.exp ...
+PASS: gdb.base/permissions.exp: show may-write-registers
+PASS: gdb.base/permissions.exp: show may-write-memory
+PASS: gdb.base/permissions.exp: show may-insert-breakpoints
+PASS: gdb.base/permissions.exp: show may-insert-tracepoints
+PASS: gdb.base/permissions.exp: show may-insert-fast-tracepoints
+PASS: gdb.base/permissions.exp: show may-interrupt
+PASS: gdb.base/permissions.exp: enable observer mode
+PASS: gdb.base/permissions.exp: show may-write-memory
+PASS: gdb.base/permissions.exp: show may-write-registers
+PASS: gdb.base/permissions.exp: show may-insert-breakpoints
+PASS: gdb.base/permissions.exp: show may-insert-tracepoints
+PASS: gdb.base/permissions.exp: show may-insert-fast-tracepoints
+PASS: gdb.base/permissions.exp: show may-interrupt
+PASS: gdb.base/permissions.exp: disable observer mode
+PASS: gdb.base/permissions.exp: set non-stop off
+PASS: gdb.base/permissions.exp: set a global
+PASS: gdb.base/permissions.exp: print x
+PASS: gdb.base/permissions.exp: set may-write-memory off
+PASS: gdb.base/permissions.exp: try to set a global
+PASS: gdb.base/permissions.exp: print x
+Running ../../../master/gdb/testsuite/gdb.base/pie-execl.exp ...
+PASS: gdb.base/pie-execl.exp: set args OBJDIR/gdb.base/pie-execl2
+PASS: gdb.base/pie-execl.exp: pie_execl_marker address first
+PASS: gdb.base/pie-execl.exp: continue
+PASS: gdb.base/pie-execl.exp: pie_execl_marker address second
+PASS: gdb.base/pie-execl.exp: pie_execl_marker address has changed
+Running ../../../master/gdb/testsuite/gdb.base/pointers.exp ...
+PASS: gdb.base/pointers.exp: continuing after dummy()
+PASS: gdb.base/pointers.exp: set pointer to beginning of array
+PASS: gdb.base/pointers.exp: set pointer to end of array
+PASS: gdb.base/pointers.exp: print object pointed to
+PASS: gdb.base/pointers.exp: print object pointed to #2
+PASS: gdb.base/pointers.exp: pointer1==pointer2
+PASS: gdb.base/pointers.exp: pointer1!=pointer2
+PASS: gdb.base/pointers.exp: pointer1<=pointer2
+PASS: gdb.base/pointers.exp: pointer1>=pointer2
+PASS: gdb.base/pointers.exp: pointer1<pointer2
+PASS: gdb.base/pointers.exp: pointer1>pointer2
+PASS: gdb.base/pointers.exp: set y = *v_int_pointer++
+PASS: gdb.base/pointers.exp: pointer assignment
+PASS: gdb.base/pointers.exp: and post-increment
+PASS: gdb.base/pointers.exp: set y = *--v_int_pointer2
+PASS: gdb.base/pointers.exp: pointer assignment
+PASS: gdb.base/pointers.exp: and pre-decrement
+PASS: gdb.base/pointers.exp: set y =v_int_pointer-v_int_pointer2
+PASS: gdb.base/pointers.exp: pointer1-pointer2
+PASS: gdb.base/pointers.exp: set v_int_pointer=v_int_array
+PASS: gdb.base/pointers.exp: print array element through pointer
+PASS: gdb.base/pointers.exp: print array element through pointer #2
+PASS: gdb.base/pointers.exp: print array element through pointer #3
+PASS: gdb.base/pointers.exp: print array element through pointer #4
+PASS: gdb.base/pointers.exp: print array element through pointer #5
+PASS: gdb.base/pointers.exp: increment rptr
+PASS: gdb.base/pointers.exp: print array element through pointer #6
+PASS: gdb.base/pointers.exp: print array element through pointer #7
+PASS: gdb.base/pointers.exp: print array element through pointer #8
+PASS: gdb.base/pointers.exp: print array element w/ pointer arithmetic
+PASS: gdb.base/pointers.exp: print through ptr to ptr
+PASS: gdb.base/pointers.exp: continue
+PASS: gdb.base/pointers.exp: up from marker1
+PASS: gdb.base/pointers.exp: print value of *pUC
+PASS: gdb.base/pointers.exp: ptype pUC
+PASS: gdb.base/pointers.exp: print value of *pS
+PASS: gdb.base/pointers.exp: ptype pS
+PASS: gdb.base/pointers.exp: print value of *pUS
+PASS: gdb.base/pointers.exp: ptype pUS
+PASS: gdb.base/pointers.exp: print value of *pI
+PASS: gdb.base/pointers.exp: ptype pI
+PASS: gdb.base/pointers.exp: print value of *pUI
+PASS: gdb.base/pointers.exp: ptype pUI
+PASS: gdb.base/pointers.exp: print value of *pL
+PASS: gdb.base/pointers.exp: ptype pL
+PASS: gdb.base/pointers.exp: print value of *pUL
+PASS: gdb.base/pointers.exp: ptype pUL
+PASS: gdb.base/pointers.exp: print value of *pF
+PASS: gdb.base/pointers.exp: ptype pF
+PASS: gdb.base/pointers.exp: print value of *pD
+PASS: gdb.base/pointers.exp: ptype pD
+PASS: gdb.base/pointers.exp: print value of ******ppppppC
+PASS: gdb.base/pointers.exp: ptype pC
+PASS: gdb.base/pointers.exp: ptype ppC
+PASS: gdb.base/pointers.exp: ptype pppC
+PASS: gdb.base/pointers.exp: ptype ppppC
+PASS: gdb.base/pointers.exp: ptype pppppC
+PASS: gdb.base/pointers.exp: ptype ppppppC
+PASS: gdb.base/pointers.exp: p instance.array_variable + 0
+Running ../../../master/gdb/testsuite/gdb.base/pr10179.exp ...
+PASS: gdb.base/pr10179.exp: rbreak foo.*
+PASS: gdb.base/pr10179.exp: rbreak pr10179-a.c:foo.*
+PASS: gdb.base/pr10179.exp: rbreak pr10179-a.c : .*
+Running ../../../master/gdb/testsuite/gdb.base/pr11022.exp ...
+PASS: gdb.base/pr11022.exp: set breakpoint
+PASS: gdb.base/pr11022.exp: set watchpoint
+PASS: gdb.base/pr11022.exp: breakpoint hit
+PASS: gdb.base/pr11022.exp: watchpoint hit
+PASS: gdb.base/pr11022.exp: breakpoint hit 2
+PASS: gdb.base/pr11022.exp: set var x = 1
+PASS: gdb.base/pr11022.exp: watchpoint hit 2
+Running ../../../master/gdb/testsuite/gdb.base/prelink.exp ...
+PASS: gdb.base/prelink.exp: ldd prelinkt
+PASS: gdb.base/prelink.exp: ldd prelinkt output contains libs
+PASS: gdb.base/prelink.exp: copy ld-2.13.so to ld-linux.so.2
+PASS: gdb.base/prelink.exp: copy prelink.so to prelink.so
+PASS: gdb.base/prelink.exp: copy libm-2.13.so to libm.so.6
+PASS: gdb.base/prelink.exp: copy libc-2.13.so to libc.so.6
+PASS: gdb.base/prelink.exp: split debug of executable
+PASS: gdb.base/prelink.exp: unprelink libc.so.6 pre-unprelink (missing /usr/sbin/prelink)
+XFAIL: gdb.base/prelink.exp: prelink libc.so.6 (missing /usr/sbin/prelink)
+Running ../../../master/gdb/testsuite/gdb.base/printcmds.exp ...
+PASS: gdb.base/printcmds.exp: print $pc
+PASS: gdb.base/printcmds.exp: print "abc"
+PASS: gdb.base/printcmds.exp: print sizeof ("abc")
+PASS: gdb.base/printcmds.exp: ptype "abc"
+PASS: gdb.base/printcmds.exp: print $cvar = "abc"
+PASS: gdb.base/printcmds.exp: print sizeof ($cvar)
+PASS: gdb.base/printcmds.exp: print $pc (with file)
+PASS: gdb.base/printcmds.exp: set print sevenbit-strings
+PASS: gdb.base/printcmds.exp: set print address off
+PASS: gdb.base/printcmds.exp: set width 0
+PASS: gdb.base/printcmds.exp: p ctable1[120] #1
+PASS: gdb.base/printcmds.exp: p 123
+PASS: gdb.base/printcmds.exp: p -123
+PASS: gdb.base/printcmds.exp: p/d 123
+PASS: gdb.base/printcmds.exp: p 0123
+PASS: gdb.base/printcmds.exp: p 00123
+PASS: gdb.base/printcmds.exp: p -0123
+PASS: gdb.base/printcmds.exp: p/o 0123
+PASS: gdb.base/printcmds.exp: p 0x123
+PASS: gdb.base/printcmds.exp: p -0x123
+PASS: gdb.base/printcmds.exp: p 0x0123
+PASS: gdb.base/printcmds.exp: p -0x0123
+PASS: gdb.base/printcmds.exp: p 0xABCDEF
+PASS: gdb.base/printcmds.exp: p 0xabcdef
+PASS: gdb.base/printcmds.exp: p 0xAbCdEf
+PASS: gdb.base/printcmds.exp: p/x 0x123
+PASS: gdb.base/printcmds.exp: p 0b0
+PASS: gdb.base/printcmds.exp: p 0b1111
+PASS: gdb.base/printcmds.exp: p 0B1111
+PASS: gdb.base/printcmds.exp: p -0b1111
+PASS: gdb.base/printcmds.exp: reject p 0x
+PASS: gdb.base/printcmds.exp: reject p 0b
+PASS: gdb.base/printcmds.exp: p ''
+PASS: gdb.base/printcmds.exp: p '''
+PASS: gdb.base/printcmds.exp: reject p '\'
+PASS: gdb.base/printcmds.exp: reject p '\\\'
+PASS: gdb.base/printcmds.exp: reject p DEADBEEF
+PASS: gdb.base/printcmds.exp: reject p 09
+PASS: gdb.base/printcmds.exp: reject p 079
+PASS: gdb.base/printcmds.exp: reject p 0xG
+PASS: gdb.base/printcmds.exp: reject p 0xAG
+PASS: gdb.base/printcmds.exp: reject p 0b2
+PASS: gdb.base/printcmds.exp: reject p 0b12
+PASS: gdb.base/printcmds.exp: check for floating addition
+PASS: gdb.base/printcmds.exp: p 1.
+PASS: gdb.base/printcmds.exp: p 1.5
+PASS: gdb.base/printcmds.exp: p 1.f
+PASS: gdb.base/printcmds.exp: p 1.5f
+PASS: gdb.base/printcmds.exp: p 1.l
+PASS: gdb.base/printcmds.exp: p 1.5l
+PASS: gdb.base/printcmds.exp: p 0x1.1
+PASS: gdb.base/printcmds.exp: reject p 123DEADBEEF
+PASS: gdb.base/printcmds.exp: reject p 123foobar.bazfoo3
+PASS: gdb.base/printcmds.exp: reject p 123EEEEEEEEEEEEEEEEE33333k333
+PASS: gdb.base/printcmds.exp: reject p 1.1x
+PASS: gdb.base/printcmds.exp: reject p 1.1ff
+PASS: gdb.base/printcmds.exp: reject p 1.1ll
+PASS: gdb.base/printcmds.exp: p 'a'
+PASS: gdb.base/printcmds.exp: p/c 'a'
+PASS: gdb.base/printcmds.exp: p/x 'a'
+PASS: gdb.base/printcmds.exp: p/d 'a'
+PASS: gdb.base/printcmds.exp: p/t 'a'
+PASS: gdb.base/printcmds.exp: p '\141'
+PASS: gdb.base/printcmds.exp: p/x '\377'
+PASS: gdb.base/printcmds.exp: p '\''
+PASS: gdb.base/printcmds.exp: p '\\'
+PASS: gdb.base/printcmds.exp: p ctable1[0]
+PASS: gdb.base/printcmds.exp: p ctable1[1]
+PASS: gdb.base/printcmds.exp: p ctable1[2]
+PASS: gdb.base/printcmds.exp: p ctable1[3]
+PASS: gdb.base/printcmds.exp: p ctable1[4]
+PASS: gdb.base/printcmds.exp: p ctable1[5]
+PASS: gdb.base/printcmds.exp: p ctable1[6]
+PASS: gdb.base/printcmds.exp: p ctable1[7]
+PASS: gdb.base/printcmds.exp: p ctable1[8]
+PASS: gdb.base/printcmds.exp: p ctable1[9]
+PASS: gdb.base/printcmds.exp: p ctable1[10]
+PASS: gdb.base/printcmds.exp: p ctable1[11]
+PASS: gdb.base/printcmds.exp: p ctable1[12]
+PASS: gdb.base/printcmds.exp: p ctable1[13]
+PASS: gdb.base/printcmds.exp: p ctable1[14]
+PASS: gdb.base/printcmds.exp: p ctable1[15]
+PASS: gdb.base/printcmds.exp: p ctable1[16]
+PASS: gdb.base/printcmds.exp: p ctable1[17]
+PASS: gdb.base/printcmds.exp: p ctable1[18]
+PASS: gdb.base/printcmds.exp: p ctable1[19]
+PASS: gdb.base/printcmds.exp: p ctable1[20]
+PASS: gdb.base/printcmds.exp: p ctable1[21]
+PASS: gdb.base/printcmds.exp: p ctable1[22]
+PASS: gdb.base/printcmds.exp: p ctable1[23]
+PASS: gdb.base/printcmds.exp: p ctable1[24]
+PASS: gdb.base/printcmds.exp: p ctable1[25]
+PASS: gdb.base/printcmds.exp: p ctable1[26]
+PASS: gdb.base/printcmds.exp: p ctable1[27]
+PASS: gdb.base/printcmds.exp: p ctable1[28]
+PASS: gdb.base/printcmds.exp: p ctable1[29]
+PASS: gdb.base/printcmds.exp: p ctable1[30]
+PASS: gdb.base/printcmds.exp: p ctable1[31]
+PASS: gdb.base/printcmds.exp: p ctable1[32]
+PASS: gdb.base/printcmds.exp: p ctable1[33]
+PASS: gdb.base/printcmds.exp: p ctable1[34]
+PASS: gdb.base/printcmds.exp: p ctable1[35]
+PASS: gdb.base/printcmds.exp: p ctable1[36]
+PASS: gdb.base/printcmds.exp: p ctable1[37]
+PASS: gdb.base/printcmds.exp: p ctable1[38]
+PASS: gdb.base/printcmds.exp: p ctable1[39]
+PASS: gdb.base/printcmds.exp: p ctable1[40]
+PASS: gdb.base/printcmds.exp: p ctable1[41]
+PASS: gdb.base/printcmds.exp: p ctable1[42]
+PASS: gdb.base/printcmds.exp: p ctable1[43]
+PASS: gdb.base/printcmds.exp: p ctable1[44]
+PASS: gdb.base/printcmds.exp: p ctable1[45]
+PASS: gdb.base/printcmds.exp: p ctable1[46]
+PASS: gdb.base/printcmds.exp: p ctable1[47]
+PASS: gdb.base/printcmds.exp: p ctable1[48]
+PASS: gdb.base/printcmds.exp: p ctable1[49]
+PASS: gdb.base/printcmds.exp: p ctable1[50]
+PASS: gdb.base/printcmds.exp: p ctable1[51]
+PASS: gdb.base/printcmds.exp: p ctable1[52]
+PASS: gdb.base/printcmds.exp: p ctable1[53]
+PASS: gdb.base/printcmds.exp: p ctable1[54]
+PASS: gdb.base/printcmds.exp: p ctable1[55]
+PASS: gdb.base/printcmds.exp: p ctable1[56]
+PASS: gdb.base/printcmds.exp: p ctable1[57]
+PASS: gdb.base/printcmds.exp: p ctable1[58]
+PASS: gdb.base/printcmds.exp: p ctable1[59]
+PASS: gdb.base/printcmds.exp: p ctable1[60]
+PASS: gdb.base/printcmds.exp: p ctable1[61]
+PASS: gdb.base/printcmds.exp: p ctable1[62]
+PASS: gdb.base/printcmds.exp: p ctable1[63]
+PASS: gdb.base/printcmds.exp: p ctable1[64]
+PASS: gdb.base/printcmds.exp: p ctable1[65]
+PASS: gdb.base/printcmds.exp: p ctable1[66]
+PASS: gdb.base/printcmds.exp: p ctable1[67]
+PASS: gdb.base/printcmds.exp: p ctable1[68]
+PASS: gdb.base/printcmds.exp: p ctable1[69]
+PASS: gdb.base/printcmds.exp: p ctable1[70]
+PASS: gdb.base/printcmds.exp: p ctable1[71]
+PASS: gdb.base/printcmds.exp: p ctable1[72]
+PASS: gdb.base/printcmds.exp: p ctable1[73]
+PASS: gdb.base/printcmds.exp: p ctable1[74]
+PASS: gdb.base/printcmds.exp: p ctable1[75]
+PASS: gdb.base/printcmds.exp: p ctable1[76]
+PASS: gdb.base/printcmds.exp: p ctable1[77]
+PASS: gdb.base/printcmds.exp: p ctable1[78]
+PASS: gdb.base/printcmds.exp: p ctable1[79]
+PASS: gdb.base/printcmds.exp: p ctable1[80]
+PASS: gdb.base/printcmds.exp: p ctable1[81]
+PASS: gdb.base/printcmds.exp: p ctable1[82]
+PASS: gdb.base/printcmds.exp: p ctable1[83]
+PASS: gdb.base/printcmds.exp: p ctable1[84]
+PASS: gdb.base/printcmds.exp: p ctable1[85]
+PASS: gdb.base/printcmds.exp: p ctable1[86]
+PASS: gdb.base/printcmds.exp: p ctable1[87]
+PASS: gdb.base/printcmds.exp: p ctable1[88]
+PASS: gdb.base/printcmds.exp: p ctable1[89]
+PASS: gdb.base/printcmds.exp: p ctable1[90]
+PASS: gdb.base/printcmds.exp: p ctable1[91]
+PASS: gdb.base/printcmds.exp: p ctable1[92]
+PASS: gdb.base/printcmds.exp: p ctable1[93]
+PASS: gdb.base/printcmds.exp: p ctable1[94]
+PASS: gdb.base/printcmds.exp: p ctable1[95]
+PASS: gdb.base/printcmds.exp: p ctable1[96]
+PASS: gdb.base/printcmds.exp: p ctable1[97]
+PASS: gdb.base/printcmds.exp: p ctable1[98]
+PASS: gdb.base/printcmds.exp: p ctable1[99]
+PASS: gdb.base/printcmds.exp: p ctable1[100]
+PASS: gdb.base/printcmds.exp: p ctable1[101]
+PASS: gdb.base/printcmds.exp: p ctable1[102]
+PASS: gdb.base/printcmds.exp: p ctable1[103]
+PASS: gdb.base/printcmds.exp: p ctable1[104]
+PASS: gdb.base/printcmds.exp: p ctable1[105]
+PASS: gdb.base/printcmds.exp: p ctable1[106]
+PASS: gdb.base/printcmds.exp: p ctable1[107]
+PASS: gdb.base/printcmds.exp: p ctable1[108]
+PASS: gdb.base/printcmds.exp: p ctable1[109]
+PASS: gdb.base/printcmds.exp: p ctable1[110]
+PASS: gdb.base/printcmds.exp: p ctable1[111]
+PASS: gdb.base/printcmds.exp: p ctable1[112]
+PASS: gdb.base/printcmds.exp: p ctable1[113]
+PASS: gdb.base/printcmds.exp: p ctable1[114]
+PASS: gdb.base/printcmds.exp: p ctable1[115]
+PASS: gdb.base/printcmds.exp: p ctable1[116]
+PASS: gdb.base/printcmds.exp: p ctable1[117]
+PASS: gdb.base/printcmds.exp: p ctable1[118]
+PASS: gdb.base/printcmds.exp: p ctable1[119]
+PASS: gdb.base/printcmds.exp: p ctable1[120]
+PASS: gdb.base/printcmds.exp: p ctable1[121]
+PASS: gdb.base/printcmds.exp: p ctable1[122]
+PASS: gdb.base/printcmds.exp: p ctable1[123]
+PASS: gdb.base/printcmds.exp: p ctable1[124]
+PASS: gdb.base/printcmds.exp: p ctable1[125]
+PASS: gdb.base/printcmds.exp: p ctable1[126]
+PASS: gdb.base/printcmds.exp: p ctable1[127]
+PASS: gdb.base/printcmds.exp: p ctable1[128]
+PASS: gdb.base/printcmds.exp: p ctable1[129]
+PASS: gdb.base/printcmds.exp: p ctable1[130]
+PASS: gdb.base/printcmds.exp: p ctable1[131]
+PASS: gdb.base/printcmds.exp: p ctable1[132]
+PASS: gdb.base/printcmds.exp: p ctable1[133]
+PASS: gdb.base/printcmds.exp: p ctable1[134]
+PASS: gdb.base/printcmds.exp: p ctable1[135]
+PASS: gdb.base/printcmds.exp: p ctable1[136]
+PASS: gdb.base/printcmds.exp: p ctable1[137]
+PASS: gdb.base/printcmds.exp: p ctable1[138]
+PASS: gdb.base/printcmds.exp: p ctable1[139]
+PASS: gdb.base/printcmds.exp: p ctable1[140]
+PASS: gdb.base/printcmds.exp: p ctable1[141]
+PASS: gdb.base/printcmds.exp: p ctable1[142]
+PASS: gdb.base/printcmds.exp: p ctable1[143]
+PASS: gdb.base/printcmds.exp: p ctable1[144]
+PASS: gdb.base/printcmds.exp: p ctable1[145]
+PASS: gdb.base/printcmds.exp: p ctable1[146]
+PASS: gdb.base/printcmds.exp: p ctable1[147]
+PASS: gdb.base/printcmds.exp: p ctable1[148]
+PASS: gdb.base/printcmds.exp: p ctable1[149]
+PASS: gdb.base/printcmds.exp: p ctable1[150]
+PASS: gdb.base/printcmds.exp: p ctable1[151]
+PASS: gdb.base/printcmds.exp: p ctable1[152]
+PASS: gdb.base/printcmds.exp: p ctable1[153]
+PASS: gdb.base/printcmds.exp: p ctable1[154]
+PASS: gdb.base/printcmds.exp: p ctable1[155]
+PASS: gdb.base/printcmds.exp: p ctable1[156]
+PASS: gdb.base/printcmds.exp: p ctable1[157]
+PASS: gdb.base/printcmds.exp: p ctable1[158]
+PASS: gdb.base/printcmds.exp: p ctable1[159]
+PASS: gdb.base/printcmds.exp: p ctable1[160]
+PASS: gdb.base/printcmds.exp: p ctable1[161]
+PASS: gdb.base/printcmds.exp: p ctable1[162]
+PASS: gdb.base/printcmds.exp: p ctable1[163]
+PASS: gdb.base/printcmds.exp: p ctable1[164]
+PASS: gdb.base/printcmds.exp: p ctable1[165]
+PASS: gdb.base/printcmds.exp: p ctable1[166]
+PASS: gdb.base/printcmds.exp: p ctable1[167]
+PASS: gdb.base/printcmds.exp: p ctable1[168]
+PASS: gdb.base/printcmds.exp: p ctable1[169]
+PASS: gdb.base/printcmds.exp: p ctable1[170]
+PASS: gdb.base/printcmds.exp: p ctable1[171]
+PASS: gdb.base/printcmds.exp: p ctable1[172]
+PASS: gdb.base/printcmds.exp: p ctable1[173]
+PASS: gdb.base/printcmds.exp: p ctable1[174]
+PASS: gdb.base/printcmds.exp: p ctable1[175]
+PASS: gdb.base/printcmds.exp: p ctable1[176]
+PASS: gdb.base/printcmds.exp: p ctable1[177]
+PASS: gdb.base/printcmds.exp: p ctable1[178]
+PASS: gdb.base/printcmds.exp: p ctable1[179]
+PASS: gdb.base/printcmds.exp: p ctable1[180]
+PASS: gdb.base/printcmds.exp: p ctable1[181]
+PASS: gdb.base/printcmds.exp: p ctable1[182]
+PASS: gdb.base/printcmds.exp: p ctable1[183]
+PASS: gdb.base/printcmds.exp: p ctable1[184]
+PASS: gdb.base/printcmds.exp: p ctable1[185]
+PASS: gdb.base/printcmds.exp: p ctable1[186]
+PASS: gdb.base/printcmds.exp: p ctable1[187]
+PASS: gdb.base/printcmds.exp: p ctable1[188]
+PASS: gdb.base/printcmds.exp: p ctable1[189]
+PASS: gdb.base/printcmds.exp: p ctable1[190]
+PASS: gdb.base/printcmds.exp: p ctable1[191]
+PASS: gdb.base/printcmds.exp: p ctable1[192]
+PASS: gdb.base/printcmds.exp: p ctable1[193]
+PASS: gdb.base/printcmds.exp: p ctable1[194]
+PASS: gdb.base/printcmds.exp: p ctable1[195]
+PASS: gdb.base/printcmds.exp: p ctable1[196]
+PASS: gdb.base/printcmds.exp: p ctable1[197]
+PASS: gdb.base/printcmds.exp: p ctable1[198]
+PASS: gdb.base/printcmds.exp: p ctable1[199]
+PASS: gdb.base/printcmds.exp: p ctable1[200]
+PASS: gdb.base/printcmds.exp: p ctable1[201]
+PASS: gdb.base/printcmds.exp: p ctable1[202]
+PASS: gdb.base/printcmds.exp: p ctable1[203]
+PASS: gdb.base/printcmds.exp: p ctable1[204]
+PASS: gdb.base/printcmds.exp: p ctable1[205]
+PASS: gdb.base/printcmds.exp: p ctable1[206]
+PASS: gdb.base/printcmds.exp: p ctable1[207]
+PASS: gdb.base/printcmds.exp: p ctable1[208]
+PASS: gdb.base/printcmds.exp: p ctable1[209]
+PASS: gdb.base/printcmds.exp: p ctable1[210]
+PASS: gdb.base/printcmds.exp: p ctable1[211]
+PASS: gdb.base/printcmds.exp: p ctable1[212]
+PASS: gdb.base/printcmds.exp: p ctable1[213]
+PASS: gdb.base/printcmds.exp: p ctable1[214]
+PASS: gdb.base/printcmds.exp: p ctable1[215]
+PASS: gdb.base/printcmds.exp: p ctable1[216]
+PASS: gdb.base/printcmds.exp: p ctable1[217]
+PASS: gdb.base/printcmds.exp: p ctable1[218]
+PASS: gdb.base/printcmds.exp: p ctable1[219]
+PASS: gdb.base/printcmds.exp: p ctable1[220]
+PASS: gdb.base/printcmds.exp: p ctable1[221]
+PASS: gdb.base/printcmds.exp: p ctable1[222]
+PASS: gdb.base/printcmds.exp: p ctable1[223]
+PASS: gdb.base/printcmds.exp: p ctable1[224]
+PASS: gdb.base/printcmds.exp: p ctable1[225]
+PASS: gdb.base/printcmds.exp: p ctable1[226]
+PASS: gdb.base/printcmds.exp: p ctable1[227]
+PASS: gdb.base/printcmds.exp: p ctable1[228]
+PASS: gdb.base/printcmds.exp: p ctable1[229]
+PASS: gdb.base/printcmds.exp: p ctable1[230]
+PASS: gdb.base/printcmds.exp: p ctable1[231]
+PASS: gdb.base/printcmds.exp: p ctable1[232]
+PASS: gdb.base/printcmds.exp: p ctable1[233]
+PASS: gdb.base/printcmds.exp: p ctable1[234]
+PASS: gdb.base/printcmds.exp: p ctable1[235]
+PASS: gdb.base/printcmds.exp: p ctable1[236]
+PASS: gdb.base/printcmds.exp: p ctable1[237]
+PASS: gdb.base/printcmds.exp: p ctable1[238]
+PASS: gdb.base/printcmds.exp: p ctable1[239]
+PASS: gdb.base/printcmds.exp: p ctable1[240]
+PASS: gdb.base/printcmds.exp: p ctable1[241]
+PASS: gdb.base/printcmds.exp: p ctable1[242]
+PASS: gdb.base/printcmds.exp: p ctable1[243]
+PASS: gdb.base/printcmds.exp: p ctable1[244]
+PASS: gdb.base/printcmds.exp: p ctable1[245]
+PASS: gdb.base/printcmds.exp: p ctable1[246]
+PASS: gdb.base/printcmds.exp: p ctable1[247]
+PASS: gdb.base/printcmds.exp: p ctable1[248]
+PASS: gdb.base/printcmds.exp: p ctable1[249]
+PASS: gdb.base/printcmds.exp: p ctable1[250]
+PASS: gdb.base/printcmds.exp: p ctable1[251]
+PASS: gdb.base/printcmds.exp: p ctable1[252]
+PASS: gdb.base/printcmds.exp: p ctable1[253]
+PASS: gdb.base/printcmds.exp: p ctable1[254]
+PASS: gdb.base/printcmds.exp: p ctable1[255]
+PASS: gdb.base/printcmds.exp: set print elements 1
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 1
+PASS: gdb.base/printcmds.exp: set print elements 2
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 2
+PASS: gdb.base/printcmds.exp: set print elements 3
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 3
+PASS: gdb.base/printcmds.exp: set print elements 4
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 4
+PASS: gdb.base/printcmds.exp: set print elements 5
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 5
+PASS: gdb.base/printcmds.exp: set print elements 6
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 6
+PASS: gdb.base/printcmds.exp: set print elements 7
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 7
+PASS: gdb.base/printcmds.exp: set print elements 8
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 8
+PASS: gdb.base/printcmds.exp: set print elements 9
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 9
+PASS: gdb.base/printcmds.exp: set print elements 10
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 10
+PASS: gdb.base/printcmds.exp: set print elements 11
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 11
+PASS: gdb.base/printcmds.exp: set print elements 12
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 12
+PASS: gdb.base/printcmds.exp: set print elements 13
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 13
+PASS: gdb.base/printcmds.exp: set print elements 14
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 14
+PASS: gdb.base/printcmds.exp: set print elements 15
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 15
+PASS: gdb.base/printcmds.exp: set print elements 16
+PASS: gdb.base/printcmds.exp: p &ctable2[0*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[1*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[2*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[3*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[4*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[5*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[6*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[7*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[8*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[9*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[10*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[11*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[12*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[13*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[14*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: p &ctable2[15*16] with print elements set to 16
+PASS: gdb.base/printcmds.exp: correct element repeats in array embedded at offset > 0
+PASS: gdb.base/printcmds.exp: set print elements 0
+PASS: gdb.base/printcmds.exp: p teststring with elements set to 0
+PASS: gdb.base/printcmds.exp: set print elements 1
+PASS: gdb.base/printcmds.exp: p teststring with elements set to 1
+PASS: gdb.base/printcmds.exp: set print elements 5
+PASS: gdb.base/printcmds.exp: p teststring with elements set to 5
+PASS: gdb.base/printcmds.exp: set print elements 19
+PASS: gdb.base/printcmds.exp: p teststring with elements set to 19
+PASS: gdb.base/printcmds.exp: set print elements 20
+PASS: gdb.base/printcmds.exp: p teststring with elements set to 20
+PASS: gdb.base/printcmds.exp: set print elements 8
+PASS: gdb.base/printcmds.exp: p &ctable1[0]
+PASS: gdb.base/printcmds.exp: p &ctable1[1]
+PASS: gdb.base/printcmds.exp: p &ctable1[1*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[2*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[3*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[4*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[5*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[6*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[7*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[8*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[9*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[10*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[11*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[12*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[13*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[14*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[15*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[16*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[17*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[18*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[19*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[20*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[21*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[22*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[23*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[24*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[25*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[26*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[27*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[28*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[29*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[30*8]
+PASS: gdb.base/printcmds.exp: p &ctable1[31*8]
+PASS: gdb.base/printcmds.exp: set print elements 24
+PASS: gdb.base/printcmds.exp: set print elements 24
+PASS: gdb.base/printcmds.exp: p a1[0]
+PASS: gdb.base/printcmds.exp: p a1[9]
+PASS: gdb.base/printcmds.exp: p a2
+PASS: gdb.base/printcmds.exp: p a2[0]
+PASS: gdb.base/printcmds.exp: p a2[3]
+PASS: gdb.base/printcmds.exp: set print null-stop on
+PASS: gdb.base/printcmds.exp: print a2 with null-stop on
+PASS: gdb.base/printcmds.exp: set print null-stop off
+PASS: gdb.base/printcmds.exp: p int1dim[0]@2
+PASS: gdb.base/printcmds.exp: p int1dim[0]@2@3
+PASS: gdb.base/printcmds.exp: set print elements 24
+PASS: gdb.base/printcmds.exp: set print address on
+PASS: gdb.base/printcmds.exp: p arrays
+PASS: gdb.base/printcmds.exp: p parrays
+PASS: gdb.base/printcmds.exp: p parrays->array1
+PASS: gdb.base/printcmds.exp: p &parrays->array1
+PASS: gdb.base/printcmds.exp: p parrays->array2
+PASS: gdb.base/printcmds.exp: p &parrays->array2
+PASS: gdb.base/printcmds.exp: p parrays->array3
+PASS: gdb.base/printcmds.exp: p &parrays->array3
+PASS: gdb.base/printcmds.exp: p parrays->array4
+PASS: gdb.base/printcmds.exp: p &parrays->array4
+PASS: gdb.base/printcmds.exp: p parrays->array5
+PASS: gdb.base/printcmds.exp: p &parrays->array5
+PASS: gdb.base/printcmds.exp: set print address off
+PASS: gdb.base/printcmds.exp: set print elements 50
+PASS: gdb.base/printcmds.exp: p "a string"
+PASS: gdb.base/printcmds.exp: p "embedded \000 null"
+PASS: gdb.base/printcmds.exp: p "abcd"[2]
+PASS: gdb.base/printcmds.exp: p sizeof ("abcdef")
+PASS: gdb.base/printcmds.exp: ptype "foo"
+PASS: gdb.base/printcmds.exp: p *"foo"
+PASS: gdb.base/printcmds.exp: ptype *"foo"
+PASS: gdb.base/printcmds.exp: p &*"foo"
+PASS: gdb.base/printcmds.exp: ptype &*"foo"
+PASS: gdb.base/printcmds.exp: p (char *)"foo"
+PASS: gdb.base/printcmds.exp: print {'a','b','c'}
+PASS: gdb.base/printcmds.exp: print {4,5,6}[2]
+PASS: gdb.base/printcmds.exp: print *&{4,5,6}[1]
+PASS: gdb.base/printcmds.exp: print some_volatile_enum
+PASS: gdb.base/printcmds.exp: printf "x=%d,y=%d,z=%d\n", 5, 6, 7
+PASS: gdb.base/printcmds.exp: printf "string=%.4sxx\n", teststring
+PASS: gdb.base/printcmds.exp: printf "string=%sxx\n", teststring
+PASS: gdb.base/printcmds.exp: printf "%f is fun\n", 1.0
+PASS: gdb.base/printcmds.exp: printf "x=%d,y=%f,z=%d\n", 5, 6.0, 7
+PASS: gdb.base/printcmds.exp: printf "%x %f, %c %x, %x, %f\n", 0xbad, -99.541, 'z', 0xfeedface, 0xdeadbeef, 5.0
+PASS: gdb.base/printcmds.exp: printf "%c\n", "x"[1,0]
+PASS: gdb.base/printcmds.exp: printf "%%%d%%\n", 5
+PASS: gdb.base/printcmds.exp: printf "%Hf\n",1.2df
+PASS: gdb.base/printcmds.exp: printf "%Hf\n",-1.2df
+PASS: gdb.base/printcmds.exp: printf "%Hf\n",1.234567df
+PASS: gdb.base/printcmds.exp: printf "%Hf\n",-1.234567df
+PASS: gdb.base/printcmds.exp: printf "%Hf\n",1234567.df
+PASS: gdb.base/printcmds.exp: printf "%Hf\n",-1234567.df
+PASS: gdb.base/printcmds.exp: printf "%Hf\n",1.2E1df
+PASS: gdb.base/printcmds.exp: printf "%Hf\n",1.2E10df
+PASS: gdb.base/printcmds.exp: printf "%Hf\n",1.2E-10df
+PASS: gdb.base/printcmds.exp: printf "%Hf\n",1.2E96df
+PASS: gdb.base/printcmds.exp: printf "%Df\n",1.2dd
+PASS: gdb.base/printcmds.exp: printf "%Df\n",-1.2dd
+PASS: gdb.base/printcmds.exp: printf "%Df\n",1.234567890123456dd
+PASS: gdb.base/printcmds.exp: printf "%Df\n",-1.234567890123456dd
+PASS: gdb.base/printcmds.exp: printf "%Df\n",1234567890123456.dd
+PASS: gdb.base/printcmds.exp: printf "%Df\n",-1234567890123456.dd
+PASS: gdb.base/printcmds.exp: printf "%Df\n",1.2E1dd
+PASS: gdb.base/printcmds.exp: printf "%Df\n",1.2E10dd
+PASS: gdb.base/printcmds.exp: printf "%Df\n",1.2E-10dd
+PASS: gdb.base/printcmds.exp: printf "%Df\n",1.2E384dd
+PASS: gdb.base/printcmds.exp: printf "%DDf\n",1.2dl
+PASS: gdb.base/printcmds.exp: printf "%DDf\n",-1.2dl
+PASS: gdb.base/printcmds.exp: printf "%DDf\n",1.234567890123456789012345678901234dl
+PASS: gdb.base/printcmds.exp: printf "%DDf\n",-1.234567890123456789012345678901234dl
+PASS: gdb.base/printcmds.exp: printf "%DDf\n",1234567890123456789012345678901234.dl
+PASS: gdb.base/printcmds.exp: printf "%DDf\n",-1234567890123456789012345678901234.dl
+PASS: gdb.base/printcmds.exp: printf "%DDf\n",1.2E1dl
+PASS: gdb.base/printcmds.exp: printf "%DDf\n",1.2E10dl
+PASS: gdb.base/printcmds.exp: printf "%DDf\n",1.2E-10dl
+PASS: gdb.base/printcmds.exp: printf "%DDf\n",1.2E6144dl
+Running ../../../master/gdb/testsuite/gdb.base/prologue.exp ...
+PASS: gdb.base/prologue.exp: setting breakpoint at marker
+PASS: gdb.base/prologue.exp: continue to marker
+PASS: gdb.base/prologue.exp: reading $pc: marker
+PASS: gdb.base/prologue.exp: setting breakpoint at other
+PASS: gdb.base/prologue.exp: continue to other
+PASS: gdb.base/prologue.exp: reading $pc: other
+PASS: gdb.base/prologue.exp: same pc from minimal symbol
+Running ../../../master/gdb/testsuite/gdb.base/psymtab.exp ...
+PASS: gdb.base/psymtab.exp: psymtab pending setup
+PASS: gdb.base/psymtab.exp: Don't search past end of psymtab.
+Running ../../../master/gdb/testsuite/gdb.base/ptr-typedef.exp ...
+PASS: gdb.base/ptr-typedef.exp: print foo_ptr
+PASS: gdb.base/ptr-typedef.exp: print foz_ptr
+Running ../../../master/gdb/testsuite/gdb.base/ptype.exp ...
+PASS: gdb.base/ptype.exp: ptype unnamed enumeration member
+PASS: gdb.base/ptype.exp: ptype structure
+PASS: gdb.base/ptype.exp: ptype v_struct1.v_float_member
+PASS: gdb.base/ptype.exp: ptype v_struct1->v_float_member
+PASS: gdb.base/ptype.exp: ptype v_t_struct_p.v_float_member
+PASS: gdb.base/ptype.exp: ptype v_t_struct_p->v_float_member
+PASS: gdb.base/ptype.exp: ptype linked list structure
+PASS: gdb.base/ptype.exp: ptype union
+PASS: gdb.base/ptype.exp: ptype linked list union
+PASS: gdb.base/ptype.exp: ptype unnamed enumeration
+PASS: gdb.base/ptype.exp: ptype named enumeration
+PASS: gdb.base/ptype.exp: ptype unnamed typedef'd enumeration
+PASS: gdb.base/ptype.exp: list main
+PASS: gdb.base/ptype.exp: whatis unnamed typedef'd enum (compiler bug in IBM's xlc)
+PASS: gdb.base/ptype.exp: printing typedef'd struct
+PASS: gdb.base/ptype.exp: printing typedef'd union
+PASS: gdb.base/ptype.exp: ptype named typedef'd enumf'd enum
+PASS: gdb.base/ptype.exp: ptype misordered enumeration
+PASS: gdb.base/ptype.exp: ptype named enumeration member
+PASS: gdb.base/ptype.exp: ptype unnamed enumeration member #2
+PASS: gdb.base/ptype.exp: ptype short
+PASS: gdb.base/ptype.exp: ptype int
+PASS: gdb.base/ptype.exp: ptype t_char_array
+PASS: gdb.base/ptype.exp: ptype outer structure
+PASS: gdb.base/ptype.exp: ptype inner structure
+PASS: gdb.base/ptype.exp: ptype inner union
+PASS: gdb.base/ptype.exp: ptype nested structure
+PASS: gdb.base/ptype.exp: ptype outer int
+PASS: gdb.base/ptype.exp: ptype nested structure #2
+PASS: gdb.base/ptype.exp: ptype inner int
+PASS: gdb.base/ptype.exp: ptype nested union
+PASS: gdb.base/ptype.exp: ptype the_highest
+PASS: gdb.base/ptype.exp: ptype the_highest
+PASS: gdb.base/ptype.exp: ptype func_type
+PASS: gdb.base/ptype.exp: ptype old_fptr
+PASS: gdb.base/ptype.exp: ptype new_fptr
+PASS: gdb.base/ptype.exp: ptype fptr
+PASS: gdb.base/ptype.exp: ptype fptr2
+PASS: gdb.base/ptype.exp: ptype xptr
+PASS: gdb.base/ptype.exp: ptype ffptr
+PASS: gdb.base/ptype.exp: ptype fffptr
+PASS: gdb.base/ptype.exp: list intfoo
+PASS: gdb.base/ptype.exp: ptype foo typedef after first list of intfoo
+PASS: gdb.base/ptype.exp: list charfoo
+PASS: gdb.base/ptype.exp: ptype foo typedef after first list of charfoo
+PASS: gdb.base/ptype.exp: list intfoo
+PASS: gdb.base/ptype.exp: ptype foo typedef after second list of intfoo
+PASS: gdb.base/ptype.exp: list charfoo
+PASS: gdb.base/ptype.exp: ptype foo typedef after second list of charfoo
+PASS: gdb.base/ptype.exp: ptype "abc"
+PASS: gdb.base/ptype.exp: ptype {'a','b','c'}
+PASS: gdb.base/ptype.exp: ptype {0,1,2}
+PASS: gdb.base/ptype.exp: ptype {(long)0,(long)1,(long)2}
+PASS: gdb.base/ptype.exp: ptype {(float)0,(float)1,(float)2}
+PASS: gdb.base/ptype.exp: ptype {{0,1,2},{3,4,5}}
+PASS: gdb.base/ptype.exp: ptype {4,5,6}[2]
+PASS: gdb.base/ptype.exp: ptype *&{4,5,6}[1]
+PASS: gdb.base/ptype.exp: ptype $pc
+Running ../../../master/gdb/testsuite/gdb.base/radix.exp ...
+PASS: gdb.base/radix.exp: initialize radix, input radix 2
+PASS: gdb.base/radix.exp: set input-radix 2
+PASS: gdb.base/radix.exp: show radix, input radix 2
+PASS: gdb.base/radix.exp: print 010; expect 8; input radix 2
+PASS: gdb.base/radix.exp: print 20.; expect 20; input radix 2
+PASS: gdb.base/radix.exp: print (int) 20.; expect 20; input radix 2
+PASS: gdb.base/radix.exp: print 0xf; expect 15; input radix 2
+PASS: gdb.base/radix.exp: print 0; expect 0; input radix 2
+PASS: gdb.base/radix.exp: print 1; expect 1; input radix 2
+PASS: gdb.base/radix.exp: print -1; expect -1; input radix 2
+PASS: gdb.base/radix.exp: print 10; expect 2; input radix 2
+PASS: gdb.base/radix.exp: print 11; expect 3; input radix 2
+PASS: gdb.base/radix.exp: print -10; expect -2; input radix 2
+PASS: gdb.base/radix.exp: print -11; expect -3; input radix 2
+PASS: gdb.base/radix.exp: print 100; expect 4; input radix 2
+PASS: gdb.base/radix.exp: print 101; expect 5; input radix 2
+PASS: gdb.base/radix.exp: print -100; expect -4; input radix 2
+PASS: gdb.base/radix.exp: print -101; expect -5; input radix 2
+PASS: gdb.base/radix.exp: print 10101; expect 21; input radix 2
+PASS: gdb.base/radix.exp: print 4; expect Invalid number "4"\.; input radix 2
+PASS: gdb.base/radix.exp: print -2; expect Invalid number "2"\.; input radix 2
+PASS: gdb.base/radix.exp: initialize radix, input radix 3
+PASS: gdb.base/radix.exp: set input-radix 3
+PASS: gdb.base/radix.exp: show radix, input radix 3
+PASS: gdb.base/radix.exp: print 010; expect 8; input radix 3
+PASS: gdb.base/radix.exp: print 20.; expect 20; input radix 3
+PASS: gdb.base/radix.exp: print (int) 20.; expect 20; input radix 3
+PASS: gdb.base/radix.exp: print 0xf; expect 15; input radix 3
+PASS: gdb.base/radix.exp: print 0; expect 0; input radix 3
+PASS: gdb.base/radix.exp: print 1; expect 1; input radix 3
+PASS: gdb.base/radix.exp: print -1; expect -1; input radix 3
+PASS: gdb.base/radix.exp: print 10; expect 3; input radix 3
+PASS: gdb.base/radix.exp: print 11; expect 4; input radix 3
+PASS: gdb.base/radix.exp: print -10; expect -3; input radix 3
+PASS: gdb.base/radix.exp: print -11; expect -4; input radix 3
+PASS: gdb.base/radix.exp: print 100; expect 9; input radix 3
+PASS: gdb.base/radix.exp: print 101; expect 10; input radix 3
+PASS: gdb.base/radix.exp: print -100; expect -9; input radix 3
+PASS: gdb.base/radix.exp: print -101; expect -10; input radix 3
+PASS: gdb.base/radix.exp: print 10101; expect 91; input radix 3
+PASS: gdb.base/radix.exp: print 2; expect 2; input radix 3
+PASS: gdb.base/radix.exp: print 20; expect 6; input radix 3
+PASS: gdb.base/radix.exp: print 3; expect Invalid number "3"\.; input radix 3
+PASS: gdb.base/radix.exp: print 30; expect Invalid number "30"\.; input radix 2
+PASS: gdb.base/radix.exp: initialize radix, input radix 8
+PASS: gdb.base/radix.exp: set input-radix 8
+PASS: gdb.base/radix.exp: show radix, input radix 8
+PASS: gdb.base/radix.exp: print 010; expect 8; input radix 8
+PASS: gdb.base/radix.exp: print 20.; expect 20; input radix 8
+PASS: gdb.base/radix.exp: print (int) 20.; expect 20; input radix 8
+PASS: gdb.base/radix.exp: print 0xf; expect 15; input radix 8
+PASS: gdb.base/radix.exp: print 0; expect 0; input radix 8
+PASS: gdb.base/radix.exp: print 1; expect 1; input radix 8
+PASS: gdb.base/radix.exp: print -1; expect -1; input radix 8
+PASS: gdb.base/radix.exp: print 10; expect 8; input radix 8
+PASS: gdb.base/radix.exp: print 11; expect 9; input radix 8
+PASS: gdb.base/radix.exp: print -10; expect -8; input radix 8
+PASS: gdb.base/radix.exp: print -11; expect -9; input radix 8
+PASS: gdb.base/radix.exp: print 100; expect 64; input radix 8
+PASS: gdb.base/radix.exp: print 101; expect 65; input radix 8
+PASS: gdb.base/radix.exp: print -100; expect -64; input radix 8
+PASS: gdb.base/radix.exp: print -101; expect -65; input radix 8
+PASS: gdb.base/radix.exp: print 10101; expect 4161; input radix 8
+PASS: gdb.base/radix.exp: print 20; expect 16; input radix 8
+PASS: gdb.base/radix.exp: print -20; expect -16; input radix 8
+PASS: gdb.base/radix.exp: print 8; expect Invalid number "8".; input radix 8
+PASS: gdb.base/radix.exp: print -9; expect Invalid number "9".; input radix 8
+PASS: gdb.base/radix.exp: initialize radix, input radix 10
+PASS: gdb.base/radix.exp: set input-radix 10
+PASS: gdb.base/radix.exp: show radix, input radix 10
+PASS: gdb.base/radix.exp: print 010; expect 8; input radix 10
+PASS: gdb.base/radix.exp: print 20.; expect 20; input radix 10
+PASS: gdb.base/radix.exp: print (int) 20.; expect 20; input radix 10
+PASS: gdb.base/radix.exp: print 0xf; expect 15; input radix 10
+PASS: gdb.base/radix.exp: print 0; expect 0; input radix 10
+PASS: gdb.base/radix.exp: print 1; expect 1; input radix 10
+PASS: gdb.base/radix.exp: print -1; expect -1; input radix 10
+PASS: gdb.base/radix.exp: print 10; expect 10; input radix 10
+PASS: gdb.base/radix.exp: print 11; expect 11; input radix 10
+PASS: gdb.base/radix.exp: print -10; expect -10; input radix 10
+PASS: gdb.base/radix.exp: print -11; expect -11; input radix 10
+PASS: gdb.base/radix.exp: print 100; expect 100; input radix 10
+PASS: gdb.base/radix.exp: print 101; expect 101; input radix 10
+PASS: gdb.base/radix.exp: print -100; expect -100; input radix 10
+PASS: gdb.base/radix.exp: print -101; expect -101; input radix 10
+PASS: gdb.base/radix.exp: print 10101; expect 10101; input radix 10
+PASS: gdb.base/radix.exp: print -12; expect -12; input radix 10
+PASS: gdb.base/radix.exp: initialize radix, input radix 16
+PASS: gdb.base/radix.exp: set input-radix 16
+PASS: gdb.base/radix.exp: show radix, input radix 16
+PASS: gdb.base/radix.exp: print 010; expect 8; input radix 16
+PASS: gdb.base/radix.exp: print 20.; expect 20; input radix 16
+PASS: gdb.base/radix.exp: print (int) 20.; expect 20; input radix 16
+PASS: gdb.base/radix.exp: print 0xf; expect 15; input radix 16
+PASS: gdb.base/radix.exp: print 0; expect 0; input radix 16
+PASS: gdb.base/radix.exp: print 1; expect 1; input radix 16
+PASS: gdb.base/radix.exp: print -1; expect -1; input radix 16
+PASS: gdb.base/radix.exp: print 10; expect 16; input radix 16
+PASS: gdb.base/radix.exp: print 11; expect 17; input radix 16
+PASS: gdb.base/radix.exp: print -10; expect -16; input radix 16
+PASS: gdb.base/radix.exp: print -11; expect -17; input radix 16
+PASS: gdb.base/radix.exp: print 100; expect 256; input radix 16
+PASS: gdb.base/radix.exp: print 101; expect 257; input radix 16
+PASS: gdb.base/radix.exp: print -100; expect -256; input radix 16
+PASS: gdb.base/radix.exp: print -101; expect -257; input radix 16
+PASS: gdb.base/radix.exp: print 10101; expect 65793; input radix 16
+PASS: gdb.base/radix.exp: initialize radix, output radix 8
+PASS: gdb.base/radix.exp: set output-radix 8
+PASS: gdb.base/radix.exp: show radix, output radix 8
+PASS: gdb.base/radix.exp: print 010; expect 010; output radix 8
+PASS: gdb.base/radix.exp: print 0xf; expect 17; output radix 8
+PASS: gdb.base/radix.exp: print 10; expect 12; output radix 8
+PASS: gdb.base/radix.exp: print 100; expect 144; output radix 8
+KFAIL: gdb.base/radix.exp: print 20.; expect 24; output radix 8 (PRMS: gdb/1715)
+PASS: gdb.base/radix.exp: print (int) 20.; expect 24; output radix 8
+PASS: gdb.base/radix.exp: initialize radix, output radix 10
+PASS: gdb.base/radix.exp: set output-radix 10
+PASS: gdb.base/radix.exp: show radix, output radix 10
+PASS: gdb.base/radix.exp: print 010; expect 8; output radix 10
+PASS: gdb.base/radix.exp: print 0xf; expect 15; output radix 10
+PASS: gdb.base/radix.exp: print 10; expect 10; output radix 10
+PASS: gdb.base/radix.exp: print 100; expect 100; output radix 10
+PASS: gdb.base/radix.exp: print 20.; expect 20; output radix 10
+PASS: gdb.base/radix.exp: print (int) 20.; expect 20; output radix 10
+PASS: gdb.base/radix.exp: initialize radix, output radix 16
+PASS: gdb.base/radix.exp: set output-radix 16
+PASS: gdb.base/radix.exp: show radix, output radix 16
+PASS: gdb.base/radix.exp: print 010; expect 8; output radix 16
+PASS: gdb.base/radix.exp: print 0xf; expect f; output radix 16
+PASS: gdb.base/radix.exp: print 10; expect a; output radix 16
+PASS: gdb.base/radix.exp: print 100; expect 64; output radix 16
+KFAIL: gdb.base/radix.exp: print 20.; expect 14; output radix 16 (PRMS: gdb/1715)
+PASS: gdb.base/radix.exp: print (int) 20.; expect 14; output radix 16
+PASS: gdb.base/radix.exp: Reset radices
+PASS: gdb.base/radix.exp: Reject input-radix 0
+PASS: gdb.base/radix.exp: Input radix unchanged after rejecting 0
+PASS: gdb.base/radix.exp: Reject input-radix 1
+PASS: gdb.base/radix.exp: Input radix unchanged after rejecting 1
+PASS: gdb.base/radix.exp: Reject output-radix 0
+PASS: gdb.base/radix.exp: Output radix unchanged after rejecting 0
+PASS: gdb.base/radix.exp: Reject output-radix 1
+PASS: gdb.base/radix.exp: Output radix unchanged after rejecting 1
+PASS: gdb.base/radix.exp: set radix 7 rejected
+PASS: gdb.base/radix.exp: Output radix unchanged after rejection through set radix command
+Running ../../../master/gdb/testsuite/gdb.base/randomize.exp ...
+PASS: gdb.base/randomize.exp: set disable-randomization off
+PASS: gdb.base/randomize.exp: show disable-randomization off
+PASS: gdb.base/randomize.exp: continue to breakpoint: randomized first address - address set
+PASS: gdb.base/randomize.exp: randomized first address
+PASS: gdb.base/randomize.exp: continue to breakpoint: randomized second address - address set
+PASS: gdb.base/randomize.exp: randomized second address
+PASS: gdb.base/randomize.exp: randomized addresses should not match
+PASS: gdb.base/randomize.exp: set disable-randomization on
+PASS: gdb.base/randomize.exp: show disable-randomization on
+PASS: gdb.base/randomize.exp: continue to breakpoint: fixed first address - address set
+PASS: gdb.base/randomize.exp: fixed first address
+PASS: gdb.base/randomize.exp: continue to breakpoint: fixed second address - address set
+PASS: gdb.base/randomize.exp: fixed second address
+PASS: gdb.base/randomize.exp: fixed addresses should match
+Running ../../../master/gdb/testsuite/gdb.base/readline-ask.exp ...
+PASS: gdb.base/readline-ask.exp: set width 50
+PASS: gdb.base/readline-ask.exp: set height 3
+PASS: gdb.base/readline-ask.exp: bell for more message
+PASS: gdb.base/readline-ask.exp: more message for 01 and 02
+PASS: gdb.base/readline-ask.exp: more message for 03
+PASS: gdb.base/readline-ask.exp: more finish for 04
+PASS: gdb.base/readline-ask.exp: abort more message
+PASS: gdb.base/readline-ask.exp: bell for ask message
+PASS: gdb.base/readline-ask.exp: ask message
+PASS: gdb.base/readline-ask.exp: ask message for 01 and 02
+PASS: gdb.base/readline-ask.exp: ask message no
+PASS: gdb.base/readline-ask.exp: abort ask message
+Running ../../../master/gdb/testsuite/gdb.base/readline.exp ...
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - send p 1
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - send p 2
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - send p 3
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - C-p to p 3
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - C-p to p 2
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - C-p to p 1
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - C-o for p 1
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - C-o for p 2
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - C-o for p 3
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - final prompt
+PASS: gdb.base/readline.exp: operate-and-get-next with secondary prompt - send if 1 > 0
+PASS: gdb.base/readline.exp: operate-and-get-next with secondary prompt - send p 5
+PASS: gdb.base/readline.exp: operate-and-get-next with secondary prompt - send end
+PASS: gdb.base/readline.exp: operate-and-get-next with secondary prompt - C-p to end
+PASS: gdb.base/readline.exp: operate-and-get-next with secondary prompt - C-p to p 5
+PASS: gdb.base/readline.exp: operate-and-get-next with secondary prompt - C-p to if 1 > 0
+PASS: gdb.base/readline.exp: operate-and-get-next with secondary prompt - C-o for if 1 > 0
+PASS: gdb.base/readline.exp: operate-and-get-next with secondary prompt - C-o for p 5
+PASS: gdb.base/readline.exp: operate-and-get-next with secondary prompt - C-o for end
+PASS: gdb.base/readline.exp: operate-and-get-next with secondary prompt - final prompt
+PASS: gdb.base/readline.exp: print 42
+PASS: gdb.base/readline.exp: arrow keys with secondary prompt
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - send p 7
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - send p 8
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - send p 9
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - C-p to p 9
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - C-p to p 8
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - C-p to p 7
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - C-o for p 7
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - C-o for p 8
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - C-o for p 9
+PASS: gdb.base/readline.exp: Simple operate-and-get-next - final prompt
+Running ../../../master/gdb/testsuite/gdb.base/recurse.exp ...
+PASS: gdb.base/recurse.exp: next over b = 0 in first instance
+PASS: gdb.base/recurse.exp: set first instance watchpoint
+PASS: gdb.base/recurse.exp: continue to first instance watchpoint, first time
+PASS: gdb.base/recurse.exp: continue to recurse (a = 9)
+PASS: gdb.base/recurse.exp: continue to recurse (a = 8)
+PASS: gdb.base/recurse.exp: continue to recurse (a = 7)
+PASS: gdb.base/recurse.exp: continue to recurse (a = 6)
+PASS: gdb.base/recurse.exp: continue to recurse (a = 5)
+PASS: gdb.base/recurse.exp: next over b = 0 in second instance
+PASS: gdb.base/recurse.exp: set second instance watchpoint
+PASS: gdb.base/recurse.exp: continue to second instance watchpoint, first time
+PASS: gdb.base/recurse.exp: continue to recurse (a = 4)
+PASS: gdb.base/recurse.exp: continue to recurse (a = 3)
+PASS: gdb.base/recurse.exp: continue to recurse (a = 2)
+PASS: gdb.base/recurse.exp: continue to recurse (a = 1)
+PASS: gdb.base/recurse.exp: continue to second instance watchpoint, second time
+PASS: gdb.base/recurse.exp: second instance watchpoint deleted when leaving scope
+PASS: gdb.base/recurse.exp: continue to first instance watchpoint, second time
+PASS: gdb.base/recurse.exp: first instance watchpoint deleted when leaving scope
+Running ../../../master/gdb/testsuite/gdb.base/regs.exp ...
+Running ../../../master/gdb/testsuite/gdb.base/relational.exp ...
+PASS: gdb.base/relational.exp: set variable x=14
+PASS: gdb.base/relational.exp: set variable y=2
+PASS: gdb.base/relational.exp: set variable z=2
+PASS: gdb.base/relational.exp: set variable w=3
+PASS: gdb.base/relational.exp: print value of x
+PASS: gdb.base/relational.exp: print value of y
+PASS: gdb.base/relational.exp: print value of z
+PASS: gdb.base/relational.exp: print value of w
+PASS: gdb.base/relational.exp: print value of x<y
+PASS: gdb.base/relational.exp: print value of x<=y
+PASS: gdb.base/relational.exp: print value of x>y
+PASS: gdb.base/relational.exp: print value of x>=y
+PASS: gdb.base/relational.exp: print value of x==y
+PASS: gdb.base/relational.exp: print value of x!=y
+PASS: gdb.base/relational.exp: set variable x
+PASS: gdb.base/relational.exp: set variable y
+PASS: gdb.base/relational.exp: set variable z
+PASS: gdb.base/relational.exp: print value of x<y<z
+PASS: gdb.base/relational.exp: print value of x<=y<=z
+PASS: gdb.base/relational.exp: print value of x>y>z
+PASS: gdb.base/relational.exp: print value of x>=y>=z
+PASS: gdb.base/relational.exp: set variable x
+PASS: gdb.base/relational.exp: set variable y
+PASS: gdb.base/relational.exp: set variable z
+PASS: gdb.base/relational.exp: print value of x==y==z
+PASS: gdb.base/relational.exp: set variable z
+PASS: gdb.base/relational.exp: print value of x!=y!=z
+PASS: gdb.base/relational.exp: set variable x
+PASS: gdb.base/relational.exp: set variable y
+PASS: gdb.base/relational.exp: set variable z
+PASS: gdb.base/relational.exp: print value of x<y==z
+PASS: gdb.base/relational.exp: print value of x<y!=z
+PASS: gdb.base/relational.exp: set variable x
+PASS: gdb.base/relational.exp: set variable y
+PASS: gdb.base/relational.exp: set variable z
+PASS: gdb.base/relational.exp: print value of x<y<=z
+PASS: gdb.base/relational.exp: print value of x<y>=z
+PASS: gdb.base/relational.exp: set variable z
+PASS: gdb.base/relational.exp: print value of x<y>z
+PASS: gdb.base/relational.exp: set variable x
+PASS: gdb.base/relational.exp: print value of x>y>=z
+PASS: gdb.base/relational.exp: set variable z
+PASS: gdb.base/relational.exp: print value of x>y==z
+PASS: gdb.base/relational.exp: set variable x
+PASS: gdb.base/relational.exp: set variable z
+PASS: gdb.base/relational.exp: print value of x>y!=z
+PASS: gdb.base/relational.exp: set x to 4
+PASS: gdb.base/relational.exp: print value of x>y<=z
+PASS: gdb.base/relational.exp: print value of x>=y==z
+PASS: gdb.base/relational.exp: set variable x
+PASS: gdb.base/relational.exp: print value of x>=y!=z
+PASS: gdb.base/relational.exp: set variable x
+PASS: gdb.base/relational.exp: set variable z
+PASS: gdb.base/relational.exp: print value of x>=y<=z
+PASS: gdb.base/relational.exp: print value of x<=y==z
+PASS: gdb.base/relational.exp: set variable x
+PASS: gdb.base/relational.exp: print value of x<=y!=z
+PASS: gdb.base/relational.exp: print value of x==y!=z
+PASS: gdb.base/relational.exp: set variable z
+PASS: gdb.base/relational.exp: print value of x>=(y<z)
+PASS: gdb.base/relational.exp: print value of x>=(y!=z)
+PASS: gdb.base/relational.exp: print value of x==(y==z)
+PASS: gdb.base/relational.exp: set variable x
+PASS: gdb.base/relational.exp: set variable z
+PASS: gdb.base/relational.exp: print value of (x==y)<z
+Running ../../../master/gdb/testsuite/gdb.base/relativedebug.exp ...
+PASS: gdb.base/relativedebug.exp: continue
+PASS: gdb.base/relativedebug.exp: pause found in backtrace
+Running ../../../master/gdb/testsuite/gdb.base/relocate.exp ...
+PASS: gdb.base/relocate.exp: add-symbol-file relocate.o 0
+PASS: gdb.base/relocate.exp: get address of static_foo
+PASS: gdb.base/relocate.exp: get address of static_bar
+PASS: gdb.base/relocate.exp: static variables have different addresses
+PASS: gdb.base/relocate.exp: get address of global_foo
+PASS: gdb.base/relocate.exp: get address of global_bar
+PASS: gdb.base/relocate.exp: global variables have different addresses
+PASS: gdb.base/relocate.exp: get address of function_foo
+PASS: gdb.base/relocate.exp: get address of function_bar
+PASS: gdb.base/relocate.exp: functions have different addresses
+PASS: gdb.base/relocate.exp: set $offset = 0x10000
+PASS: gdb.base/relocate.exp: add-symbol-file relocate.o $offset
+PASS: gdb.base/relocate.exp: get address of function_foo
+PASS: gdb.base/relocate.exp: function foo has a different address
+PASS: gdb.base/relocate.exp: print static_foo
+PASS: gdb.base/relocate.exp: print static_bar
+PASS: gdb.base/relocate.exp: print global_foo
+PASS: gdb.base/relocate.exp: print global_bar
+Running ../../../master/gdb/testsuite/gdb.base/remote.exp ...
+Running ../../../master/gdb/testsuite/gdb.base/remotetimeout.exp ...
+PASS: gdb.base/remotetimeout.exp: correct remotetimeout printed
+Running ../../../master/gdb/testsuite/gdb.base/reread.exp ...
+PASS: gdb.base/reread.exp: breakpoint foo in first file
+PASS: gdb.base/reread.exp: run to foo()
+PASS: gdb.base/reread.exp: run to foo() second time
+PASS: gdb.base/reread.exp: second pass: breakpoint foo in first file
+PASS: gdb.base/reread.exp: second pass: run to foo()
+PASS: gdb.base/reread.exp: continue until exit at second pass
+PASS: gdb.base/reread.exp: second pass: run to foo() second time
+Running ../../../master/gdb/testsuite/gdb.base/restore.exp ...
+PASS: gdb.base/restore.exp: tbreak caller1
+PASS: gdb.base/restore.exp: run to caller1
+PASS: gdb.base/restore.exp: caller1 calls callee1; tbreak callee
+PASS: gdb.base/restore.exp: caller1 calls callee1; continue to callee
+PASS: gdb.base/restore.exp: caller1 calls callee1; return callee now
+PASS: gdb.base/restore.exp: caller1 calls callee1; return restored l1 to 32492
+PASS: gdb.base/restore.exp: caller1 calls callee2; tbreak callee
+PASS: gdb.base/restore.exp: caller1 calls callee2; continue to callee
+PASS: gdb.base/restore.exp: caller1 calls callee2; return callee now
+PASS: gdb.base/restore.exp: caller1 calls callee2; return restored l1 to 32492
+PASS: gdb.base/restore.exp: caller1 calls callee3; tbreak callee
+PASS: gdb.base/restore.exp: caller1 calls callee3; continue to callee
+PASS: gdb.base/restore.exp: caller1 calls callee3; return callee now
+PASS: gdb.base/restore.exp: caller1 calls callee3; return restored l1 to 32492
+PASS: gdb.base/restore.exp: caller1 calls callee4; tbreak callee
+PASS: gdb.base/restore.exp: caller1 calls callee4; continue to callee
+PASS: gdb.base/restore.exp: caller1 calls callee4; return callee now
+PASS: gdb.base/restore.exp: caller1 calls callee4; return restored l1 to 32492
+PASS: gdb.base/restore.exp: caller1 calls callee5; tbreak callee
+PASS: gdb.base/restore.exp: caller1 calls callee5; continue to callee
+PASS: gdb.base/restore.exp: caller1 calls callee5; return callee now
+PASS: gdb.base/restore.exp: caller1 calls callee5; return restored l1 to 32492
+PASS: gdb.base/restore.exp: tbreak caller2
+PASS: gdb.base/restore.exp: run to caller2
+PASS: gdb.base/restore.exp: caller2 calls callee1; tbreak callee
+PASS: gdb.base/restore.exp: caller2 calls callee1; continue to callee
+PASS: gdb.base/restore.exp: caller2 calls callee1; return callee now
+PASS: gdb.base/restore.exp: caller2 calls callee1; return restored l1 to 32492
+PASS: gdb.base/restore.exp: caller2 calls callee1; return restored l2 to 32493
+PASS: gdb.base/restore.exp: caller2 calls callee2; tbreak callee
+PASS: gdb.base/restore.exp: caller2 calls callee2; continue to callee
+PASS: gdb.base/restore.exp: caller2 calls callee2; return callee now
+PASS: gdb.base/restore.exp: caller2 calls callee2; return restored l1 to 32492
+PASS: gdb.base/restore.exp: caller2 calls callee2; return restored l2 to 32493
+PASS: gdb.base/restore.exp: caller2 calls callee3; tbreak callee
+PASS: gdb.base/restore.exp: caller2 calls callee3; continue to callee
+PASS: gdb.base/restore.exp: caller2 calls callee3; return callee now
+PASS: gdb.base/restore.exp: caller2 calls callee3; return restored l1 to 32492
+PASS: gdb.base/restore.exp: caller2 calls callee3; return restored l2 to 32493
+PASS: gdb.base/restore.exp: caller2 calls callee4; tbreak callee
+PASS: gdb.base/restore.exp: caller2 calls callee4; continue to callee
+PASS: gdb.base/restore.exp: caller2 calls callee4; return callee now
+PASS: gdb.base/restore.exp: caller2 calls callee4; return restored l1 to 32492
+PASS: gdb.base/restore.exp: caller2 calls callee4; return restored l2 to 32493
+PASS: gdb.base/restore.exp: caller2 calls callee5; tbreak callee
+PASS: gdb.base/restore.exp: caller2 calls callee5; continue to callee
+PASS: gdb.base/restore.exp: caller2 calls callee5; return callee now
+PASS: gdb.base/restore.exp: caller2 calls callee5; return restored l1 to 32492
+PASS: gdb.base/restore.exp: caller2 calls callee5; return restored l2 to 32493
+PASS: gdb.base/restore.exp: tbreak caller3
+PASS: gdb.base/restore.exp: run to caller3
+PASS: gdb.base/restore.exp: caller3 calls callee1; tbreak callee
+PASS: gdb.base/restore.exp: caller3 calls callee1; continue to callee
+PASS: gdb.base/restore.exp: caller3 calls callee1; return callee now
+PASS: gdb.base/restore.exp: caller3 calls callee1; return restored l1 to 32492
+PASS: gdb.base/restore.exp: caller3 calls callee1; return restored l2 to 32493
+PASS: gdb.base/restore.exp: caller3 calls callee1; return restored l3 to 32494
+PASS: gdb.base/restore.exp: caller3 calls callee2; tbreak callee
+PASS: gdb.base/restore.exp: caller3 calls callee2; continue to callee
+PASS: gdb.base/restore.exp: caller3 calls callee2; return callee now
+PASS: gdb.base/restore.exp: caller3 calls callee2; return restored l1 to 32492
+PASS: gdb.base/restore.exp: caller3 calls callee2; return restored l2 to 32493
+PASS: gdb.base/restore.exp: caller3 calls callee2; return restored l3 to 32494
+PASS: gdb.base/restore.exp: caller3 calls callee3; tbreak callee
+PASS: gdb.base/restore.exp: caller3 calls callee3; continue to callee
+PASS: gdb.base/restore.exp: caller3 calls callee3; return callee now
+PASS: gdb.base/restore.exp: caller3 calls callee3; return restored l1 to 32492
+PASS: gdb.base/restore.exp: caller3 calls callee3; return restored l2 to 32493
+PASS: gdb.base/restore.exp: caller3 calls callee3; return restored l3 to 32494
+PASS: gdb.base/restore.exp: caller3 calls callee4; tbreak callee
+PASS: gdb.base/restore.exp: caller3 calls callee4; continue to callee
+PASS: gdb.base/restore.exp: caller3 calls callee4; return callee now
+PASS: gdb.base/restore.exp: caller3 calls callee4; return restored l1 to 32492
+PASS: gdb.base/restore.exp: caller3 calls callee4; return restored l2 to 32493
+PASS: gdb.base/restore.exp: caller3 calls callee4; return restored l3 to 32494
+PASS: gdb.base/restore.exp: caller3 calls callee5; tbreak callee
+PASS: gdb.base/restore.exp: caller3 calls callee5; continue to callee
+PASS: gdb.base/restore.exp: caller3 calls callee5; return callee now
+PASS: gdb.base/restore.exp: caller3 calls callee5; return restored l1 to 32492
+PASS: gdb.base/restore.exp: caller3 calls callee5; return restored l2 to 32493
+PASS: gdb.base/restore.exp: caller3 calls callee5; return restored l3 to 32494
+PASS: gdb.base/restore.exp: tbreak caller4
+PASS: gdb.base/restore.exp: run to caller4
+PASS: gdb.base/restore.exp: caller4 calls callee1; tbreak callee
+PASS: gdb.base/restore.exp: caller4 calls callee1; continue to callee
+PASS: gdb.base/restore.exp: caller4 calls callee1; return callee now
+PASS: gdb.base/restore.exp: caller4 calls callee1; return restored l1 to 32492
+PASS: gdb.base/restore.exp: caller4 calls callee1; return restored l2 to 32493
+PASS: gdb.base/restore.exp: caller4 calls callee1; return restored l3 to 32494
+PASS: gdb.base/restore.exp: caller4 calls callee1; return restored l4 to 32495
+PASS: gdb.base/restore.exp: caller4 calls callee2; tbreak callee
+PASS: gdb.base/restore.exp: caller4 calls callee2; continue to callee
+PASS: gdb.base/restore.exp: caller4 calls callee2; return callee now
+PASS: gdb.base/restore.exp: caller4 calls callee2; return restored l1 to 32492
+PASS: gdb.base/restore.exp: caller4 calls callee2; return restored l2 to 32493
+PASS: gdb.base/restore.exp: caller4 calls callee2; return restored l3 to 32494
+PASS: gdb.base/restore.exp: caller4 calls callee2; return restored l4 to 32495
+PASS: gdb.base/restore.exp: caller4 calls callee3; tbreak callee
+PASS: gdb.base/restore.exp: caller4 calls callee3; continue to callee
+PASS: gdb.base/restore.exp: caller4 calls callee3; return callee now
+PASS: gdb.base/restore.exp: caller4 calls callee3; return restored l1 to 32492
+PASS: gdb.base/restore.exp: caller4 calls callee3; return restored l2 to 32493
+PASS: gdb.base/restore.exp: caller4 calls callee3; return restored l3 to 32494
+PASS: gdb.base/restore.exp: caller4 calls callee3; return restored l4 to 32495
+PASS: gdb.base/restore.exp: caller4 calls callee4; tbreak callee
+PASS: gdb.base/restore.exp: caller4 calls callee4; continue to callee
+PASS: gdb.base/restore.exp: caller4 calls callee4; return callee now
+PASS: gdb.base/restore.exp: caller4 calls callee4; return restored l1 to 32492
+PASS: gdb.base/restore.exp: caller4 calls callee4; return restored l2 to 32493
+PASS: gdb.base/restore.exp: caller4 calls callee4; return restored l3 to 32494
+PASS: gdb.base/restore.exp: caller4 calls callee4; return restored l4 to 32495
+PASS: gdb.base/restore.exp: caller4 calls callee5; tbreak callee
+PASS: gdb.base/restore.exp: caller4 calls callee5; continue to callee
+PASS: gdb.base/restore.exp: caller4 calls callee5; return callee now
+PASS: gdb.base/restore.exp: caller4 calls callee5; return restored l1 to 32492
+PASS: gdb.base/restore.exp: caller4 calls callee5; return restored l2 to 32493
+PASS: gdb.base/restore.exp: caller4 calls callee5; return restored l3 to 32494
+PASS: gdb.base/restore.exp: caller4 calls callee5; return restored l4 to 32495
+PASS: gdb.base/restore.exp: tbreak caller5
+PASS: gdb.base/restore.exp: run to caller5
+PASS: gdb.base/restore.exp: caller5 calls callee1; tbreak callee
+PASS: gdb.base/restore.exp: caller5 calls callee1; continue to callee
+PASS: gdb.base/restore.exp: caller5 calls callee1; return callee now
+PASS: gdb.base/restore.exp: caller5 calls callee1; return restored l1 to 32492
+PASS: gdb.base/restore.exp: caller5 calls callee1; return restored l2 to 32493
+PASS: gdb.base/restore.exp: caller5 calls callee1; return restored l3 to 32494
+PASS: gdb.base/restore.exp: caller5 calls callee1; return restored l4 to 32495
+PASS: gdb.base/restore.exp: caller5 calls callee1; return restored l5 to 32496
+PASS: gdb.base/restore.exp: caller5 calls callee2; tbreak callee
+PASS: gdb.base/restore.exp: caller5 calls callee2; continue to callee
+PASS: gdb.base/restore.exp: caller5 calls callee2; return callee now
+PASS: gdb.base/restore.exp: caller5 calls callee2; return restored l1 to 32492
+PASS: gdb.base/restore.exp: caller5 calls callee2; return restored l2 to 32493
+PASS: gdb.base/restore.exp: caller5 calls callee2; return restored l3 to 32494
+PASS: gdb.base/restore.exp: caller5 calls callee2; return restored l4 to 32495
+PASS: gdb.base/restore.exp: caller5 calls callee2; return restored l5 to 32496
+PASS: gdb.base/restore.exp: caller5 calls callee3; tbreak callee
+PASS: gdb.base/restore.exp: caller5 calls callee3; continue to callee
+PASS: gdb.base/restore.exp: caller5 calls callee3; return callee now
+PASS: gdb.base/restore.exp: caller5 calls callee3; return restored l1 to 32492
+PASS: gdb.base/restore.exp: caller5 calls callee3; return restored l2 to 32493
+PASS: gdb.base/restore.exp: caller5 calls callee3; return restored l3 to 32494
+PASS: gdb.base/restore.exp: caller5 calls callee3; return restored l4 to 32495
+PASS: gdb.base/restore.exp: caller5 calls callee3; return restored l5 to 32496
+PASS: gdb.base/restore.exp: caller5 calls callee4; tbreak callee
+PASS: gdb.base/restore.exp: caller5 calls callee4; continue to callee
+PASS: gdb.base/restore.exp: caller5 calls callee4; return callee now
+PASS: gdb.base/restore.exp: caller5 calls callee4; return restored l1 to 32492
+PASS: gdb.base/restore.exp: caller5 calls callee4; return restored l2 to 32493
+PASS: gdb.base/restore.exp: caller5 calls callee4; return restored l3 to 32494
+PASS: gdb.base/restore.exp: caller5 calls callee4; return restored l4 to 32495
+PASS: gdb.base/restore.exp: caller5 calls callee4; return restored l5 to 32496
+PASS: gdb.base/restore.exp: caller5 calls callee5; tbreak callee
+PASS: gdb.base/restore.exp: caller5 calls callee5; continue to callee
+PASS: gdb.base/restore.exp: caller5 calls callee5; return callee now
+PASS: gdb.base/restore.exp: caller5 calls callee5; return restored l1 to 32492
+PASS: gdb.base/restore.exp: caller5 calls callee5; return restored l2 to 32493
+PASS: gdb.base/restore.exp: caller5 calls callee5; return restored l3 to 32494
+PASS: gdb.base/restore.exp: caller5 calls callee5; return restored l4 to 32495
+PASS: gdb.base/restore.exp: caller5 calls callee5; return restored l5 to 32496
+PASS: gdb.base/restore.exp: run to completion
+Running ../../../master/gdb/testsuite/gdb.base/return-nodebug.exp ...
+PASS: gdb.base/return-nodebug.exp: signed-char: return from function with no debug info without a cast
+PASS: gdb.base/return-nodebug.exp: signed-char: return from function with no debug info with a cast
+PASS: gdb.base/return-nodebug.exp: signed-char: advance to marker
+PASS: gdb.base/return-nodebug.exp: signed-char: full width of the returned result
+PASS: gdb.base/return-nodebug.exp: short: return from function with no debug info without a cast
+PASS: gdb.base/return-nodebug.exp: short: return from function with no debug info with a cast
+PASS: gdb.base/return-nodebug.exp: short: advance to marker
+PASS: gdb.base/return-nodebug.exp: short: full width of the returned result
+PASS: gdb.base/return-nodebug.exp: int: return from function with no debug info without a cast
+PASS: gdb.base/return-nodebug.exp: int: return from function with no debug info with a cast
+PASS: gdb.base/return-nodebug.exp: int: advance to marker
+PASS: gdb.base/return-nodebug.exp: int: full width of the returned result
+PASS: gdb.base/return-nodebug.exp: long: return from function with no debug info without a cast
+PASS: gdb.base/return-nodebug.exp: long: return from function with no debug info with a cast
+PASS: gdb.base/return-nodebug.exp: long: advance to marker
+PASS: gdb.base/return-nodebug.exp: long: full width of the returned result
+PASS: gdb.base/return-nodebug.exp: long-long: return from function with no debug info without a cast
+PASS: gdb.base/return-nodebug.exp: long-long: return from function with no debug info with a cast
+PASS: gdb.base/return-nodebug.exp: long-long: advance to marker
+PASS: gdb.base/return-nodebug.exp: long-long: full width of the returned result
+Running ../../../master/gdb/testsuite/gdb.base/return.exp ...
+PASS: gdb.base/return.exp: simple return
+PASS: gdb.base/return.exp: break func2
+PASS: gdb.base/return.exp: break func3
+PASS: gdb.base/return.exp: continue to return of -5
+PASS: gdb.base/return.exp: next over call to func2
+PASS: gdb.base/return.exp: correct value returned (integer test)
+PASS: gdb.base/return.exp: continue to return of -5.0
+PASS: gdb.base/return.exp: next over call to func3
+PASS: gdb.base/return.exp: correct value returned double test (known problem with sparc solaris)
+Running ../../../master/gdb/testsuite/gdb.base/return2.exp ...
+PASS: gdb.base/return2.exp: set break on void_func
+PASS: gdb.base/return2.exp: continue to void_func
+PASS: gdb.base/return2.exp: return from void_func
+PASS: gdb.base/return2.exp: void function returned successfully
+PASS: gdb.base/return2.exp: set break on char_func
+PASS: gdb.base/return2.exp: continue to char_func
+PASS: gdb.base/return2.exp: return from char_func
+PASS: gdb.base/return2.exp: char value returned successfully
+PASS: gdb.base/return2.exp: validate result value not equal to program return value
+PASS: gdb.base/return2.exp: set break on short_func
+PASS: gdb.base/return2.exp: continue to short_func
+PASS: gdb.base/return2.exp: return from short_func
+PASS: gdb.base/return2.exp: short value returned successfully
+PASS: gdb.base/return2.exp: validate result value not equal to program return value
+PASS: gdb.base/return2.exp: set break on int_func
+PASS: gdb.base/return2.exp: continue to int_func
+PASS: gdb.base/return2.exp: return from int_func
+PASS: gdb.base/return2.exp: int value returned successfully
+PASS: gdb.base/return2.exp: validate result value not equal to program return value
+PASS: gdb.base/return2.exp: set break on long_func
+PASS: gdb.base/return2.exp: continue to long_func
+PASS: gdb.base/return2.exp: return from long_func
+PASS: gdb.base/return2.exp: long value returned successfully
+PASS: gdb.base/return2.exp: validate result value not equal to program return value
+PASS: gdb.base/return2.exp: set break on long_long_func
+PASS: gdb.base/return2.exp: continue to long_long_func
+PASS: gdb.base/return2.exp: return from long_long_func
+PASS: gdb.base/return2.exp: long_long value returned successfully
+PASS: gdb.base/return2.exp: validate result value not equal to program return value
+PASS: gdb.base/return2.exp: set break on float_func
+PASS: gdb.base/return2.exp: continue to float_func
+PASS: gdb.base/return2.exp: return from float_func
+PASS: gdb.base/return2.exp: float value returned successfully
+PASS: gdb.base/return2.exp: validate result value not equal to program return value
+PASS: gdb.base/return2.exp: set break on double_func
+PASS: gdb.base/return2.exp: continue to double_func
+PASS: gdb.base/return2.exp: return from double_func
+PASS: gdb.base/return2.exp: double value returned successfully
+PASS: gdb.base/return2.exp: validate result value not equal to program return value
+Running ../../../master/gdb/testsuite/gdb.base/savedregs.exp ...
+PASS: gdb.base/savedregs.exp: advance thrower
+PASS: gdb.base/savedregs.exp: Get main info frame
+PASS: gdb.base/savedregs.exp: handle SIGSEGV pass print nostop
+PASS: gdb.base/savedregs.exp: advance catcher
+PASS: gdb.base/savedregs.exp: Get sigtramp info frame
+PASS: gdb.base/savedregs.exp: Get thrower info frame
+PASS: gdb.base/savedregs.exp: Check main info frame; stack contains catcher sigtramp thrower main
+PASS: gdb.base/savedregs.exp: break caller
+PASS: gdb.base/savedregs.exp: call caller (1,2,3,4,5,6,7,8)
+PASS: gdb.base/savedregs.exp: Get dummy info frame
+PASS: gdb.base/savedregs.exp: Get catcher info frame
+PASS: gdb.base/savedregs.exp: Check sigtramp info frame; stack contains caller dummy catcher sigtramp thrower main
+PASS: gdb.base/savedregs.exp: Check thrower info frame; stack contains caller dummy catcher sigtramp thrower main
+PASS: gdb.base/savedregs.exp: Check main info frame; stack contains caller dummy catcher sigtramp thrower main
+PASS: gdb.base/savedregs.exp: advance callee
+PASS: gdb.base/savedregs.exp: Get caller info frame
+PASS: gdb.base/savedregs.exp: Check dummy info frame; stack contains callee caller dummy catcher sigtramp thrower main
+PASS: gdb.base/savedregs.exp: Check catcher info frame; stack contains callee caller dummy catcher sigtramp thrower main
+PASS: gdb.base/savedregs.exp: Check sigtramp info frame; stack contains callee caller dummy catcher sigtramp thrower main
+PASS: gdb.base/savedregs.exp: Check thrower info frame; stack contains callee caller dummy catcher sigtramp thrower main
+PASS: gdb.base/savedregs.exp: Check main info frame; stack contains callee caller dummy catcher sigtramp thrower main
+Running ../../../master/gdb/testsuite/gdb.base/scope.exp ...
+PASS: gdb.base/scope.exp: print 'scope0.c'::filelocal_ro
+PASS: gdb.base/scope.exp: print 'scope0.c'::filelocal_bss before run
+PASS: gdb.base/scope.exp: print 'scope0.c'::filelocal before run
+PASS: gdb.base/scope.exp: next over init0() in main
+PASS: gdb.base/scope.exp: print filelocal
+PASS: gdb.base/scope.exp: print 'scope0.c'::filelocal at main
+PASS: gdb.base/scope.exp: print filelocal_bss
+PASS: gdb.base/scope.exp: print 'scope0.c'::filelocal_bss in test_at_main
+PASS: gdb.base/scope.exp: print filelocal_ro in test_at_main
+PASS: gdb.base/scope.exp: print 'scope0.c'::filelocal_ro
+PASS: gdb.base/scope.exp: print 'scope1.c'::filelocal
+PASS: gdb.base/scope.exp: print 'scope1.c'::filelocal_bss
+PASS: gdb.base/scope.exp: print 'scope1.c'::filelocal_ro
+PASS: gdb.base/scope.exp: print foo::funclocal
+PASS: gdb.base/scope.exp: print 'scope1.c'::foo::funclocal
+PASS: gdb.base/scope.exp: print foo::funclocal_ro
+PASS: gdb.base/scope.exp: print 'scope1.c'::foo::funclocal_ro
+PASS: gdb.base/scope.exp: print bar::funclocal
+PASS: gdb.base/scope.exp: print 'scope1.c'::bar::funclocal
+PASS: gdb.base/scope.exp: print 'scope0.c'::filelocal at foo
+PASS: gdb.base/scope.exp: print 'scope0.c'::filelocal_bss in test_at_foo
+PASS: gdb.base/scope.exp: print 'scope0.c'::filelocal_ro
+PASS: gdb.base/scope.exp: print filelocal at foo
+PASS: gdb.base/scope.exp: print 'scope1.c'::filelocal at foo
+PASS: gdb.base/scope.exp: print filelocal_bss at foo
+PASS: gdb.base/scope.exp: print 'scope1.c'::filelocal_bss at foo
+PASS: gdb.base/scope.exp: print filelocal_ro at foo
+PASS: gdb.base/scope.exp: print 'scope1.c'::filelocal_ro at foo
+PASS: gdb.base/scope.exp: print funclocal at foo
+PASS: gdb.base/scope.exp: print foo::funclocal at foo
+PASS: gdb.base/scope.exp: print 'scope1.c'::foo::funclocal at foo
+PASS: gdb.base/scope.exp: print funclocal_bss at foo
+PASS: gdb.base/scope.exp: print foo::funclocal_bss at foo
+PASS: gdb.base/scope.exp: print 'scope1.c'::foo::funclocal_bss at foo
+PASS: gdb.base/scope.exp: print funclocal_ro at foo
+PASS: gdb.base/scope.exp: print foo::funclocal_ro at foo
+PASS: gdb.base/scope.exp: print 'scope1.c'::foo::funclocal_ro at foo
+PASS: gdb.base/scope.exp: print bar::funclocal at foo
+PASS: gdb.base/scope.exp: print 'scope1.c'::bar::funclocal at foo
+PASS: gdb.base/scope.exp: print 'scope0.c'::filelocal at bar
+PASS: gdb.base/scope.exp: print 'scope0.c'::filelocal_bss in test_at_bar
+PASS: gdb.base/scope.exp: print 'scope0.c'::filelocal_ro at bar
+PASS: gdb.base/scope.exp: print filelocal at bar
+PASS: gdb.base/scope.exp: print 'scope1.c'::filelocal at bar
+PASS: gdb.base/scope.exp: print filelocal_bss at bar
+PASS: gdb.base/scope.exp: print 'scope1.c'::filelocal_bss at bar
+PASS: gdb.base/scope.exp: print filelocal_ro in test_at_bar
+PASS: gdb.base/scope.exp: print 'scope1.c'::filelocal_ro at bar
+PASS: gdb.base/scope.exp: print foo::funclocal at bar
+PASS: gdb.base/scope.exp: print 'scope1.c'::foo::funclocal at bar
+PASS: gdb.base/scope.exp: print foo::funclocal_bss at bar
+PASS: gdb.base/scope.exp: print 'scope1.c'::foo::funclocal_bss at bar
+PASS: gdb.base/scope.exp: print foo::funclocal_ro at bar
+PASS: gdb.base/scope.exp: print 'scope1.c'::foo::funclocal_ro at bar
+PASS: gdb.base/scope.exp: print funclocal at bar
+PASS: gdb.base/scope.exp: print bar::funclocal at bar
+PASS: gdb.base/scope.exp: print 'scope1.c'::bar::funclocal at bar
+PASS: gdb.base/scope.exp: print funclocal_bss at bar
+PASS: gdb.base/scope.exp: print bar::funclocal_bss at bar
+PASS: gdb.base/scope.exp: print 'scope1.c'::bar::funclocal_bss at bar
+PASS: gdb.base/scope.exp: continue to marker2
+PASS: gdb.base/scope.exp: up from marker2 in scopes.exp
+PASS: gdb.base/scope.exp: print localval, outer scope
+PASS: gdb.base/scope.exp: print localval1, outer scope
+PASS: gdb.base/scope.exp: print localval2, outer scope
+PASS: gdb.base/scope.exp: print localval3, outer scope
+PASS: gdb.base/scope.exp: continue to marker3 in scope.exp
+PASS: gdb.base/scope.exp: up from marker3 in scope.exp
+PASS: gdb.base/scope.exp: print localval, first nested scope
+PASS: gdb.base/scope.exp: print localval1, first nested scope
+PASS: gdb.base/scope.exp: print localval2, first nested scope
+PASS: gdb.base/scope.exp: print localval3, first nested scope
+PASS: gdb.base/scope.exp: continue to marker4 in scope.exp
+PASS: gdb.base/scope.exp: up from marker4 in scope.exp
+PASS: gdb.base/scope.exp: print localval, innermost scope
+PASS: gdb.base/scope.exp: print localval1, innermost scope
+PASS: gdb.base/scope.exp: print localval2, innermost scope
+PASS: gdb.base/scope.exp: print localval3, innermost scope
+PASS: gdb.base/scope.exp: continue to marker1
+PASS: gdb.base/scope.exp: up from marker1 in scope.exp
+PASS: gdb.base/scope.exp: 100 auto variables correctly initialized
+PASS: gdb.base/scope.exp: args in correct order
+Running ../../../master/gdb/testsuite/gdb.base/sect-cmd.exp ...
+Running ../../../master/gdb/testsuite/gdb.base/sep.exp ...
+PASS: gdb.base/sep.exp: list using location inside included file
+PASS: gdb.base/sep.exp: breakpoint inside included file
+Running ../../../master/gdb/testsuite/gdb.base/sepdebug.exp ...
+PASS: gdb.base/sepdebug.exp: breakpoint function
+PASS: gdb.base/sepdebug.exp: breakpoint quoted function
+PASS: gdb.base/sepdebug.exp: breakpoint function in file
+PASS: gdb.base/sepdebug.exp: use `list' to establish default source file
+PASS: gdb.base/sepdebug.exp: breakpoint line number
+PASS: gdb.base/sepdebug.exp: breakpoint duplicate
+PASS: gdb.base/sepdebug.exp: breakpoint line number in file
+PASS: gdb.base/sepdebug.exp: breakpoint at start of multi line if conditional
+PASS: gdb.base/sepdebug.exp: breakpoint at start of multi line while conditional
+PASS: gdb.base/sepdebug.exp: breakpoint info
+PASS: gdb.base/sepdebug.exp: run until function breakpoint
+PASS: gdb.base/sepdebug.exp: run until breakpoint set at a line number
+PASS: gdb.base/sepdebug.exp: run until file:function(6) breakpoint
+PASS: gdb.base/sepdebug.exp: run until file:function(5) breakpoint
+PASS: gdb.base/sepdebug.exp: run until file:function(4) breakpoint
+PASS: gdb.base/sepdebug.exp: run until file:function(3) breakpoint
+PASS: gdb.base/sepdebug.exp: run until file:function(2) breakpoint
+PASS: gdb.base/sepdebug.exp: run until file:function(1) breakpoint
+PASS: gdb.base/sepdebug.exp: run until quoted breakpoint
+PASS: gdb.base/sepdebug.exp: run until file:linenum breakpoint
+PASS: gdb.base/sepdebug.exp: breakpoint offset +1
+PASS: gdb.base/sepdebug.exp: step onto breakpoint
+PASS: gdb.base/sepdebug.exp: Temporary breakpoint function
+PASS: gdb.base/sepdebug.exp: Temporary breakpoint function in file
+PASS: gdb.base/sepdebug.exp: Temporary breakpoint line number #1
+PASS: gdb.base/sepdebug.exp: Temporary breakpoint line number #2
+PASS: gdb.base/sepdebug.exp: Temporary breakpoint line number in file #1
+PASS: gdb.base/sepdebug.exp: Temporary breakpoint line number in file #2
+PASS: gdb.base/sepdebug.exp: Temporary breakpoint info
+PASS: gdb.base/sepdebug.exp: catch requires an event name
+PASS: gdb.base/sepdebug.exp: set catch fork, never expected to trigger
+PASS: gdb.base/sepdebug.exp: set catch vfork, never expected to trigger
+PASS: gdb.base/sepdebug.exp: set catch exec, never expected to trigger
+PASS: gdb.base/sepdebug.exp: break on non-existent source line
+PASS: gdb.base/sepdebug.exp: until bp_location1
+PASS: gdb.base/sepdebug.exp: break on default location, 1st time
+PASS: gdb.base/sepdebug.exp: break on default location, 2nd time
+PASS: gdb.base/sepdebug.exp: break on default location, 3rd time
+PASS: gdb.base/sepdebug.exp: break on default location, 4th time
+PASS: gdb.base/sepdebug.exp: set to-be-silent break bp_location1
+PASS: gdb.base/sepdebug.exp: set silent break bp_location1
+PASS: gdb.base/sepdebug.exp: info silent break bp_location1
+PASS: gdb.base/sepdebug.exp: hit silent break bp_location1
+PASS: gdb.base/sepdebug.exp: stopped for silent break bp_location1
+PASS: gdb.base/sepdebug.exp: thread-specific breakpoint on non-existent thread disallowed
+PASS: gdb.base/sepdebug.exp: thread-specific breakpoint on bogus thread ID disallowed
+PASS: gdb.base/sepdebug.exp: breakpoint with trailing garbage disallowed
+PASS: gdb.base/sepdebug.exp: step over breakpoint
+PASS: gdb.base/sepdebug.exp: clear line has no breakpoint disallowed
+PASS: gdb.base/sepdebug.exp: clear current line has no breakpoint disallowed
+PASS: gdb.base/sepdebug.exp: break marker3 #1
+PASS: gdb.base/sepdebug.exp: break marker3 #2
+PASS: gdb.base/sepdebug.exp: clear marker3
+PASS: gdb.base/sepdebug.exp: set convenience variable $foo to bp_location11
+PASS: gdb.base/sepdebug.exp: set breakpoint via convenience variable
+PASS: gdb.base/sepdebug.exp: set convenience variable $foo to 81.5
+PASS: gdb.base/sepdebug.exp: set breakpoint via non-integer convenience variable disallowed
+PASS: gdb.base/sepdebug.exp: set breakpoint on to-be-called function
+PASS: gdb.base/sepdebug.exp: hit breakpoint on called function
+PASS: gdb.base/sepdebug.exp: backtrace while in called function
+PASS: gdb.base/sepdebug.exp: finish from called function
+PASS: gdb.base/sepdebug.exp: finish with arguments disallowed
+PASS: gdb.base/sepdebug.exp: finish from outermost frame disallowed
+PASS: gdb.base/sepdebug.exp: kill program
+PASS: gdb.base/sepdebug.exp: break at factorial
+PASS: gdb.base/sepdebug.exp: continue to factorial(5)
+PASS: gdb.base/sepdebug.exp: backtrace from factorial(5)
+PASS: gdb.base/sepdebug.exp: next to recursive call
+PASS: gdb.base/sepdebug.exp: next over recursive call
+PASS: gdb.base/sepdebug.exp: backtrace from factorial(5.1)
+PASS: gdb.base/sepdebug.exp: continue until exit at recursive next test
+PASS: gdb.base/sepdebug.exp: debuglink: set separate debug location
+PASS: gdb.base/sepdebug.exp: debuglink: breakpoint function, optimized file
+PASS: gdb.base/sepdebug.exp: debuglink: breakpoint small function, optimized file
+PASS: gdb.base/sepdebug.exp: debuglink: run until function breakpoint, optimized file
+PASS: gdb.base/sepdebug.exp: debuglink: run until breakpoint set at small function, optimized file
+PASS: gdb.base/sepdebug.exp: CRC mismatch is reported
+PASS: gdb.base/sepdebug.exp: build-id support by binutils
+PASS: gdb.base/sepdebug.exp: build-id: set separate debug location
+PASS: gdb.base/sepdebug.exp: build-id: breakpoint function, optimized file
+PASS: gdb.base/sepdebug.exp: build-id: breakpoint small function, optimized file
+PASS: gdb.base/sepdebug.exp: build-id: run until function breakpoint, optimized file
+PASS: gdb.base/sepdebug.exp: build-id: run until breakpoint set at small function, optimized file
+PASS: gdb.base/sepdebug.exp: multiple-dirs: set separate debug location
+PASS: gdb.base/sepdebug.exp: multiple-dirs: breakpoint function, optimized file
+PASS: gdb.base/sepdebug.exp: multiple-dirs: breakpoint small function, optimized file
+PASS: gdb.base/sepdebug.exp: multiple-dirs: run until function breakpoint, optimized file
+PASS: gdb.base/sepdebug.exp: multiple-dirs: run until breakpoint set at small function, optimized file
+Running ../../../master/gdb/testsuite/gdb.base/sepsymtab.exp ...
+PASS: gdb.base/sepsymtab.exp: info sym main
+Running ../../../master/gdb/testsuite/gdb.base/set-lang-auto.exp ...
+PASS: gdb.base/set-lang-auto.exp: show lang after loading binary
+PASS: gdb.base/set-lang-auto.exp: forcing the language to ada
+PASS: gdb.base/set-lang-auto.exp: show lang after switching language to ada
+PASS: gdb.base/set-lang-auto.exp: switching the language back to auto
+PASS: gdb.base/set-lang-auto.exp: show lang after having switched back to auto
+Running ../../../master/gdb/testsuite/gdb.base/setshow.exp ...
+PASS: gdb.base/setshow.exp: default annotation_level is zero
+PASS: gdb.base/setshow.exp: set annotate 2
+PASS: gdb.base/setshow.exp: show annotate 2
+PASS: gdb.base/setshow.exp: annotation_level 2
+PASS: gdb.base/setshow.exp: set annotate 1
+PASS: gdb.base/setshow.exp: show annotate (1)
+PASS: gdb.base/setshow.exp: annotation_level 1
+PASS: gdb.base/setshow.exp: set annotate 0
+PASS: gdb.base/setshow.exp: show annotate (0)
+PASS: gdb.base/setshow.exp: annotation_level 0
+PASS: gdb.base/setshow.exp: set args
+PASS: gdb.base/setshow.exp: show args
+PASS: gdb.base/setshow.exp: continuing
+PASS: gdb.base/setshow.exp: passing args
+PASS: gdb.base/setshow.exp: set check range on
+PASS: gdb.base/setshow.exp: show check range (on)
+PASS: gdb.base/setshow.exp: set check range off
+PASS: gdb.base/setshow.exp: show check range (off)
+PASS: gdb.base/setshow.exp: set check range auto
+PASS: gdb.base/setshow.exp: show check range (auto)
+PASS: gdb.base/setshow.exp: set check type on
+PASS: gdb.base/setshow.exp: show check type (on)
+PASS: gdb.base/setshow.exp: set check type off
+PASS: gdb.base/setshow.exp: show check type (off)
+PASS: gdb.base/setshow.exp: set check type auto
+PASS: gdb.base/setshow.exp: show check type (auto)
+PASS: gdb.base/setshow.exp: set complaints 100
+PASS: gdb.base/setshow.exp: show complaints (100)
+PASS: gdb.base/setshow.exp: set complaints 0
+PASS: gdb.base/setshow.exp: show complaints (0)
+PASS: gdb.base/setshow.exp: set confirm off
+PASS: gdb.base/setshow.exp: show confirm (off)
+PASS: gdb.base/setshow.exp: set confirm on
+PASS: gdb.base/setshow.exp: show confirm (on)
+PASS: gdb.base/setshow.exp: set editing off
+PASS: gdb.base/setshow.exp: show editing (off)
+PASS: gdb.base/setshow.exp: set environment FOOBARBAZ
+PASS: gdb.base/setshow.exp: show environment FOOBARBAZ
+PASS: gdb.base/setshow.exp: set height 100
+PASS: gdb.base/setshow.exp: show height
+PASS: gdb.base/setshow.exp: set history expansion on
+PASS: gdb.base/setshow.exp: show history expansion
+PASS: gdb.base/setshow.exp: set history filename foobar.baz
+PASS: gdb.base/setshow.exp: show history filename (foobar.baz)
+PASS: gdb.base/setshow.exp: set history save on
+PASS: gdb.base/setshow.exp: show history save (on)
+PASS: gdb.base/setshow.exp: set history size 100
+PASS: gdb.base/setshow.exp: show history size (100)
+PASS: gdb.base/setshow.exp: set language asm
+PASS: gdb.base/setshow.exp: show language (asm)
+PASS: gdb.base/setshow.exp: set language java
+PASS: gdb.base/setshow.exp: show language (java)
+PASS: gdb.base/setshow.exp: complete set language minimal
+PASS: gdb.base/setshow.exp: set language auto
+PASS: gdb.base/setshow.exp: show language (auto)
+PASS: gdb.base/setshow.exp: set listsize 100
+PASS: gdb.base/setshow.exp: show listsize (100)
+PASS: gdb.base/setshow.exp: set prompt FooBarBaz
+PASS: gdb.base/setshow.exp: show prompt FooBarBaz
+PASS: gdb.base/setshow.exp: set prompt gdb
+PASS: gdb.base/setshow.exp: set radix 11
+PASS: gdb.base/setshow.exp: set radix 16
+PASS: gdb.base/setshow.exp: show radix (16)
+PASS: gdb.base/setshow.exp: set radix 10
+PASS: gdb.base/setshow.exp: show radix (10)
+PASS: gdb.base/setshow.exp: set width 90
+PASS: gdb.base/setshow.exp: show width (90)
+PASS: gdb.base/setshow.exp: set write on
+PASS: gdb.base/setshow.exp: show write (on)
+PASS: gdb.base/setshow.exp: set symbol-reloading on
+PASS: gdb.base/setshow.exp: show symbol-reloading (on)
+PASS: gdb.base/setshow.exp: show user
+PASS: gdb.base/setshow.exp: set verbose on
+PASS: gdb.base/setshow.exp: show verbose (on)
+PASS: gdb.base/setshow.exp: set verbose off
+PASS: gdb.base/setshow.exp: show verbose (off)
+Running ../../../master/gdb/testsuite/gdb.base/setvar.exp ...
+PASS: gdb.base/setvar.exp: set print sevenbit-strings
+PASS: gdb.base/setvar.exp: set variable char=0
+PASS: gdb.base/setvar.exp: set variable char=1
+PASS: gdb.base/setvar.exp: set variable char=7 (Bel)
+PASS: gdb.base/setvar.exp: set variable char=32 (SPC)
+PASS: gdb.base/setvar.exp: set variable char=65 ('A')
+PASS: gdb.base/setvar.exp: set variable char=97 ('a')
+PASS: gdb.base/setvar.exp: set variable char=126 ('~')
+PASS: gdb.base/setvar.exp: set variable char=127 (8-bit)
+PASS: gdb.base/setvar.exp: set variable signed char=0
+PASS: gdb.base/setvar.exp: set variable signed char=1
+PASS: gdb.base/setvar.exp: set variable signed char=7 (Bel)
+PASS: gdb.base/setvar.exp: set variable signed char=32 (SPC)
+PASS: gdb.base/setvar.exp: set variable signed char=65 ('A')
+PASS: gdb.base/setvar.exp: set variable signed char=97 ('a')
+PASS: gdb.base/setvar.exp: set variable signed char=126 ('~')
+PASS: gdb.base/setvar.exp: set variable signed char=127 (8-bit)
+PASS: gdb.base/setvar.exp: set variable v_signed_char=-1
+PASS: gdb.base/setvar.exp: set variable signed char=-1 (-1)
+PASS: gdb.base/setvar.exp: set variable v_signed_char=0xFF
+PASS: gdb.base/setvar.exp: set variable signed char=0xFF (0xFF)
+PASS: gdb.base/setvar.exp: set variable unsigned char=0
+PASS: gdb.base/setvar.exp: set variable unsigned char=1
+PASS: gdb.base/setvar.exp: set variable unsigned char=7 (Bel)
+PASS: gdb.base/setvar.exp: set variable unsigned char=32 (SPC)
+PASS: gdb.base/setvar.exp: set variable unsigned char=65 ('A')
+PASS: gdb.base/setvar.exp: set variable unsigned char=97 ('a')
+PASS: gdb.base/setvar.exp: set variable unsigned char=126 ('~')
+PASS: gdb.base/setvar.exp: set variable unsigned char=255 (8-bit)
+PASS: gdb.base/setvar.exp: set variable short=0
+PASS: gdb.base/setvar.exp: set variable short=1
+PASS: gdb.base/setvar.exp: set variable short=-1 (minus)
+PASS: gdb.base/setvar.exp: set variable signed short=0
+PASS: gdb.base/setvar.exp: set variable signed short=1
+PASS: gdb.base/setvar.exp: set variable signed short=-1 (minus)
+PASS: gdb.base/setvar.exp: set variable unsigned short=0
+PASS: gdb.base/setvar.exp: set variable unsigned short=1
+PASS: gdb.base/setvar.exp: set variable unsigned short=~0 (minus)
+PASS: gdb.base/setvar.exp: set variable int=0
+PASS: gdb.base/setvar.exp: set variable int=1
+PASS: gdb.base/setvar.exp: set variable int=-1 (minus)
+PASS: gdb.base/setvar.exp: set variable signed int=0
+PASS: gdb.base/setvar.exp: set variable signed int=1
+PASS: gdb.base/setvar.exp: set variable signed int=-1 (minus)
+PASS: gdb.base/setvar.exp: set variable unsigned int=0
+PASS: gdb.base/setvar.exp: set variable unsigned int=1
+PASS: gdb.base/setvar.exp: set variable unsigned int=~0 (minus)
+PASS: gdb.base/setvar.exp: set variable long=0
+PASS: gdb.base/setvar.exp: set variable long=1
+PASS: gdb.base/setvar.exp: set variable long=-1 (minus)
+PASS: gdb.base/setvar.exp: set variable signed long=0
+PASS: gdb.base/setvar.exp: set variable signed long=1
+PASS: gdb.base/setvar.exp: set variable signed long=-1 (minus)
+PASS: gdb.base/setvar.exp: set variable unsigned long=0
+PASS: gdb.base/setvar.exp: set variable unsigned long=1
+PASS: gdb.base/setvar.exp: set variable unsigned long=~0 (minus)
+PASS: gdb.base/setvar.exp: set variable float=0
+PASS: gdb.base/setvar.exp: set variable float=1
+PASS: gdb.base/setvar.exp: set variable float=-1 (minus)
+PASS: gdb.base/setvar.exp: set variable double=0
+PASS: gdb.base/setvar.exp: set variable double=1
+PASS: gdb.base/setvar.exp: set variable double=-1 (minus)
+PASS: gdb.base/setvar.exp: set variable char array="hi" (string)
+PASS: gdb.base/setvar.exp: set variable signed char array="hi" (string)
+PASS: gdb.base/setvar.exp: set variable unsigned char array="hi" (string)
+PASS: gdb.base/setvar.exp: set variable short array
+PASS: gdb.base/setvar.exp: set variable signed short array
+PASS: gdb.base/setvar.exp: set variable unsigned short array
+PASS: gdb.base/setvar.exp: set variable int array
+PASS: gdb.base/setvar.exp: set variable signed int array
+PASS: gdb.base/setvar.exp: set variable unsigned int array
+PASS: gdb.base/setvar.exp: set variable long array
+PASS: gdb.base/setvar.exp: set variable signed long array
+PASS: gdb.base/setvar.exp: set variable unsigned long array
+PASS: gdb.base/setvar.exp: set variable float array
+PASS: gdb.base/setvar.exp: set variable double array
+PASS: gdb.base/setvar.exp: set variable char pointer="hi" (string)
+PASS: gdb.base/setvar.exp: set variable char pointer="hi" (string) (#2)
+PASS: gdb.base/setvar.exp: set variable signed char pointer="hi" (string)
+PASS: gdb.base/setvar.exp: set variable signed char pointer="hi" (string) (#2)
+PASS: gdb.base/setvar.exp: set variable unsigned char pointer="hi" (string)
+PASS: gdb.base/setvar.exp: set variable unsigned char pointer="hi" (string) (#2)
+PASS: gdb.base/setvar.exp: set variable short pointer
+PASS: gdb.base/setvar.exp: set variable short pointer (#2)
+PASS: gdb.base/setvar.exp: set v_signed_short_pointer=v_signed_short_array
+PASS: gdb.base/setvar.exp: set variable *(v_signed_short_pointer)=123
+PASS: gdb.base/setvar.exp: set variable *(v_signed_short_pointer+1)=-456
+PASS: gdb.base/setvar.exp: set variable signed short pointer
+PASS: gdb.base/setvar.exp: print *(v_signed_short_pointer+1)
+PASS: gdb.base/setvar.exp: set v_unsigned_short_pointer=v_unsigned_short_array
+PASS: gdb.base/setvar.exp: set variable *(v_unsigned_short_pointer)=123
+PASS: gdb.base/setvar.exp: set variable *(v_unsigned_short_pointer+1)=-456
+PASS: gdb.base/setvar.exp: set variable unsigned short pointer
+PASS: gdb.base/setvar.exp: print *(v_unsigned_short_pointer+1)
+PASS: gdb.base/setvar.exp: set variable int pointer
+PASS: gdb.base/setvar.exp: set variable int pointer (#2)
+PASS: gdb.base/setvar.exp: set variable signed int pointer
+PASS: gdb.base/setvar.exp: set variable signed int pointer (#2)
+PASS: gdb.base/setvar.exp: set variable unsigned int pointer
+PASS: gdb.base/setvar.exp: print variable unsigned int pointer+1
+PASS: gdb.base/setvar.exp: set variable long pointer
+PASS: gdb.base/setvar.exp: set variable long pointer (#2)
+PASS: gdb.base/setvar.exp: set variable signed long pointer
+PASS: gdb.base/setvar.exp: set variable signed long pointer (#2)
+PASS: gdb.base/setvar.exp: set variable unsigned long pointer
+PASS: gdb.base/setvar.exp: set variable unsigned long pointer (#2)
+PASS: gdb.base/setvar.exp: set variable float pointer
+PASS: gdb.base/setvar.exp: set variable float pointer (#2)
+PASS: gdb.base/setvar.exp: set variable double pointer
+PASS: gdb.base/setvar.exp: set variable double pointer (#2)
+PASS: gdb.base/setvar.exp: set variable structure char member
+PASS: gdb.base/setvar.exp: set variable structure short member
+PASS: gdb.base/setvar.exp: set variable structure int member
+PASS: gdb.base/setvar.exp: set variable structure long member
+PASS: gdb.base/setvar.exp: set variable structure float member
+PASS: gdb.base/setvar.exp: set variable structure double member
+PASS: gdb.base/setvar.exp: set print structure #1
+PASS: gdb.base/setvar.exp: set print structure #2
+PASS: gdb.base/setvar.exp: set print structure #3
+PASS: gdb.base/setvar.exp: print sef.field=sm1
+PASS: gdb.base/setvar.exp: print sef.field (sm1)
+PASS: gdb.base/setvar.exp: print sef.field=s1
+PASS: gdb.base/setvar.exp: print sef.field (s1)
+PASS: gdb.base/setvar.exp: print uef.field=u2
+PASS: gdb.base/setvar.exp: print uef.field (u2)
+PASS: gdb.base/setvar.exp: print uef.field=u1
+PASS: gdb.base/setvar.exp: print uef.field (u1)
+PASS: gdb.base/setvar.exp: print sef.field=7
+PASS: gdb.base/setvar.exp: print uef.field=6
+Running ../../../master/gdb/testsuite/gdb.base/shlib-call.exp ...
+PASS: gdb.base/shlib-call.exp: set print sevenbit-strings
+PASS: gdb.base/shlib-call.exp: set print address off
+PASS: gdb.base/shlib-call.exp: set width 0
+PASS: gdb.base/shlib-call.exp: next to shr1
+PASS: gdb.base/shlib-call.exp: print g
+PASS: gdb.base/shlib-call.exp: next over shr1
+PASS: gdb.base/shlib-call.exp: print g
+PASS: gdb.base/shlib-call.exp: print shr1(1)
+PASS: gdb.base/shlib-call.exp: print shr1(g)
+PASS: gdb.base/shlib-call.exp: breakpoint function shr2
+PASS: gdb.base/shlib-call.exp: run until breakpoint set at a function
+PASS: gdb.base/shlib-call.exp: print shr1(1) 2nd time
+PASS: gdb.base/shlib-call.exp: print mainshr1(1) from shlib func
+PASS: gdb.base/shlib-call.exp: step out of shr2 to main (stopped in shr2 epilogue)
+PASS: gdb.base/shlib-call.exp: step out of shr2 epilogue to main
+PASS: gdb.base/shlib-call.exp: print mainshr1(1)
+PASS: gdb.base/shlib-call.exp: step into mainshr1
+PASS: gdb.base/shlib-call.exp: set print sevenbit-strings
+PASS: gdb.base/shlib-call.exp: set print address off
+PASS: gdb.base/shlib-call.exp: set width 0
+PASS: gdb.base/shlib-call.exp: run to bp in shared library
+PASS: gdb.base/shlib-call.exp: continue until exit
+PASS: gdb.base/shlib-call.exp: re-run to bp in shared library (PR's 16495, 18213)
+PASS: gdb.base/shlib-call.exp: continue until exit
+Running ../../../master/gdb/testsuite/gdb.base/shreloc.exp ...
+PASS: gdb.base/shreloc.exp: get address of fn_1
+PASS: gdb.base/shreloc.exp: get address of fn_2
+PASS: gdb.base/shreloc.exp: relocated extern functions have different addresses
+PASS: gdb.base/shreloc.exp: get address of extern_var_1
+PASS: gdb.base/shreloc.exp: get address of extern_var_2
+PASS: gdb.base/shreloc.exp: relocated extern variables have different addresses
+PASS: gdb.base/shreloc.exp: get address of static_var_1
+PASS: gdb.base/shreloc.exp: get address of static_var_2
+PASS: gdb.base/shreloc.exp: relocated static variables have different addresses
+PASS: gdb.base/shreloc.exp: get_msym_addrs static_var_[12]
+PASS: gdb.base/shreloc.exp: (msymbol) relocated static vars have different addresses
+PASS: gdb.base/shreloc.exp: get_msym_addrs extern_var_[12]
+PASS: gdb.base/shreloc.exp: (msymbol) relocated extern vars have different addresses
+PASS: gdb.base/shreloc.exp: get_msym_addrs fn_[12]
+PASS: gdb.base/shreloc.exp: (msymbol) relocated functions have different addresses
+Running ../../../master/gdb/testsuite/gdb.base/sigall.exp ...
+PASS: gdb.base/sigall.exp: handle SIGABRT stop print
+PASS: gdb.base/sigall.exp: b handle_ABRT
+PASS: gdb.base/sigall.exp: b gen_HUP
+PASS: gdb.base/sigall.exp: get signal ABRT
+PASS: gdb.base/sigall.exp: send signal ABRT
+PASS: gdb.base/sigall.exp: advance to HUP
+PASS: gdb.base/sigall.exp: handle SIGHUP stop print
+PASS: gdb.base/sigall.exp: b handle_HUP
+PASS: gdb.base/sigall.exp: b gen_QUIT
+PASS: gdb.base/sigall.exp: get signal HUP
+PASS: gdb.base/sigall.exp: send signal HUP
+PASS: gdb.base/sigall.exp: advance to QUIT
+PASS: gdb.base/sigall.exp: handle SIGQUIT stop print
+PASS: gdb.base/sigall.exp: b handle_QUIT
+PASS: gdb.base/sigall.exp: b gen_ILL
+PASS: gdb.base/sigall.exp: get signal QUIT
+PASS: gdb.base/sigall.exp: send signal QUIT
+PASS: gdb.base/sigall.exp: advance to ILL
+PASS: gdb.base/sigall.exp: handle SIGILL stop print
+PASS: gdb.base/sigall.exp: b handle_ILL
+PASS: gdb.base/sigall.exp: b gen_EMT
+PASS: gdb.base/sigall.exp: get signal ILL
+PASS: gdb.base/sigall.exp: send signal ILL
+PASS: gdb.base/sigall.exp: advance to EMT
+PASS: gdb.base/sigall.exp: handle SIGEMT stop print
+PASS: gdb.base/sigall.exp: b handle_EMT
+PASS: gdb.base/sigall.exp: b gen_FPE
+PASS: gdb.base/sigall.exp: send signal EMT
+PASS: gdb.base/sigall.exp: advance to FPE
+PASS: gdb.base/sigall.exp: handle SIGFPE stop print
+PASS: gdb.base/sigall.exp: b handle_FPE
+PASS: gdb.base/sigall.exp: b gen_BUS
+PASS: gdb.base/sigall.exp: get signal FPE
+PASS: gdb.base/sigall.exp: send signal FPE
+PASS: gdb.base/sigall.exp: advance to BUS
+PASS: gdb.base/sigall.exp: handle SIGBUS stop print
+PASS: gdb.base/sigall.exp: b handle_BUS
+PASS: gdb.base/sigall.exp: b gen_SEGV
+PASS: gdb.base/sigall.exp: get signal BUS
+PASS: gdb.base/sigall.exp: send signal BUS
+PASS: gdb.base/sigall.exp: advance to SEGV
+PASS: gdb.base/sigall.exp: handle SIGSEGV stop print
+PASS: gdb.base/sigall.exp: b handle_SEGV
+PASS: gdb.base/sigall.exp: b gen_SYS
+PASS: gdb.base/sigall.exp: get signal SEGV
+PASS: gdb.base/sigall.exp: send signal SEGV
+PASS: gdb.base/sigall.exp: advance to SYS
+PASS: gdb.base/sigall.exp: handle SIGSYS stop print
+PASS: gdb.base/sigall.exp: b handle_SYS
+PASS: gdb.base/sigall.exp: b gen_PIPE
+PASS: gdb.base/sigall.exp: get signal SYS
+PASS: gdb.base/sigall.exp: send signal SYS
+PASS: gdb.base/sigall.exp: advance to PIPE
+PASS: gdb.base/sigall.exp: handle SIGPIPE stop print
+PASS: gdb.base/sigall.exp: b handle_PIPE
+PASS: gdb.base/sigall.exp: b gen_ALRM
+PASS: gdb.base/sigall.exp: get signal PIPE
+PASS: gdb.base/sigall.exp: send signal PIPE
+PASS: gdb.base/sigall.exp: advance to ALRM
+PASS: gdb.base/sigall.exp: handle SIGALRM stop print
+PASS: gdb.base/sigall.exp: b handle_ALRM
+PASS: gdb.base/sigall.exp: b gen_URG
+PASS: gdb.base/sigall.exp: get signal ALRM
+PASS: gdb.base/sigall.exp: send signal ALRM
+PASS: gdb.base/sigall.exp: advance to URG
+PASS: gdb.base/sigall.exp: handle SIGURG stop print
+PASS: gdb.base/sigall.exp: b handle_URG
+PASS: gdb.base/sigall.exp: b gen_TSTP
+PASS: gdb.base/sigall.exp: get signal URG
+PASS: gdb.base/sigall.exp: send signal URG
+PASS: gdb.base/sigall.exp: advance to TSTP
+PASS: gdb.base/sigall.exp: handle SIGTSTP stop print
+PASS: gdb.base/sigall.exp: b handle_TSTP
+PASS: gdb.base/sigall.exp: b gen_CONT
+PASS: gdb.base/sigall.exp: get signal TSTP
+PASS: gdb.base/sigall.exp: send signal TSTP
+PASS: gdb.base/sigall.exp: advance to CONT
+PASS: gdb.base/sigall.exp: handle SIGCONT stop print
+PASS: gdb.base/sigall.exp: b handle_CONT
+PASS: gdb.base/sigall.exp: b gen_CHLD
+PASS: gdb.base/sigall.exp: get signal CONT
+PASS: gdb.base/sigall.exp: send signal CONT
+PASS: gdb.base/sigall.exp: advance to CHLD
+PASS: gdb.base/sigall.exp: handle SIGCHLD stop print
+PASS: gdb.base/sigall.exp: b handle_CHLD
+PASS: gdb.base/sigall.exp: b gen_TTIN
+PASS: gdb.base/sigall.exp: get signal CHLD
+PASS: gdb.base/sigall.exp: send signal CHLD
+PASS: gdb.base/sigall.exp: advance to TTIN
+PASS: gdb.base/sigall.exp: handle SIGTTIN stop print
+PASS: gdb.base/sigall.exp: b handle_TTIN
+PASS: gdb.base/sigall.exp: b gen_TTOU
+PASS: gdb.base/sigall.exp: get signal TTIN
+PASS: gdb.base/sigall.exp: send signal TTIN
+PASS: gdb.base/sigall.exp: advance to TTOU
+PASS: gdb.base/sigall.exp: handle SIGTTOU stop print
+PASS: gdb.base/sigall.exp: b handle_TTOU
+PASS: gdb.base/sigall.exp: b gen_IO
+PASS: gdb.base/sigall.exp: get signal TTOU
+PASS: gdb.base/sigall.exp: send signal TTOU
+PASS: gdb.base/sigall.exp: advance to IO
+PASS: gdb.base/sigall.exp: handle SIGIO stop print
+PASS: gdb.base/sigall.exp: b handle_IO
+PASS: gdb.base/sigall.exp: b gen_XCPU
+PASS: gdb.base/sigall.exp: get signal IO
+PASS: gdb.base/sigall.exp: send signal IO
+PASS: gdb.base/sigall.exp: advance to XCPU
+PASS: gdb.base/sigall.exp: handle SIGXCPU stop print
+PASS: gdb.base/sigall.exp: b handle_XCPU
+PASS: gdb.base/sigall.exp: b gen_XFSZ
+PASS: gdb.base/sigall.exp: get signal XCPU
+PASS: gdb.base/sigall.exp: send signal XCPU
+PASS: gdb.base/sigall.exp: advance to XFSZ
+PASS: gdb.base/sigall.exp: handle SIGXFSZ stop print
+PASS: gdb.base/sigall.exp: b handle_XFSZ
+PASS: gdb.base/sigall.exp: b gen_VTALRM
+PASS: gdb.base/sigall.exp: get signal XFSZ
+PASS: gdb.base/sigall.exp: send signal XFSZ
+PASS: gdb.base/sigall.exp: advance to VTALRM
+PASS: gdb.base/sigall.exp: handle SIGVTALRM stop print
+PASS: gdb.base/sigall.exp: b handle_VTALRM
+PASS: gdb.base/sigall.exp: b gen_PROF
+PASS: gdb.base/sigall.exp: get signal VTALRM
+PASS: gdb.base/sigall.exp: send signal VTALRM
+PASS: gdb.base/sigall.exp: advance to PROF
+PASS: gdb.base/sigall.exp: handle SIGPROF stop print
+PASS: gdb.base/sigall.exp: b handle_PROF
+PASS: gdb.base/sigall.exp: b gen_WINCH
+PASS: gdb.base/sigall.exp: get signal PROF
+PASS: gdb.base/sigall.exp: send signal PROF
+PASS: gdb.base/sigall.exp: advance to WINCH
+PASS: gdb.base/sigall.exp: handle SIGWINCH stop print
+PASS: gdb.base/sigall.exp: b handle_WINCH
+PASS: gdb.base/sigall.exp: b gen_LOST
+PASS: gdb.base/sigall.exp: get signal WINCH
+PASS: gdb.base/sigall.exp: send signal WINCH
+PASS: gdb.base/sigall.exp: advance to LOST
+PASS: gdb.base/sigall.exp: handle SIGLOST stop print
+PASS: gdb.base/sigall.exp: b handle_LOST
+PASS: gdb.base/sigall.exp: b gen_USR1
+PASS: gdb.base/sigall.exp: send signal LOST
+PASS: gdb.base/sigall.exp: advance to USR1
+PASS: gdb.base/sigall.exp: handle SIGUSR1 stop print
+PASS: gdb.base/sigall.exp: b handle_USR1
+PASS: gdb.base/sigall.exp: b gen_USR2
+PASS: gdb.base/sigall.exp: get signal USR1
+PASS: gdb.base/sigall.exp: send signal USR1
+PASS: gdb.base/sigall.exp: advance to USR2
+PASS: gdb.base/sigall.exp: handle SIGUSR2 stop print
+PASS: gdb.base/sigall.exp: b handle_USR2
+PASS: gdb.base/sigall.exp: b gen_PWR
+PASS: gdb.base/sigall.exp: get signal USR2
+PASS: gdb.base/sigall.exp: send signal USR2
+PASS: gdb.base/sigall.exp: advance to PWR
+PASS: gdb.base/sigall.exp: handle SIGPWR stop print
+PASS: gdb.base/sigall.exp: b handle_PWR
+PASS: gdb.base/sigall.exp: b gen_POLL
+PASS: gdb.base/sigall.exp: get signal PWR
+PASS: gdb.base/sigall.exp: send signal PWR
+PASS: gdb.base/sigall.exp: advance to POLL
+PASS: gdb.base/sigall.exp: handle SIGPOLL stop print
+PASS: gdb.base/sigall.exp: b handle_POLL
+PASS: gdb.base/sigall.exp: b gen_WIND
+PASS: gdb.base/sigall.exp: send signal POLL
+PASS: gdb.base/sigall.exp: advance to WIND
+PASS: gdb.base/sigall.exp: handle SIGWIND stop print
+PASS: gdb.base/sigall.exp: b handle_WIND
+PASS: gdb.base/sigall.exp: b gen_PHONE
+PASS: gdb.base/sigall.exp: send signal WIND
+PASS: gdb.base/sigall.exp: advance to PHONE
+PASS: gdb.base/sigall.exp: handle SIGPHONE stop print
+PASS: gdb.base/sigall.exp: b handle_PHONE
+PASS: gdb.base/sigall.exp: b gen_WAITING
+PASS: gdb.base/sigall.exp: send signal PHONE
+PASS: gdb.base/sigall.exp: advance to WAITING
+PASS: gdb.base/sigall.exp: handle SIGWAITING stop print
+PASS: gdb.base/sigall.exp: b handle_WAITING
+PASS: gdb.base/sigall.exp: b gen_LWP
+PASS: gdb.base/sigall.exp: send signal WAITING
+PASS: gdb.base/sigall.exp: advance to LWP
+PASS: gdb.base/sigall.exp: handle SIGLWP stop print
+PASS: gdb.base/sigall.exp: b handle_LWP
+PASS: gdb.base/sigall.exp: b gen_DANGER
+PASS: gdb.base/sigall.exp: send signal LWP
+PASS: gdb.base/sigall.exp: advance to DANGER
+PASS: gdb.base/sigall.exp: handle SIGDANGER stop print
+PASS: gdb.base/sigall.exp: b handle_DANGER
+PASS: gdb.base/sigall.exp: b gen_GRANT
+PASS: gdb.base/sigall.exp: send signal DANGER
+PASS: gdb.base/sigall.exp: advance to GRANT
+PASS: gdb.base/sigall.exp: handle SIGGRANT stop print
+PASS: gdb.base/sigall.exp: b handle_GRANT
+PASS: gdb.base/sigall.exp: b gen_RETRACT
+PASS: gdb.base/sigall.exp: send signal GRANT
+PASS: gdb.base/sigall.exp: advance to RETRACT
+PASS: gdb.base/sigall.exp: handle SIGRETRACT stop print
+PASS: gdb.base/sigall.exp: b handle_RETRACT
+PASS: gdb.base/sigall.exp: b gen_MSG
+PASS: gdb.base/sigall.exp: send signal RETRACT
+PASS: gdb.base/sigall.exp: advance to MSG
+PASS: gdb.base/sigall.exp: handle SIGMSG stop print
+PASS: gdb.base/sigall.exp: b handle_MSG
+PASS: gdb.base/sigall.exp: b gen_SOUND
+PASS: gdb.base/sigall.exp: send signal MSG
+PASS: gdb.base/sigall.exp: advance to SOUND
+PASS: gdb.base/sigall.exp: handle SIGSOUND stop print
+PASS: gdb.base/sigall.exp: b handle_SOUND
+PASS: gdb.base/sigall.exp: b gen_SAK
+PASS: gdb.base/sigall.exp: send signal SOUND
+PASS: gdb.base/sigall.exp: advance to SAK
+PASS: gdb.base/sigall.exp: handle SIGSAK stop print
+PASS: gdb.base/sigall.exp: b handle_SAK
+PASS: gdb.base/sigall.exp: b gen_PRIO
+PASS: gdb.base/sigall.exp: send signal SAK
+PASS: gdb.base/sigall.exp: advance to PRIO
+PASS: gdb.base/sigall.exp: handle SIGPRIO stop print
+PASS: gdb.base/sigall.exp: b handle_PRIO
+PASS: gdb.base/sigall.exp: b gen_33
+PASS: gdb.base/sigall.exp: send signal PRIO
+PASS: gdb.base/sigall.exp: advance to 33
+PASS: gdb.base/sigall.exp: handle SIG33 stop print
+PASS: gdb.base/sigall.exp: b handle_33
+PASS: gdb.base/sigall.exp: b gen_34
+PASS: gdb.base/sigall.exp: send signal 33
+PASS: gdb.base/sigall.exp: advance to 34
+PASS: gdb.base/sigall.exp: handle SIG34 stop print
+PASS: gdb.base/sigall.exp: b handle_34
+PASS: gdb.base/sigall.exp: b gen_35
+PASS: gdb.base/sigall.exp: send signal 34
+PASS: gdb.base/sigall.exp: advance to 35
+PASS: gdb.base/sigall.exp: handle SIG35 stop print
+PASS: gdb.base/sigall.exp: b handle_35
+PASS: gdb.base/sigall.exp: b gen_36
+PASS: gdb.base/sigall.exp: send signal 35
+PASS: gdb.base/sigall.exp: advance to 36
+PASS: gdb.base/sigall.exp: handle SIG36 stop print
+PASS: gdb.base/sigall.exp: b handle_36
+PASS: gdb.base/sigall.exp: b gen_37
+PASS: gdb.base/sigall.exp: send signal 36
+PASS: gdb.base/sigall.exp: advance to 37
+PASS: gdb.base/sigall.exp: handle SIG37 stop print
+PASS: gdb.base/sigall.exp: b handle_37
+PASS: gdb.base/sigall.exp: b gen_38
+PASS: gdb.base/sigall.exp: send signal 37
+PASS: gdb.base/sigall.exp: advance to 38
+PASS: gdb.base/sigall.exp: handle SIG38 stop print
+PASS: gdb.base/sigall.exp: b handle_38
+PASS: gdb.base/sigall.exp: b gen_39
+PASS: gdb.base/sigall.exp: send signal 38
+PASS: gdb.base/sigall.exp: advance to 39
+PASS: gdb.base/sigall.exp: handle SIG39 stop print
+PASS: gdb.base/sigall.exp: b handle_39
+PASS: gdb.base/sigall.exp: b gen_40
+PASS: gdb.base/sigall.exp: send signal 39
+PASS: gdb.base/sigall.exp: advance to 40
+PASS: gdb.base/sigall.exp: handle SIG40 stop print
+PASS: gdb.base/sigall.exp: b handle_40
+PASS: gdb.base/sigall.exp: b gen_41
+PASS: gdb.base/sigall.exp: send signal 40
+PASS: gdb.base/sigall.exp: advance to 41
+PASS: gdb.base/sigall.exp: handle SIG41 stop print
+PASS: gdb.base/sigall.exp: b handle_41
+PASS: gdb.base/sigall.exp: b gen_42
+PASS: gdb.base/sigall.exp: send signal 41
+PASS: gdb.base/sigall.exp: advance to 42
+PASS: gdb.base/sigall.exp: handle SIG42 stop print
+PASS: gdb.base/sigall.exp: b handle_42
+PASS: gdb.base/sigall.exp: b gen_43
+PASS: gdb.base/sigall.exp: send signal 42
+PASS: gdb.base/sigall.exp: advance to 43
+PASS: gdb.base/sigall.exp: handle SIG43 stop print
+PASS: gdb.base/sigall.exp: b handle_43
+PASS: gdb.base/sigall.exp: b gen_44
+PASS: gdb.base/sigall.exp: send signal 43
+PASS: gdb.base/sigall.exp: advance to 44
+PASS: gdb.base/sigall.exp: handle SIG44 stop print
+PASS: gdb.base/sigall.exp: b handle_44
+PASS: gdb.base/sigall.exp: b gen_45
+PASS: gdb.base/sigall.exp: send signal 44
+PASS: gdb.base/sigall.exp: advance to 45
+PASS: gdb.base/sigall.exp: handle SIG45 stop print
+PASS: gdb.base/sigall.exp: b handle_45
+PASS: gdb.base/sigall.exp: b gen_46
+PASS: gdb.base/sigall.exp: send signal 45
+PASS: gdb.base/sigall.exp: advance to 46
+PASS: gdb.base/sigall.exp: handle SIG46 stop print
+PASS: gdb.base/sigall.exp: b handle_46
+PASS: gdb.base/sigall.exp: b gen_47
+PASS: gdb.base/sigall.exp: send signal 46
+PASS: gdb.base/sigall.exp: advance to 47
+PASS: gdb.base/sigall.exp: handle SIG47 stop print
+PASS: gdb.base/sigall.exp: b handle_47
+PASS: gdb.base/sigall.exp: b gen_48
+PASS: gdb.base/sigall.exp: send signal 47
+PASS: gdb.base/sigall.exp: advance to 48
+PASS: gdb.base/sigall.exp: handle SIG48 stop print
+PASS: gdb.base/sigall.exp: b handle_48
+PASS: gdb.base/sigall.exp: b gen_49
+PASS: gdb.base/sigall.exp: send signal 48
+PASS: gdb.base/sigall.exp: advance to 49
+PASS: gdb.base/sigall.exp: handle SIG49 stop print
+PASS: gdb.base/sigall.exp: b handle_49
+PASS: gdb.base/sigall.exp: b gen_50
+PASS: gdb.base/sigall.exp: send signal 49
+PASS: gdb.base/sigall.exp: advance to 50
+PASS: gdb.base/sigall.exp: handle SIG50 stop print
+PASS: gdb.base/sigall.exp: b handle_50
+PASS: gdb.base/sigall.exp: b gen_51
+PASS: gdb.base/sigall.exp: send signal 50
+PASS: gdb.base/sigall.exp: advance to 51
+PASS: gdb.base/sigall.exp: handle SIG51 stop print
+PASS: gdb.base/sigall.exp: b handle_51
+PASS: gdb.base/sigall.exp: b gen_52
+PASS: gdb.base/sigall.exp: send signal 51
+PASS: gdb.base/sigall.exp: advance to 52
+PASS: gdb.base/sigall.exp: handle SIG52 stop print
+PASS: gdb.base/sigall.exp: b handle_52
+PASS: gdb.base/sigall.exp: b gen_53
+PASS: gdb.base/sigall.exp: send signal 52
+PASS: gdb.base/sigall.exp: advance to 53
+PASS: gdb.base/sigall.exp: handle SIG53 stop print
+PASS: gdb.base/sigall.exp: b handle_53
+PASS: gdb.base/sigall.exp: b gen_54
+PASS: gdb.base/sigall.exp: send signal 53
+PASS: gdb.base/sigall.exp: advance to 54
+PASS: gdb.base/sigall.exp: handle SIG54 stop print
+PASS: gdb.base/sigall.exp: b handle_54
+PASS: gdb.base/sigall.exp: b gen_55
+PASS: gdb.base/sigall.exp: send signal 54
+PASS: gdb.base/sigall.exp: advance to 55
+PASS: gdb.base/sigall.exp: handle SIG55 stop print
+PASS: gdb.base/sigall.exp: b handle_55
+PASS: gdb.base/sigall.exp: b gen_56
+PASS: gdb.base/sigall.exp: send signal 55
+PASS: gdb.base/sigall.exp: advance to 56
+PASS: gdb.base/sigall.exp: handle SIG56 stop print
+PASS: gdb.base/sigall.exp: b handle_56
+PASS: gdb.base/sigall.exp: b gen_57
+PASS: gdb.base/sigall.exp: send signal 56
+PASS: gdb.base/sigall.exp: advance to 57
+PASS: gdb.base/sigall.exp: handle SIG57 stop print
+PASS: gdb.base/sigall.exp: b handle_57
+PASS: gdb.base/sigall.exp: b gen_58
+PASS: gdb.base/sigall.exp: send signal 57
+PASS: gdb.base/sigall.exp: advance to 58
+PASS: gdb.base/sigall.exp: handle SIG58 stop print
+PASS: gdb.base/sigall.exp: b handle_58
+PASS: gdb.base/sigall.exp: b gen_59
+PASS: gdb.base/sigall.exp: send signal 58
+PASS: gdb.base/sigall.exp: advance to 59
+PASS: gdb.base/sigall.exp: handle SIG59 stop print
+PASS: gdb.base/sigall.exp: b handle_59
+PASS: gdb.base/sigall.exp: b gen_60
+PASS: gdb.base/sigall.exp: send signal 59
+PASS: gdb.base/sigall.exp: advance to 60
+PASS: gdb.base/sigall.exp: handle SIG60 stop print
+PASS: gdb.base/sigall.exp: b handle_60
+PASS: gdb.base/sigall.exp: b gen_61
+PASS: gdb.base/sigall.exp: send signal 60
+PASS: gdb.base/sigall.exp: advance to 61
+PASS: gdb.base/sigall.exp: handle SIG61 stop print
+PASS: gdb.base/sigall.exp: b handle_61
+PASS: gdb.base/sigall.exp: b gen_62
+PASS: gdb.base/sigall.exp: send signal 61
+PASS: gdb.base/sigall.exp: advance to 62
+PASS: gdb.base/sigall.exp: handle SIG62 stop print
+PASS: gdb.base/sigall.exp: b handle_62
+PASS: gdb.base/sigall.exp: b gen_63
+PASS: gdb.base/sigall.exp: send signal 62
+PASS: gdb.base/sigall.exp: advance to 63
+PASS: gdb.base/sigall.exp: handle SIG63 stop print
+PASS: gdb.base/sigall.exp: b handle_63
+PASS: gdb.base/sigall.exp: b gen_TERM
+PASS: gdb.base/sigall.exp: send signal 63
+PASS: gdb.base/sigall.exp: advance to TERM
+PASS: gdb.base/sigall.exp: handle SIGTERM stop print
+PASS: gdb.base/sigall.exp: b handle_TERM
+PASS: gdb.base/sigall.exp: get signal TERM
+PASS: gdb.base/sigall.exp: send signal TERM
+PASS: gdb.base/sigall.exp: continue until exit at continue to sigall exit
+Running ../../../master/gdb/testsuite/gdb.base/sigaltstack.exp ...
+PASS: gdb.base/sigaltstack.exp: handle SIGALRM print pass nostop
+PASS: gdb.base/sigaltstack.exp: handle SIGVTALRM print pass nostop
+PASS: gdb.base/sigaltstack.exp: handle SIGPROF print pass nostop
+PASS: gdb.base/sigaltstack.exp: break catcher if level == INNER
+PASS: gdb.base/sigaltstack.exp: continue to catch
+PASS: gdb.base/sigaltstack.exp: next
+PASS: gdb.base/sigaltstack.exp: backtrace
+PASS: gdb.base/sigaltstack.exp: finish from catch LEAF
+PASS: gdb.base/sigaltstack.exp: finish to throw INNER
+PASS: gdb.base/sigaltstack.exp: finish to catch INNER
+PASS: gdb.base/sigaltstack.exp: finish from catch INNER
+PASS: gdb.base/sigaltstack.exp: finish to OUTER
+PASS: gdb.base/sigaltstack.exp: finish to catch MAIN
+PASS: gdb.base/sigaltstack.exp: finish to MAIN
+Running ../../../master/gdb/testsuite/gdb.base/sigbpt.exp ...
+PASS: gdb.base/sigbpt.exp: break keeper
+PASS: gdb.base/sigbpt.exp: display/i $pc
+PASS: gdb.base/sigbpt.exp: advance to the bowler
+PASS: gdb.base/sigbpt.exp: stepping to fault
+PASS: gdb.base/sigbpt.exp: get insn after fault
+PASS: gdb.base/sigbpt.exp: Verify that SIGSEGV occurs at the last STEPI insn
+PASS: gdb.base/sigbpt.exp: rerun to main
+PASS: gdb.base/sigbpt.exp: stepi; pass SIGSEGV
+PASS: gdb.base/sigbpt.exp: stepi; continue to keeper
+PASS: gdb.base/sigbpt.exp: stepi; nopass SIGSEGV
+KFAIL: gdb.base/sigbpt.exp: stepi; stepi out of handler (corrupt pc) (PRMS: gdb/1702)
+PASS: gdb.base/sigbpt.exp: rerun to main
+PASS: gdb.base/sigbpt.exp: stepi bp before segv; pass SIGSEGV
+PASS: gdb.base/sigbpt.exp: stepi bp before segv; continue to keeper
+PASS: gdb.base/sigbpt.exp: stepi bp before segv; nopass SIGSEGV
+PASS: gdb.base/sigbpt.exp: stepi bp before segv; set breakpoint 0 of 1
+KFAIL: gdb.base/sigbpt.exp: stepi bp before segv; stepi out of handler (corrupt pc) (PRMS: gdb/1702)
+PASS: gdb.base/sigbpt.exp: stepi bp before segv; clear breakpoint 0 of 1
+PASS: gdb.base/sigbpt.exp: rerun to main
+PASS: gdb.base/sigbpt.exp: stepi bp at segv; pass SIGSEGV
+PASS: gdb.base/sigbpt.exp: stepi bp at segv; continue to keeper
+PASS: gdb.base/sigbpt.exp: stepi bp at segv; nopass SIGSEGV
+PASS: gdb.base/sigbpt.exp: stepi bp at segv; set breakpoint 0 of 1
+KFAIL: gdb.base/sigbpt.exp: stepi bp at segv; stepi out of handler (corrupt pc) (PRMS: gdb/1702)
+PASS: gdb.base/sigbpt.exp: stepi bp at segv; clear breakpoint 0 of 1
+PASS: gdb.base/sigbpt.exp: rerun to main
+PASS: gdb.base/sigbpt.exp: stepi bp before and at segv; pass SIGSEGV
+PASS: gdb.base/sigbpt.exp: stepi bp before and at segv; continue to keeper
+PASS: gdb.base/sigbpt.exp: stepi bp before and at segv; nopass SIGSEGV
+PASS: gdb.base/sigbpt.exp: stepi bp before and at segv; set breakpoint 0 of 2
+PASS: gdb.base/sigbpt.exp: stepi bp before and at segv; set breakpoint 1 of 2
+KFAIL: gdb.base/sigbpt.exp: stepi bp before and at segv; stepi out of handler (corrupt pc) (PRMS: gdb/1702)
+PASS: gdb.base/sigbpt.exp: stepi bp before and at segv; clear breakpoint 0 of 2
+PASS: gdb.base/sigbpt.exp: stepi bp before and at segv; clear breakpoint 1 of 2
+PASS: gdb.base/sigbpt.exp: rerun to main
+PASS: gdb.base/sigbpt.exp: cont; pass SIGSEGV
+PASS: gdb.base/sigbpt.exp: cont; continue to keeper
+PASS: gdb.base/sigbpt.exp: cont; nopass SIGSEGV
+PASS: gdb.base/sigbpt.exp: cont; set breakpoint 0 of 1
+PASS: gdb.base/sigbpt.exp: cont; continue to breakpoint at fault
+PASS: gdb.base/sigbpt.exp: cont; stepi fault
+PASS: gdb.base/sigbpt.exp: cont; clear breakpoint 0 of 1
+PASS: gdb.base/sigbpt.exp: rerun to main
+PASS: gdb.base/sigbpt.exp: cont bp after segv; pass SIGSEGV
+PASS: gdb.base/sigbpt.exp: cont bp after segv; continue to keeper
+PASS: gdb.base/sigbpt.exp: cont bp after segv; nopass SIGSEGV
+PASS: gdb.base/sigbpt.exp: cont bp after segv; set breakpoint 0 of 2
+PASS: gdb.base/sigbpt.exp: cont bp after segv; set breakpoint 1 of 2
+PASS: gdb.base/sigbpt.exp: cont bp after segv; continue to breakpoint at fault
+PASS: gdb.base/sigbpt.exp: cont bp after segv; stepi fault
+PASS: gdb.base/sigbpt.exp: cont bp after segv; clear breakpoint 0 of 2
+PASS: gdb.base/sigbpt.exp: cont bp after segv; clear breakpoint 1 of 2
+PASS: gdb.base/sigbpt.exp: rerun to main
+PASS: gdb.base/sigbpt.exp: cont bp before and after segv; pass SIGSEGV
+PASS: gdb.base/sigbpt.exp: cont bp before and after segv; continue to keeper
+PASS: gdb.base/sigbpt.exp: cont bp before and after segv; nopass SIGSEGV
+PASS: gdb.base/sigbpt.exp: cont bp before and after segv; set breakpoint 0 of 3
+PASS: gdb.base/sigbpt.exp: cont bp before and after segv; set breakpoint 1 of 3
+PASS: gdb.base/sigbpt.exp: cont bp before and after segv; set breakpoint 2 of 3
+PASS: gdb.base/sigbpt.exp: cont bp before and after segv; continue to breakpoint at fault
+PASS: gdb.base/sigbpt.exp: cont bp before and after segv; stepi fault
+PASS: gdb.base/sigbpt.exp: cont bp before and after segv; clear breakpoint 0 of 3
+PASS: gdb.base/sigbpt.exp: cont bp before and after segv; clear breakpoint 1 of 3
+PASS: gdb.base/sigbpt.exp: cont bp before and after segv; clear breakpoint 2 of 3
+Running ../../../master/gdb/testsuite/gdb.base/sigchld.exp ...
+PASS: gdb.base/sigchld.exp: set breakpoint at success exit
+PASS: gdb.base/sigchld.exp: set breakpoint at failure exit
+PASS: gdb.base/sigchld.exp: SIGCHLD blocked in inferior
+Running ../../../master/gdb/testsuite/gdb.base/siginfo-addr.exp ...
+PASS: gdb.base/siginfo-addr.exp: display/i $pc
+PASS: gdb.base/siginfo-addr.exp: continue to signal
+PASS: gdb.base/siginfo-addr.exp: si_addr value
+Running ../../../master/gdb/testsuite/gdb.base/siginfo-infcall.exp ...
+PASS: gdb.base/siginfo-infcall.exp: continue to SIGUSR1
+PASS: gdb.base/siginfo-infcall.exp: p callme ()
+PASS: gdb.base/siginfo-infcall.exp: continue to the handler
+Running ../../../master/gdb/testsuite/gdb.base/siginfo-obj.exp ...
+PASS: gdb.base/siginfo-obj.exp: continue to signal
+PASS: gdb.base/siginfo-obj.exp: Extract si_addr
+PASS: gdb.base/siginfo-obj.exp: Extract si_errno
+PASS: gdb.base/siginfo-obj.exp: Extract si_code
+PASS: gdb.base/siginfo-obj.exp: Extract si_signo
+PASS: gdb.base/siginfo-obj.exp: break 38
+PASS: gdb.base/siginfo-obj.exp: continue to handler
+PASS: gdb.base/siginfo-obj.exp: p ssi_addr
+PASS: gdb.base/siginfo-obj.exp: p ssi_errno
+PASS: gdb.base/siginfo-obj.exp: p ssi_code
+PASS: gdb.base/siginfo-obj.exp: p ssi_signo
+PASS: gdb.base/siginfo-obj.exp: continue to signal
+PASS: gdb.base/siginfo-obj.exp: p $_siginfo._sifields._sigfault.si_addr = 0x666
+PASS: gdb.base/siginfo-obj.exp: p $_siginfo.si_errno = 666
+PASS: gdb.base/siginfo-obj.exp: p $_siginfo.si_code = 999
+PASS: gdb.base/siginfo-obj.exp: p $_siginfo.si_signo = 11
+PASS: gdb.base/siginfo-obj.exp: break 38
+PASS: gdb.base/siginfo-obj.exp: continue to handler
+PASS: gdb.base/siginfo-obj.exp: p ssi_addr
+PASS: gdb.base/siginfo-obj.exp: p ssi_errno
+PASS: gdb.base/siginfo-obj.exp: p ssi_code
+PASS: gdb.base/siginfo-obj.exp: p ssi_signo
+Running ../../../master/gdb/testsuite/gdb.base/siginfo.exp ...
+PASS: gdb.base/siginfo.exp: display/i $pc
+PASS: gdb.base/siginfo.exp: break handler
+PASS: gdb.base/siginfo.exp: continue to stepi handler
+PASS: gdb.base/siginfo.exp: backtrace for nexti
+PASS: gdb.base/siginfo.exp: step out of handler
+Running ../../../master/gdb/testsuite/gdb.base/signals.exp ...
+PASS: gdb.base/signals.exp: handle all print
+PASS: gdb.base/signals.exp: set variable count = 0
+PASS: gdb.base/signals.exp: break handler if 0
+PASS: gdb.base/signals.exp: set $handler_breakpoint_number = $bpnum
+PASS: gdb.base/signals.exp: next to signal
+PASS: gdb.base/signals.exp: next to alarm #1
+PASS: gdb.base/signals.exp: next to ++count #1
+PASS: gdb.base/signals.exp: p func1 () #1
+PASS: gdb.base/signals.exp: p count #1
+PASS: gdb.base/signals.exp: condition $handler_breakpoint_number
+PASS: gdb.base/signals.exp: next to alarm #2
+PASS: gdb.base/signals.exp: next to ++count #2
+PASS: gdb.base/signals.exp: p func1 () #2
+PASS: gdb.base/signals.exp: backtrace from handler when calling func1
+PASS: gdb.base/signals.exp: continue
+PASS: gdb.base/signals.exp: p count #2
+PASS: gdb.base/signals.exp: info signals
+PASS: gdb.base/signals.exp: info signal SIGTRAP
+PASS: gdb.base/signals.exp: info signal 5
+PASS: gdb.base/signals.exp: handle without arguments
+PASS: gdb.base/signals.exp: handle with bogus SIG
+PASS: gdb.base/signals.exp: handle SIG with bogus action
+PASS: gdb.base/signals.exp: handle SIG with multiple conflicting actions
+PASS: gdb.base/signals.exp: handle SIG parses all legal actions
+PASS: gdb.base/signals.exp: handle multiple SIGs
+PASS: gdb.base/signals.exp: override SIGTRAP
+PASS: gdb.base/signals.exp: invalid signal number rejected
+PASS: gdb.base/signals.exp: handle multiple SIGs via integer range
+PASS: gdb.base/signals.exp: handle multiple SIGs via reverse integer range
+PASS: gdb.base/signals.exp: override SIGINT
+PASS: gdb.base/signals.exp: signal without arguments disallowed
+PASS: gdb.base/signals.exp: signal SIGUSR1
+PASS: gdb.base/signals.exp: backtrace for SIGUSR1
+Running ../../../master/gdb/testsuite/gdb.base/signest.exp ...
+PASS: gdb.base/signest.exp: continue to fault
+PASS: gdb.base/signest.exp: set conditional breakpoint
+PASS: gdb.base/signest.exp: pass SIGSEGV
+PASS: gdb.base/signest.exp: pass SIGBUS
+PASS: gdb.base/signest.exp: run through nested faults
+Running ../../../master/gdb/testsuite/gdb.base/signull.exp ...
+PASS: gdb.base/signull.exp: set for function pointer probe
+PASS: gdb.base/signull.exp: probe function pointer (function entry-point)
+PASS: gdb.base/signull.exp: rerun to main
+PASS: gdb.base/signull.exp: break bowler
+PASS: gdb.base/signull.exp: break keeper
+PASS: gdb.base/signull.exp: handle SIGSEGV
+PASS: gdb.base/signull.exp: handle SIGBUS
+PASS: gdb.base/signull.exp: data read; start with the bowler
+PASS: gdb.base/signull.exp: data read; select the pointer type
+PASS: gdb.base/signull.exp: data read; take the SIGSEGV
+PASS: gdb.base/signull.exp: data read; backtrace from SIGSEGV
+PASS: gdb.base/signull.exp: data read; continue to the keeper
+PASS: gdb.base/signull.exp: data read; backtrace from keeper through SIGSEGV
+PASS: gdb.base/signull.exp: data write; start with the bowler
+PASS: gdb.base/signull.exp: data write; select the pointer type
+PASS: gdb.base/signull.exp: data write; take the SIGSEGV
+PASS: gdb.base/signull.exp: data write; backtrace from SIGSEGV
+PASS: gdb.base/signull.exp: data write; continue to the keeper
+PASS: gdb.base/signull.exp: data write; backtrace from keeper through SIGSEGV
+PASS: gdb.base/signull.exp: code; start with the bowler
+PASS: gdb.base/signull.exp: code; select the pointer type
+PASS: gdb.base/signull.exp: code; take the SIGSEGV
+PASS: gdb.base/signull.exp: code; backtrace from SIGSEGV
+PASS: gdb.base/signull.exp: code; continue to the keeper
+PASS: gdb.base/signull.exp: code; backtrace from keeper through SIGSEGV
+Running ../../../master/gdb/testsuite/gdb.base/sigrepeat.exp ...
+PASS: gdb.base/sigrepeat.exp: advance to infinite loop
+PASS: gdb.base/sigrepeat.exp: next
+Running ../../../master/gdb/testsuite/gdb.base/sigstep.exp ...
+PASS: gdb.base/sigstep.exp: display/i $pc
+PASS: gdb.base/sigstep.exp: break handler
+PASS: gdb.base/sigstep.exp: continue to stepi handler
+PASS: gdb.base/sigstep.exp: backtrace for nexti
+PASS: gdb.base/sigstep.exp: step from handler; continue to handler
+PASS: gdb.base/sigstep.exp: step from handler; leave handler
+PASS: gdb.base/sigstep.exp: stepi from handleri; continue to handler
+PASS: gdb.base/sigstep.exp: stepi from handleri; leave handler
+PASS: gdb.base/sigstep.exp: stepi from handleri; leave signal trampoline (in main)
+PASS: gdb.base/sigstep.exp: next from handler; continue to handler
+PASS: gdb.base/sigstep.exp: next from handler; leave handler
+PASS: gdb.base/sigstep.exp: nexti from handleri; continue to handler
+PASS: gdb.base/sigstep.exp: nexti from handleri; leave handler
+PASS: gdb.base/sigstep.exp: nexti from handleri; leave signal trampoline (in main)
+PASS: gdb.base/sigstep.exp: finish from handleri; continue to handler
+PASS: gdb.base/sigstep.exp: finish from handleri; leave handler
+PASS: gdb.base/sigstep.exp: finish from handleri; leave signal trampoline (in main)
+PASS: gdb.base/sigstep.exp: return from handleri; continue to handler
+PASS: gdb.base/sigstep.exp: return from handleri; leave handler
+PASS: gdb.base/sigstep.exp: return from handleri; leave signal trampoline (in main)
+PASS: gdb.base/sigstep.exp: Set done as return will have skipped it
+PASS: gdb.base/sigstep.exp: set itimer = itimer_real
+PASS: gdb.base/sigstep.exp: break 79
+PASS: gdb.base/sigstep.exp: step to handler; resync
+PASS: gdb.base/sigstep.exp: step to handler; advance to infinite loop
+PASS: gdb.base/sigstep.exp: step to handler; break handler
+PASS: gdb.base/sigstep.exp: step to handler; performing step
+PASS: gdb.base/sigstep.exp: step to handler; clear handler
+PASS: gdb.base/sigstep.exp: next to handler; resync
+PASS: gdb.base/sigstep.exp: next to handler; advance to infinite loop
+PASS: gdb.base/sigstep.exp: next to handler; break handler
+PASS: gdb.base/sigstep.exp: next to handler; performing next
+PASS: gdb.base/sigstep.exp: next to handler; clear handler
+PASS: gdb.base/sigstep.exp: continue to handler; resync
+PASS: gdb.base/sigstep.exp: continue to handler; advance to infinite loop
+PASS: gdb.base/sigstep.exp: continue to handler; break handler
+PASS: gdb.base/sigstep.exp: continue to handler; performing continue
+PASS: gdb.base/sigstep.exp: continue to handler; clear handler
+PASS: gdb.base/sigstep.exp: step to handler entry; resync
+PASS: gdb.base/sigstep.exp: step to handler entry; advance to infinite loop
+PASS: gdb.base/sigstep.exp: step to handler entry; break handler
+PASS: gdb.base/sigstep.exp: step to handler entry; performing step
+PASS: gdb.base/sigstep.exp: step to handler entry; clear handler
+PASS: gdb.base/sigstep.exp: next to handler entry; resync
+PASS: gdb.base/sigstep.exp: next to handler entry; advance to infinite loop
+PASS: gdb.base/sigstep.exp: next to handler entry; break handler
+PASS: gdb.base/sigstep.exp: next to handler entry; performing next
+PASS: gdb.base/sigstep.exp: next to handler entry; clear handler
+PASS: gdb.base/sigstep.exp: continue to handler entry; resync
+PASS: gdb.base/sigstep.exp: continue to handler entry; advance to infinite loop
+PASS: gdb.base/sigstep.exp: continue to handler entry; break handler
+PASS: gdb.base/sigstep.exp: continue to handler entry; performing continue
+PASS: gdb.base/sigstep.exp: continue to handler entry; clear handler
+PASS: gdb.base/sigstep.exp: step over handler; resync
+PASS: gdb.base/sigstep.exp: step over handler; advance to infinite loop
+PASS: gdb.base/sigstep.exp: step over handler; performing step
+PASS: gdb.base/sigstep.exp: next over handler; resync
+PASS: gdb.base/sigstep.exp: next over handler; advance to infinite loop
+PASS: gdb.base/sigstep.exp: next over handler; performing next
+PASS: gdb.base/sigstep.exp: continue over handler; resync
+PASS: gdb.base/sigstep.exp: continue over handler; advance to infinite loop
+PASS: gdb.base/sigstep.exp: continue over handler; performing continue
+PASS: gdb.base/sigstep.exp: step on breakpoint, to handler; resync
+PASS: gdb.base/sigstep.exp: step on breakpoint, to handler; break infinite loop
+PASS: gdb.base/sigstep.exp: step on breakpoint, to handler; break handler
+PASS: gdb.base/sigstep.exp: step on breakpoint, to handler; continue to infinite loop
+PASS: gdb.base/sigstep.exp: step on breakpoint, to handler; performing step
+PASS: gdb.base/sigstep.exp: step on breakpoint, to handler; clear infinite loop
+PASS: gdb.base/sigstep.exp: step on breakpoint, to handler; clear handler
+PASS: gdb.base/sigstep.exp: next on breakpoint, to handler; resync
+PASS: gdb.base/sigstep.exp: next on breakpoint, to handler; break infinite loop
+PASS: gdb.base/sigstep.exp: next on breakpoint, to handler; break handler
+PASS: gdb.base/sigstep.exp: next on breakpoint, to handler; continue to infinite loop
+PASS: gdb.base/sigstep.exp: next on breakpoint, to handler; performing next
+PASS: gdb.base/sigstep.exp: next on breakpoint, to handler; clear infinite loop
+PASS: gdb.base/sigstep.exp: next on breakpoint, to handler; clear handler
+PASS: gdb.base/sigstep.exp: continue on breakpoint, to handler; resync
+PASS: gdb.base/sigstep.exp: continue on breakpoint, to handler; break infinite loop
+PASS: gdb.base/sigstep.exp: continue on breakpoint, to handler; break handler
+PASS: gdb.base/sigstep.exp: continue on breakpoint, to handler; continue to infinite loop
+PASS: gdb.base/sigstep.exp: continue on breakpoint, to handler; performing continue
+PASS: gdb.base/sigstep.exp: continue on breakpoint, to handler; clear infinite loop
+PASS: gdb.base/sigstep.exp: continue on breakpoint, to handler; clear handler
+PASS: gdb.base/sigstep.exp: step on breakpoint, to handler entry; resync
+PASS: gdb.base/sigstep.exp: step on breakpoint, to handler entry; break infinite loop
+PASS: gdb.base/sigstep.exp: step on breakpoint, to handler entry; break handler
+PASS: gdb.base/sigstep.exp: step on breakpoint, to handler entry; continue to infinite loop
+PASS: gdb.base/sigstep.exp: step on breakpoint, to handler entry; performing step
+PASS: gdb.base/sigstep.exp: step on breakpoint, to handler entry; clear infinite loop
+PASS: gdb.base/sigstep.exp: step on breakpoint, to handler entry; clear handler
+PASS: gdb.base/sigstep.exp: next on breakpoint, to handler entry; resync
+PASS: gdb.base/sigstep.exp: next on breakpoint, to handler entry; break infinite loop
+PASS: gdb.base/sigstep.exp: next on breakpoint, to handler entry; break handler
+PASS: gdb.base/sigstep.exp: next on breakpoint, to handler entry; continue to infinite loop
+PASS: gdb.base/sigstep.exp: next on breakpoint, to handler entry; performing next
+PASS: gdb.base/sigstep.exp: next on breakpoint, to handler entry; clear infinite loop
+PASS: gdb.base/sigstep.exp: next on breakpoint, to handler entry; clear handler
+PASS: gdb.base/sigstep.exp: continue on breakpoint, to handler entry; resync
+PASS: gdb.base/sigstep.exp: continue on breakpoint, to handler entry; break infinite loop
+PASS: gdb.base/sigstep.exp: continue on breakpoint, to handler entry; break handler
+PASS: gdb.base/sigstep.exp: continue on breakpoint, to handler entry; continue to infinite loop
+PASS: gdb.base/sigstep.exp: continue on breakpoint, to handler entry; performing continue
+PASS: gdb.base/sigstep.exp: continue on breakpoint, to handler entry; clear infinite loop
+PASS: gdb.base/sigstep.exp: continue on breakpoint, to handler entry; clear handler
+PASS: gdb.base/sigstep.exp: step on breakpoint, skip handler; resync
+PASS: gdb.base/sigstep.exp: step on breakpoint, skip handler; break infinite loop
+PASS: gdb.base/sigstep.exp: step on breakpoint, skip handler; continue to infinite loop
+PASS: gdb.base/sigstep.exp: step on breakpoint, skip handler; performing step
+PASS: gdb.base/sigstep.exp: step on breakpoint, skip handler; clear infinite loop
+PASS: gdb.base/sigstep.exp: next on breakpoint, skip handler; resync
+PASS: gdb.base/sigstep.exp: next on breakpoint, skip handler; break infinite loop
+PASS: gdb.base/sigstep.exp: next on breakpoint, skip handler; continue to infinite loop
+PASS: gdb.base/sigstep.exp: next on breakpoint, skip handler; performing next
+PASS: gdb.base/sigstep.exp: next on breakpoint, skip handler; clear infinite loop
+PASS: gdb.base/sigstep.exp: continue on breakpoint, skip handler; resync
+PASS: gdb.base/sigstep.exp: continue on breakpoint, skip handler; break infinite loop
+PASS: gdb.base/sigstep.exp: continue on breakpoint, skip handler; continue to infinite loop
+PASS: gdb.base/sigstep.exp: continue on breakpoint, skip handler; performing continue
+PASS: gdb.base/sigstep.exp: continue on breakpoint, skip handler; clear infinite loop
+Running ../../../master/gdb/testsuite/gdb.base/sizeof.exp ...
+PASS: gdb.base/sizeof.exp: next
+PASS: gdb.base/sizeof.exp: get integer valueof "sizeof (char)" (1)
+PASS: gdb.base/sizeof.exp: get integer valueof "sizeof (short)" (2)
+PASS: gdb.base/sizeof.exp: get integer valueof "sizeof (int)" (4)
+PASS: gdb.base/sizeof.exp: get integer valueof "sizeof (long)" (4)
+PASS: gdb.base/sizeof.exp: get integer valueof "sizeof (long long)" (8)
+PASS: gdb.base/sizeof.exp: get integer valueof "sizeof (void *)" (4)
+PASS: gdb.base/sizeof.exp: get integer valueof "sizeof (void (*)(void))" (4)
+PASS: gdb.base/sizeof.exp: get integer valueof "sizeof (float)" (4)
+PASS: gdb.base/sizeof.exp: get integer valueof "sizeof (double)" (8)
+PASS: gdb.base/sizeof.exp: get integer valueof "sizeof (long double)" (12)
+PASS: gdb.base/sizeof.exp: check sizeof "char"
+PASS: gdb.base/sizeof.exp: check sizeof "short"
+PASS: gdb.base/sizeof.exp: check sizeof "int"
+PASS: gdb.base/sizeof.exp: check sizeof "long"
+PASS: gdb.base/sizeof.exp: check sizeof "long long"
+PASS: gdb.base/sizeof.exp: check sizeof "void *"
+PASS: gdb.base/sizeof.exp: check sizeof "void (*)(void)"
+PASS: gdb.base/sizeof.exp: check sizeof "float"
+PASS: gdb.base/sizeof.exp: check sizeof "double"
+PASS: gdb.base/sizeof.exp: check sizeof "long double"
+PASS: gdb.base/sizeof.exp: get integer valueof "'\377'" (-1)
+PASS: gdb.base/sizeof.exp: get integer valueof "(int) (char) -1" (-1)
+PASS: gdb.base/sizeof.exp: get integer valueof "(int) (signed char) -1" (-1)
+PASS: gdb.base/sizeof.exp: get integer valueof "(int) (unsigned char) -1" (255)
+PASS: gdb.base/sizeof.exp: check valueof "'\377'"
+PASS: gdb.base/sizeof.exp: check valueof "(int) (char) -1"
+PASS: gdb.base/sizeof.exp: check valueof "(int) (signed char) -1"
+PASS: gdb.base/sizeof.exp: check valueof "(int) (unsigned char) -1"
+PASS: gdb.base/sizeof.exp: set padding_char.v = 1
+PASS: gdb.base/sizeof.exp: print padding_char.p1
+PASS: gdb.base/sizeof.exp: print/d padding_char.v
+PASS: gdb.base/sizeof.exp: print padding_char.p2
+PASS: gdb.base/sizeof.exp: set padding_short.v = 2
+PASS: gdb.base/sizeof.exp: print padding_short.p1
+PASS: gdb.base/sizeof.exp: print/d padding_short.v
+PASS: gdb.base/sizeof.exp: print padding_short.p2
+PASS: gdb.base/sizeof.exp: set padding_int.v = 4
+PASS: gdb.base/sizeof.exp: print padding_int.p1
+PASS: gdb.base/sizeof.exp: print/d padding_int.v
+PASS: gdb.base/sizeof.exp: print padding_int.p2
+PASS: gdb.base/sizeof.exp: set padding_long.v = 4
+PASS: gdb.base/sizeof.exp: print padding_long.p1
+PASS: gdb.base/sizeof.exp: print/d padding_long.v
+PASS: gdb.base/sizeof.exp: print padding_long.p2
+PASS: gdb.base/sizeof.exp: set padding_long_long.v = 8
+PASS: gdb.base/sizeof.exp: print padding_long_long.p1
+PASS: gdb.base/sizeof.exp: print/d padding_long_long.v
+PASS: gdb.base/sizeof.exp: print padding_long_long.p2
+PASS: gdb.base/sizeof.exp: set padding_float.v = 1
+PASS: gdb.base/sizeof.exp: print padding_float.p1
+PASS: gdb.base/sizeof.exp: print/f padding_float.v
+PASS: gdb.base/sizeof.exp: print padding_float.p2
+PASS: gdb.base/sizeof.exp: set padding_double.v = 2
+PASS: gdb.base/sizeof.exp: print padding_double.p1
+PASS: gdb.base/sizeof.exp: print/f padding_double.v
+PASS: gdb.base/sizeof.exp: print padding_double.p2
+PASS: gdb.base/sizeof.exp: set padding_long_double.v = 4
+PASS: gdb.base/sizeof.exp: print padding_long_double.p1
+PASS: gdb.base/sizeof.exp: print/f padding_long_double.v
+PASS: gdb.base/sizeof.exp: print padding_long_double.p2
+PASS: gdb.base/sizeof.exp: maint print arch
+Running ../../../master/gdb/testsuite/gdb.base/so-impl-ld.exp ...
+PASS: gdb.base/so-impl-ld.exp: step over solib call
+PASS: gdb.base/so-impl-ld.exp: step into solib call
+PASS: gdb.base/so-impl-ld.exp: step in solib call
+PASS: gdb.base/so-impl-ld.exp: step out of solib call
+Running ../../../master/gdb/testsuite/gdb.base/so-indr-cl.exp ...
+Running ../../../master/gdb/testsuite/gdb.base/solib-corrupted.exp ...
+PASS: gdb.base/solib-corrupted.exp: normal list
+XFAIL: gdb.base/solib-corrupted.exp: make solibs looping
+UNTESTED: gdb.base/solib-corrupted.exp: solib-corrupted.exp
+Running ../../../master/gdb/testsuite/gdb.base/solib-disc.exp ...
+Running ../../../master/gdb/testsuite/gdb.base/solib-display.exp ...
+PASS: gdb.base/solib-display.exp: NO: display a_global
+PASS: gdb.base/solib-display.exp: NO: display b_global
+PASS: gdb.base/solib-display.exp: NO: display c_global
+PASS: gdb.base/solib-display.exp: NO: after rerun
+PASS: gdb.base/solib-display.exp: NO: after rerun (2)
+PASS: gdb.base/solib-display.exp: NO: break 25
+PASS: gdb.base/solib-display.exp: NO: continue
+PASS: gdb.base/solib-display.exp: NO: display main_global
+PASS: gdb.base/solib-display.exp: NO: display a_local
+PASS: gdb.base/solib-display.exp: NO: display a_static
+PASS: gdb.base/solib-display.exp: NO: break 25
+PASS: gdb.base/solib-display.exp: NO: continue
+PASS: gdb.base/solib-display.exp: IN: display a_global
+PASS: gdb.base/solib-display.exp: IN: display b_global
+PASS: gdb.base/solib-display.exp: IN: display c_global
+PASS: gdb.base/solib-display.exp: IN: after rerun
+PASS: gdb.base/solib-display.exp: IN: after rerun (2)
+PASS: gdb.base/solib-display.exp: IN: break 25
+PASS: gdb.base/solib-display.exp: IN: continue
+PASS: gdb.base/solib-display.exp: IN: display main_global
+PASS: gdb.base/solib-display.exp: IN: display a_local
+PASS: gdb.base/solib-display.exp: IN: display a_static
+PASS: gdb.base/solib-display.exp: IN: break 25
+PASS: gdb.base/solib-display.exp: IN: continue
+PASS: gdb.base/solib-display.exp: SEP: split solib
+PASS: gdb.base/solib-display.exp: SEP: display a_global
+PASS: gdb.base/solib-display.exp: SEP: display b_global
+PASS: gdb.base/solib-display.exp: SEP: display c_global
+PASS: gdb.base/solib-display.exp: SEP: after rerun
+PASS: gdb.base/solib-display.exp: SEP: split solib second time
+PASS: gdb.base/solib-display.exp: SEP: after rerun (2)
+PASS: gdb.base/solib-display.exp: SEP: break 25
+PASS: gdb.base/solib-display.exp: SEP: continue
+PASS: gdb.base/solib-display.exp: SEP: display main_global
+PASS: gdb.base/solib-display.exp: SEP: display a_local
+PASS: gdb.base/solib-display.exp: SEP: display a_static
+PASS: gdb.base/solib-display.exp: SEP: break 25
+PASS: gdb.base/solib-display.exp: SEP: continue
+Running ../../../master/gdb/testsuite/gdb.base/solib-nodir.exp ...
+PASS: gdb.base/solib-nodir.exp: set env LD_LIBRARY_PATH=:
+PASS: gdb.base/solib-nodir.exp: cd OBJDIR/gdb.base
+PASS: gdb.base/solib-nodir.exp: library loaded
+Running ../../../master/gdb/testsuite/gdb.base/solib-overlap.exp ...
+UNTESTED: gdb.base/solib-overlap.exp: 0x40000000: Could not prelink OBJDIR/gdb.base/solib-overlap-lib1-0x40000000.so or OBJDIR/gdb.base/solib-overlap-lib2-0x40000000.so.
+Running ../../../master/gdb/testsuite/gdb.base/solib-symbol.exp ...
+PASS: gdb.base/solib-symbol.exp: foo2 in main
+PASS: gdb.base/solib-symbol.exp: foo in libmd
+PASS: gdb.base/solib-symbol.exp: continue
+PASS: gdb.base/solib-symbol.exp: foo2 in mdlib
+Running ../../../master/gdb/testsuite/gdb.base/solib-weak.exp ...
+PASS: gdb.base/solib-weak.exp: run to breakpoint - lib1 nodebug, lib2 nodebug, lib1 first
+PASS: gdb.base/solib-weak.exp: run to breakpoint - lib1 nodebug, lib2 nodebug, lib2 first
+KFAIL: gdb.base/solib-weak.exp: run to breakpoint - lib1 nodebug, lib2 debug, lib1 first (the program exited) (PRMS: gdb/1824)
+PASS: gdb.base/solib-weak.exp: run to breakpoint - lib1 nodebug, lib2 debug, lib2 first
+PASS: gdb.base/solib-weak.exp: run to breakpoint - lib1 debug, lib2 nodebug, lib1 first
+KFAIL: gdb.base/solib-weak.exp: run to breakpoint - lib1 debug, lib2 nodebug, lib2 first (the program exited) (PRMS: gdb/1824)
+PASS: gdb.base/solib-weak.exp: run to breakpoint - lib1 debug, lib2 debug, lib1 first
+PASS: gdb.base/solib-weak.exp: run to breakpoint - lib1 debug, lib2 debug, lib2 first
+Running ../../../master/gdb/testsuite/gdb.base/solib.exp ...
+Running ../../../master/gdb/testsuite/gdb.base/source.exp ...
+PASS: gdb.base/source.exp: script contains error
+PASS: gdb.base/source.exp: source -v
+PASS: gdb.base/source.exp: source after -v
+PASS: gdb.base/source.exp: dir ../../../master/gdb/testsuite/gdb.base
+PASS: gdb.base/source.exp: source -s
+PASS: gdb.base/source.exp: source -s -v
+PASS: gdb.base/source.exp: source -v -s
+Running ../../../master/gdb/testsuite/gdb.base/stack-checking.exp ...
+PASS: gdb.base/stack-checking.exp: continue to breakpoint: breakpoint for small frame
+PASS: gdb.base/stack-checking.exp: bt
+PASS: gdb.base/stack-checking.exp: continue to breakpoint: breakpoint for medium frame
+PASS: gdb.base/stack-checking.exp: bt
+PASS: gdb.base/stack-checking.exp: continue to breakpoint: breakpoint for big frame
+PASS: gdb.base/stack-checking.exp: bt
+Running ../../../master/gdb/testsuite/gdb.base/start.exp ...
+PASS: gdb.base/start.exp: start
+Running ../../../master/gdb/testsuite/gdb.base/step-break.exp ...
+PASS: gdb.base/step-break.exp: breakpoint line number
+PASS: gdb.base/step-break.exp: run until breakpoint set at a line number
+PASS: gdb.base/step-break.exp: next 2 (1)
+PASS: gdb.base/step-break.exp: next 2 (2)
+PASS: gdb.base/step-break.exp: next 2 (3)
+PASS: gdb.base/step-break.exp: next 2 (4)
+PASS: gdb.base/step-break.exp: next 2 (5)
+PASS: gdb.base/step-break.exp: next 2 (6)
+Running ../../../master/gdb/testsuite/gdb.base/step-bt.exp ...
+PASS: gdb.base/step-bt.exp: breakpoint at first instruction of hello()
+PASS: gdb.base/step-bt.exp: run to hello()
+PASS: gdb.base/step-bt.exp: step first instruction
+PASS: gdb.base/step-bt.exp: backtrace after first instruction step
+PASS: gdb.base/step-bt.exp: step second instruction
+PASS: gdb.base/step-bt.exp: backtrace after second instruction step
+Running ../../../master/gdb/testsuite/gdb.base/step-line.exp ...
+PASS: gdb.base/step-line.exp: break f1
+PASS: gdb.base/step-line.exp: continue to f1
+PASS: gdb.base/step-line.exp: next over dummy 1
+PASS: gdb.base/step-line.exp: next to dummy 2
+PASS: gdb.base/step-line.exp: next over dummy 2
+PASS: gdb.base/step-line.exp: step into f2
+PASS: gdb.base/step-line.exp: next over dummy 4
+PASS: gdb.base/step-line.exp: next to dummy 5
+PASS: gdb.base/step-line.exp: next to dummy 6
+PASS: gdb.base/step-line.exp: next over dummy 6
+PASS: gdb.base/step-line.exp: next to dummy 7
+PASS: gdb.base/step-line.exp: next to dummy 8
+PASS: gdb.base/step-line.exp: next over dummy 8
+PASS: gdb.base/step-line.exp: next to dummy 9
+PASS: gdb.base/step-line.exp: next to dummy 10
+PASS: gdb.base/step-line.exp: next over dummy 10
+Running ../../../master/gdb/testsuite/gdb.base/step-resume-infcall.exp ...
+PASS: gdb.base/step-resume-infcall.exp: step
+PASS: gdb.base/step-resume-infcall.exp: up
+PASS: gdb.base/step-resume-infcall.exp: set $b=$pc
+PASS: gdb.base/step-resume-infcall.exp: print $bpnum
+PASS: gdb.base/step-resume-infcall.exp: disass/m
+PASS: gdb.base/step-resume-infcall.exp: info breakpoints
+PASS: gdb.base/step-resume-infcall.exp: next
+PASS: gdb.base/step-resume-infcall.exp: p cond_hit
+Running ../../../master/gdb/testsuite/gdb.base/step-test.exp ...
+PASS: gdb.base/step-test.exp: next 1
+PASS: gdb.base/step-test.exp: step 1
+PASS: gdb.base/step-test.exp: next 2
+PASS: gdb.base/step-test.exp: step 3
+PASS: gdb.base/step-test.exp: next 3
+PASS: gdb.base/step-test.exp: next over
+PASS: gdb.base/step-test.exp: step into
+PASS: gdb.base/step-test.exp: step out
+PASS: gdb.base/step-test.exp: stepi to next line
+PASS: gdb.base/step-test.exp: stepi into function
+PASS: gdb.base/step-test.exp: stepi into function's first source line
+PASS: gdb.base/step-test.exp: stepi: finish call
+PASS: gdb.base/step-test.exp: nexti over function
+PASS: gdb.base/step-test.exp: set breakpoint at call to large_struct_by_value
+PASS: gdb.base/step-test.exp: run to pass large struct
+PASS: gdb.base/step-test.exp: large struct by value
+PASS: gdb.base/step-test.exp: continue until exit at step-test.exp
+Running ../../../master/gdb/testsuite/gdb.base/store.exp ...
+PASS: gdb.base/store.exp: tbreak wack_charest
+PASS: gdb.base/store.exp: continue to wack_charest
+PASS: gdb.base/store.exp: var charest l; next charest
+PASS: gdb.base/store.exp: var charest l; print old l, expecting -1 .*
+PASS: gdb.base/store.exp: var charest l; print old r, expecting -2 .*
+PASS: gdb.base/store.exp: var charest l; setting l to 4
+PASS: gdb.base/store.exp: var charest l; print new l, expecting 4 ..004.
+PASS: gdb.base/store.exp: var charest l; next over add call
+PASS: gdb.base/store.exp: var charest l; print incremented l, expecting 2 ..002.
+PASS: gdb.base/store.exp: tbreak wack_short
+PASS: gdb.base/store.exp: continue to wack_short
+PASS: gdb.base/store.exp: var short l; next short
+PASS: gdb.base/store.exp: var short l; print old l, expecting -1
+PASS: gdb.base/store.exp: var short l; print old r, expecting -2
+PASS: gdb.base/store.exp: var short l; setting l to 4
+PASS: gdb.base/store.exp: var short l; print new l, expecting 4
+PASS: gdb.base/store.exp: var short l; next over add call
+PASS: gdb.base/store.exp: var short l; print incremented l, expecting 2
+PASS: gdb.base/store.exp: tbreak wack_int
+PASS: gdb.base/store.exp: continue to wack_int
+PASS: gdb.base/store.exp: var int l; next int
+PASS: gdb.base/store.exp: var int l; print old l, expecting -1
+PASS: gdb.base/store.exp: var int l; print old r, expecting -2
+PASS: gdb.base/store.exp: var int l; setting l to 4
+PASS: gdb.base/store.exp: var int l; print new l, expecting 4
+PASS: gdb.base/store.exp: var int l; next over add call
+PASS: gdb.base/store.exp: var int l; print incremented l, expecting 2
+PASS: gdb.base/store.exp: tbreak wack_long
+PASS: gdb.base/store.exp: continue to wack_long
+PASS: gdb.base/store.exp: var long l; next long
+PASS: gdb.base/store.exp: var long l; print old l, expecting -1
+PASS: gdb.base/store.exp: var long l; print old r, expecting -2
+PASS: gdb.base/store.exp: var long l; setting l to 4
+PASS: gdb.base/store.exp: var long l; print new l, expecting 4
+PASS: gdb.base/store.exp: var long l; next over add call
+PASS: gdb.base/store.exp: var long l; print incremented l, expecting 2
+PASS: gdb.base/store.exp: tbreak wack_longest
+PASS: gdb.base/store.exp: continue to wack_longest
+PASS: gdb.base/store.exp: var longest l; next longest
+PASS: gdb.base/store.exp: var longest l; print old l, expecting -1
+PASS: gdb.base/store.exp: var longest l; print old r, expecting -2
+PASS: gdb.base/store.exp: var longest l; setting l to 4
+PASS: gdb.base/store.exp: var longest l; print new l, expecting 4
+PASS: gdb.base/store.exp: var longest l; next over add call
+PASS: gdb.base/store.exp: var longest l; print incremented l, expecting 2
+PASS: gdb.base/store.exp: tbreak wack_float
+PASS: gdb.base/store.exp: continue to wack_float
+PASS: gdb.base/store.exp: var float l; next float
+PASS: gdb.base/store.exp: var float l; print old l, expecting -1
+PASS: gdb.base/store.exp: var float l; print old r, expecting -2
+PASS: gdb.base/store.exp: var float l; setting l to 4
+PASS: gdb.base/store.exp: var float l; print new l, expecting 4
+PASS: gdb.base/store.exp: var float l; next over add call
+PASS: gdb.base/store.exp: var float l; print incremented l, expecting 2
+PASS: gdb.base/store.exp: tbreak wack_double
+PASS: gdb.base/store.exp: continue to wack_double
+PASS: gdb.base/store.exp: var double l; next double
+PASS: gdb.base/store.exp: var double l; print old l, expecting -1
+PASS: gdb.base/store.exp: var double l; print old r, expecting -2
+PASS: gdb.base/store.exp: var double l; setting l to 4
+PASS: gdb.base/store.exp: var double l; print new l, expecting 4
+PASS: gdb.base/store.exp: var double l; next over add call
+PASS: gdb.base/store.exp: var double l; print incremented l, expecting 2
+PASS: gdb.base/store.exp: tbreak wack_doublest
+PASS: gdb.base/store.exp: continue to wack_doublest
+PASS: gdb.base/store.exp: var doublest l; next doublest
+PASS: gdb.base/store.exp: var doublest l; print old l, expecting -1
+PASS: gdb.base/store.exp: var doublest l; print old r, expecting -2
+PASS: gdb.base/store.exp: var doublest l; setting l to 4
+PASS: gdb.base/store.exp: var doublest l; print new l, expecting 4
+PASS: gdb.base/store.exp: var doublest l; next over add call
+PASS: gdb.base/store.exp: var doublest l; print incremented l, expecting 2
+PASS: gdb.base/store.exp: tbreak add_charest
+PASS: gdb.base/store.exp: continue to add_charest
+PASS: gdb.base/store.exp: upvar charest l; up
+PASS: gdb.base/store.exp: upvar charest l; print old l, expecting -1 .*
+PASS: gdb.base/store.exp: upvar charest l; print old r, expecting -2 .*
+PASS: gdb.base/store.exp: upvar charest l; set l to 4
+PASS: gdb.base/store.exp: upvar charest l; print new l, expecting 4 ..004.
+PASS: gdb.base/store.exp: tbreak add_short
+PASS: gdb.base/store.exp: continue to add_short
+PASS: gdb.base/store.exp: upvar short l; up
+PASS: gdb.base/store.exp: upvar short l; print old l, expecting -1
+PASS: gdb.base/store.exp: upvar short l; print old r, expecting -2
+PASS: gdb.base/store.exp: upvar short l; set l to 4
+PASS: gdb.base/store.exp: upvar short l; print new l, expecting 4
+PASS: gdb.base/store.exp: tbreak add_int
+PASS: gdb.base/store.exp: continue to add_int
+PASS: gdb.base/store.exp: upvar int l; up
+PASS: gdb.base/store.exp: upvar int l; print old l, expecting -1
+PASS: gdb.base/store.exp: upvar int l; print old r, expecting -2
+PASS: gdb.base/store.exp: upvar int l; set l to 4
+PASS: gdb.base/store.exp: upvar int l; print new l, expecting 4
+PASS: gdb.base/store.exp: tbreak add_long
+PASS: gdb.base/store.exp: continue to add_long
+PASS: gdb.base/store.exp: upvar long l; up
+PASS: gdb.base/store.exp: upvar long l; print old l, expecting -1
+PASS: gdb.base/store.exp: upvar long l; print old r, expecting -2
+PASS: gdb.base/store.exp: upvar long l; set l to 4
+PASS: gdb.base/store.exp: upvar long l; print new l, expecting 4
+PASS: gdb.base/store.exp: tbreak add_longest
+PASS: gdb.base/store.exp: continue to add_longest
+PASS: gdb.base/store.exp: upvar longest l; up
+PASS: gdb.base/store.exp: upvar longest l; print old l, expecting -1
+PASS: gdb.base/store.exp: upvar longest l; print old r, expecting -2
+PASS: gdb.base/store.exp: upvar longest l; set l to 4
+PASS: gdb.base/store.exp: upvar longest l; print new l, expecting 4
+PASS: gdb.base/store.exp: tbreak add_float
+PASS: gdb.base/store.exp: continue to add_float
+PASS: gdb.base/store.exp: upvar float l; up
+PASS: gdb.base/store.exp: upvar float l; print old l, expecting -1
+PASS: gdb.base/store.exp: upvar float l; print old r, expecting -2
+PASS: gdb.base/store.exp: upvar float l; set l to 4
+PASS: gdb.base/store.exp: upvar float l; print new l, expecting 4
+PASS: gdb.base/store.exp: tbreak add_double
+PASS: gdb.base/store.exp: continue to add_double
+PASS: gdb.base/store.exp: upvar double l; up
+PASS: gdb.base/store.exp: upvar double l; print old l, expecting -1
+PASS: gdb.base/store.exp: upvar double l; print old r, expecting -2
+PASS: gdb.base/store.exp: upvar double l; set l to 4
+PASS: gdb.base/store.exp: upvar double l; print new l, expecting 4
+PASS: gdb.base/store.exp: tbreak add_doublest
+PASS: gdb.base/store.exp: continue to add_doublest
+PASS: gdb.base/store.exp: upvar doublest l; up
+PASS: gdb.base/store.exp: upvar doublest l; print old l, expecting -1
+PASS: gdb.base/store.exp: upvar doublest l; print old r, expecting -2
+PASS: gdb.base/store.exp: upvar doublest l; set l to 4
+PASS: gdb.base/store.exp: upvar doublest l; print new l, expecting 4
+PASS: gdb.base/store.exp: tbreak wack_struct_1
+PASS: gdb.base/store.exp: continue to wack_struct_1
+PASS: gdb.base/store.exp: var struct 1 u; next to add_struct_1 call
+PASS: gdb.base/store.exp: var struct 1 u; print old u, expecting {s = \{0}}
+PASS: gdb.base/store.exp: var struct 1 u; set u to s_1
+PASS: gdb.base/store.exp: var struct 1 u; print new u, expecting {s = \{1}}
+PASS: gdb.base/store.exp: tbreak wack_struct_2
+PASS: gdb.base/store.exp: continue to wack_struct_2
+PASS: gdb.base/store.exp: var struct 2 u; next to add_struct_2 call
+PASS: gdb.base/store.exp: var struct 2 u; print old u, expecting {s = \{0, 0}}
+PASS: gdb.base/store.exp: var struct 2 u; set u to s_2
+PASS: gdb.base/store.exp: var struct 2 u; print new u, expecting {s = \{1, 2}}
+PASS: gdb.base/store.exp: tbreak wack_struct_3
+PASS: gdb.base/store.exp: continue to wack_struct_3
+PASS: gdb.base/store.exp: var struct 3 u; next to add_struct_3 call
+PASS: gdb.base/store.exp: var struct 3 u; print old u, expecting {s = \{0, 0, 0}}
+PASS: gdb.base/store.exp: var struct 3 u; set u to s_3
+PASS: gdb.base/store.exp: var struct 3 u; print new u, expecting {s = \{1, 2, 3}}
+PASS: gdb.base/store.exp: tbreak wack_struct_4
+PASS: gdb.base/store.exp: continue to wack_struct_4
+PASS: gdb.base/store.exp: var struct 4 u; next to add_struct_4 call
+PASS: gdb.base/store.exp: var struct 4 u; print old u, expecting {s = \{0, 0, 0, 0}}
+PASS: gdb.base/store.exp: var struct 4 u; set u to s_4
+PASS: gdb.base/store.exp: var struct 4 u; print new u, expecting {s = \{1, 2, 3, 4}}
+PASS: gdb.base/store.exp: tbreak add_struct_1
+PASS: gdb.base/store.exp: continue to add_struct_1
+PASS: gdb.base/store.exp: up struct 1 u; up
+PASS: gdb.base/store.exp: up struct 1 u; print old u, expecting {s = \{0}}
+PASS: gdb.base/store.exp: up struct 1 u; set u to s_1
+PASS: gdb.base/store.exp: up struct 1 u; print new u, expecting {s = \{1}}
+PASS: gdb.base/store.exp: tbreak add_struct_2
+PASS: gdb.base/store.exp: continue to add_struct_2
+PASS: gdb.base/store.exp: up struct 2 u; up
+PASS: gdb.base/store.exp: up struct 2 u; print old u, expecting {s = \{0, 0}}
+PASS: gdb.base/store.exp: up struct 2 u; set u to s_2
+PASS: gdb.base/store.exp: up struct 2 u; print new u, expecting {s = \{1, 2}}
+PASS: gdb.base/store.exp: tbreak add_struct_3
+PASS: gdb.base/store.exp: continue to add_struct_3
+PASS: gdb.base/store.exp: up struct 3 u; up
+PASS: gdb.base/store.exp: up struct 3 u; print old u, expecting {s = \{0, 0, 0}}
+PASS: gdb.base/store.exp: up struct 3 u; set u to s_3
+PASS: gdb.base/store.exp: up struct 3 u; print new u, expecting {s = \{1, 2, 3}}
+PASS: gdb.base/store.exp: tbreak add_struct_4
+PASS: gdb.base/store.exp: continue to add_struct_4
+PASS: gdb.base/store.exp: up struct 4 u; up
+PASS: gdb.base/store.exp: up struct 4 u; print old u, expecting {s = \{0, 0, 0, 0}}
+PASS: gdb.base/store.exp: up struct 4 u; set u to s_4
+PASS: gdb.base/store.exp: up struct 4 u; print new u, expecting {s = \{1, 2, 3, 4}}
+PASS: gdb.base/store.exp: tbreak wack_field_1
+PASS: gdb.base/store.exp: continue field 1
+PASS: gdb.base/store.exp: next field 1
+PASS: gdb.base/store.exp: old field 1
+PASS: gdb.base/store.exp: set variable u = F_1
+PASS: gdb.base/store.exp: new field 1
+PASS: gdb.base/store.exp: set variable u = F_1, u.i = f_1.i
+PASS: gdb.base/store.exp: f_1.i
+PASS: gdb.base/store.exp: set variable u = F_1, u.j = f_1.j
+PASS: gdb.base/store.exp: f_1.j
+PASS: gdb.base/store.exp: set variable u = F_1, u.k = f_1.k
+PASS: gdb.base/store.exp: f_1.k
+PASS: gdb.base/store.exp: set variable u = f_1, u.i = F_1.i
+PASS: gdb.base/store.exp: F_1.i
+PASS: gdb.base/store.exp: set variable u = f_1, u.j = F_1.j
+PASS: gdb.base/store.exp: F_1.j
+PASS: gdb.base/store.exp: set variable u = f_1, u.k = F_1.k
+PASS: gdb.base/store.exp: F_1.k
+PASS: gdb.base/store.exp: tbreak wack_field_2
+PASS: gdb.base/store.exp: continue field 2
+PASS: gdb.base/store.exp: next field 2
+PASS: gdb.base/store.exp: old field 2
+PASS: gdb.base/store.exp: set variable u = F_2
+PASS: gdb.base/store.exp: new field 2
+PASS: gdb.base/store.exp: set variable u = F_2, u.i = f_2.i
+PASS: gdb.base/store.exp: f_2.i
+PASS: gdb.base/store.exp: set variable u = F_2, u.j = f_2.j
+PASS: gdb.base/store.exp: f_2.j
+PASS: gdb.base/store.exp: set variable u = F_2, u.k = f_2.k
+PASS: gdb.base/store.exp: f_2.k
+PASS: gdb.base/store.exp: set variable u = f_2, u.i = F_2.i
+PASS: gdb.base/store.exp: F_2.i
+PASS: gdb.base/store.exp: set variable u = f_2, u.j = F_2.j
+PASS: gdb.base/store.exp: F_2.j
+PASS: gdb.base/store.exp: set variable u = f_2, u.k = F_2.k
+PASS: gdb.base/store.exp: F_2.k
+PASS: gdb.base/store.exp: tbreak wack_field_3
+PASS: gdb.base/store.exp: continue field 3
+PASS: gdb.base/store.exp: next field 3
+PASS: gdb.base/store.exp: old field 3
+PASS: gdb.base/store.exp: set variable u = F_3
+PASS: gdb.base/store.exp: new field 3
+PASS: gdb.base/store.exp: set variable u = F_3, u.i = f_3.i
+PASS: gdb.base/store.exp: f_3.i
+PASS: gdb.base/store.exp: set variable u = F_3, u.j = f_3.j
+PASS: gdb.base/store.exp: f_3.j
+PASS: gdb.base/store.exp: set variable u = F_3, u.k = f_3.k
+PASS: gdb.base/store.exp: f_3.k
+PASS: gdb.base/store.exp: set variable u = f_3, u.i = F_3.i
+PASS: gdb.base/store.exp: F_3.i
+PASS: gdb.base/store.exp: set variable u = f_3, u.j = F_3.j
+PASS: gdb.base/store.exp: F_3.j
+PASS: gdb.base/store.exp: set variable u = f_3, u.k = F_3.k
+PASS: gdb.base/store.exp: F_3.k
+PASS: gdb.base/store.exp: tbreak wack_field_4
+PASS: gdb.base/store.exp: continue field 4
+PASS: gdb.base/store.exp: next field 4
+PASS: gdb.base/store.exp: old field 4
+PASS: gdb.base/store.exp: set variable u = F_4
+PASS: gdb.base/store.exp: new field 4
+PASS: gdb.base/store.exp: set variable u = F_4, u.i = f_4.i
+PASS: gdb.base/store.exp: f_4.i
+PASS: gdb.base/store.exp: set variable u = F_4, u.j = f_4.j
+PASS: gdb.base/store.exp: f_4.j
+PASS: gdb.base/store.exp: set variable u = F_4, u.k = f_4.k
+PASS: gdb.base/store.exp: f_4.k
+PASS: gdb.base/store.exp: set variable u = f_4, u.i = F_4.i
+PASS: gdb.base/store.exp: F_4.i
+PASS: gdb.base/store.exp: set variable u = f_4, u.j = F_4.j
+PASS: gdb.base/store.exp: F_4.j
+PASS: gdb.base/store.exp: set variable u = f_4, u.k = F_4.k
+PASS: gdb.base/store.exp: F_4.k
+Running ../../../master/gdb/testsuite/gdb.base/structs.exp ...
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: continue to breakpoint: chartest-done
+PASS: gdb.base/structs.exp: p chartest
+PASS: gdb.base/structs.exp: ptype foo1; structs-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 1 structs-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 1 structs-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 1 structs-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 2 structs-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 2 structs-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 2 structs-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 3 structs-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 3 structs-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 3 structs-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 4 structs-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 4 structs-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 4 structs-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 5 structs-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 5 structs-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 5 structs-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 6 structs-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 6 structs-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 6 structs-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 7 structs-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 7 structs-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 7 structs-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 8 structs-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 8 structs-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 8 structs-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 9 structs-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 9 structs-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 9 structs-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 10 structs-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 10 structs-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 10 structs-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 11 structs-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 11 structs-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 11 structs-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 12 structs-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 12 structs-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 12 structs-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 13 structs-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 13 structs-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 13 structs-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 14 structs-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 14 structs-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 14 structs-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 15 structs-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 15 structs-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 15 structs-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 16 structs-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 16 structs-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 16 structs-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 17 structs-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 17 structs-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 17 structs-tc
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 1 structs-tc
+PASS: gdb.base/structs.exp: zed L<n> for return; return 1 structs-tc
+PASS: gdb.base/structs.exp: return foo<n>; return 1 structs-tc
+PASS: gdb.base/structs.exp: value foo<n> returned; return 1 structs-tc
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 1 structs-tc
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 1 structs-tc
+PASS: gdb.base/structs.exp: finish foo<n>; return 1 structs-tc
+PASS: gdb.base/structs.exp: value foo<n> finished; return 1 structs-tc
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-tc
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 2 structs-tc
+PASS: gdb.base/structs.exp: zed L<n> for return; return 2 structs-tc
+PASS: gdb.base/structs.exp: return foo<n>; return 2 structs-tc
+PASS: gdb.base/structs.exp: value foo<n> returned; return 2 structs-tc
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 2 structs-tc
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 2 structs-tc
+PASS: gdb.base/structs.exp: finish foo<n>; return 2 structs-tc
+PASS: gdb.base/structs.exp: value foo<n> finished; return 2 structs-tc
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tc
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 3 structs-tc
+PASS: gdb.base/structs.exp: zed L<n> for return; return 3 structs-tc
+PASS: gdb.base/structs.exp: return foo<n>; return 3 structs-tc
+PASS: gdb.base/structs.exp: value foo<n> returned; return 3 structs-tc
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 3 structs-tc
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 3 structs-tc
+PASS: gdb.base/structs.exp: finish foo<n>; return 3 structs-tc
+PASS: gdb.base/structs.exp: value foo<n> finished; return 3 structs-tc
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 3 structs-tc
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 4 structs-tc
+PASS: gdb.base/structs.exp: zed L<n> for return; return 4 structs-tc
+PASS: gdb.base/structs.exp: return foo<n>; return 4 structs-tc
+PASS: gdb.base/structs.exp: value foo<n> returned; return 4 structs-tc
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 4 structs-tc
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 4 structs-tc
+PASS: gdb.base/structs.exp: finish foo<n>; return 4 structs-tc
+PASS: gdb.base/structs.exp: value foo<n> finished; return 4 structs-tc
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 4 structs-tc
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 5 structs-tc
+PASS: gdb.base/structs.exp: zed L<n> for return; return 5 structs-tc
+PASS: gdb.base/structs.exp: return foo<n>; return 5 structs-tc
+PASS: gdb.base/structs.exp: value foo<n> returned; return 5 structs-tc
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 5 structs-tc
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 5 structs-tc
+PASS: gdb.base/structs.exp: finish foo<n>; return 5 structs-tc
+PASS: gdb.base/structs.exp: value foo<n> finished; return 5 structs-tc
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 5 structs-tc
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 6 structs-tc
+PASS: gdb.base/structs.exp: zed L<n> for return; return 6 structs-tc
+PASS: gdb.base/structs.exp: return foo<n>; return 6 structs-tc
+PASS: gdb.base/structs.exp: value foo<n> returned; return 6 structs-tc
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 6 structs-tc
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 6 structs-tc
+PASS: gdb.base/structs.exp: finish foo<n>; return 6 structs-tc
+PASS: gdb.base/structs.exp: value foo<n> finished; return 6 structs-tc
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 6 structs-tc
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 7 structs-tc
+PASS: gdb.base/structs.exp: zed L<n> for return; return 7 structs-tc
+PASS: gdb.base/structs.exp: return foo<n>; return 7 structs-tc
+PASS: gdb.base/structs.exp: value foo<n> returned; return 7 structs-tc
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 7 structs-tc
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 7 structs-tc
+PASS: gdb.base/structs.exp: finish foo<n>; return 7 structs-tc
+PASS: gdb.base/structs.exp: value foo<n> finished; return 7 structs-tc
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 7 structs-tc
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 8 structs-tc
+PASS: gdb.base/structs.exp: zed L<n> for return; return 8 structs-tc
+PASS: gdb.base/structs.exp: return foo<n>; return 8 structs-tc
+PASS: gdb.base/structs.exp: value foo<n> returned; return 8 structs-tc
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 8 structs-tc
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 8 structs-tc
+PASS: gdb.base/structs.exp: finish foo<n>; return 8 structs-tc
+PASS: gdb.base/structs.exp: value foo<n> finished; return 8 structs-tc
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 8 structs-tc
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: ptype foo1; structs-ts
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 1 structs-ts
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 1 structs-ts
+PASS: gdb.base/structs.exp: p/c L<n>; call 1 structs-ts
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 2 structs-ts
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 2 structs-ts
+PASS: gdb.base/structs.exp: p/c L<n>; call 2 structs-ts
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 3 structs-ts
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 3 structs-ts
+PASS: gdb.base/structs.exp: p/c L<n>; call 3 structs-ts
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 4 structs-ts
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 4 structs-ts
+PASS: gdb.base/structs.exp: p/c L<n>; call 4 structs-ts
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 5 structs-ts
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 5 structs-ts
+PASS: gdb.base/structs.exp: p/c L<n>; call 5 structs-ts
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 1 structs-ts
+PASS: gdb.base/structs.exp: zed L<n> for return; return 1 structs-ts
+PASS: gdb.base/structs.exp: return foo<n>; return 1 structs-ts
+PASS: gdb.base/structs.exp: value foo<n> returned; return 1 structs-ts
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 1 structs-ts
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 1 structs-ts
+PASS: gdb.base/structs.exp: finish foo<n>; return 1 structs-ts
+PASS: gdb.base/structs.exp: value foo<n> finished; return 1 structs-ts
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-ts
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 2 structs-ts
+PASS: gdb.base/structs.exp: zed L<n> for return; return 2 structs-ts
+PASS: gdb.base/structs.exp: return foo<n>; return 2 structs-ts
+PASS: gdb.base/structs.exp: value foo<n> returned; return 2 structs-ts
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 2 structs-ts
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 2 structs-ts
+PASS: gdb.base/structs.exp: finish foo<n>; return 2 structs-ts
+PASS: gdb.base/structs.exp: value foo<n> finished; return 2 structs-ts
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-ts
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 3 structs-ts
+PASS: gdb.base/structs.exp: zed L<n> for return; return 3 structs-ts
+PASS: gdb.base/structs.exp: return foo<n>; return 3 structs-ts
+PASS: gdb.base/structs.exp: value foo<n> returned; return 3 structs-ts
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 3 structs-ts
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 3 structs-ts
+PASS: gdb.base/structs.exp: finish foo<n>; return 3 structs-ts
+PASS: gdb.base/structs.exp: value foo<n> finished; return 3 structs-ts
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 3 structs-ts
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 4 structs-ts
+PASS: gdb.base/structs.exp: zed L<n> for return; return 4 structs-ts
+PASS: gdb.base/structs.exp: return foo<n>; return 4 structs-ts
+PASS: gdb.base/structs.exp: value foo<n> returned; return 4 structs-ts
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 4 structs-ts
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 4 structs-ts
+PASS: gdb.base/structs.exp: finish foo<n>; return 4 structs-ts
+PASS: gdb.base/structs.exp: value foo<n> finished; return 4 structs-ts
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 4 structs-ts
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: ptype foo1; structs-ti
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 1 structs-ti
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 1 structs-ti
+PASS: gdb.base/structs.exp: p/c L<n>; call 1 structs-ti
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 2 structs-ti
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 2 structs-ti
+PASS: gdb.base/structs.exp: p/c L<n>; call 2 structs-ti
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 3 structs-ti
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 3 structs-ti
+PASS: gdb.base/structs.exp: p/c L<n>; call 3 structs-ti
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 1 structs-ti
+PASS: gdb.base/structs.exp: zed L<n> for return; return 1 structs-ti
+PASS: gdb.base/structs.exp: return foo<n>; return 1 structs-ti
+PASS: gdb.base/structs.exp: value foo<n> returned; return 1 structs-ti
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 1 structs-ti
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 1 structs-ti
+PASS: gdb.base/structs.exp: finish foo<n>; return 1 structs-ti
+PASS: gdb.base/structs.exp: value foo<n> finished; return 1 structs-ti
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-ti
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 2 structs-ti
+PASS: gdb.base/structs.exp: zed L<n> for return; return 2 structs-ti
+PASS: gdb.base/structs.exp: return foo<n>; return 2 structs-ti
+PASS: gdb.base/structs.exp: value foo<n> returned; return 2 structs-ti
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 2 structs-ti
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 2 structs-ti
+PASS: gdb.base/structs.exp: finish foo<n>; return 2 structs-ti
+PASS: gdb.base/structs.exp: value foo<n> finished; return 2 structs-ti
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-ti
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: ptype foo1; structs-tl
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 1 structs-tl
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 1 structs-tl
+PASS: gdb.base/structs.exp: p/c L<n>; call 1 structs-tl
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 2 structs-tl
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 2 structs-tl
+PASS: gdb.base/structs.exp: p/c L<n>; call 2 structs-tl
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 3 structs-tl
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 3 structs-tl
+PASS: gdb.base/structs.exp: p/c L<n>; call 3 structs-tl
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 1 structs-tl
+PASS: gdb.base/structs.exp: zed L<n> for return; return 1 structs-tl
+PASS: gdb.base/structs.exp: return foo<n>; return 1 structs-tl
+PASS: gdb.base/structs.exp: value foo<n> returned; return 1 structs-tl
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 1 structs-tl
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 1 structs-tl
+PASS: gdb.base/structs.exp: finish foo<n>; return 1 structs-tl
+PASS: gdb.base/structs.exp: value foo<n> finished; return 1 structs-tl
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-tl
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 2 structs-tl
+PASS: gdb.base/structs.exp: zed L<n> for return; return 2 structs-tl
+PASS: gdb.base/structs.exp: return foo<n>; return 2 structs-tl
+PASS: gdb.base/structs.exp: value foo<n> returned; return 2 structs-tl
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 2 structs-tl
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 2 structs-tl
+PASS: gdb.base/structs.exp: finish foo<n>; return 2 structs-tl
+PASS: gdb.base/structs.exp: value foo<n> finished; return 2 structs-tl
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tl
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: ptype foo1; structs-tll
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 1 structs-tll
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 1 structs-tll
+PASS: gdb.base/structs.exp: p/c L<n>; call 1 structs-tll
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 2 structs-tll
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 2 structs-tll
+PASS: gdb.base/structs.exp: p/c L<n>; call 2 structs-tll
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 1 structs-tll
+PASS: gdb.base/structs.exp: zed L<n> for return; return 1 structs-tll
+PASS: gdb.base/structs.exp: return foo<n>; return 1 structs-tll
+PASS: gdb.base/structs.exp: value foo<n> returned; return 1 structs-tll
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 1 structs-tll
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 1 structs-tll
+PASS: gdb.base/structs.exp: finish foo<n>; return 1 structs-tll
+PASS: gdb.base/structs.exp: value foo<n> finished; return 1 structs-tll
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-tll
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: ptype foo1; structs-tf
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 1 structs-tf
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 1 structs-tf
+PASS: gdb.base/structs.exp: p/c L<n>; call 1 structs-tf
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 2 structs-tf
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 2 structs-tf
+PASS: gdb.base/structs.exp: p/c L<n>; call 2 structs-tf
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 3 structs-tf
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 3 structs-tf
+PASS: gdb.base/structs.exp: p/c L<n>; call 3 structs-tf
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 1 structs-tf
+PASS: gdb.base/structs.exp: zed L<n> for return; return 1 structs-tf
+PASS: gdb.base/structs.exp: return foo<n>; return 1 structs-tf
+PASS: gdb.base/structs.exp: value foo<n> returned; return 1 structs-tf
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 1 structs-tf
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 1 structs-tf
+PASS: gdb.base/structs.exp: finish foo<n>; return 1 structs-tf
+PASS: gdb.base/structs.exp: value foo<n> finished; return 1 structs-tf
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-tf
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 2 structs-tf
+PASS: gdb.base/structs.exp: zed L<n> for return; return 2 structs-tf
+PASS: gdb.base/structs.exp: return foo<n>; return 2 structs-tf
+PASS: gdb.base/structs.exp: value foo<n> returned; return 2 structs-tf
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 2 structs-tf
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 2 structs-tf
+PASS: gdb.base/structs.exp: finish foo<n>; return 2 structs-tf
+PASS: gdb.base/structs.exp: value foo<n> finished; return 2 structs-tf
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tf
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: ptype foo1; structs-td
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 1 structs-td
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 1 structs-td
+PASS: gdb.base/structs.exp: p/c L<n>; call 1 structs-td
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 2 structs-td
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 2 structs-td
+PASS: gdb.base/structs.exp: p/c L<n>; call 2 structs-td
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 1 structs-td
+PASS: gdb.base/structs.exp: zed L<n> for return; return 1 structs-td
+PASS: gdb.base/structs.exp: return foo<n>; return 1 structs-td
+PASS: gdb.base/structs.exp: value foo<n> returned; return 1 structs-td
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 1 structs-td
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 1 structs-td
+PASS: gdb.base/structs.exp: finish foo<n>; return 1 structs-td
+PASS: gdb.base/structs.exp: value foo<n> finished; return 1 structs-td
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-td
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: ptype foo1; structs-tld
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 1 structs-tld
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 1 structs-tld
+PASS: gdb.base/structs.exp: p/c L<n>; call 1 structs-tld
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 2 structs-tld
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 2 structs-tld
+PASS: gdb.base/structs.exp: p/c L<n>; call 2 structs-tld
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 1 structs-tld
+PASS: gdb.base/structs.exp: zed L<n> for return; return 1 structs-tld
+PASS: gdb.base/structs.exp: return foo<n>; return 1 structs-tld
+PASS: gdb.base/structs.exp: value foo<n> returned; return 1 structs-tld
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 1 structs-tld
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 1 structs-tld
+PASS: gdb.base/structs.exp: finish foo<n>; return 1 structs-tld
+PASS: gdb.base/structs.exp: value foo<n> finished; return 1 structs-tld
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 1 structs-tld
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: ptype foo2; structs-ts-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 2 structs-ts-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 2 structs-ts-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 2 structs-ts-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 3 structs-ts-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 3 structs-ts-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 3 structs-ts-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 4 structs-ts-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 4 structs-ts-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 4 structs-ts-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 5 structs-ts-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 5 structs-ts-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 5 structs-ts-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 6 structs-ts-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 6 structs-ts-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 6 structs-ts-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 7 structs-ts-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 7 structs-ts-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 7 structs-ts-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 8 structs-ts-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 8 structs-ts-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 8 structs-ts-tc
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 2 structs-ts-tc
+PASS: gdb.base/structs.exp: zed L<n> for return; return 2 structs-ts-tc
+PASS: gdb.base/structs.exp: return foo<n>; return 2 structs-ts-tc
+PASS: gdb.base/structs.exp: value foo<n> returned; return 2 structs-ts-tc
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 2 structs-ts-tc
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 2 structs-ts-tc
+PASS: gdb.base/structs.exp: finish foo<n>; return 2 structs-ts-tc
+PASS: gdb.base/structs.exp: value foo<n> finished; return 2 structs-ts-tc
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-ts-tc
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: ptype foo2; structs-ti-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 2 structs-ti-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 2 structs-ti-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 2 structs-ti-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 3 structs-ti-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 3 structs-ti-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 3 structs-ti-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 4 structs-ti-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 4 structs-ti-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 4 structs-ti-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 5 structs-ti-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 5 structs-ti-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 5 structs-ti-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 6 structs-ti-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 6 structs-ti-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 6 structs-ti-tc
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 2 structs-ti-tc
+PASS: gdb.base/structs.exp: zed L<n> for return; return 2 structs-ti-tc
+PASS: gdb.base/structs.exp: return foo<n>; return 2 structs-ti-tc
+PASS: gdb.base/structs.exp: value foo<n> returned; return 2 structs-ti-tc
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 2 structs-ti-tc
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 2 structs-ti-tc
+PASS: gdb.base/structs.exp: finish foo<n>; return 2 structs-ti-tc
+PASS: gdb.base/structs.exp: value foo<n> finished; return 2 structs-ti-tc
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-ti-tc
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: ptype foo2; structs-tl-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 2 structs-tl-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 2 structs-tl-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 2 structs-tl-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 3 structs-tl-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 3 structs-tl-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 3 structs-tl-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 4 structs-tl-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 4 structs-tl-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 4 structs-tl-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 5 structs-tl-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 5 structs-tl-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 5 structs-tl-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 6 structs-tl-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 6 structs-tl-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 6 structs-tl-tc
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 2 structs-tl-tc
+PASS: gdb.base/structs.exp: zed L<n> for return; return 2 structs-tl-tc
+PASS: gdb.base/structs.exp: return foo<n>; return 2 structs-tl-tc
+PASS: gdb.base/structs.exp: value foo<n> returned; return 2 structs-tl-tc
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 2 structs-tl-tc
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 2 structs-tl-tc
+PASS: gdb.base/structs.exp: finish foo<n>; return 2 structs-tl-tc
+PASS: gdb.base/structs.exp: value foo<n> finished; return 2 structs-tl-tc
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tl-tc
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: ptype foo2; structs-tll-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 2 structs-tll-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 2 structs-tll-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 2 structs-tll-tc
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: ptype foo2; structs-tf-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 2 structs-tf-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 2 structs-tf-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 2 structs-tf-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 3 structs-tf-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 3 structs-tf-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 3 structs-tf-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 4 structs-tf-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 4 structs-tf-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 4 structs-tf-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 5 structs-tf-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 5 structs-tf-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 5 structs-tf-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 6 structs-tf-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 6 structs-tf-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 6 structs-tf-tc
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 2 structs-tf-tc
+PASS: gdb.base/structs.exp: zed L<n> for return; return 2 structs-tf-tc
+PASS: gdb.base/structs.exp: return foo<n>; return 2 structs-tf-tc
+PASS: gdb.base/structs.exp: value foo<n> returned; return 2 structs-tf-tc
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 2 structs-tf-tc
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 2 structs-tf-tc
+PASS: gdb.base/structs.exp: finish foo<n>; return 2 structs-tf-tc
+PASS: gdb.base/structs.exp: value foo<n> finished; return 2 structs-tf-tc
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tf-tc
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: ptype foo2; structs-td-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 2 structs-td-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 2 structs-td-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 2 structs-td-tc
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: ptype foo2; structs-tld-tc
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 2 structs-tld-tc
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 2 structs-tld-tc
+PASS: gdb.base/structs.exp: p/c L<n>; call 2 structs-tld-tc
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: ptype foo2; structs-tc-ts
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 2 structs-tc-ts
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 2 structs-tc-ts
+PASS: gdb.base/structs.exp: p/c L<n>; call 2 structs-tc-ts
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 3 structs-tc-ts
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 3 structs-tc-ts
+PASS: gdb.base/structs.exp: p/c L<n>; call 3 structs-tc-ts
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 4 structs-tc-ts
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 4 structs-tc-ts
+PASS: gdb.base/structs.exp: p/c L<n>; call 4 structs-tc-ts
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 5 structs-tc-ts
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 5 structs-tc-ts
+PASS: gdb.base/structs.exp: p/c L<n>; call 5 structs-tc-ts
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 6 structs-tc-ts
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 6 structs-tc-ts
+PASS: gdb.base/structs.exp: p/c L<n>; call 6 structs-tc-ts
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 2 structs-tc-ts
+PASS: gdb.base/structs.exp: zed L<n> for return; return 2 structs-tc-ts
+PASS: gdb.base/structs.exp: return foo<n>; return 2 structs-tc-ts
+PASS: gdb.base/structs.exp: value foo<n> returned; return 2 structs-tc-ts
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 2 structs-tc-ts
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 2 structs-tc-ts
+PASS: gdb.base/structs.exp: finish foo<n>; return 2 structs-tc-ts
+PASS: gdb.base/structs.exp: value foo<n> finished; return 2 structs-tc-ts
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tc-ts
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: ptype foo2; structs-tc-ti
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 2 structs-tc-ti
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 2 structs-tc-ti
+PASS: gdb.base/structs.exp: p/c L<n>; call 2 structs-tc-ti
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 3 structs-tc-ti
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 3 structs-tc-ti
+PASS: gdb.base/structs.exp: p/c L<n>; call 3 structs-tc-ti
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 4 structs-tc-ti
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 4 structs-tc-ti
+PASS: gdb.base/structs.exp: p/c L<n>; call 4 structs-tc-ti
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 2 structs-tc-ti
+PASS: gdb.base/structs.exp: zed L<n> for return; return 2 structs-tc-ti
+PASS: gdb.base/structs.exp: return foo<n>; return 2 structs-tc-ti
+PASS: gdb.base/structs.exp: value foo<n> returned; return 2 structs-tc-ti
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 2 structs-tc-ti
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 2 structs-tc-ti
+PASS: gdb.base/structs.exp: finish foo<n>; return 2 structs-tc-ti
+PASS: gdb.base/structs.exp: value foo<n> finished; return 2 structs-tc-ti
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tc-ti
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: ptype foo2; structs-tc-tl
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 2 structs-tc-tl
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 2 structs-tc-tl
+PASS: gdb.base/structs.exp: p/c L<n>; call 2 structs-tc-tl
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 3 structs-tc-tl
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 3 structs-tc-tl
+PASS: gdb.base/structs.exp: p/c L<n>; call 3 structs-tc-tl
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 4 structs-tc-tl
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 4 structs-tc-tl
+PASS: gdb.base/structs.exp: p/c L<n>; call 4 structs-tc-tl
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 2 structs-tc-tl
+PASS: gdb.base/structs.exp: zed L<n> for return; return 2 structs-tc-tl
+PASS: gdb.base/structs.exp: return foo<n>; return 2 structs-tc-tl
+PASS: gdb.base/structs.exp: value foo<n> returned; return 2 structs-tc-tl
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 2 structs-tc-tl
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 2 structs-tc-tl
+PASS: gdb.base/structs.exp: finish foo<n>; return 2 structs-tc-tl
+PASS: gdb.base/structs.exp: value foo<n> finished; return 2 structs-tc-tl
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tc-tl
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: ptype foo2; structs-tc-tll
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 2 structs-tc-tll
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 2 structs-tc-tll
+PASS: gdb.base/structs.exp: p/c L<n>; call 2 structs-tc-tll
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: ptype foo2; structs-tc-tf
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 2 structs-tc-tf
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 2 structs-tc-tf
+PASS: gdb.base/structs.exp: p/c L<n>; call 2 structs-tc-tf
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 3 structs-tc-tf
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 3 structs-tc-tf
+PASS: gdb.base/structs.exp: p/c L<n>; call 3 structs-tc-tf
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 4 structs-tc-tf
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 4 structs-tc-tf
+PASS: gdb.base/structs.exp: p/c L<n>; call 4 structs-tc-tf
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: ptype foo2; structs-tc-td
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 2 structs-tc-td
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 2 structs-tc-td
+PASS: gdb.base/structs.exp: p/c L<n>; call 2 structs-tc-td
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: ptype foo2; structs-tc-tld
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 2 structs-tc-tld
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 2 structs-tc-tld
+PASS: gdb.base/structs.exp: p/c L<n>; call 2 structs-tc-tld
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: ptype foo2; structs-td-tf
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 2 structs-td-tf
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 2 structs-td-tf
+PASS: gdb.base/structs.exp: p/c L<n>; call 2 structs-td-tf
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 2 structs-td-tf
+PASS: gdb.base/structs.exp: zed L<n> for return; return 2 structs-td-tf
+PASS: gdb.base/structs.exp: return foo<n>; return 2 structs-td-tf
+PASS: gdb.base/structs.exp: value foo<n> returned; return 2 structs-td-tf
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 2 structs-td-tf
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 2 structs-td-tf
+PASS: gdb.base/structs.exp: finish foo<n>; return 2 structs-td-tf
+PASS: gdb.base/structs.exp: value foo<n> finished; return 2 structs-td-tf
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-td-tf
+PASS: gdb.base/structs.exp: set print sevenbit-strings
+PASS: gdb.base/structs.exp: set print address off
+PASS: gdb.base/structs.exp: set width 0
+PASS: gdb.base/structs.exp: set print elements 300
+PASS: gdb.base/structs.exp: ptype foo2; structs-tf-td
+PASS: gdb.base/structs.exp: p/c fun<n>(); call 2 structs-tf-td
+PASS: gdb.base/structs.exp: call Fun<n>(foo<n>); call 2 structs-tf-td
+PASS: gdb.base/structs.exp: p/c L<n>; call 2 structs-tf-td
+PASS: gdb.base/structs.exp: advance to fun<n> for return; return 2 structs-tf-td
+PASS: gdb.base/structs.exp: zed L<n> for return; return 2 structs-tf-td
+PASS: gdb.base/structs.exp: return foo<n>; return 2 structs-tf-td
+PASS: gdb.base/structs.exp: value foo<n> returned; return 2 structs-tf-td
+PASS: gdb.base/structs.exp: advance to fun<n> for finish; return 2 structs-tf-td
+PASS: gdb.base/structs.exp: zed L<n> for finish; return 2 structs-tf-td
+PASS: gdb.base/structs.exp: finish foo<n>; return 2 structs-tf-td
+PASS: gdb.base/structs.exp: value foo<n> finished; return 2 structs-tf-td
+PASS: gdb.base/structs.exp: return value known implies finish value known; return 2 structs-tf-td
+Running ../../../master/gdb/testsuite/gdb.base/structs2.exp ...
+PASS: gdb.base/structs2.exp: set width 0
+PASS: gdb.base/structs2.exp: structs2 sanity check
+PASS: gdb.base/structs2.exp: structs2 breakpoint set
+PASS: gdb.base/structs2.exp: structs2 continue1
+PASS: gdb.base/structs2.exp: structs2 continue2
+Running ../../../master/gdb/testsuite/gdb.base/structs3.exp ...
+PASS: gdb.base/structs3.exp: print two
+PASS: gdb.base/structs3.exp: print *twop
+PASS: gdb.base/structs3.exp: print *(struct Two *)onep
+PASS: gdb.base/structs3.exp: print *(tTwo *)onep
+Running ../../../master/gdb/testsuite/gdb.base/subst.exp ...
+PASS: gdb.base/subst.exp: deactivate GDB's confirmation interface
+PASS: gdb.base/subst.exp: show substitute-path, no rule entered yet
+PASS: gdb.base/subst.exp: show substitute-path from, no rule entered yet
+PASS: gdb.base/subst.exp: show substitute-path, too many arguments
+PASS: gdb.base/subst.exp: unset substitute-path from, no rule entered yet
+PASS: gdb.base/subst.exp: unset substitute-path, no rule entered yet
+PASS: gdb.base/subst.exp: unset substitute-path from, no rule entered yet
+PASS: gdb.base/subst.exp: unset substitute-path, too many arguments
+PASS: gdb.base/subst.exp: set substitute-path, too many arguments
+PASS: gdb.base/subst.exp: set substitute-path, too few arguments
+PASS: gdb.base/subst.exp: set substitute-path, first argument is empty string
+PASS: gdb.base/subst.exp: add from -> to substitution rule
+PASS: gdb.base/subst.exp: add from1 -> to1 substitution rule
+PASS: gdb.base/subst.exp: add source -> destination substitution rule
+PASS: gdb.base/subst.exp: add depuis -> vers substitution rule
+PASS: gdb.base/subst.exp: add substitution rule to empty string
+PASS: gdb.base/subst.exp: show substitute-path after all paths added
+PASS: gdb.base/subst.exp: show substitute-path from, after all paths added
+PASS: gdb.base/subst.exp: show substitute-path depuis, after all paths added
+PASS: gdb.base/subst.exp: show substitute-path garbage, after all paths added
+PASS: gdb.base/subst.exp: unset substitute-path from
+PASS: gdb.base/subst.exp: show substitute-path from, after unsetting it
+PASS: gdb.base/subst.exp: show substitute-path after from rule removed
+PASS: gdb.base/subst.exp: unset substitute-path from after the rule was removed
+PASS: gdb.base/subst.exp: unset substitute-path depuis (middle of list)
+PASS: gdb.base/subst.exp: show substitute-path after depuis rule removed
+PASS: gdb.base/subst.exp: unset substitute-path empty (end of list)
+PASS: gdb.base/subst.exp: show substitute-path after empty rule removed
+PASS: gdb.base/subst.exp: remove all remaining substitution rules
+PASS: gdb.base/subst.exp: show substitute-path after all remaining rules removed
+Running ../../../master/gdb/testsuite/gdb.base/symbol-without-target_section.exp ...
+PASS: gdb.base/symbol-without-target_section.exp: add-symbol-file
+PASS: gdb.base/symbol-without-target_section.exp: list main
+PASS: gdb.base/symbol-without-target_section.exp: print symbol_without_target_section
+Running ../../../master/gdb/testsuite/gdb.base/term.exp ...
+PASS: gdb.base/term.exp: set print sevenbit-strings
+PASS: gdb.base/term.exp: set print address off
+PASS: gdb.base/term.exp: set width 0
+PASS: gdb.base/term.exp: test info terminal
+PASS: gdb.base/term.exp: test info terminal #2
+PASS: gdb.base/term.exp: info terminal at breakpoint
+Running ../../../master/gdb/testsuite/gdb.base/trace-commands.exp ...
+PASS: gdb.base/trace-commands.exp: show trace-commands says off
+PASS: gdb.base/trace-commands.exp: source -v
+PASS: gdb.base/trace-commands.exp: set trace-commands
+PASS: gdb.base/trace-commands.exp: show trace-commands says on
+PASS: gdb.base/trace-commands.exp: simple trace-commands test
+PASS: gdb.base/trace-commands.exp: nested trace-commands test
+PASS: gdb.base/trace-commands.exp: define user command
+PASS: gdb.base/trace-commands.exp: nested trace-commands test with source
+PASS: gdb.base/trace-commands.exp: depth resets on error part 1
+PASS: gdb.base/trace-commands.exp: depth resets on error part 2
+Running ../../../master/gdb/testsuite/gdb.base/tui-layout.exp ...
+PASS: gdb.base/tui-layout.exp: layout asm
+Running ../../../master/gdb/testsuite/gdb.base/twice.exp ...
+PASS: gdb.base/twice.exp: step
+Running ../../../master/gdb/testsuite/gdb.base/type-opaque.exp ...
+PASS: gdb.base/type-opaque.exp: opaque struct type resolving
+PASS: gdb.base/type-opaque.exp: empty struct type resolving
+PASS: gdb.base/type-opaque.exp: filled struct type resolving
+PASS: gdb.base/type-opaque.exp: opaque union type resolving
+PASS: gdb.base/type-opaque.exp: empty union type resolving
+PASS: gdb.base/type-opaque.exp: filled union type resolving
+Running ../../../master/gdb/testsuite/gdb.base/ui-redirect.exp ...
+PASS: gdb.base/ui-redirect.exp: commands
+PASS: gdb.base/ui-redirect.exp: print 1
+PASS: gdb.base/ui-redirect.exp: end
+PASS: gdb.base/ui-redirect.exp: set logging file /dev/null
+PASS: gdb.base/ui-redirect.exp: set logging on
+PASS: gdb.base/ui-redirect.exp: save breakpoints /dev/null
+PASS: gdb.base/ui-redirect.exp: set logging off
+PASS: gdb.base/ui-redirect.exp: help
+Running ../../../master/gdb/testsuite/gdb.base/unload.exp ...
+PASS: gdb.base/unload.exp: pending breakpoint info before run
+PASS: gdb.base/unload.exp: running program
+PASS: gdb.base/unload.exp: pending breakpoint info on first run at shrfunc1
+PASS: gdb.base/unload.exp: continuing to unloaded libfile
+PASS: gdb.base/unload.exp: print y from libfile
+PASS: gdb.base/unload.exp: rerun to shared library breakpoint
+PASS: gdb.base/unload.exp: pending breakpoint info on second run at shrfunc1
+PASS: gdb.base/unload.exp: continuing to unloaded libfile
+PASS: gdb.base/unload.exp: continue to shrfunc2
+PASS: gdb.base/unload.exp: pending breakpoint info on second run at shrfunc2
+PASS: gdb.base/unload.exp: continuing to unloaded libfile2
+PASS: gdb.base/unload.exp: print y from libfile2
+Running ../../../master/gdb/testsuite/gdb.base/until.exp ...
+PASS: gdb.base/until.exp: until line number
+PASS: gdb.base/until.exp: malformed until
+PASS: gdb.base/until.exp: until factorial, recursive function
+PASS: gdb.base/until.exp: until func, not called by current frame
+Running ../../../master/gdb/testsuite/gdb.base/unwindonsignal.exp ...
+PASS: gdb.base/unwindonsignal.exp: break stop_here
+PASS: gdb.base/unwindonsignal.exp: continue to breakpoint at stop_here
+PASS: gdb.base/unwindonsignal.exp: setting unwindonsignal
+PASS: gdb.base/unwindonsignal.exp: showing unwindonsignal
+PASS: gdb.base/unwindonsignal.exp: unwindonsignal, inferior function call signaled
+PASS: gdb.base/unwindonsignal.exp: unwindonsignal, stack unwound
+PASS: gdb.base/unwindonsignal.exp: unwindonsignal, dummy frame removed
+Running ../../../master/gdb/testsuite/gdb.base/valgrind-db-attach.exp ...
+UNSUPPORTED: gdb.base/valgrind-db-attach.exp: spawn valgrind
+Running ../../../master/gdb/testsuite/gdb.base/value-double-free.exp ...
+PASS: gdb.base/value-double-free.exp: watch var
+PASS: gdb.base/value-double-free.exp: continue
+PASS: gdb.base/value-double-free.exp: print empty()
+PASS: gdb.base/value-double-free.exp: help help
+Running ../../../master/gdb/testsuite/gdb.base/varargs.exp ...
+PASS: gdb.base/varargs.exp: set print sevenbit-strings
+PASS: gdb.base/varargs.exp: set print address off
+PASS: gdb.base/varargs.exp: set width 0
+PASS: gdb.base/varargs.exp: print find_max1(5,1,2,3,4,5)
+PASS: gdb.base/varargs.exp: print find_max1(1,3)
+PASS: gdb.base/varargs.exp: print find_max1(10,1,2,3,4,5,6,7,8,29,0)
+PASS: gdb.base/varargs.exp: print find_max2(3,1,2,3)
+PASS: gdb.base/varargs.exp: print find_max_double(5,1.0,17.0,2.0,3.0,4.0)
+PASS: gdb.base/varargs.exp: print find_max_float_real(4, fc1, fc2, fc3, fc4)
+KFAIL: gdb.base/varargs.exp: print find_max_double_real(4, dc1, dc2, dc3, dc4) (PRMS: gdb/12776)
+KFAIL: gdb.base/varargs.exp: print find_max_long_double_real(4, ldc1, ldc2, ldc3, ldc4) (PRMS: gdb/12776)
+Running ../../../master/gdb/testsuite/gdb.base/volatile.exp ...
+PASS: gdb.base/volatile.exp: continue to marker1
+PASS: gdb.base/volatile.exp: up from marker1
+PASS: gdb.base/volatile.exp: ptype vox
+PASS: gdb.base/volatile.exp: ptype victuals
+PASS: gdb.base/volatile.exp: ptype vixen
+PASS: gdb.base/volatile.exp: ptype vitriol
+PASS: gdb.base/volatile.exp: ptype vellum
+PASS: gdb.base/volatile.exp: ptype valve
+PASS: gdb.base/volatile.exp: ptype vacuity
+PASS: gdb.base/volatile.exp: ptype vertigo
+PASS: gdb.base/volatile.exp: ptype vampire
+PASS: gdb.base/volatile.exp: ptype viper
+PASS: gdb.base/volatile.exp: ptype vigour
+PASS: gdb.base/volatile.exp: ptype vapour
+PASS: gdb.base/volatile.exp: ptype ventricle
+PASS: gdb.base/volatile.exp: ptype vigintillion
+PASS: gdb.base/volatile.exp: ptype vocation
+PASS: gdb.base/volatile.exp: ptype veracity
+PASS: gdb.base/volatile.exp: ptype vapidity
+PASS: gdb.base/volatile.exp: ptype velocity
+PASS: gdb.base/volatile.exp: ptype veneer
+PASS: gdb.base/volatile.exp: ptype video
+PASS: gdb.base/volatile.exp: ptype vacuum
+PASS: gdb.base/volatile.exp: ptype veniality
+PASS: gdb.base/volatile.exp: ptype vitality
+PASS: gdb.base/volatile.exp: ptype voracity
+PASS: gdb.base/volatile.exp: ptype victor
+PASS: gdb.base/volatile.exp: ptype vicar
+PASS: gdb.base/volatile.exp: ptype victory
+PASS: gdb.base/volatile.exp: ptype vicarage
+PASS: gdb.base/volatile.exp: ptype vein
+PASS: gdb.base/volatile.exp: ptype vogue
+PASS: gdb.base/volatile.exp: ptype cavern
+PASS: gdb.base/volatile.exp: ptype coverlet
+PASS: gdb.base/volatile.exp: ptype caveat
+PASS: gdb.base/volatile.exp: ptype covenant
+PASS: gdb.base/volatile.exp: ptype vizier
+PASS: gdb.base/volatile.exp: ptype vanadium
+PASS: gdb.base/volatile.exp: ptype vane
+PASS: gdb.base/volatile.exp: ptype veldt
+PASS: gdb.base/volatile.exp: ptype cove
+PASS: gdb.base/volatile.exp: ptype cavity
+PASS: gdb.base/volatile.exp: ptype vagus
+PASS: gdb.base/volatile.exp: ptype vagrancy
+PASS: gdb.base/volatile.exp: ptype vagary
+PASS: gdb.base/volatile.exp: ptype vendor
+PASS: gdb.base/volatile.exp: ptype qux2
+Running ../../../master/gdb/testsuite/gdb.base/watch-cond-infcall.exp ...
+PASS: gdb.base/watch-cond-infcall.exp: hw: watch var if return_1 ()
+PASS: gdb.base/watch-cond-infcall.exp: hw: continue
+PASS: gdb.base/watch-cond-infcall.exp: sw: watch var if return_1 ()
+PASS: gdb.base/watch-cond-infcall.exp: sw: continue
+Running ../../../master/gdb/testsuite/gdb.base/watch-cond.exp ...
+PASS: gdb.base/watch-cond.exp: set write watchpoint on global variable, local condition
+PASS: gdb.base/watch-cond.exp: watchpoint with global expression, local condition evaluates in correct frame
+PASS: gdb.base/watch-cond.exp: set write watchpoint on local variable, local condition
+PASS: gdb.base/watch-cond.exp: watchpoint with local expression, local condition evaluates in correct frame
+PASS: gdb.base/watch-cond.exp: set write watchpoint on global2 variable
+PASS: gdb.base/watch-cond.exp: watchpoint on global2 variable triggers
+PASS: gdb.base/watch-cond.exp: condition of watchpoint 2 changes
+PASS: gdb.base/watch-cond.exp: watchpoint stops with untestable local expression
+Running ../../../master/gdb/testsuite/gdb.base/watch-non-mem.exp ...
+PASS: gdb.base/watch-non-mem.exp: set write watchpoint on $pc
+PASS: gdb.base/watch-non-mem.exp: watchpoint on $pc works
+Running ../../../master/gdb/testsuite/gdb.base/watch-read.exp ...
+PASS: gdb.base/watch-read.exp: set hardware read watchpoint on global variable
+PASS: gdb.base/watch-read.exp: read watchpoint triggers on first read
+PASS: gdb.base/watch-read.exp: read watchpoint triggers on read after value changed
+PASS: gdb.base/watch-read.exp: set write watchpoint on global variable
+PASS: gdb.base/watch-read.exp: write watchpoint triggers
+PASS: gdb.base/watch-read.exp: only write watchpoint triggers when value changes
+PASS: gdb.base/watch-read.exp: read watchpoint triggers when value doesn't change, trapping reads and writes
+PASS: gdb.base/watch-read.exp: only read watchpoint triggers when value doesn't change
+Running ../../../master/gdb/testsuite/gdb.base/watch-vfork.exp ...
+PASS: gdb.base/watch-vfork.exp: Watchpoint on global variable (hw)
+PASS: gdb.base/watch-vfork.exp: Watchpoint triggers after vfork (hw)
+PASS: gdb.base/watch-vfork.exp: Watchpoint on global variable (sw)
+FAIL: gdb.base/watch-vfork.exp: Watchpoint triggers after vfork (sw) (timeout)
+Running ../../../master/gdb/testsuite/gdb.base/watch_thread_num.exp ...
+PASS: gdb.base/watch_thread_num.exp: successfully compiled posix threads test case
+PASS: gdb.base/watch_thread_num.exp: Watchpoint on invalid thread
+PASS: gdb.base/watch_thread_num.exp: Invalid watch syntax
+PASS: gdb.base/watch_thread_num.exp: Next 5
+PASS: gdb.base/watch_thread_num.exp: Set breakpoint at thread_function
+PASS: gdb.base/watch_thread_num.exp: Stopped in thread_function
+PASS: gdb.base/watch_thread_num.exp: Thread command
+PASS: gdb.base/watch_thread_num.exp: Disable breakpoint 2
+PASS: gdb.base/watch_thread_num.exp: Watchpoint on shared variable
+PASS: gdb.base/watch_thread_num.exp: info breakpoint 3
+PASS: gdb.base/watch_thread_num.exp: Watchpoint triggered iteration 1
+PASS: gdb.base/watch_thread_num.exp: Check thread that triggered iteration 1
+PASS: gdb.base/watch_thread_num.exp: Watchpoint triggered iteration 2
+PASS: gdb.base/watch_thread_num.exp: Check thread that triggered iteration 2
+PASS: gdb.base/watch_thread_num.exp: Watchpoint triggered iteration 3
+PASS: gdb.base/watch_thread_num.exp: Check thread that triggered iteration 3
+PASS: gdb.base/watch_thread_num.exp: Watchpoint triggered iteration 4
+PASS: gdb.base/watch_thread_num.exp: Check thread that triggered iteration 4
+PASS: gdb.base/watch_thread_num.exp: Watchpoint triggered iteration 5
+PASS: gdb.base/watch_thread_num.exp: Check thread that triggered iteration 5
+PASS: gdb.base/watch_thread_num.exp: Watchpoint triggered iteration 6
+PASS: gdb.base/watch_thread_num.exp: Check thread that triggered iteration 6
+PASS: gdb.base/watch_thread_num.exp: Watchpoint triggered iteration 7
+PASS: gdb.base/watch_thread_num.exp: Check thread that triggered iteration 7
+PASS: gdb.base/watch_thread_num.exp: Watchpoint triggered iteration 8
+PASS: gdb.base/watch_thread_num.exp: Check thread that triggered iteration 8
+PASS: gdb.base/watch_thread_num.exp: Watchpoint triggered iteration 9
+PASS: gdb.base/watch_thread_num.exp: Check thread that triggered iteration 9
+PASS: gdb.base/watch_thread_num.exp: Watchpoint triggered iteration 10
+PASS: gdb.base/watch_thread_num.exp: Check thread that triggered iteration 10
+Running ../../../master/gdb/testsuite/gdb.base/watchpoint-cond-gone.exp ...
+PASS: gdb.base/watchpoint-cond-gone.exp: set can-use-hw-watchpoints 0
+PASS: gdb.base/watchpoint-cond-gone.exp: continue to breakpoint: Place to set the watchpoint
+PASS: gdb.base/watchpoint-cond-gone.exp: Place the watchpoint
+PASS: gdb.base/watchpoint-cond-gone.exp: Catch the no longer valid watchpoint
+Running ../../../master/gdb/testsuite/gdb.base/watchpoint-delete.exp ...
+PASS: gdb.base/watchpoint-delete.exp: set can-use-hw-watchpoints 0
+PASS: gdb.base/watchpoint-delete.exp: continue to breakpoint: break-here
+PASS: gdb.base/watchpoint-delete.exp: watch x
+PASS: gdb.base/watchpoint-delete.exp: delete $bpnum
+Running ../../../master/gdb/testsuite/gdb.base/watchpoint-hw-hit-once.exp ...
+PASS: gdb.base/watchpoint-hw-hit-once.exp: rwatch watchee
+PASS: gdb.base/watchpoint-hw-hit-once.exp: continue
+PASS: gdb.base/watchpoint-hw-hit-once.exp: continue to break-at-exit
+Running ../../../master/gdb/testsuite/gdb.base/watchpoint-hw.exp ...
+PASS: gdb.base/watchpoint-hw.exp: watch watchee
+PASS: gdb.base/watchpoint-hw.exp: start
+PASS: gdb.base/watchpoint-hw.exp: info watchpoints
+Running ../../../master/gdb/testsuite/gdb.base/watchpoint-solib.exp ...
+PASS: gdb.base/watchpoint-solib.exp: set pending breakpoint
+PASS: gdb.base/watchpoint-solib.exp: continue to foo
+PASS: gdb.base/watchpoint-solib.exp: set watchpoint on g
+PASS: gdb.base/watchpoint-solib.exp: continue to watchpoint hit
+PASS: gdb.base/watchpoint-solib.exp: rerun to main
+PASS: gdb.base/watchpoint-solib.exp: continue to foo again
+PASS: gdb.base/watchpoint-solib.exp: continue to watchpoint hit again
+Running ../../../master/gdb/testsuite/gdb.base/watchpoint.exp ...
+PASS: gdb.base/watchpoint.exp: set breakpoint at marker1
+PASS: gdb.base/watchpoint.exp: set breakpoint at marker2
+PASS: gdb.base/watchpoint.exp: info break in watchpoint.exp
+PASS: gdb.base/watchpoint.exp: set watchpoint on ival3
+PASS: gdb.base/watchpoint.exp: watchpoint found in watchpoint/breakpoint table
+PASS: gdb.base/watchpoint.exp: disable watchpoint
+PASS: gdb.base/watchpoint.exp: disable watchpoint in test_simple_watchpoint
+PASS: gdb.base/watchpoint.exp: run to marker1 in test_simple_watchpoint
+PASS: gdb.base/watchpoint.exp: enable watchpoint
+PASS: gdb.base/watchpoint.exp: break func1
+PASS: gdb.base/watchpoint.exp: set $func1_breakpoint_number = $bpnum
+PASS: gdb.base/watchpoint.exp: continue to breakpoint at func1
+PASS: gdb.base/watchpoint.exp: watchpoint hit, first time
+PASS: gdb.base/watchpoint.exp: Watchpoint hit count is 1
+PASS: gdb.base/watchpoint.exp: delete $func1_breakpoint_number
+PASS: gdb.base/watchpoint.exp: watchpoint hit, second time
+PASS: gdb.base/watchpoint.exp: Watchpoint hit count is 2
+PASS: gdb.base/watchpoint.exp: watchpoint hit, third time
+PASS: gdb.base/watchpoint.exp: Watchpoint hit count is 3
+PASS: gdb.base/watchpoint.exp: watchpoint hit, fourth time
+PASS: gdb.base/watchpoint.exp: Watchpoint hit count is 4
+PASS: gdb.base/watchpoint.exp: watchpoint hit, fifth time
+PASS: gdb.base/watchpoint.exp: Watchpoint hit count is 5
+PASS: gdb.base/watchpoint.exp: continue to marker2
+PASS: gdb.base/watchpoint.exp: watchpoint disabled
+PASS: gdb.base/watchpoint.exp: continue until exit at continue to exit in test_simple_watchpoint
+PASS: gdb.base/watchpoint.exp: watchpoints found in watchpoint/breakpoint table
+PASS: gdb.base/watchpoint.exp: disable watchpoint in test_disabling_watchpoints
+PASS: gdb.base/watchpoint.exp: run to marker1 in test_disabling_watchpoints
+PASS: gdb.base/watchpoint.exp: watchpoint enabled
+PASS: gdb.base/watchpoint.exp: watchpoint hit in test_disabling_watchpoints, first time
+PASS: gdb.base/watchpoint.exp: watchpoint hit in test_disabling_watchpoints, second time
+PASS: gdb.base/watchpoint.exp: disable watchpoint #2 in test_disabling_watchpoints
+PASS: gdb.base/watchpoint.exp: watchpoint disabled in table
+PASS: gdb.base/watchpoint.exp: disabled watchpoint skipped
+PASS: gdb.base/watchpoint.exp: continue until exit at continue to exit in test_disabling_watchpoints
+PASS: gdb.base/watchpoint.exp: watch ival2
+PASS: gdb.base/watchpoint.exp: break func2 if 0
+PASS: gdb.base/watchpoint.exp: p $func2_breakpoint_number = $bpnum
+PASS: gdb.base/watchpoint.exp: calling function with watchpoint enabled
+PASS: gdb.base/watchpoint.exp: finish from marker1
+PASS: gdb.base/watchpoint.exp: back at main from marker1
+PASS: gdb.base/watchpoint.exp: next to `for' in watchpoint.exp
+PASS: gdb.base/watchpoint.exp: until to ival1 assignment
+PASS: gdb.base/watchpoint.exp: until to ival3 assignment
+PASS: gdb.base/watchpoint.exp: until out of loop
+PASS: gdb.base/watchpoint.exp: step to ival2 assignment
+PASS: gdb.base/watchpoint.exp: watchpoint refused to insert on nonexistent struct member
+PASS: gdb.base/watchpoint.exp: watch global_ptr
+PASS: gdb.base/watchpoint.exp: watch *(int *) 0
+PASS: gdb.base/watchpoint.exp: watch -location *global_ptr
+PASS: gdb.base/watchpoint.exp: watch *global_ptr
+PASS: gdb.base/watchpoint.exp: set $global_ptr_breakpoint_number = $bpnum
+PASS: gdb.base/watchpoint.exp: global_ptr next
+PASS: gdb.base/watchpoint.exp: next over ptr init
+PASS: gdb.base/watchpoint.exp: next over buffer set
+PASS: gdb.base/watchpoint.exp: delete $global_ptr_breakpoint_number
+PASS: gdb.base/watchpoint.exp: watch **global_ptr_ptr
+PASS: gdb.base/watchpoint.exp: set $global_ptr_ptr_breakpoint_number = $bpnum
+PASS: gdb.base/watchpoint.exp: gloabl_ptr_ptr next
+PASS: gdb.base/watchpoint.exp: next over global_ptr_ptr init
+PASS: gdb.base/watchpoint.exp: next over global_ptr_ptr buffer set
+PASS: gdb.base/watchpoint.exp: next over global_ptr_ptr pointer advance
+PASS: gdb.base/watchpoint.exp: delete $global_ptr_ptr_breakpoint_number
+PASS: gdb.base/watchpoint.exp: disable fast watches
+PASS: gdb.base/watchpoint.exp: show disable fast watches
+PASS: gdb.base/watchpoint.exp: set slow conditional watch
+PASS: gdb.base/watchpoint.exp: trigger slow conditional watch
+PASS: gdb.base/watchpoint.exp: rwatch disallowed when can-set-hw-watchpoints cleared
+PASS: gdb.base/watchpoint.exp: continue to breakpoint: second x assignment
+PASS: gdb.base/watchpoint.exp: watch x
+PASS: gdb.base/watchpoint.exp: next after watch x
+PASS: gdb.base/watchpoint.exp: delete watch x
+PASS: gdb.base/watchpoint.exp: watch buf
+PASS: gdb.base/watchpoint.exp: watchpoint on buf hit
+PASS: gdb.base/watchpoint.exp: delete watch buf
+PASS: gdb.base/watchpoint.exp: number is constant
+PASS: gdb.base/watchpoint.exp: marker1 is constant
+PASS: gdb.base/watchpoint.exp: watch count + 6
+PASS: gdb.base/watchpoint.exp: delete watchpoint `count + 6'
+PASS: gdb.base/watchpoint.exp: watch 7 + count
+PASS: gdb.base/watchpoint.exp: delete watchpoint `7 + count'
+PASS: gdb.base/watchpoint.exp: continue to breakpoint: func5 breakpoint here
+PASS: gdb.base/watchpoint.exp: watch -location .x
+PASS: gdb.base/watchpoint.exp: continue with watch -location
+PASS: gdb.base/watchpoint.exp: delete watch -location
+Running ../../../master/gdb/testsuite/gdb.base/watchpoints.exp ...
+PASS: gdb.base/watchpoints.exp: watchpoint hit, first time
+PASS: gdb.base/watchpoints.exp: watchpoint hit, first time
+PASS: gdb.base/watchpoints.exp: Watchpoint hit count is 1
+PASS: gdb.base/watchpoints.exp: watchpoint ival1 hit, second time
+PASS: gdb.base/watchpoints.exp: Watchpoint ival1 hit count is 2
+PASS: gdb.base/watchpoints.exp: watchpoint hit, second time
+PASS: gdb.base/watchpoints.exp: Watchpoint hit count is 2
+PASS: gdb.base/watchpoints.exp: watchpoint ival1 hit, third time
+PASS: gdb.base/watchpoints.exp: Watchpoint ival1 hit count is 3
+PASS: gdb.base/watchpoints.exp: watchpoint hit, third time
+PASS: gdb.base/watchpoints.exp: Watchpoint hit count is 3
+PASS: gdb.base/watchpoints.exp: watchpoint hit, fourth time
+PASS: gdb.base/watchpoints.exp: Watchpoint hit count is 4
+PASS: gdb.base/watchpoints.exp: watchpoint hit, fifth time
+PASS: gdb.base/watchpoints.exp: Watchpoint hit count is 5
+Running ../../../master/gdb/testsuite/gdb.base/wchar.exp ...
+PASS: gdb.base/wchar.exp: print narrow
+PASS: gdb.base/wchar.exp: print single
+PASS: gdb.base/wchar.exp: print simple
+PASS: gdb.base/wchar.exp: print difficile
+PASS: gdb.base/wchar.exp: print simple[2]
+PASS: gdb.base/wchar.exp: print difficile[2]
+Running ../../../master/gdb/testsuite/gdb.base/whatis-exp.exp ...
+PASS: gdb.base/whatis-exp.exp: set variable x=14
+PASS: gdb.base/whatis-exp.exp: set variable y=2
+PASS: gdb.base/whatis-exp.exp: set variable z=2
+PASS: gdb.base/whatis-exp.exp: set variable w=3
+PASS: gdb.base/whatis-exp.exp: print value of x
+PASS: gdb.base/whatis-exp.exp: print value of y
+PASS: gdb.base/whatis-exp.exp: print value of z
+PASS: gdb.base/whatis-exp.exp: print value of w
+PASS: gdb.base/whatis-exp.exp: whatis value of x+y
+PASS: gdb.base/whatis-exp.exp: whatis value of x-y
+PASS: gdb.base/whatis-exp.exp: whatis value of x*y
+PASS: gdb.base/whatis-exp.exp: whatis value of x/y
+PASS: gdb.base/whatis-exp.exp: whatis value of x%y
+PASS: gdb.base/whatis-exp.exp: whatis value of x=y
+PASS: gdb.base/whatis-exp.exp: whatis value of x+=2
+PASS: gdb.base/whatis-exp.exp: whatis value of ++x
+PASS: gdb.base/whatis-exp.exp: whatis value of --x
+PASS: gdb.base/whatis-exp.exp: whatis value of x++
+PASS: gdb.base/whatis-exp.exp: whatis value of x--
+Running ../../../master/gdb/testsuite/gdb.base/whatis.exp ...
+PASS: gdb.base/whatis.exp: whatis char
+PASS: gdb.base/whatis.exp: whatis signed char
+PASS: gdb.base/whatis.exp: whatis unsigned char
+PASS: gdb.base/whatis.exp: whatis short
+PASS: gdb.base/whatis.exp: whatis signed short
+PASS: gdb.base/whatis.exp: whatis unsigned short
+PASS: gdb.base/whatis.exp: whatis int
+PASS: gdb.base/whatis.exp: whatis signed int
+PASS: gdb.base/whatis.exp: whatis unsigned int
+PASS: gdb.base/whatis.exp: whatis long
+PASS: gdb.base/whatis.exp: whatis signed long
+PASS: gdb.base/whatis.exp: whatis unsigned long
+PASS: gdb.base/whatis.exp: whatis unsigned long long
+PASS: gdb.base/whatis.exp: whatis float
+PASS: gdb.base/whatis.exp: whatis double
+PASS: gdb.base/whatis.exp: whatis char array
+PASS: gdb.base/whatis.exp: whatis signed char array
+PASS: gdb.base/whatis.exp: whatis unsigned char array
+PASS: gdb.base/whatis.exp: whatis short array
+PASS: gdb.base/whatis.exp: whatis signed short array
+PASS: gdb.base/whatis.exp: whatis unsigned short array
+PASS: gdb.base/whatis.exp: whatis int array
+PASS: gdb.base/whatis.exp: whatis signed int array
+PASS: gdb.base/whatis.exp: whatis unsigned int array
+PASS: gdb.base/whatis.exp: whatis long array
+PASS: gdb.base/whatis.exp: whatis signed long array
+PASS: gdb.base/whatis.exp: whatis unsigned long array
+PASS: gdb.base/whatis.exp: whatis unsigned long array
+PASS: gdb.base/whatis.exp: whatis float array
+PASS: gdb.base/whatis.exp: whatis double array
+PASS: gdb.base/whatis.exp: whatis char pointer
+PASS: gdb.base/whatis.exp: whatis signed char pointer
+PASS: gdb.base/whatis.exp: whatis unsigned char pointer
+PASS: gdb.base/whatis.exp: whatis short pointer
+PASS: gdb.base/whatis.exp: whatis signed short pointer
+PASS: gdb.base/whatis.exp: whatis unsigned short pointer
+PASS: gdb.base/whatis.exp: whatis int pointer
+PASS: gdb.base/whatis.exp: whatis signed int pointer
+PASS: gdb.base/whatis.exp: whatis unsigned int pointer
+PASS: gdb.base/whatis.exp: whatis long pointer
+PASS: gdb.base/whatis.exp: whatis signed long pointer
+PASS: gdb.base/whatis.exp: whatis unsigned long pointer
+PASS: gdb.base/whatis.exp: whatis long long pointer
+PASS: gdb.base/whatis.exp: whatis signed long long pointer
+PASS: gdb.base/whatis.exp: whatis unsigned long long pointer
+PASS: gdb.base/whatis.exp: whatis float pointer
+PASS: gdb.base/whatis.exp: whatis double pointer
+PASS: gdb.base/whatis.exp: whatis named structure
+PASS: gdb.base/whatis.exp: whatis named structure using type name
+PASS: gdb.base/whatis.exp: whatis unnamed structure
+PASS: gdb.base/whatis.exp: whatis named union
+PASS: gdb.base/whatis.exp: whatis named union using type name
+PASS: gdb.base/whatis.exp: whatis unnamed union
+PASS: gdb.base/whatis.exp: whatis char function
+PASS: gdb.base/whatis.exp: whatis signed char function
+PASS: gdb.base/whatis.exp: whatis unsigned char function
+PASS: gdb.base/whatis.exp: whatis short function
+PASS: gdb.base/whatis.exp: whatis signed short function
+PASS: gdb.base/whatis.exp: whatis unsigned short function
+PASS: gdb.base/whatis.exp: whatis int function
+PASS: gdb.base/whatis.exp: whatis signed int function
+PASS: gdb.base/whatis.exp: whatis unsigned int function
+PASS: gdb.base/whatis.exp: whatis long function
+PASS: gdb.base/whatis.exp: whatis signed long function
+PASS: gdb.base/whatis.exp: whatis unsigned long function
+PASS: gdb.base/whatis.exp: whatis long long function
+PASS: gdb.base/whatis.exp: whatis signed long long function
+PASS: gdb.base/whatis.exp: whatis unsigned long long function
+PASS: gdb.base/whatis.exp: whatis float function
+PASS: gdb.base/whatis.exp: whatis double function
+PASS: gdb.base/whatis.exp: whatis complicated structure
+PASS: gdb.base/whatis.exp: whatis complicated union
+PASS: gdb.base/whatis.exp: whatis enumeration
+PASS: gdb.base/whatis.exp: whatis enumeration using type name
+PASS: gdb.base/whatis.exp: whatis outer structure
+PASS: gdb.base/whatis.exp: whatis outer structure member
+PASS: gdb.base/whatis.exp: whatis inner structure
+PASS: gdb.base/whatis.exp: whatis inner structure member
+PASS: gdb.base/whatis.exp: whatis inner union
+PASS: gdb.base/whatis.exp: whatis inner union member
+PASS: gdb.base/whatis.exp: whatis using typedef type name
+PASS: gdb.base/whatis.exp: whatis applied to variable defined by typedef
+Running ../../../master/gdb/testsuite/gdb.cell/arch.exp ...
+Running ../../../master/gdb/testsuite/gdb.cell/break.exp ...
+Running ../../../master/gdb/testsuite/gdb.cell/bt.exp ...
+Running ../../../master/gdb/testsuite/gdb.cell/core.exp ...
+Running ../../../master/gdb/testsuite/gdb.cell/data.exp ...
+Running ../../../master/gdb/testsuite/gdb.cell/dwarfaddr.exp ...
+Running ../../../master/gdb/testsuite/gdb.cell/ea-cache.exp ...
+Running ../../../master/gdb/testsuite/gdb.cell/ea-standalone.exp ...
+Running ../../../master/gdb/testsuite/gdb.cell/ea-test.exp ...
+Running ../../../master/gdb/testsuite/gdb.cell/f-regs.exp ...
+Running ../../../master/gdb/testsuite/gdb.cell/fork.exp ...
+Running ../../../master/gdb/testsuite/gdb.cell/gcore.exp ...
+Running ../../../master/gdb/testsuite/gdb.cell/mem-access.exp ...
+Running ../../../master/gdb/testsuite/gdb.cell/ptype.exp ...
+Running ../../../master/gdb/testsuite/gdb.cell/registers.exp ...
+Running ../../../master/gdb/testsuite/gdb.cell/sizeof.exp ...
+Running ../../../master/gdb/testsuite/gdb.cell/solib-symbol.exp ...
+Running ../../../master/gdb/testsuite/gdb.cell/solib.exp ...
+Running ../../../master/gdb/testsuite/gdb.cp/abstract-origin.exp ...
+PASS: gdb.cp/abstract-origin.exp: continue to breakpoint: break-here
+PASS: gdb.cp/abstract-origin.exp: p problem
+Running ../../../master/gdb/testsuite/gdb.cp/ambiguous.exp ...
+Running ../../../master/gdb/testsuite/gdb.cp/annota2.exp ...
+PASS: gdb.cp/annota2.exp: set height 0
+PASS: gdb.cp/annota2.exp: breakpoint main
+PASS: gdb.cp/annota2.exp: annotation set at level 2
+PASS: gdb.cp/annota2.exp: run until main breakpoint
+PASS: gdb.cp/annota2.exp: print class
+PASS: gdb.cp/annota2.exp: continue until exit
+PASS: gdb.cp/annota2.exp: delete bps
+PASS: gdb.cp/annota2.exp: breakpoint at main
+PASS: gdb.cp/annota2.exp: run until main breakpoint
+PASS: gdb.cp/annota2.exp: set watch on a.x
+KFAIL: gdb.cp/annota2.exp: watch triggered on a.x (PRMS: gdb/38)
+PASS: gdb.cp/annota2.exp: annotate-quit
+Running ../../../master/gdb/testsuite/gdb.cp/annota3.exp ...
+PASS: gdb.cp/annota3.exp: set height 0
+PASS: gdb.cp/annota3.exp: breakpoint main
+PASS: gdb.cp/annota3.exp: annotation set at level 3
+PASS: gdb.cp/annota3.exp: first run until main breakpoint
+PASS: gdb.cp/annota3.exp: print class
+PASS: gdb.cp/annota3.exp: continue to exit
+PASS: gdb.cp/annota3.exp: delete bps
+PASS: gdb.cp/annota3.exp: break at main
+PASS: gdb.cp/annota3.exp: second run until main breakpoint
+PASS: gdb.cp/annota3.exp: set watch on a.x
+KFAIL: gdb.cp/annota3.exp: watch triggered on a.x (PRMS: gdb/38)
+PASS: gdb.cp/annota3.exp: annotate-quit
+Running ../../../master/gdb/testsuite/gdb.cp/anon-ns.exp ...
+PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::doit1(void)
+PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::doit1(void)'
+PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::doit1(void)
+PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::doit1(void)'
+PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::one::one(void)
+PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::one::one(void)'
+PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::one::one(void)
+PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::one::one(void)'
+PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::doit2(void)
+PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::doit2(void)'
+PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::doit2(void)
+PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::doit2(void)'
+PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::two::two(void)
+PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::two::two(void)'
+PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::two::two(void)
+PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::two::two(void)'
+PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(void)
+PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(void)'
+PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(void)
+PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(void)'
+PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(void)
+PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(void)'
+PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(void)
+PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(void)'
+PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::doit1(int)
+PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::doit1(int)'
+PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::doit1(int)
+PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::doit1(int)'
+PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::one::one(int)
+PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::one::one(int)'
+PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::one::one(int)
+PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::one::one(int)'
+PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::doit2(int)
+PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::doit2(int)'
+PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::doit2(int)
+PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::doit2(int)'
+PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::two::two(int)
+PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::two::two(int)'
+PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::two::two(int)
+PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::two::two(int)'
+PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(int)
+PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(int)'
+PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(int)
+PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(int)'
+PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(int)
+PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(int)'
+PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(int)
+PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(int)'
+PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::doit1(char *)
+PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::doit1(char *)'
+PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::doit1(char *)
+PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::doit1(char *)'
+PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::one::one(char *)
+PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::one::one(char *)'
+PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::one::one(char *)
+PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::one::one(char *)'
+PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::doit2(char *)
+PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::doit2(char *)'
+PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::doit2(char *)
+PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::doit2(char *)'
+PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::two::two(char *)
+PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::two::two(char *)'
+PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::two::two(char *)
+PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::two::two(char *)'
+PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(char *)
+PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(char *)'
+PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(char *)
+PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::doit3(char *)'
+PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(char *)
+PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(char *)'
+PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(char *)
+PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::three(char *)'
+PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::one::doit(void)
+PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::one::doit(void)'
+PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::one::doit(void)
+PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::one::doit(void)'
+PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::two::doit(void)
+PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::two::doit(void)'
+PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::two::doit(void)
+PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::two::doit(void)'
+PASS: gdb.cp/anon-ns.exp: list (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::doit(void)
+PASS: gdb.cp/anon-ns.exp: list '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::doit(void)'
+PASS: gdb.cp/anon-ns.exp: break (anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::doit(void)
+PASS: gdb.cp/anon-ns.exp: break '(anonymous namespace)::A::(anonymous namespace)::(anonymous namespace)::three::doit(void)'
+Running ../../../master/gdb/testsuite/gdb.cp/anon-struct.exp ...
+PASS: gdb.cp/anon-struct.exp: print type of t::t
+PASS: gdb.cp/anon-struct.exp: print type of X::t2::t2
+PASS: gdb.cp/anon-struct.exp: print type of t3::~t3
+Running ../../../master/gdb/testsuite/gdb.cp/anon-union.exp ...
+PASS: gdb.cp/anon-union.exp: set width 0
+PASS: gdb.cp/anon-union.exp: next 1
+PASS: gdb.cp/anon-union.exp: print foo 1
+PASS: gdb.cp/anon-union.exp: next 2
+PASS: gdb.cp/anon-union.exp: print foo 2
+PASS: gdb.cp/anon-union.exp: set var foo.cloth
+PASS: gdb.cp/anon-union.exp: print foo 3
+PASS: gdb.cp/anon-union.exp: next 3
+PASS: gdb.cp/anon-union.exp: print foo 4
+PASS: gdb.cp/anon-union.exp: set var foo.pebble
+PASS: gdb.cp/anon-union.exp: print foo 5
+PASS: gdb.cp/anon-union.exp: set var foo.qux
+PASS: gdb.cp/anon-union.exp: print foo 6
+PASS: gdb.cp/anon-union.exp: set var foo.mux
+PASS: gdb.cp/anon-union.exp: print foo 7
+PASS: gdb.cp/anon-union.exp: set var foo.x.rock
+PASS: gdb.cp/anon-union.exp: print foo 8
+PASS: gdb.cp/anon-union.exp: set var foo.x.rock2
+PASS: gdb.cp/anon-union.exp: print foo 9
+PASS: gdb.cp/anon-union.exp: next 4
+PASS: gdb.cp/anon-union.exp: print w 1
+PASS: gdb.cp/anon-union.exp: print z 1
+PASS: gdb.cp/anon-union.exp: next 5
+PASS: gdb.cp/anon-union.exp: print w 2
+PASS: gdb.cp/anon-union.exp: print z 2
+PASS: gdb.cp/anon-union.exp: set var z
+PASS: gdb.cp/anon-union.exp: print w 3
+PASS: gdb.cp/anon-union.exp: print z 3
+Running ../../../master/gdb/testsuite/gdb.cp/arg-reference.exp ...
+PASS: gdb.cp/arg-reference.exp: No false reference
+Running ../../../master/gdb/testsuite/gdb.cp/bool.exp ...
+PASS: gdb.cp/bool.exp: print return_true()
+PASS: gdb.cp/bool.exp: print return_false()
+Running ../../../master/gdb/testsuite/gdb.cp/breakpoint.exp ...
+PASS: gdb.cp/breakpoint.exp: continue to C1::Nested::foo
+PASS: gdb.cp/breakpoint.exp: conditional breakpoint in method
+PASS: gdb.cp/breakpoint.exp: conditional breakpoint in method 2
+PASS: gdb.cp/breakpoint.exp: continue to breakpoint
+PASS: gdb.cp/breakpoint.exp: check the member variable
+PASS: gdb.cp/breakpoint.exp: continue to breakpoint
+PASS: gdb.cp/breakpoint.exp: check the member variable
+Running ../../../master/gdb/testsuite/gdb.cp/bs15503.exp ...
+PASS: gdb.cp/bs15503.exp: break StringTest<wchar_t>::testFunction
+PASS: gdb.cp/bs15503.exp: continue to StringTest<wchar_t>
+PASS: gdb.cp/bs15503.exp: continue to breakpoint: find position where blank needs to be inserted
+PASS: gdb.cp/bs15503.exp: print s.length()
+PASS: gdb.cp/bs15503.exp: print s[0]
+PASS: gdb.cp/bs15503.exp: print s[s.length()-1]
+PASS: gdb.cp/bs15503.exp: print (const char *) s
+PASS: gdb.cp/bs15503.exp: print (const char *) s.substr(0,4)
+PASS: gdb.cp/bs15503.exp: print (const char *) (s=s.substr(0,4))
+Running ../../../master/gdb/testsuite/gdb.cp/call-c.exp ...
+PASS: gdb.cp/call-c.exp: b 43
+PASS: gdb.cp/call-c.exp: print foo(1)
+PASS: gdb.cp/call-c.exp: continue to bp
+PASS: gdb.cp/call-c.exp: print rf->func()
+PASS: gdb.cp/call-c.exp: print handle->func()
+Running ../../../master/gdb/testsuite/gdb.cp/casts.exp ...
+PASS: gdb.cp/casts.exp: cast base class pointer to derived class pointer
+PASS: gdb.cp/casts.exp: let compiler cast base class pointer to derived class pointer
+PASS: gdb.cp/casts.exp: cast derived class pointer to base class pointer
+PASS: gdb.cp/casts.exp: cast derived class reference to base class reference
+PASS: gdb.cp/casts.exp: cast base class reference to derived class reference
+PASS: gdb.cp/casts.exp: let compiler cast base class reference to derived class reference
+PASS: gdb.cp/casts.exp: basic test of const_cast
+PASS: gdb.cp/casts.exp: const_cast of 0
+PASS: gdb.cp/casts.exp: basic test of static_cast
+PASS: gdb.cp/casts.exp: static_cast to reference type
+PASS: gdb.cp/casts.exp: basic test of reinterpret_cast
+PASS: gdb.cp/casts.exp: test invalid reinterpret_cast
+PASS: gdb.cp/casts.exp: reinterpret_cast to reference type
+PASS: gdb.cp/casts.exp: invalid dynamic_cast
+PASS: gdb.cp/casts.exp: dynamic_cast of 0 to void*
+PASS: gdb.cp/casts.exp: dynamic_cast simple upcast
+PASS: gdb.cp/casts.exp: dynamic_cast upcast to unique base
+PASS: gdb.cp/casts.exp: dynamic_cast simple upcast to reference
+PASS: gdb.cp/casts.exp: dynamic_cast simple downcast
+PASS: gdb.cp/casts.exp: dynamic_cast simple downcast to intermediate class
+PASS: gdb.cp/casts.exp: dynamic_cast to non-existing base
+PASS: gdb.cp/casts.exp: dynamic_cast to reference to non-existing base
+PASS: gdb.cp/casts.exp: dynamic_cast unique downcast
+PASS: gdb.cp/casts.exp: dynamic_cast to sibling
+Running ../../../master/gdb/testsuite/gdb.cp/class2.exp ...
+PASS: gdb.cp/class2.exp: set print object off
+PASS: gdb.cp/class2.exp: print alpha at marker return 0
+PASS: gdb.cp/class2.exp: print beta at marker return 0
+PASS: gdb.cp/class2.exp: print * aap at marker return 0
+PASS: gdb.cp/class2.exp: print * bbp at marker return 0
+PASS: gdb.cp/class2.exp: print * abp at marker return 0, s-p-o off
+PASS: gdb.cp/class2.exp: print * (B *) abp at marker return 0
+PASS: gdb.cp/class2.exp: print object with no data fields
+PASS: gdb.cp/class2.exp: set print object on
+PASS: gdb.cp/class2.exp: p acp
+FAIL: gdb.cp/class2.exp: p acp->c1
+FAIL: gdb.cp/class2.exp: p acp->c2
+Running ../../../master/gdb/testsuite/gdb.cp/classes.exp ...
+PASS: gdb.cp/classes.exp: ptype struct default_public_struct
+PASS: gdb.cp/classes.exp: ptype struct explicit_public_struct
+PASS: gdb.cp/classes.exp: ptype struct protected_struct
+PASS: gdb.cp/classes.exp: ptype struct private_struct
+PASS: gdb.cp/classes.exp: ptype struct mixed_protection_struct
+PASS: gdb.cp/classes.exp: ptype class public_class
+PASS: gdb.cp/classes.exp: ptype class protected_class
+PASS: gdb.cp/classes.exp: ptype class default_private_class
+PASS: gdb.cp/classes.exp: ptype class explicit_private_class
+PASS: gdb.cp/classes.exp: ptype class mixed_protection_class
+PASS: gdb.cp/classes.exp: ptype class A
+PASS: gdb.cp/classes.exp: ptype class B
+PASS: gdb.cp/classes.exp: ptype class C
+PASS: gdb.cp/classes.exp: ptype class D
+PASS: gdb.cp/classes.exp: ptype class E
+PASS: gdb.cp/classes.exp: ptype class Static
+PASS: gdb.cp/classes.exp: ptype class vA
+PASS: gdb.cp/classes.exp: ptype class vB
+PASS: gdb.cp/classes.exp: ptype class vC
+PASS: gdb.cp/classes.exp: ptype class vD
+PASS: gdb.cp/classes.exp: ptype class vE
+PASS: gdb.cp/classes.exp: ptype class Base1
+PASS: gdb.cp/classes.exp: ptype class Foo
+PASS: gdb.cp/classes.exp: ptype class Bar
+PASS: gdb.cp/classes.exp: print g_A.a
+PASS: gdb.cp/classes.exp: print g_A.x
+PASS: gdb.cp/classes.exp: print g_B.b
+PASS: gdb.cp/classes.exp: print g_B.x
+PASS: gdb.cp/classes.exp: print g_C.c
+PASS: gdb.cp/classes.exp: print g_C.x
+PASS: gdb.cp/classes.exp: print g_D.d
+PASS: gdb.cp/classes.exp: print g_D.x
+PASS: gdb.cp/classes.exp: print g_E.e
+PASS: gdb.cp/classes.exp: print g_E.x
+PASS: gdb.cp/classes.exp: print g_A.b
+PASS: gdb.cp/classes.exp: print g_B.c
+PASS: gdb.cp/classes.exp: print g_B.d
+PASS: gdb.cp/classes.exp: print g_C.b
+PASS: gdb.cp/classes.exp: print g_C.d
+PASS: gdb.cp/classes.exp: print g_D.e
+PASS: gdb.cp/classes.exp: print g_A.y
+PASS: gdb.cp/classes.exp: print g_B.z
+PASS: gdb.cp/classes.exp: print g_C.q
+PASS: gdb.cp/classes.exp: print g_D.p
+PASS: gdb.cp/classes.exp: call class_param.Aptr_a (&g_A)
+PASS: gdb.cp/classes.exp: call class_param.Aptr_x (&g_A)
+PASS: gdb.cp/classes.exp: call class_param.Aptr_a (&g_B)
+PASS: gdb.cp/classes.exp: call class_param.Aptr_x (&g_B)
+PASS: gdb.cp/classes.exp: call class_param.Aref_a (g_A)
+PASS: gdb.cp/classes.exp: call class_param.Aref_x (g_A)
+PASS: gdb.cp/classes.exp: call class_param.Aref_a (g_B)
+PASS: gdb.cp/classes.exp: call class_param.Aref_x (g_B)
+PASS: gdb.cp/classes.exp: call class_param.Aval_a (g_A)
+PASS: gdb.cp/classes.exp: call class_param.Aval_x (g_A)
+PASS: gdb.cp/classes.exp: call class_param.Aval_a (g_B)
+PASS: gdb.cp/classes.exp: call class_param.Aval_x (g_B)
+PASS: gdb.cp/classes.exp: unrelated class *param
+PASS: gdb.cp/classes.exp: unrelated class &param
+PASS: gdb.cp/classes.exp: unrelated class param
+PASS: gdb.cp/classes.exp: continue to enums2(\(\)|)
+PASS: gdb.cp/classes.exp: print obj_with_enum (1)
+PASS: gdb.cp/classes.exp: next
+PASS: gdb.cp/classes.exp: print obj_with_enum (2)
+PASS: gdb.cp/classes.exp: print obj_with_enum.priv_enum
+PASS: gdb.cp/classes.exp: ptype obj_with_enum.priv_enum
+PASS: gdb.cp/classes.exp: ptype obj_with_enum
+PASS: gdb.cp/classes.exp: print (ClassWithEnum::PrivEnum) 42
+PASS: gdb.cp/classes.exp: print ('ClassWithEnum::PrivEnum') 42
+PASS: gdb.cp/classes.exp: print Bar::z
+PASS: gdb.cp/classes.exp: print &Foo::x
+PASS: gdb.cp/classes.exp: print (int)&Foo::x
+PASS: gdb.cp/classes.exp: print (int)&Bar::y == 2*sizeof(int)
+PASS: gdb.cp/classes.exp: ptype Bar::z
+PASS: gdb.cp/classes.exp: ptype &Bar::z
+PASS: gdb.cp/classes.exp: print (int)pmi == sizeof(int)
+PASS: gdb.cp/classes.exp: print Foo::st
+PASS: gdb.cp/classes.exp: print bar.st
+PASS: gdb.cp/classes.exp: print &foo.st
+PASS: gdb.cp/classes.exp: print &Bar::st
+PASS: gdb.cp/classes.exp: print *$
+PASS: gdb.cp/classes.exp: set print static-members off
+PASS: gdb.cp/classes.exp: print csi without static members
+PASS: gdb.cp/classes.exp: print cnsi without static members
+PASS: gdb.cp/classes.exp: set print static-members on
+PASS: gdb.cp/classes.exp: print csi with static members
+PASS: gdb.cp/classes.exp: print cnsi with static members
+PASS: gdb.cp/classes.exp: finish from marker_reg1
+PASS: gdb.cp/classes.exp: calling method for small class
+PASS: gdb.cp/classes.exp: print ctor of typedef class
+PASS: gdb.cp/classes.exp: print dtor of typedef class
+PASS: gdb.cp/classes.exp: list ByAnyOtherName::times
+Running ../../../master/gdb/testsuite/gdb.cp/cmpd-minsyms.exp ...
+PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at 'GDB<int>::a() const'
+PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at 'GDB<int>::b() volatile'
+PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at 'GDB<int>::c() const volatile'
+PASS: gdb.cp/cmpd-minsyms.exp: set language c++
+PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at GDB<int>::operator ==
+PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at GDB<int>::operator==(GDB<int> const&)
+PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at GDB<char>::harder(char)
+PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at GDB<int>::harder(int)
+PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at "int GDB<char>::even_harder<int>(char)"
+PASS: gdb.cp/cmpd-minsyms.exp: setting breakpoint at GDB<int>::simple()
+Running ../../../master/gdb/testsuite/gdb.cp/converts.exp ...
+PASS: gdb.cp/converts.exp: continue to breakpoint: end of main
+PASS: gdb.cp/converts.exp: typedef to another typedef
+PASS: gdb.cp/converts.exp: typedef to typedef of a typedef
+PASS: gdb.cp/converts.exp: Pointer-to-pointer-to-pointer derived to Pointer-to-pointer-to-pointer base.
+PASS: gdb.cp/converts.exp: pointer to pointer
+PASS: gdb.cp/converts.exp: pointer to array
+PASS: gdb.cp/converts.exp: pointer to pointer of wrong type
+PASS: gdb.cp/converts.exp: pointer to pointer of wrong type
+PASS: gdb.cp/converts.exp: pointer to ancestor pointer
+PASS: gdb.cp/converts.exp: pointer to void pointer
+PASS: gdb.cp/converts.exp: pointer to void pointer pointer
+PASS: gdb.cp/converts.exp: pointer to boolean
+PASS: gdb.cp/converts.exp: pointer to long int
+PASS: gdb.cp/converts.exp: pointer pointer to void pointer
+PASS: gdb.cp/converts.exp: pointer pointer to pointer pointer
+PASS: gdb.cp/converts.exp: pointer pointer to array of arrays
+PASS: gdb.cp/converts.exp: pointer pointer to array of pointers
+PASS: gdb.cp/converts.exp: pointer pointer to array of wrong pointers
+Running ../../../master/gdb/testsuite/gdb.cp/cp-relocate.exp ...
+PASS: gdb.cp/cp-relocate.exp: info functions
+PASS: gdb.cp/cp-relocate.exp: get address of func<1>(int)
+PASS: gdb.cp/cp-relocate.exp: get address of func<2>(int)
+PASS: gdb.cp/cp-relocate.exp: get address of caller
+PASS: gdb.cp/cp-relocate.exp: C++ functions have different addresses
+PASS: gdb.cp/cp-relocate.exp: info file
+PASS: gdb.cp/cp-relocate.exp: add-symbol-file cp-relocate.o
+PASS: gdb.cp/cp-relocate.exp: break *func<1>(int)
+PASS: gdb.cp/cp-relocate.exp: break *func<2>(int)
+Running ../../../master/gdb/testsuite/gdb.cp/cpcompletion.exp ...
+PASS: gdb.cp/cpcompletion.exp: complete class methods
+PASS: gdb.cp/cpcompletion.exp: complete class methods beginning with F
+PASS: gdb.cp/cpcompletion.exp: complete p foo1.g
+PASS: gdb.cp/cpcompletion.exp: complete p foo1.base
+PASS: gdb.cp/cpcompletion.exp: complete p foo1.Fo
+PASS: gdb.cp/cpcompletion.exp: complete p a.g
+Running ../../../master/gdb/testsuite/gdb.cp/cpexprs.exp ...
+PASS: gdb.cp/cpexprs.exp: set listsize 1
+PASS: gdb.cp/cpexprs.exp: print base1::a_function
+PASS: gdb.cp/cpexprs.exp: print base1::base1(int)
+PASS: gdb.cp/cpexprs.exp: print base1::base1(void)
+PASS: gdb.cp/cpexprs.exp: print base2::a_function
+PASS: gdb.cp/cpexprs.exp: print base2::base2
+PASS: gdb.cp/cpexprs.exp: print base::base(int)
+PASS: gdb.cp/cpexprs.exp: print base::base(void)
+PASS: gdb.cp/cpexprs.exp: print base::operator char*
+PASS: gdb.cp/cpexprs.exp: print base::operator delete
+PASS: gdb.cp/cpexprs.exp: print base::operator delete[]
+PASS: gdb.cp/cpexprs.exp: print base::operator fluff*
+PASS: gdb.cp/cpexprs.exp: print base::operator fluff**
+PASS: gdb.cp/cpexprs.exp: print base::operator int
+PASS: gdb.cp/cpexprs.exp: print base::operator new
+PASS: gdb.cp/cpexprs.exp: print base::operator new[]
+PASS: gdb.cp/cpexprs.exp: print base::operator!
+PASS: gdb.cp/cpexprs.exp: print base::operator!=
+PASS: gdb.cp/cpexprs.exp: print base::operator%
+PASS: gdb.cp/cpexprs.exp: print base::operator%=
+PASS: gdb.cp/cpexprs.exp: print base::operator&
+PASS: gdb.cp/cpexprs.exp: print base::operator&&
+PASS: gdb.cp/cpexprs.exp: print base::operator&=
+PASS: gdb.cp/cpexprs.exp: print base::operator()
+PASS: gdb.cp/cpexprs.exp: print base::operator*
+PASS: gdb.cp/cpexprs.exp: print base::operator*=
+PASS: gdb.cp/cpexprs.exp: print base::operator+
+PASS: gdb.cp/cpexprs.exp: print base::operator++
+PASS: gdb.cp/cpexprs.exp: print base::operator+=
+PASS: gdb.cp/cpexprs.exp: print base::operator-
+PASS: gdb.cp/cpexprs.exp: print base::operator--
+PASS: gdb.cp/cpexprs.exp: print base::operator-=
+PASS: gdb.cp/cpexprs.exp: print base::operator/
+PASS: gdb.cp/cpexprs.exp: print base::operator/=
+PASS: gdb.cp/cpexprs.exp: print base::operator<
+PASS: gdb.cp/cpexprs.exp: print base::operator<<
+PASS: gdb.cp/cpexprs.exp: print base::operator<<=
+PASS: gdb.cp/cpexprs.exp: print base::operator<=
+PASS: gdb.cp/cpexprs.exp: print base::operator=
+PASS: gdb.cp/cpexprs.exp: print base::operator==
+PASS: gdb.cp/cpexprs.exp: print base::operator>
+PASS: gdb.cp/cpexprs.exp: print base::operator>=
+PASS: gdb.cp/cpexprs.exp: print base::operator>>
+PASS: gdb.cp/cpexprs.exp: print base::operator>>=
+PASS: gdb.cp/cpexprs.exp: print base::operator[]
+PASS: gdb.cp/cpexprs.exp: print base::operator^
+PASS: gdb.cp/cpexprs.exp: print base::operator^=
+PASS: gdb.cp/cpexprs.exp: print base::operator|
+PASS: gdb.cp/cpexprs.exp: print base::operator|=
+PASS: gdb.cp/cpexprs.exp: print base::operator||
+PASS: gdb.cp/cpexprs.exp: print base::operator~
+PASS: gdb.cp/cpexprs.exp: print base::overload(base&) const
+PASS: gdb.cp/cpexprs.exp: print base::overload(char*) const
+PASS: gdb.cp/cpexprs.exp: print base::overload(int) const
+PASS: gdb.cp/cpexprs.exp: print base::overload(long) const
+PASS: gdb.cp/cpexprs.exp: print base::overload(short) const
+PASS: gdb.cp/cpexprs.exp: print base::overload(void) const
+PASS: gdb.cp/cpexprs.exp: print base::~base
+PASS: gdb.cp/cpexprs.exp: print derived::a_function
+PASS: gdb.cp/cpexprs.exp: print derived::derived
+PASS: gdb.cp/cpexprs.exp: print flubber<int, int, int, char, char>
+PASS: gdb.cp/cpexprs.exp: print flubber<int, int, int, char, int>
+PASS: gdb.cp/cpexprs.exp: print flubber<int, int, int, char, long>
+PASS: gdb.cp/cpexprs.exp: print flubber<int, int, int, char, short>
+PASS: gdb.cp/cpexprs.exp: print flubber<int, int, int, int, char>
+PASS: gdb.cp/cpexprs.exp: print flubber<int, int, int, int, int>
+PASS: gdb.cp/cpexprs.exp: print flubber<int, int, int, int, long>
+PASS: gdb.cp/cpexprs.exp: print flubber<int, int, int, int, short>
+PASS: gdb.cp/cpexprs.exp: print flubber<int, int, int, long, char>
+PASS: gdb.cp/cpexprs.exp: print flubber<int, int, int, long, int>
+PASS: gdb.cp/cpexprs.exp: print flubber<int, int, int, long, long>
+PASS: gdb.cp/cpexprs.exp: print flubber<int, int, int, long, short>
+PASS: gdb.cp/cpexprs.exp: print flubber<int, int, int, short, char>
+PASS: gdb.cp/cpexprs.exp: print flubber<int, int, int, short, int>
+PASS: gdb.cp/cpexprs.exp: print flubber<int, int, int, short, long>
+PASS: gdb.cp/cpexprs.exp: print flubber<int, int, int, short, short>
+PASS: gdb.cp/cpexprs.exp: print flubber<int, int, short, int, char>
+PASS: gdb.cp/cpexprs.exp: print flubber<int, int, short, int, int>
+PASS: gdb.cp/cpexprs.exp: print flubber<int, int, short, int, long>
+PASS: gdb.cp/cpexprs.exp: print flubber<int, int, short, int, short>
+PASS: gdb.cp/cpexprs.exp: print flubber<int, int, short, short, int>
+PASS: gdb.cp/cpexprs.exp: print flubber<long, short, long, short, long>
+PASS: gdb.cp/cpexprs.exp: print flubber<short, int, short, int, short>
+PASS: gdb.cp/cpexprs.exp: print policy1::function
+PASS: gdb.cp/cpexprs.exp: print policy1::policy
+PASS: gdb.cp/cpexprs.exp: print policy2::function
+PASS: gdb.cp/cpexprs.exp: print policy2::policy
+PASS: gdb.cp/cpexprs.exp: print policy3::function
+PASS: gdb.cp/cpexprs.exp: print policy3::policy
+PASS: gdb.cp/cpexprs.exp: print policy4::function
+PASS: gdb.cp/cpexprs.exp: print policy4::policy
+PASS: gdb.cp/cpexprs.exp: print policyd1::function
+PASS: gdb.cp/cpexprs.exp: print policyd1::policyd
+PASS: gdb.cp/cpexprs.exp: print policyd1::~policyd
+PASS: gdb.cp/cpexprs.exp: print policyd2::function
+PASS: gdb.cp/cpexprs.exp: print policyd2::policyd
+PASS: gdb.cp/cpexprs.exp: print policyd2::~policyd
+PASS: gdb.cp/cpexprs.exp: print policyd3::function
+PASS: gdb.cp/cpexprs.exp: print policyd3::policyd
+PASS: gdb.cp/cpexprs.exp: print policyd3::~policyd
+PASS: gdb.cp/cpexprs.exp: print policyd4::function
+PASS: gdb.cp/cpexprs.exp: print policyd4::policyd
+PASS: gdb.cp/cpexprs.exp: print policyd4::~policyd
+PASS: gdb.cp/cpexprs.exp: print policyd5::function
+PASS: gdb.cp/cpexprs.exp: print policyd5::policyd
+PASS: gdb.cp/cpexprs.exp: print policyd5::~policyd
+PASS: gdb.cp/cpexprs.exp: print policyd<base, operation_1<base> >::function
+PASS: gdb.cp/cpexprs.exp: print policyd<base, operation_1<base> >::policyd
+PASS: gdb.cp/cpexprs.exp: print policyd<base, operation_1<base> >::~policyd
+PASS: gdb.cp/cpexprs.exp: print policyd<char, operation_1<char> >::function
+PASS: gdb.cp/cpexprs.exp: print policyd<char, operation_1<char> >::policyd
+PASS: gdb.cp/cpexprs.exp: print policyd<char, operation_1<char> >::~policyd
+PASS: gdb.cp/cpexprs.exp: print policyd<int, operation_1<int> >::function
+PASS: gdb.cp/cpexprs.exp: print policyd<int, operation_1<int> >::policyd
+PASS: gdb.cp/cpexprs.exp: print policyd<int, operation_1<int> >::~policyd
+PASS: gdb.cp/cpexprs.exp: print policyd<long, operation_1<long> >::policyd
+PASS: gdb.cp/cpexprs.exp: print policyd<long, operation_1<long> >::~policyd
+PASS: gdb.cp/cpexprs.exp: print policyd<tclass<int>, operation_1<tclass<int> > >::function
+PASS: gdb.cp/cpexprs.exp: print policyd<tclass<int>, operation_1<tclass<int> > >::policyd
+PASS: gdb.cp/cpexprs.exp: print policyd<tclass<int>, operation_1<tclass<int> > >::~policyd
+PASS: gdb.cp/cpexprs.exp: print tclass<base>::do_something
+PASS: gdb.cp/cpexprs.exp: print tclass<char>::do_something
+PASS: gdb.cp/cpexprs.exp: print tclass<int>::do_something
+PASS: gdb.cp/cpexprs.exp: print tclass<long>::do_something
+PASS: gdb.cp/cpexprs.exp: print tclass<short>::do_something
+PASS: gdb.cp/cpexprs.exp: print test_function
+PASS: gdb.cp/cpexprs.exp: list base1::a_function
+PASS: gdb.cp/cpexprs.exp: list base1::base1(int)
+PASS: gdb.cp/cpexprs.exp: list base1::base1(void)
+PASS: gdb.cp/cpexprs.exp: list base2::a_function
+PASS: gdb.cp/cpexprs.exp: list base2::base2
+PASS: gdb.cp/cpexprs.exp: list base::base(int)
+PASS: gdb.cp/cpexprs.exp: list base::base(void)
+PASS: gdb.cp/cpexprs.exp: list base::operator char*
+PASS: gdb.cp/cpexprs.exp: list base::operator delete
+PASS: gdb.cp/cpexprs.exp: list base::operator delete[]
+PASS: gdb.cp/cpexprs.exp: list base::operator fluff*
+PASS: gdb.cp/cpexprs.exp: list base::operator fluff**
+PASS: gdb.cp/cpexprs.exp: list base::operator int
+PASS: gdb.cp/cpexprs.exp: list base::operator new
+PASS: gdb.cp/cpexprs.exp: list base::operator new[]
+PASS: gdb.cp/cpexprs.exp: list base::operator!
+PASS: gdb.cp/cpexprs.exp: list base::operator!=
+PASS: gdb.cp/cpexprs.exp: list base::operator%
+PASS: gdb.cp/cpexprs.exp: list base::operator%=
+PASS: gdb.cp/cpexprs.exp: list base::operator&
+PASS: gdb.cp/cpexprs.exp: list base::operator&&
+PASS: gdb.cp/cpexprs.exp: list base::operator&=
+PASS: gdb.cp/cpexprs.exp: list base::operator()
+PASS: gdb.cp/cpexprs.exp: list base::operator*
+PASS: gdb.cp/cpexprs.exp: list base::operator*=
+PASS: gdb.cp/cpexprs.exp: list base::operator+
+PASS: gdb.cp/cpexprs.exp: list base::operator++
+PASS: gdb.cp/cpexprs.exp: list base::operator+=
+PASS: gdb.cp/cpexprs.exp: list base::operator-
+PASS: gdb.cp/cpexprs.exp: list base::operator--
+PASS: gdb.cp/cpexprs.exp: list base::operator-=
+PASS: gdb.cp/cpexprs.exp: list base::operator/
+PASS: gdb.cp/cpexprs.exp: list base::operator/=
+PASS: gdb.cp/cpexprs.exp: list base::operator<
+PASS: gdb.cp/cpexprs.exp: list base::operator<<
+PASS: gdb.cp/cpexprs.exp: list base::operator<<=
+PASS: gdb.cp/cpexprs.exp: list base::operator<=
+PASS: gdb.cp/cpexprs.exp: list base::operator=
+PASS: gdb.cp/cpexprs.exp: list base::operator==
+PASS: gdb.cp/cpexprs.exp: list base::operator>
+PASS: gdb.cp/cpexprs.exp: list base::operator>=
+PASS: gdb.cp/cpexprs.exp: list base::operator>>
+PASS: gdb.cp/cpexprs.exp: list base::operator>>=
+PASS: gdb.cp/cpexprs.exp: list base::operator[]
+PASS: gdb.cp/cpexprs.exp: list base::operator^
+PASS: gdb.cp/cpexprs.exp: list base::operator^=
+PASS: gdb.cp/cpexprs.exp: list base::operator|
+PASS: gdb.cp/cpexprs.exp: list base::operator|=
+PASS: gdb.cp/cpexprs.exp: list base::operator||
+PASS: gdb.cp/cpexprs.exp: list base::operator~
+PASS: gdb.cp/cpexprs.exp: list base::overload(base&) const
+PASS: gdb.cp/cpexprs.exp: list base::overload(char*) const
+PASS: gdb.cp/cpexprs.exp: list base::overload(int) const
+PASS: gdb.cp/cpexprs.exp: list base::overload(long) const
+PASS: gdb.cp/cpexprs.exp: list base::overload(short) const
+PASS: gdb.cp/cpexprs.exp: list base::overload(void) const
+PASS: gdb.cp/cpexprs.exp: list base::~base
+PASS: gdb.cp/cpexprs.exp: list derived::a_function
+PASS: gdb.cp/cpexprs.exp: list derived::derived
+PASS: gdb.cp/cpexprs.exp: list flubber<int, int, int, char, char>
+PASS: gdb.cp/cpexprs.exp: list flubber<int, int, int, char, int>
+PASS: gdb.cp/cpexprs.exp: list flubber<int, int, int, char, long>
+PASS: gdb.cp/cpexprs.exp: list flubber<int, int, int, char, short>
+PASS: gdb.cp/cpexprs.exp: list flubber<int, int, int, int, char>
+PASS: gdb.cp/cpexprs.exp: list flubber<int, int, int, int, int>
+PASS: gdb.cp/cpexprs.exp: list flubber<int, int, int, int, long>
+PASS: gdb.cp/cpexprs.exp: list flubber<int, int, int, int, short>
+PASS: gdb.cp/cpexprs.exp: list flubber<int, int, int, long, char>
+PASS: gdb.cp/cpexprs.exp: list flubber<int, int, int, long, int>
+PASS: gdb.cp/cpexprs.exp: list flubber<int, int, int, long, long>
+PASS: gdb.cp/cpexprs.exp: list flubber<int, int, int, long, short>
+PASS: gdb.cp/cpexprs.exp: list flubber<int, int, int, short, char>
+PASS: gdb.cp/cpexprs.exp: list flubber<int, int, int, short, int>
+PASS: gdb.cp/cpexprs.exp: list flubber<int, int, int, short, long>
+PASS: gdb.cp/cpexprs.exp: list flubber<int, int, int, short, short>
+PASS: gdb.cp/cpexprs.exp: list flubber<int, int, short, int, char>
+PASS: gdb.cp/cpexprs.exp: list flubber<int, int, short, int, int>
+PASS: gdb.cp/cpexprs.exp: list flubber<int, int, short, int, long>
+PASS: gdb.cp/cpexprs.exp: list flubber<int, int, short, int, short>
+PASS: gdb.cp/cpexprs.exp: list flubber<int, int, short, short, int>
+PASS: gdb.cp/cpexprs.exp: list flubber<long, short, long, short, long>
+PASS: gdb.cp/cpexprs.exp: list flubber<short, int, short, int, short>
+PASS: gdb.cp/cpexprs.exp: list policy1::function
+PASS: gdb.cp/cpexprs.exp: list policy1::policy
+PASS: gdb.cp/cpexprs.exp: list policy2::function
+PASS: gdb.cp/cpexprs.exp: list policy2::policy
+PASS: gdb.cp/cpexprs.exp: list policy3::function
+PASS: gdb.cp/cpexprs.exp: list policy3::policy
+PASS: gdb.cp/cpexprs.exp: list policy4::function
+PASS: gdb.cp/cpexprs.exp: list policy4::policy
+PASS: gdb.cp/cpexprs.exp: list policyd1::function
+PASS: gdb.cp/cpexprs.exp: list policyd1::policyd
+PASS: gdb.cp/cpexprs.exp: list policyd1::~policyd
+PASS: gdb.cp/cpexprs.exp: list policyd2::function
+PASS: gdb.cp/cpexprs.exp: list policyd2::policyd
+PASS: gdb.cp/cpexprs.exp: list policyd2::~policyd
+PASS: gdb.cp/cpexprs.exp: list policyd3::function
+PASS: gdb.cp/cpexprs.exp: list policyd3::policyd
+PASS: gdb.cp/cpexprs.exp: list policyd3::~policyd
+PASS: gdb.cp/cpexprs.exp: list policyd4::function
+PASS: gdb.cp/cpexprs.exp: list policyd4::policyd
+PASS: gdb.cp/cpexprs.exp: list policyd4::~policyd
+PASS: gdb.cp/cpexprs.exp: list policyd5::function
+PASS: gdb.cp/cpexprs.exp: list policyd5::policyd
+PASS: gdb.cp/cpexprs.exp: list policyd5::~policyd
+PASS: gdb.cp/cpexprs.exp: list policyd<base, operation_1<base> >::function
+PASS: gdb.cp/cpexprs.exp: list policyd<base, operation_1<base> >::policyd
+PASS: gdb.cp/cpexprs.exp: list policyd<base, operation_1<base> >::~policyd
+PASS: gdb.cp/cpexprs.exp: list policyd<char, operation_1<char> >::function
+PASS: gdb.cp/cpexprs.exp: list policyd<char, operation_1<char> >::policyd
+PASS: gdb.cp/cpexprs.exp: list policyd<char, operation_1<char> >::~policyd
+PASS: gdb.cp/cpexprs.exp: list policyd<int, operation_1<int> >::function
+PASS: gdb.cp/cpexprs.exp: list policyd<int, operation_1<int> >::policyd
+PASS: gdb.cp/cpexprs.exp: list policyd<int, operation_1<int> >::~policyd
+PASS: gdb.cp/cpexprs.exp: list policyd<long, operation_1<long> >::policyd
+PASS: gdb.cp/cpexprs.exp: list policyd<long, operation_1<long> >::~policyd
+PASS: gdb.cp/cpexprs.exp: list policyd<tclass<int>, operation_1<tclass<int> > >::function
+PASS: gdb.cp/cpexprs.exp: list policyd<tclass<int>, operation_1<tclass<int> > >::policyd
+PASS: gdb.cp/cpexprs.exp: list policyd<tclass<int>, operation_1<tclass<int> > >::~policyd
+PASS: gdb.cp/cpexprs.exp: list tclass<base>::do_something
+PASS: gdb.cp/cpexprs.exp: list tclass<char>::do_something
+PASS: gdb.cp/cpexprs.exp: list tclass<int>::do_something
+PASS: gdb.cp/cpexprs.exp: list tclass<long>::do_something
+PASS: gdb.cp/cpexprs.exp: list tclass<short>::do_something
+PASS: gdb.cp/cpexprs.exp: list test_function
+PASS: gdb.cp/cpexprs.exp: continue to base1::a_function
+PASS: gdb.cp/cpexprs.exp: continue to base1::base1(int)
+PASS: gdb.cp/cpexprs.exp: continue to base1::base1(void)
+PASS: gdb.cp/cpexprs.exp: continue to base2::a_function
+PASS: gdb.cp/cpexprs.exp: continue to base2::base2
+PASS: gdb.cp/cpexprs.exp: continue to base::base(int)
+PASS: gdb.cp/cpexprs.exp: continue to base::base(void)
+PASS: gdb.cp/cpexprs.exp: continue to base::operator char*
+PASS: gdb.cp/cpexprs.exp: continue to base::operator delete
+PASS: gdb.cp/cpexprs.exp: continue to base::operator delete[]
+PASS: gdb.cp/cpexprs.exp: continue to base::operator fluff*
+PASS: gdb.cp/cpexprs.exp: continue to base::operator fluff**
+PASS: gdb.cp/cpexprs.exp: continue to base::operator int
+PASS: gdb.cp/cpexprs.exp: continue to base::operator new
+PASS: gdb.cp/cpexprs.exp: continue to base::operator new[]
+PASS: gdb.cp/cpexprs.exp: continue to base::operator!
+PASS: gdb.cp/cpexprs.exp: continue to base::operator!=
+PASS: gdb.cp/cpexprs.exp: continue to base::operator%
+PASS: gdb.cp/cpexprs.exp: continue to base::operator%=
+PASS: gdb.cp/cpexprs.exp: continue to base::operator&
+PASS: gdb.cp/cpexprs.exp: continue to base::operator&&
+PASS: gdb.cp/cpexprs.exp: continue to base::operator&=
+PASS: gdb.cp/cpexprs.exp: continue to base::operator()
+PASS: gdb.cp/cpexprs.exp: continue to base::operator*
+PASS: gdb.cp/cpexprs.exp: continue to base::operator*=
+PASS: gdb.cp/cpexprs.exp: continue to base::operator+
+PASS: gdb.cp/cpexprs.exp: continue to base::operator++
+PASS: gdb.cp/cpexprs.exp: continue to base::operator+=
+PASS: gdb.cp/cpexprs.exp: continue to base::operator-
+PASS: gdb.cp/cpexprs.exp: continue to base::operator--
+PASS: gdb.cp/cpexprs.exp: continue to base::operator-=
+PASS: gdb.cp/cpexprs.exp: continue to base::operator/
+PASS: gdb.cp/cpexprs.exp: continue to base::operator/=
+PASS: gdb.cp/cpexprs.exp: continue to base::operator<
+PASS: gdb.cp/cpexprs.exp: continue to base::operator<<
+PASS: gdb.cp/cpexprs.exp: continue to base::operator<<=
+PASS: gdb.cp/cpexprs.exp: continue to base::operator<=
+PASS: gdb.cp/cpexprs.exp: continue to base::operator=
+PASS: gdb.cp/cpexprs.exp: continue to base::operator==
+PASS: gdb.cp/cpexprs.exp: continue to base::operator>
+PASS: gdb.cp/cpexprs.exp: continue to base::operator>=
+PASS: gdb.cp/cpexprs.exp: continue to base::operator>>
+PASS: gdb.cp/cpexprs.exp: continue to base::operator>>=
+PASS: gdb.cp/cpexprs.exp: continue to base::operator[]
+PASS: gdb.cp/cpexprs.exp: continue to base::operator^
+PASS: gdb.cp/cpexprs.exp: continue to base::operator^=
+PASS: gdb.cp/cpexprs.exp: continue to base::operator|
+PASS: gdb.cp/cpexprs.exp: continue to base::operator|=
+PASS: gdb.cp/cpexprs.exp: continue to base::operator||
+PASS: gdb.cp/cpexprs.exp: continue to base::operator~
+PASS: gdb.cp/cpexprs.exp: continue to base::overload(base&) const
+PASS: gdb.cp/cpexprs.exp: continue to base::overload(char*) const
+PASS: gdb.cp/cpexprs.exp: continue to base::overload(int) const
+PASS: gdb.cp/cpexprs.exp: continue to base::overload(long) const
+PASS: gdb.cp/cpexprs.exp: continue to base::overload(short) const
+PASS: gdb.cp/cpexprs.exp: continue to base::overload(void) const
+PASS: gdb.cp/cpexprs.exp: continue to base::~base
+PASS: gdb.cp/cpexprs.exp: continue to derived::a_function
+PASS: gdb.cp/cpexprs.exp: continue to derived::derived
+PASS: gdb.cp/cpexprs.exp: continue to flubber<int, int, int, char, char>
+PASS: gdb.cp/cpexprs.exp: continue to flubber<int, int, int, char, int>
+PASS: gdb.cp/cpexprs.exp: continue to flubber<int, int, int, char, long>
+PASS: gdb.cp/cpexprs.exp: continue to flubber<int, int, int, char, short>
+PASS: gdb.cp/cpexprs.exp: continue to flubber<int, int, int, int, char>
+PASS: gdb.cp/cpexprs.exp: continue to flubber<int, int, int, int, int>
+PASS: gdb.cp/cpexprs.exp: continue to flubber<int, int, int, int, long>
+PASS: gdb.cp/cpexprs.exp: continue to flubber<int, int, int, int, short>
+PASS: gdb.cp/cpexprs.exp: continue to flubber<int, int, int, long, char>
+PASS: gdb.cp/cpexprs.exp: continue to flubber<int, int, int, long, int>
+PASS: gdb.cp/cpexprs.exp: continue to flubber<int, int, int, long, long>
+PASS: gdb.cp/cpexprs.exp: continue to flubber<int, int, int, long, short>
+PASS: gdb.cp/cpexprs.exp: continue to flubber<int, int, int, short, char>
+PASS: gdb.cp/cpexprs.exp: continue to flubber<int, int, int, short, int>
+PASS: gdb.cp/cpexprs.exp: continue to flubber<int, int, int, short, long>
+PASS: gdb.cp/cpexprs.exp: continue to flubber<int, int, int, short, short>
+PASS: gdb.cp/cpexprs.exp: continue to flubber<int, int, short, int, char>
+PASS: gdb.cp/cpexprs.exp: continue to flubber<int, int, short, int, int>
+PASS: gdb.cp/cpexprs.exp: continue to flubber<int, int, short, int, long>
+PASS: gdb.cp/cpexprs.exp: continue to flubber<int, int, short, int, short>
+PASS: gdb.cp/cpexprs.exp: continue to flubber<int, int, short, short, int>
+PASS: gdb.cp/cpexprs.exp: continue to flubber<long, short, long, short, long>
+PASS: gdb.cp/cpexprs.exp: continue to flubber<short, int, short, int, short>
+PASS: gdb.cp/cpexprs.exp: continue to policy1::function
+PASS: gdb.cp/cpexprs.exp: continue to policy1::policy
+PASS: gdb.cp/cpexprs.exp: continue to policy2::function
+PASS: gdb.cp/cpexprs.exp: continue to policy2::policy
+PASS: gdb.cp/cpexprs.exp: continue to policy3::function
+PASS: gdb.cp/cpexprs.exp: continue to policy3::policy
+PASS: gdb.cp/cpexprs.exp: continue to policy4::function
+PASS: gdb.cp/cpexprs.exp: continue to policy4::policy
+PASS: gdb.cp/cpexprs.exp: continue to policyd1::function
+PASS: gdb.cp/cpexprs.exp: continue to policyd1::policyd
+PASS: gdb.cp/cpexprs.exp: continue to policyd1::~policyd
+PASS: gdb.cp/cpexprs.exp: continue to policyd2::function
+PASS: gdb.cp/cpexprs.exp: continue to policyd2::policyd
+PASS: gdb.cp/cpexprs.exp: continue to policyd2::~policyd
+PASS: gdb.cp/cpexprs.exp: continue to policyd3::function
+PASS: gdb.cp/cpexprs.exp: continue to policyd3::policyd
+PASS: gdb.cp/cpexprs.exp: continue to policyd3::~policyd
+PASS: gdb.cp/cpexprs.exp: continue to policyd4::function
+PASS: gdb.cp/cpexprs.exp: continue to policyd4::policyd
+PASS: gdb.cp/cpexprs.exp: continue to policyd4::~policyd
+PASS: gdb.cp/cpexprs.exp: continue to policyd5::function
+PASS: gdb.cp/cpexprs.exp: continue to policyd5::policyd
+PASS: gdb.cp/cpexprs.exp: continue to policyd5::~policyd
+PASS: gdb.cp/cpexprs.exp: continue to policyd<base, operation_1<base> >::function
+PASS: gdb.cp/cpexprs.exp: continue to policyd<base, operation_1<base> >::policyd
+PASS: gdb.cp/cpexprs.exp: continue to policyd<base, operation_1<base> >::~policyd
+PASS: gdb.cp/cpexprs.exp: continue to policyd<char, operation_1<char> >::function
+PASS: gdb.cp/cpexprs.exp: continue to policyd<char, operation_1<char> >::policyd
+PASS: gdb.cp/cpexprs.exp: continue to policyd<char, operation_1<char> >::~policyd
+PASS: gdb.cp/cpexprs.exp: continue to policyd<int, operation_1<int> >::function
+PASS: gdb.cp/cpexprs.exp: continue to policyd<int, operation_1<int> >::policyd
+PASS: gdb.cp/cpexprs.exp: continue to policyd<int, operation_1<int> >::~policyd
+PASS: gdb.cp/cpexprs.exp: continue to policyd<long, operation_1<long> >::policyd
+PASS: gdb.cp/cpexprs.exp: continue to policyd<long, operation_1<long> >::~policyd
+PASS: gdb.cp/cpexprs.exp: continue to policyd<tclass<int>, operation_1<tclass<int> > >::function
+PASS: gdb.cp/cpexprs.exp: continue to policyd<tclass<int>, operation_1<tclass<int> > >::policyd
+PASS: gdb.cp/cpexprs.exp: continue to policyd<tclass<int>, operation_1<tclass<int> > >::~policyd
+PASS: gdb.cp/cpexprs.exp: continue to tclass<base>::do_something
+PASS: gdb.cp/cpexprs.exp: continue to tclass<char>::do_something
+PASS: gdb.cp/cpexprs.exp: continue to tclass<int>::do_something
+PASS: gdb.cp/cpexprs.exp: continue to tclass<long>::do_something
+PASS: gdb.cp/cpexprs.exp: continue to tclass<short>::do_something
+Running ../../../master/gdb/testsuite/gdb.cp/cplusfuncs.exp ...
+PASS: gdb.cp/cplusfuncs.exp: set language c++
+PASS: gdb.cp/cplusfuncs.exp: set width 0
+PASS: gdb.cp/cplusfuncs.exp: detect dm_operator_comma
+PASS: gdb.cp/cplusfuncs.exp: detect dm_operator_char_star
+PASS: gdb.cp/cplusfuncs.exp: detect dm_type_char_star
+PASS: gdb.cp/cplusfuncs.exp: detect dm_type_foo_ref
+PASS: gdb.cp/cplusfuncs.exp: detect dm_type_int_star
+PASS: gdb.cp/cplusfuncs.exp: detect dm_type_long_star
+PASS: gdb.cp/cplusfuncs.exp: detect dm_type_unsigned_int
+PASS: gdb.cp/cplusfuncs.exp: detect dm_type_void
+PASS: gdb.cp/cplusfuncs.exp: detect dm_type_void_star
+PASS: gdb.cp/cplusfuncs.exp: detect dm_type_short
+PASS: gdb.cp/cplusfuncs.exp: detect dm_type_unsigned_short
+PASS: gdb.cp/cplusfuncs.exp: detect dm_type_long
+PASS: gdb.cp/cplusfuncs.exp: detect dm_type_unsigned_long
+PASS: gdb.cp/cplusfuncs.exp: detect dm_type_typedef
+PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(void)'
+PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(char)'
+PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(signed char)'
+PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(unsigned char)'
+PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(short)'
+PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(unsigned short)'
+PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(int)'
+PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(unsigned int)'
+PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(long)'
+PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(unsigned long)'
+PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(float)'
+PASS: gdb.cp/cplusfuncs.exp: print &'overload1arg(double)'
+PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int)'
+PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int)'
+PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int)'
+PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int)'
+PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int)'
+PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int, int)'
+PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int, int, int)'
+PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int, int, int, int)'
+PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int, int, int, int, int)'
+PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int, int, int, int, int, int)'
+PASS: gdb.cp/cplusfuncs.exp: print &'overloadargs(int, int, int, int, int, int, int, int, int, int, int)'
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator*(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator%(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator-(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator>>(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator!=(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator>(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator>=(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator|(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator&&(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator!(void)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator++(int)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator=(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator+=(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator*=(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator%=(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator>>=(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator|=(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator,(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator/(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator+(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator<<(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator==(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator<(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator<=(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator&(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator^(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator||(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator~(void)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator--(int)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator->(void)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator-=(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator/=(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator<<=(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator&=(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator^=(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator->*(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator[](foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator()(foo&)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator new
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator new[]
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator delete(void*)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator delete(void*)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator int(void)
+PASS: gdb.cp/cplusfuncs.exp: print &foo::operator char*(void)
+PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc1
+PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc2
+PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc3
+PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc4
+PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc5
+PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc6
+PASS: gdb.cp/cplusfuncs.exp: print &hairyfunc7
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator\*("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator%("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator-("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator>>("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator!=("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator>("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator>=("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator|("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator&&("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator!("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator++("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator=("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator+=("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator\*=("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator%=("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator>>=("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator|=("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator,("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator/("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator+("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator<<("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator==("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator<("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator<=("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator&("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator^("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator||("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator~("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator--("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator->("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator-=("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator/=("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator<<=("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator&=("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator^=("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator->\*("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator\[\]("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator new("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator delete("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator int("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator()("
+PASS: gdb.cp/cplusfuncs.exp: info function for "operator char\*("
+PASS: gdb.cp/cplusfuncs.exp: list foo::operator int*
+Running ../../../master/gdb/testsuite/gdb.cp/ctti.exp ...
+PASS: gdb.cp/ctti.exp: continue to breakpoint: marker add1
+PASS: gdb.cp/ctti.exp: print c
+PASS: gdb.cp/ctti.exp: print f
+PASS: gdb.cp/ctti.exp: print i
+Running ../../../master/gdb/testsuite/gdb.cp/demangle.exp ...
+PASS: gdb.cp/demangle.exp: set language c++
+PASS: gdb.cp/demangle.exp: set width 0
+PASS: gdb.cp/demangle.exp: lucid: set demangle-style
+PASS: gdb.cp/demangle.exp: lucid: check demangling style
+PASS: gdb.cp/demangle.exp: lucid: WS__FR7istream
+PASS: gdb.cp/demangle.exp: lucid: __aa__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __aad__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __ad__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __adv__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __adv__7complexF7complex
+PASS: gdb.cp/demangle.exp: lucid: __aer__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __als__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __amd__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __ami__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __amu__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __amu__7complexF7complex
+PASS: gdb.cp/demangle.exp: lucid: __aor__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __apl__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __ars__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __as__18istream_withassignFP9streambuf
+PASS: gdb.cp/demangle.exp: lucid: __as__18istream_withassignFR7istream
+PASS: gdb.cp/demangle.exp: lucid: __as__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __as__3iosFR3ios
+PASS: gdb.cp/demangle.exp: lucid: __cl__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __cm__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __co__3fooFv
+PASS: gdb.cp/demangle.exp: lucid: __ct__10istrstreamFPc
+PASS: gdb.cp/demangle.exp: lucid: __ct__10istrstreamFPci
+PASS: gdb.cp/demangle.exp: lucid: __ct__10ostrstreamFPciT2
+PASS: gdb.cp/demangle.exp: lucid: __ct__10ostrstreamFv
+PASS: gdb.cp/demangle.exp: lucid: __ct__10smanip_intFPFR3iosi_R3iosi
+PASS: gdb.cp/demangle.exp: lucid: __ct__11c_exceptionFPcRC7complexT2
+PASS: gdb.cp/demangle.exp: lucid: __ct__11fstreambaseFPCciT2
+PASS: gdb.cp/demangle.exp: lucid: __ct__11fstreambaseFi
+PASS: gdb.cp/demangle.exp: lucid: __ct__11fstreambaseFiPcT1
+PASS: gdb.cp/demangle.exp: lucid: __ct__11fstreambaseFv
+PASS: gdb.cp/demangle.exp: lucid: __ct__11smanip_longFPFR3iosl_R3iosl
+PASS: gdb.cp/demangle.exp: lucid: __ct__11stdiostreamFP4FILE
+PASS: gdb.cp/demangle.exp: lucid: __ct__12strstreambufFPFl_PvPFPv_v
+PASS: gdb.cp/demangle.exp: lucid: __ct__12strstreambufFPUciT1
+PASS: gdb.cp/demangle.exp: lucid: __ct__12strstreambufFPciT1
+PASS: gdb.cp/demangle.exp: lucid: __ct__12strstreambufFi
+PASS: gdb.cp/demangle.exp: lucid: __ct__12strstreambufFv
+PASS: gdb.cp/demangle.exp: lucid: __ct__13strstreambaseFPciT1
+PASS: gdb.cp/demangle.exp: lucid: __ct__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __ct__3fooFi
+PASS: gdb.cp/demangle.exp: lucid: __ct__3fooFiN31
+PASS: gdb.cp/demangle.exp: lucid: __ct__3fooFiPCc
+PASS: gdb.cp/demangle.exp: lucid: __ct__3fooFiR3fooT1T2T1T2
+PASS: gdb.cp/demangle.exp: lucid: __ct__3iosFP9streambuf
+PASS: gdb.cp/demangle.exp: lucid: __ct__7filebufFiPcT1
+PASS: gdb.cp/demangle.exp: lucid: __ct__7fstreamFPCciT2
+PASS: gdb.cp/demangle.exp: lucid: __ct__7fstreamFiPcT1
+PASS: gdb.cp/demangle.exp: lucid: __ct__7istreamFP9streambuf
+PASS: gdb.cp/demangle.exp: lucid: __ct__7istreamFP9streambufiP7ostream
+PASS: gdb.cp/demangle.exp: lucid: __ct__7istreamFiPcT1
+PASS: gdb.cp/demangle.exp: lucid: __ct__7istreamFiT1P7ostream
+PASS: gdb.cp/demangle.exp: lucid: __ct__7ostreamFP9streambuf
+PASS: gdb.cp/demangle.exp: lucid: __ct__7ostreamFiPc
+PASS: gdb.cp/demangle.exp: lucid: __ct__8ifstreamFPCciT2
+PASS: gdb.cp/demangle.exp: lucid: __ct__8ifstreamFiPcT1
+PASS: gdb.cp/demangle.exp: lucid: __ct__Q23foo3barFv
+PASS: gdb.cp/demangle.exp: lucid: __ct__Q33foo3bar4bellFv
+PASS: gdb.cp/demangle.exp: lucid: __dl__3fooSFPv
+PASS: gdb.cp/demangle.exp: lucid: __dl__FPv
+PASS: gdb.cp/demangle.exp: lucid: __dt__10istrstreamFv
+PASS: gdb.cp/demangle.exp: lucid: __dt__Q23foo3barFv
+PASS: gdb.cp/demangle.exp: lucid: __dt__Q33foo3bar4bellFv
+PASS: gdb.cp/demangle.exp: lucid: __dv__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __dv__F7complexT1
+PASS: gdb.cp/demangle.exp: lucid: __eq__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __er__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __ge__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __gt__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __le__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __ls__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFP9streambuf
+PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFPCc
+PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFPFR3ios_R3ios
+PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFPv
+PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFUi
+PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFUl
+PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFd
+PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFf
+PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFi
+PASS: gdb.cp/demangle.exp: lucid: __ls__7ostreamFl
+PASS: gdb.cp/demangle.exp: lucid: __ls__FR7ostream7complex
+PASS: gdb.cp/demangle.exp: lucid: __lt__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __md__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __mi__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __ml__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __ml__F7complexT1
+PASS: gdb.cp/demangle.exp: lucid: __mm__3fooFi
+PASS: gdb.cp/demangle.exp: lucid: __ne__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __nt__3fooFv
+PASS: gdb.cp/demangle.exp: lucid: __nw__3fooSFi
+PASS: gdb.cp/demangle.exp: lucid: __nw__FUi
+PASS: gdb.cp/demangle.exp: lucid: __nw__FUiPv
+PASS: gdb.cp/demangle.exp: lucid: __oo__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __opPc__3fooFv
+PASS: gdb.cp/demangle.exp: lucid: __opi__3fooFv
+PASS: gdb.cp/demangle.exp: lucid: __or__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __pl__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __pp__3fooFi
+PASS: gdb.cp/demangle.exp: lucid: __pt__3fooFv
+PASS: gdb.cp/demangle.exp: lucid: __rm__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __rs__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFP9streambuf
+PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFPFR3ios_R3ios
+PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFPFR7istream_R7istream
+PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFPUc
+PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFPc
+PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRUi
+PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRUl
+PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRUs
+PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRd
+PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRf
+PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRi
+PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRl
+PASS: gdb.cp/demangle.exp: lucid: __rs__7istreamFRs
+PASS: gdb.cp/demangle.exp: lucid: __rs__FR7istreamR7complex
+PASS: gdb.cp/demangle.exp: lucid: __vc__3fooFR3foo
+PASS: gdb.cp/demangle.exp: lucid: __vtbl__10istrstream
+PASS: gdb.cp/demangle.exp: lucid: __vtbl__17ostream__iostream__19iostream_withassign
+PASS: gdb.cp/demangle.exp: lucid: __vtbl__3ios
+PASS: gdb.cp/demangle.exp: lucid: __vtbl__3ios__13strstreambase
+KFAIL: gdb.cp/demangle.exp: lucid: __vtbl__3foo__vt_cc_main_ (PRMS: gdb/945)
+PASS: gdb.cp/demangle.exp: lucid: abs__F7complex
+PASS: gdb.cp/demangle.exp: lucid: allocate__9streambufFv
+PASS: gdb.cp/demangle.exp: lucid: attach__11fstreambaseFi
+PASS: gdb.cp/demangle.exp: lucid: bitalloc__3iosSFv
+PASS: gdb.cp/demangle.exp: lucid: chr__FiT1
+PASS: gdb.cp/demangle.exp: lucid: complex_error__FR11c_exception
+PASS: gdb.cp/demangle.exp: lucid: complexfunc2__FPFPc_i
+PASS: gdb.cp/demangle.exp: lucid: complexfunc3__FPFPFPl_s_i
+PASS: gdb.cp/demangle.exp: lucid: complexfunc4__FPFPFPc_s_i
+PASS: gdb.cp/demangle.exp: lucid: complexfunc5__FPFPc_PFl_i
+PASS: gdb.cp/demangle.exp: lucid: complexfunc6__FPFPi_PFl_i
+PASS: gdb.cp/demangle.exp: lucid: complexfunc7__FPFPFPc_i_PFl_i
+PASS: gdb.cp/demangle.exp: lucid: complicated_put__7ostreamFc
+PASS: gdb.cp/demangle.exp: lucid: conv10__FlPc
+PASS: gdb.cp/demangle.exp: lucid: conv16__FUlPc
+PASS: gdb.cp/demangle.exp: lucid: dec__FR3ios
+PASS: gdb.cp/demangle.exp: lucid: dec__Fli
+PASS: gdb.cp/demangle.exp: lucid: dofield__FP7ostreamPciT2T3
+PASS: gdb.cp/demangle.exp: lucid: flags__3iosFl
+PASS: gdb.cp/demangle.exp: lucid: flags__3iosFv
+PASS: gdb.cp/demangle.exp: lucid: foo__FiN31
+PASS: gdb.cp/demangle.exp: lucid: foo__FiR3fooT1T2T1T2
+PASS: gdb.cp/demangle.exp: lucid: foo___3barFl
+PASS: gdb.cp/demangle.exp: lucid: form__FPCce
+PASS: gdb.cp/demangle.exp: lucid: get__7istreamFPcic
+PASS: gdb.cp/demangle.exp: lucid: get__7istreamFR9streambufc
+PASS: gdb.cp/demangle.exp: lucid: get_complicated__7istreamFRUc
+PASS: gdb.cp/demangle.exp: lucid: get_complicated__7istreamFRc
+PASS: gdb.cp/demangle.exp: lucid: getline__7istreamFPUcic
+PASS: gdb.cp/demangle.exp: lucid: getline__7istreamFPcic
+PASS: gdb.cp/demangle.exp: lucid: ignore__7istreamFiT1
+PASS: gdb.cp/demangle.exp: lucid: init__12strstreambufFPciT1
+PASS: gdb.cp/demangle.exp: lucid: init__3iosFP9streambuf
+PASS: gdb.cp/demangle.exp: lucid: initcount__13Iostream_init
+PASS: gdb.cp/demangle.exp: lucid: ipfx__7istreamFi
+PASS: gdb.cp/demangle.exp: lucid: ls_complicated__7ostreamFUc
+PASS: gdb.cp/demangle.exp: lucid: ls_complicated__7ostreamFc
+PASS: gdb.cp/demangle.exp: lucid: open__11fstreambaseFPCciT2
+PASS: gdb.cp/demangle.exp: lucid: open__7filebufFPCciT2
+PASS: gdb.cp/demangle.exp: lucid: overload1arg__FSc
+PASS: gdb.cp/demangle.exp: lucid: overload1arg__FUc
+PASS: gdb.cp/demangle.exp: lucid: overload1arg__FUi
+PASS: gdb.cp/demangle.exp: lucid: overload1arg__FUl
+PASS: gdb.cp/demangle.exp: lucid: overload1arg__FUs
+PASS: gdb.cp/demangle.exp: lucid: overload1arg__Fc
+PASS: gdb.cp/demangle.exp: lucid: overload1arg__Fd
+PASS: gdb.cp/demangle.exp: lucid: overload1arg__Ff
+PASS: gdb.cp/demangle.exp: lucid: overload1arg__Fi
+PASS: gdb.cp/demangle.exp: lucid: overload1arg__Fl
+PASS: gdb.cp/demangle.exp: lucid: overload1arg__Fs
+PASS: gdb.cp/demangle.exp: lucid: overload1arg__Fv
+PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN21
+PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN31
+PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN41
+PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN51
+PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN61
+PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN71
+PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN81
+PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN91
+PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiN91N11
+PASS: gdb.cp/demangle.exp: lucid: overloadargs__FiT1
+PASS: gdb.cp/demangle.exp: lucid: polar__FdT1
+PASS: gdb.cp/demangle.exp: lucid: pow__F7complexT1
+PASS: gdb.cp/demangle.exp: lucid: pow__F7complexd
+PASS: gdb.cp/demangle.exp: lucid: pow__F7complexi
+PASS: gdb.cp/demangle.exp: lucid: pow__Fd7complex
+PASS: gdb.cp/demangle.exp: lucid: pstart__FPciT2
+PASS: gdb.cp/demangle.exp: lucid: put__7ostreamFc
+PASS: gdb.cp/demangle.exp: lucid: read__7istreamFPci
+PASS: gdb.cp/demangle.exp: lucid: resetiosflags__FR3iosl
+PASS: gdb.cp/demangle.exp: lucid: restore_errno__FRi
+PASS: gdb.cp/demangle.exp: lucid: rs_complicated__7istreamFRUc
+PASS: gdb.cp/demangle.exp: lucid: rs_complicated__7istreamFRc
+PASS: gdb.cp/demangle.exp: lucid: seekg__7istreamFl8seek_dir
+PASS: gdb.cp/demangle.exp: lucid: seekoff__12strstreambufFl8seek_diri
+PASS: gdb.cp/demangle.exp: lucid: seekoff__9streambufFlQ2_3ios12ios_seek_diri
+PASS: gdb.cp/demangle.exp: lucid: seekpos__9streambufFli
+PASS: gdb.cp/demangle.exp: lucid: set_new_handler__FPFv_v
+PASS: gdb.cp/demangle.exp: lucid: setb__9streambufFPcT1i
+PASS: gdb.cp/demangle.exp: lucid: setb__FR3iosi
+PASS: gdb.cp/demangle.exp: lucid: setbuf__11fstreambaseFPci
+PASS: gdb.cp/demangle.exp: lucid: setbuf__9streambufFPUci
+PASS: gdb.cp/demangle.exp: lucid: setbuf__9streambufFPciT2
+PASS: gdb.cp/demangle.exp: lucid: setf__3iosFlT1
+PASS: gdb.cp/demangle.exp: lucid: setfill__FR3iosi
+PASS: gdb.cp/demangle.exp: lucid: setg__9streambufFPcN21
+PASS: gdb.cp/demangle.exp: lucid: setp__9streambufFPcT1
+PASS: gdb.cp/demangle.exp: lucid: sputn__9streambufFPCci
+PASS: gdb.cp/demangle.exp: lucid: str__FPCci
+PASS: gdb.cp/demangle.exp: lucid: tie__3iosFP7ostream
+PASS: gdb.cp/demangle.exp: lucid: uconv10__FUlPc
+PASS: gdb.cp/demangle.exp: lucid: write__7ostreamFPCci
+PASS: gdb.cp/demangle.exp: lucid: xget__7istreamFPc
+PASS: gdb.cp/demangle.exp: lucid: xsgetn__9streambufFPci
+PASS: gdb.cp/demangle.exp: lucid: xsputn__9streambufFPCci
+PASS: gdb.cp/demangle.exp: lucid: _Utf390_1__1_9223372036854775807__9223372036854775
+PASS: gdb.cp/demangle.exp: gnu: set demangle-style
+PASS: gdb.cp/demangle.exp: gnu: check demangling style
+PASS: gdb.cp/demangle.exp: gnu: Abort__FP6EditoriPCc
+PASS: gdb.cp/demangle.exp: gnu: AddAlignment__9ivTSolverUiP12ivInteractorP7ivTGlue
+PASS: gdb.cp/demangle.exp: gnu: Append__15NameChooserViewPCc
+PASS: gdb.cp/demangle.exp: gnu: ArrowheadIntersects__9ArrowLineP9ArrowheadR6BoxObjP7Graphic
+PASS: gdb.cp/demangle.exp: gnu: AtEnd__13ivRubberGroup
+PASS: gdb.cp/demangle.exp: gnu: BgFilter__9ivTSolverP12ivInteractor
+PASS: gdb.cp/demangle.exp: gnu: BitPatterntoa__FRC10BitPatternccc
+PASS: gdb.cp/demangle.exp: gnu: Check__6UArrayi
+PASS: gdb.cp/demangle.exp: gnu: CoreConstDecls__8TextCodeR7ostream
+PASS: gdb.cp/demangle.exp: gnu: Detach__8StateVarP12StateVarView
+PASS: gdb.cp/demangle.exp: gnu: Done__9ComponentG8Iterator
+PASS: gdb.cp/demangle.exp: gnu: DrawDestinationTransformedImage__FP7_XImageiiT0iiUlUiiiUiUlUlP4_XGCRC13ivTransformeriiii
+PASS: gdb.cp/demangle.exp: gnu: Edit__12StringEditorPCcii
+PASS: gdb.cp/demangle.exp: gnu: Effect__11RelateManipR7ivEvent
+PASS: gdb.cp/demangle.exp: gnu: FilterName__FPCc
+PASS: gdb.cp/demangle.exp: gnu: Filter__6PSTextPCci
+PASS: gdb.cp/demangle.exp: gnu: FindColor__7CatalogPCciii
+PASS: gdb.cp/demangle.exp: gnu: FindFixed__FRP4CNetP4CNet
+PASS: gdb.cp/demangle.exp: gnu: FindFont__7CatalogPCcN21
+PASS: gdb.cp/demangle.exp: gnu: Fix48_abort__FR8twolongs
+PASS: gdb.cp/demangle.exp: gnu: GetBarInfo__15iv2_6_VScrollerP13ivPerspectiveRiT2
+PASS: gdb.cp/demangle.exp: gnu: GetBgColor__C9ivPainter
+PASS: gdb.cp/demangle.exp: gnu: Iisdouble__FPC6IntRep
+PASS: gdb.cp/demangle.exp: gnu: InsertBody__15H_PullrightMenuii
+PASS: gdb.cp/demangle.exp: gnu: InsertCharacter__9TextManipc
+PASS: gdb.cp/demangle.exp: gnu: InsertToplevel__7ivWorldP12ivInteractorT1
+PASS: gdb.cp/demangle.exp: gnu: InsertToplevel__7ivWorldP12ivInteractorT1iiUi
+PASS: gdb.cp/demangle.exp: gnu: IsADirectory__FPCcR4stat
+PASS: gdb.cp/demangle.exp: gnu: IsAGroup__FP11GraphicViewP11GraphicComp
+PASS: gdb.cp/demangle.exp: gnu: IsA__10ButtonCodeUl
+PASS: gdb.cp/demangle.exp: gnu: ReadName__FR7istreamPc
+PASS: gdb.cp/demangle.exp: gnu: Redraw__13StringBrowseriiii
+PASS: gdb.cp/demangle.exp: gnu: Rotate__13ivTransformerf
+PASS: gdb.cp/demangle.exp: gnu: Rotated__C13ivTransformerf
+PASS: gdb.cp/demangle.exp: gnu: Round__Ff
+PASS: gdb.cp/demangle.exp: gnu: SetExport__16MemberSharedNameUi
+PASS: gdb.cp/demangle.exp: gnu: Set__14ivControlState13ControlStatusUi
+PASS: gdb.cp/demangle.exp: gnu: Set__5DFacePcii
+PASS: gdb.cp/demangle.exp: gnu: VConvert__9ivTSolverP12ivInteractorRP8TElementT2
+PASS: gdb.cp/demangle.exp: gnu: VConvert__9ivTSolverP7ivTGlueRP8TElement
+PASS: gdb.cp/demangle.exp: gnu: VOrder__9ivTSolverUiRP12ivInteractorT2
+PASS: gdb.cp/demangle.exp: gnu: Valid__7CatalogPCcRP4Tool
+PASS: gdb.cp/demangle.exp: gnu: _10PageButton$__both
+PASS: gdb.cp/demangle.exp: gnu: _3RNG$singleMantissa
+PASS: gdb.cp/demangle.exp: gnu: _5IComp$_release
+PASS: gdb.cp/demangle.exp: gnu: _$_10BitmapComp
+PASS: gdb.cp/demangle.exp: gnu: _$_9__io_defs
+PASS: gdb.cp/demangle.exp: gnu: _$_Q23foo3bar
+PASS: gdb.cp/demangle.exp: gnu: _$_Q33foo3bar4bell
+PASS: gdb.cp/demangle.exp: gnu: __10ivTelltaleiP7ivGlyph
+PASS: gdb.cp/demangle.exp: gnu: __10ivViewportiP12ivInteractorUi
+PASS: gdb.cp/demangle.exp: gnu: __10ostrstream
+PASS: gdb.cp/demangle.exp: gnu: __10ostrstreamPcii
+PASS: gdb.cp/demangle.exp: gnu: __11BasicDialogiPCcP13ivButtonStateN22Ui
+PASS: gdb.cp/demangle.exp: gnu: __11BitmapTablei
+PASS: gdb.cp/demangle.exp: gnu: __12ViewportCodeP12ViewportComp
+PASS: gdb.cp/demangle.exp: gnu: __12iv2_6_BorderiPCci
+PASS: gdb.cp/demangle.exp: gnu: __12iv2_6_Borderii
+PASS: gdb.cp/demangle.exp: gnu: __12ivBackgroundiP7ivGlyphPC7ivColor
+PASS: gdb.cp/demangle.exp: gnu: __12ivBreak_Listl
+PASS: gdb.cp/demangle.exp: gnu: __14TextInteractoriPCcUi
+PASS: gdb.cp/demangle.exp: gnu: __14iv2_6_MenuItemiP12ivInteractor
+PASS: gdb.cp/demangle.exp: gnu: __14iv2_6_MenuItemiPCcP12ivInteractor
+PASS: gdb.cp/demangle.exp: gnu: __20DisplayList_IteratorR11DisplayList
+PASS: gdb.cp/demangle.exp: gnu: __3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __3fooiN31
+PASS: gdb.cp/demangle.exp: gnu: __3fooiPCc
+PASS: gdb.cp/demangle.exp: gnu: __3fooiRT0iT2iT2
+PASS: gdb.cp/demangle.exp: gnu: __6GetOptiPPcPCc
+PASS: gdb.cp/demangle.exp: gnu: __6KeyMapPT0
+PASS: gdb.cp/demangle.exp: gnu: __7ivWorldPCcRiPPcPC12ivOptionDescPC14ivPropertyData
+PASS: gdb.cp/demangle.exp: gnu: __7procbufPCci
+PASS: gdb.cp/demangle.exp: gnu: __8ArrowCmdP6EditorUiUi
+PASS: gdb.cp/demangle.exp: gnu: __9F_EllipseiiiiP7Graphic
+PASS: gdb.cp/demangle.exp: gnu: __9FrameDataP9FrameCompi
+PASS: gdb.cp/demangle.exp: gnu: __9HVGraphicP9CanvasVarP7Graphic
+PASS: gdb.cp/demangle.exp: gnu: __Q23foo3bar
+PASS: gdb.cp/demangle.exp: gnu: __Q33foo3bar4bell
+PASS: gdb.cp/demangle.exp: gnu: __aa__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __aad__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __ad__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __adv__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __aer__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __als__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __amd__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __ami__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __aml__3FixRT0
+PASS: gdb.cp/demangle.exp: gnu: __aml__5Fix16i
+PASS: gdb.cp/demangle.exp: gnu: __aml__5Fix32RT0
+PASS: gdb.cp/demangle.exp: gnu: __aor__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __apl__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __ars__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __as__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __cl__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __cl__6Normal
+PASS: gdb.cp/demangle.exp: gnu: __cl__6Stringii
+PASS: gdb.cp/demangle.exp: gnu: __cm__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __co__3foo
+PASS: gdb.cp/demangle.exp: gnu: __dl__3fooPv
+PASS: gdb.cp/demangle.exp: gnu: __dv__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __eq__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __er__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __ge__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __gt__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __le__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __ls__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __ls__FR7ostreamPFR3ios_R3ios
+PASS: gdb.cp/demangle.exp: gnu: __ls__FR7ostreamR3Fix
+PASS: gdb.cp/demangle.exp: gnu: __lt__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __md__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __mi__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __ml__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __mm__3fooi
+PASS: gdb.cp/demangle.exp: gnu: __ne__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __ne__FRC7ComplexT0
+PASS: gdb.cp/demangle.exp: gnu: __ne__FRC7Complexd
+PASS: gdb.cp/demangle.exp: gnu: __ne__FRC9SubStringRC6String
+PASS: gdb.cp/demangle.exp: gnu: __nt__3foo
+PASS: gdb.cp/demangle.exp: gnu: __nw__3fooi
+PASS: gdb.cp/demangle.exp: gnu: __oo__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __opPc__3foo
+PASS: gdb.cp/demangle.exp: gnu: __opi__3foo
+PASS: gdb.cp/demangle.exp: gnu: __or__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __pl__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __pp__3fooi
+PASS: gdb.cp/demangle.exp: gnu: __rf__3foo
+PASS: gdb.cp/demangle.exp: gnu: __rm__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __rs__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __vc__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: _gsub__6StringRC5RegexPCci
+PASS: gdb.cp/demangle.exp: gnu: _new_Fix__FUs
+PASS: gdb.cp/demangle.exp: gnu: _vt.foo
+PASS: gdb.cp/demangle.exp: gnu: _vt.foo.bar
+PASS: gdb.cp/demangle.exp: gnu: _vt$foo
+PASS: gdb.cp/demangle.exp: gnu: _vt$foo$bar
+PASS: gdb.cp/demangle.exp: gnu: append__7ivGlyphPT0
+PASS: gdb.cp/demangle.exp: gnu: arg__FRC7Complex
+PASS: gdb.cp/demangle.exp: gnu: clearok__FP7_win_sti
+PASS: gdb.cp/demangle.exp: gnu: complexfunc2__FPFPc_i
+PASS: gdb.cp/demangle.exp: gnu: complexfunc3__FPFPFPl_s_i
+PASS: gdb.cp/demangle.exp: gnu: complexfunc4__FPFPFPc_s_i
+PASS: gdb.cp/demangle.exp: gnu: complexfunc5__FPFPc_PFl_i
+PASS: gdb.cp/demangle.exp: gnu: complexfunc6__FPFPi_PFl_i
+PASS: gdb.cp/demangle.exp: gnu: complexfunc7__FPFPFPc_i_PFl_i
+PASS: gdb.cp/demangle.exp: gnu: contains__C9BitStringRC10BitPattern
+PASS: gdb.cp/demangle.exp: gnu: contains__C9BitStringRC12BitSubStringi
+PASS: gdb.cp/demangle.exp: gnu: contains__C9BitStringRT0
+PASS: gdb.cp/demangle.exp: gnu: div__FPC6IntRepT0P6IntRep
+PASS: gdb.cp/demangle.exp: gnu: div__FPC6IntReplP6IntRep
+PASS: gdb.cp/demangle.exp: gnu: div__FRC8RationalT0R8Rational
+PASS: gdb.cp/demangle.exp: gnu: divide__FRC7IntegerT0R7IntegerT2
+PASS: gdb.cp/demangle.exp: gnu: divide__FRC7IntegerlR7IntegerRl
+PASS: gdb.cp/demangle.exp: gnu: enable__14DocumentViewerPCcUi
+PASS: gdb.cp/demangle.exp: gnu: foo__FiN30
+PASS: gdb.cp/demangle.exp: gnu: foo__FiR3fooiT1iT1
+PASS: gdb.cp/demangle.exp: gnu: foo___3barl
+PASS: gdb.cp/demangle.exp: gnu: insert__15ivClippingStacklRP8_XRegion
+PASS: gdb.cp/demangle.exp: gnu: insert__16ChooserInfo_ListlR11ChooserInfo
+PASS: gdb.cp/demangle.exp: gnu: insert__17FontFamilyRepListlRP15ivFontFamilyRep
+PASS: gdb.cp/demangle.exp: gnu: leaveok__FP7_win_stc
+PASS: gdb.cp/demangle.exp: gnu: left_mover__C7ivMFKitP12ivAdjustableP7ivStyle
+PASS: gdb.cp/demangle.exp: gnu: matches__C9BitStringRC10BitPatterni
+PASS: gdb.cp/demangle.exp: gnu: matches__C9SubStringRC5Regex
+PASS: gdb.cp/demangle.exp: gnu: overload1arg__FSc
+PASS: gdb.cp/demangle.exp: gnu: overload1arg__FUc
+PASS: gdb.cp/demangle.exp: gnu: overload1arg__FUi
+PASS: gdb.cp/demangle.exp: gnu: overload1arg__FUl
+PASS: gdb.cp/demangle.exp: gnu: overload1arg__FUs
+PASS: gdb.cp/demangle.exp: gnu: overload1arg__Fc
+PASS: gdb.cp/demangle.exp: gnu: overload1arg__Fd
+PASS: gdb.cp/demangle.exp: gnu: overload1arg__Ff
+PASS: gdb.cp/demangle.exp: gnu: overload1arg__Fi
+PASS: gdb.cp/demangle.exp: gnu: overload1arg__Fl
+PASS: gdb.cp/demangle.exp: gnu: overload1arg__Fs
+PASS: gdb.cp/demangle.exp: gnu: overload1arg__Fv
+PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fi
+PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fii
+PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiii
+PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiii
+PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiii
+PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiiii
+PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiiiii
+PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiiiiii
+PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiiiiiii
+PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiiiiiiii
+PASS: gdb.cp/demangle.exp: gnu: overloadargs__Fiiiiiiiiiii
+PASS: gdb.cp/demangle.exp: gnu: pick__13ivCompositionP8ivCanvasRC12ivAllocationiR5ivHit
+PASS: gdb.cp/demangle.exp: gnu: pointer__C11ivHScrollerRC7ivEventRC12ivAllocation
+PASS: gdb.cp/demangle.exp: gnu: poke__8ivRasterUlUlffff
+PASS: gdb.cp/demangle.exp: gnu: polar__Fdd
+PASS: gdb.cp/demangle.exp: gnu: read__10osStdInputRPCc
+PASS: gdb.cp/demangle.exp: gnu: scale__13ivTransformerff
+PASS: gdb.cp/demangle.exp: gnu: scanw__12CursesWindowPCce
+PASS: gdb.cp/demangle.exp: gnu: scmp__FPCcT0
+PASS: gdb.cp/demangle.exp: gnu: sgetn__7filebufPci
+PASS: gdb.cp/demangle.exp: gnu: shift__FP5_FrepiT0
+PASS: gdb.cp/demangle.exp: gnu: test__C6BitSeti
+PASS: gdb.cp/demangle.exp: gnu: test__C6BitSetii
+PASS: gdb.cp/demangle.exp: gnu: testbit__FRC7Integerl
+PASS: gdb.cp/demangle.exp: gnu: text_source__8Documentl
+PASS: gdb.cp/demangle.exp: gnu: variance__6Erlangd
+PASS: gdb.cp/demangle.exp: gnu: vform__8iostreamPCcPc
+PASS: gdb.cp/demangle.exp: gnu: view__14DocumentViewerP8ItemViewP11TabularItem
+PASS: gdb.cp/demangle.exp: gnu: xy_extents__11ivExtensionffff
+PASS: gdb.cp/demangle.exp: gnu: zero__8osMemoryPvUi
+PASS: gdb.cp/demangle.exp: gnu: _2T4$N
+PASS: gdb.cp/demangle.exp: gnu: _Q22T42t1$N
+PASS: gdb.cp/demangle.exp: gnu: get__2T1
+PASS: gdb.cp/demangle.exp: gnu: get__Q22T11a
+PASS: gdb.cp/demangle.exp: gnu: get__Q32T11a1b
+PASS: gdb.cp/demangle.exp: gnu: get__Q42T11a1b1c
+PASS: gdb.cp/demangle.exp: gnu: get__Q52T11a1b1c1d
+PASS: gdb.cp/demangle.exp: gnu: put__2T1i
+PASS: gdb.cp/demangle.exp: gnu: put__Q22T11ai
+PASS: gdb.cp/demangle.exp: gnu: put__Q32T11a1bi
+PASS: gdb.cp/demangle.exp: gnu: put__Q42T11a1b1ci
+PASS: gdb.cp/demangle.exp: gnu: put__Q52T11a1b1c1di
+PASS: gdb.cp/demangle.exp: gnu: bar__3fooPv
+PASS: gdb.cp/demangle.exp: gnu: bar__3fooPCv
+PASS: gdb.cp/demangle.exp: gnu: bar__C3fooPv
+PASS: gdb.cp/demangle.exp: gnu: bar__C3fooPCv
+PASS: gdb.cp/demangle.exp: gnu: __eq__3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: __eq__3fooRC3foo
+PASS: gdb.cp/demangle.exp: gnu: __eq__C3fooR3foo
+PASS: gdb.cp/demangle.exp: gnu: __eq__C3fooRT0
+PASS: gdb.cp/demangle.exp: gnu: elem__t6vector1Zdi
+PASS: gdb.cp/demangle.exp: gnu: elem__t6vector1Zii
+PASS: gdb.cp/demangle.exp: gnu: __t6vector1Zdi
+PASS: gdb.cp/demangle.exp: gnu: __t6vector1Zii
+PASS: gdb.cp/demangle.exp: gnu: _$_t6vector1Zdi
+PASS: gdb.cp/demangle.exp: gnu: _$_t6vector1Zii
+PASS: gdb.cp/demangle.exp: gnu: __nw__t2T11ZcUi
+PASS: gdb.cp/demangle.exp: gnu: __nw__t2T11Z1tUi
+PASS: gdb.cp/demangle.exp: gnu: __dl__t2T11ZcPv
+PASS: gdb.cp/demangle.exp: gnu: __dl__t2T11Z1tPv
+PASS: gdb.cp/demangle.exp: gnu: __t2T11Zci
+PASS: gdb.cp/demangle.exp: gnu: __t2T11Zc
+PASS: gdb.cp/demangle.exp: gnu: __t2T11Z1ti
+PASS: gdb.cp/demangle.exp: gnu: __t2T11Z1t
+PASS: gdb.cp/demangle.exp: gnu: __Q2t4List1Z10VHDLEntity3Pix
+PASS: gdb.cp/demangle.exp: gnu: __Q2t4List1Z10VHDLEntity3PixPQ2t4List1Z10VHDLEntity7element
+PASS: gdb.cp/demangle.exp: gnu: __Q2t4List1Z10VHDLEntity3PixRCQ2t4List1Z10VHDLEntity3Pix
+PASS: gdb.cp/demangle.exp: gnu: __Q2t4List1Z10VHDLEntity7elementRC10VHDLEntityPT0
+PASS: gdb.cp/demangle.exp: gnu: __Q2t4List1Z10VHDLEntity7elementRCQ2t4List1Z10VHDLEntity7element
+PASS: gdb.cp/demangle.exp: gnu: __cl__C11VHDLLibraryGt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity
+PASS: gdb.cp/demangle.exp: gnu: __cl__Ct4List1Z10VHDLEntityRCQ2t4List1Z10VHDLEntity3Pix
+PASS: gdb.cp/demangle.exp: gnu: __ne__FPvRCQ2t4List1Z10VHDLEntity3Pix
+PASS: gdb.cp/demangle.exp: gnu: __ne__FPvRCt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity
+PASS: gdb.cp/demangle.exp: gnu: __t4List1Z10VHDLEntityRCt4List1Z10VHDLEntity
+PASS: gdb.cp/demangle.exp: gnu: __t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity
+PASS: gdb.cp/demangle.exp: gnu: __t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntityP14VHDLLibraryRepGQ2t4List1Z10VHDLEntity3Pix
+PASS: gdb.cp/demangle.exp: gnu: __t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntityRCt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity
+PASS: gdb.cp/demangle.exp: gnu: nextE__C11VHDLLibraryRt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity
+PASS: gdb.cp/demangle.exp: gnu: next__Ct4List1Z10VHDLEntityRQ2t4List1Z10VHDLEntity3Pix
+PASS: gdb.cp/demangle.exp: gnu: _GLOBAL_$D$set
+PASS: gdb.cp/demangle.exp: gnu: _GLOBAL_$I$set
+PASS: gdb.cp/demangle.exp: gnu: __as__t5ListS1ZUiRCt5ListS1ZUi
+PASS: gdb.cp/demangle.exp: gnu: __cl__Ct5ListS1ZUiRCQ2t5ListS1ZUi3Vix
+PASS: gdb.cp/demangle.exp: gnu: __cl__Ct5SetLS1ZUiRCQ2t5SetLS1ZUi3Vix
+PASS: gdb.cp/demangle.exp: gnu: __t10ListS_link1ZUiRCUiPT0
+PASS: gdb.cp/demangle.exp: gnu: __t10ListS_link1ZUiRCt10ListS_link1ZUi
+PASS: gdb.cp/demangle.exp: gnu: __t5ListS1ZUiRCt5ListS1ZUi
+PASS: gdb.cp/demangle.exp: gnu: next__Ct5ListS1ZUiRQ2t5ListS1ZUi3Vix
+PASS: gdb.cp/demangle.exp: gnu: __ne__FPvRCQ2t5SetLS1ZUi3Vix
+PASS: gdb.cp/demangle.exp: gnu: __t8ListElem1Z5LabelRt4List1Z5Label
+PASS: gdb.cp/demangle.exp: gnu: __t8BDDHookV1ZPcRCPc
+PASS: gdb.cp/demangle.exp: gnu: _vt$t8BDDHookV1ZPc
+PASS: gdb.cp/demangle.exp: gnu: __ne__FPvRCQ211BDDFunction4VixB
+PASS: gdb.cp/demangle.exp: gnu: __eq__FPvRCQ211BDDFunction4VixB
+PASS: gdb.cp/demangle.exp: gnu: relativeId__CQ36T_phi210T_preserve8FPC_nextRCQ26T_phi210T_preserveRC10Parameters
+PASS: gdb.cp/demangle.exp: gnu: _Utf390_1__1_9223372036854775807__9223372036854775
+PASS: gdb.cp/demangle.exp: gnu: foo__I40
+PASS: gdb.cp/demangle.exp: gnu: foo__I_200_
+PASS: gdb.cp/demangle.exp: gnu: foo__I_200
+PASS: gdb.cp/demangle.exp: gnu: foo__I_4000000000000000000000000000000000000000000000000000000000000000000000000
+PASS: gdb.cp/demangle.exp: gnu: __thunk_64__0RL__list__Q29CosNaming20_proxy_NamingContextUlRPt25_CORBA_Unbounded_Sequence1ZQ29CosNaming7BindingRPQ29CosNaming15BindingIterator
+PASS: gdb.cp/demangle.exp: arm: set demangle-style
+PASS: gdb.cp/demangle.exp: arm: check demangling style
+PASS: gdb.cp/demangle.exp: arm: __dt__21T5__pt__11_PFiPPdPv_iFv
+PASS: gdb.cp/demangle.exp: arm: __ct__1cFi
+PASS: gdb.cp/demangle.exp: arm: __dt__11T5__pt__2_iFv
+PASS: gdb.cp/demangle.exp: arm: __dt__11T5__pt__2_cFv
+PASS: gdb.cp/demangle.exp: arm: __ct__2T2Fi
+PASS: gdb.cp/demangle.exp: arm: __dt__2T1Fv
+PASS: gdb.cp/demangle.exp: arm: __dt__12T5__pt__3_1xFv
+PASS: gdb.cp/demangle.exp: arm: __dt__17T5__pt__8_PFcPv_iFv
+PASS: gdb.cp/demangle.exp: arm: g__FP1cPC1cT1
+PASS: gdb.cp/demangle.exp: arm: g__FPUlPCUlT1
+PASS: gdb.cp/demangle.exp: arm: g__FPUiPCUiT1
+PASS: gdb.cp/demangle.exp: arm: g__FPUsPCUsT1
+PASS: gdb.cp/demangle.exp: arm: g__FPUcPCUcT1
+PASS: gdb.cp/demangle.exp: arm: g__F1TPlPClT2
+PASS: gdb.cp/demangle.exp: arm: g__F1RRlRClT2
+PASS: gdb.cp/demangle.exp: arm: g__F1TPiPCiT2
+PASS: gdb.cp/demangle.exp: arm: g__F1RRiRCiT2
+PASS: gdb.cp/demangle.exp: arm: g__F1TPsPCsT2
+PASS: gdb.cp/demangle.exp: arm: g__F1RRsRCsT2
+PASS: gdb.cp/demangle.exp: arm: g__F1TPcPCcT2
+PASS: gdb.cp/demangle.exp: arm: g__F1RRcRCcT2
+PASS: gdb.cp/demangle.exp: arm: __ct__21T5__pt__11_PFiPPdPv_iFi
+PASS: gdb.cp/demangle.exp: arm: __gt__FRC2T2c
+PASS: gdb.cp/demangle.exp: arm: __ge__FRC2T2c
+PASS: gdb.cp/demangle.exp: arm: __lt__FRC2T2c
+PASS: gdb.cp/demangle.exp: arm: __le__FRC2T2c
+PASS: gdb.cp/demangle.exp: arm: __ne__FRC2T2c
+PASS: gdb.cp/demangle.exp: arm: __eq__FRC2T2c
+PASS: gdb.cp/demangle.exp: arm: __amd__FR2T2i
+PASS: gdb.cp/demangle.exp: arm: __adv__FR2T2i
+PASS: gdb.cp/demangle.exp: arm: __amu__FR2T2i
+PASS: gdb.cp/demangle.exp: arm: __ami__FR2T2i
+PASS: gdb.cp/demangle.exp: arm: __apl__FR2T2i
+PASS: gdb.cp/demangle.exp: arm: __nw__2T1SFUi
+PASS: gdb.cp/demangle.exp: arm: __dl__2T1SFPv
+PASS: gdb.cp/demangle.exp: arm: put__2T7SFi
+PASS: gdb.cp/demangle.exp: arm: __dl__12T5__pt__3_1xSFPv
+PASS: gdb.cp/demangle.exp: arm: h__FUc
+PASS: gdb.cp/demangle.exp: arm: f__Fic
+PASS: gdb.cp/demangle.exp: arm: h__FUi
+PASS: gdb.cp/demangle.exp: arm: h__Fci
+PASS: gdb.cp/demangle.exp: arm: h__FUl
+PASS: gdb.cp/demangle.exp: arm: h__Fcl
+PASS: gdb.cp/demangle.exp: arm: h__FUs
+PASS: gdb.cp/demangle.exp: arm: h__Fcs
+PASS: gdb.cp/demangle.exp: arm: __amd__FR2T2RC2T2
+PASS: gdb.cp/demangle.exp: arm: __adv__FR2T2RC2T2
+PASS: gdb.cp/demangle.exp: arm: __amu__FR2T2RC2T2
+PASS: gdb.cp/demangle.exp: arm: __ami__FR2T2RC2T2
+PASS: gdb.cp/demangle.exp: arm: __apl__FR2T2RC2T2
+PASS: gdb.cp/demangle.exp: arm: g__F1SRPUlRPCUlT2
+PASS: gdb.cp/demangle.exp: arm: g__F1SRPUiRPCUiT2
+PASS: gdb.cp/demangle.exp: arm: g__F1SRPUsRPCUsT2
+PASS: gdb.cp/demangle.exp: arm: g__F1SRPUcRPCUcT2
+PASS: gdb.cp/demangle.exp: arm: g__F1T1SRPlRPClT3
+PASS: gdb.cp/demangle.exp: arm: g__F1T1SRPiRPCiT3
+PASS: gdb.cp/demangle.exp: arm: g__F1T1SRPcRPCcT3
+PASS: gdb.cp/demangle.exp: arm: X__12T5__pt__3_1x
+PASS: gdb.cp/demangle.exp: arm: __ct__11T5__pt__2_iFi
+PASS: gdb.cp/demangle.exp: arm: __ct__11T5__pt__2_cFi
+PASS: gdb.cp/demangle.exp: arm: __gt__FRC2T2T1
+PASS: gdb.cp/demangle.exp: arm: __ge__FRC2T2T1
+PASS: gdb.cp/demangle.exp: arm: __lt__FRC2T2T1
+PASS: gdb.cp/demangle.exp: arm: __le__FRC2T2T1
+PASS: gdb.cp/demangle.exp: arm: __ne__FRC2T2T1
+PASS: gdb.cp/demangle.exp: arm: __eq__FRC2T2T1
+PASS: gdb.cp/demangle.exp: arm: g__FcR1cRC1cT2
+PASS: gdb.cp/demangle.exp: arm: g__FcRPdRPCdT2
+PASS: gdb.cp/demangle.exp: arm: g__FcRPfRPCfT2
+PASS: gdb.cp/demangle.exp: arm: h__FcT1
+PASS: gdb.cp/demangle.exp: arm: f__Ficd
+PASS: gdb.cp/demangle.exp: arm: g__F1T1SdRPsRPCsT4
+PASS: gdb.cp/demangle.exp: arm: g__F1cC1cT1
+PASS: gdb.cp/demangle.exp: arm: g__FPdPCdT1
+PASS: gdb.cp/demangle.exp: arm: g__FPfPCfT1
+PASS: gdb.cp/demangle.exp: arm: g__FUlCUlT1
+PASS: gdb.cp/demangle.exp: arm: g__FPlPClT1
+PASS: gdb.cp/demangle.exp: arm: g__FUiCUiT1
+PASS: gdb.cp/demangle.exp: arm: g__FPiPCiT1
+PASS: gdb.cp/demangle.exp: arm: g__FUsCUsT1
+PASS: gdb.cp/demangle.exp: arm: g__FPsPCsT1
+PASS: gdb.cp/demangle.exp: arm: g__FUcCUcT1
+PASS: gdb.cp/demangle.exp: arm: g__FPcPCcT1
+PASS: gdb.cp/demangle.exp: arm: g__F1TlClT2
+PASS: gdb.cp/demangle.exp: arm: g__F1TiCiT2
+PASS: gdb.cp/demangle.exp: arm: g__F1TsCsT2
+PASS: gdb.cp/demangle.exp: arm: g__F1TcCcT2
+PASS: gdb.cp/demangle.exp: arm: __dl__17T5__pt__8_PFcPv_iSFPv
+PASS: gdb.cp/demangle.exp: arm: printf__FPCce
+PASS: gdb.cp/demangle.exp: arm: X__17T5__pt__8_PFcPv_i
+PASS: gdb.cp/demangle.exp: arm: __ct__12T5__pt__3_1xFi
+PASS: gdb.cp/demangle.exp: arm: g__F1SRUlRCUlT2
+PASS: gdb.cp/demangle.exp: arm: g__F1SRPlRPClT2
+PASS: gdb.cp/demangle.exp: arm: g__F1RRUiRCUiT2
+PASS: gdb.cp/demangle.exp: arm: g__F1SRPiRPCiT2
+PASS: gdb.cp/demangle.exp: arm: g__F1RRUsRCUsT2
+PASS: gdb.cp/demangle.exp: arm: g__F1SRPsRPCsT2
+PASS: gdb.cp/demangle.exp: arm: g__F1RRUcRCUcT2
+PASS: gdb.cp/demangle.exp: arm: g__F1SRPcRPCcT2
+PASS: gdb.cp/demangle.exp: arm: g__F1T1RRlRClT3
+PASS: gdb.cp/demangle.exp: arm: g__F1T1RRiRCiT3
+PASS: gdb.cp/demangle.exp: arm: g__F1T1RRsRCsT3
+PASS: gdb.cp/demangle.exp: arm: g__F1T1RRcRCcT3
+PASS: gdb.cp/demangle.exp: arm: __dl__21T5__pt__11_PFiPPdPv_iSFPv
+PASS: gdb.cp/demangle.exp: arm: __std__foo
+PASS: gdb.cp/demangle.exp: arm: __sti__bar
+PASS: gdb.cp/demangle.exp: arm: f__FicdPcPFci_v
+PASS: gdb.cp/demangle.exp: arm: f__FicdPcPFic_v
+PASS: gdb.cp/demangle.exp: arm: get__2T7SFv
+PASS: gdb.cp/demangle.exp: arm: X__21T5__pt__11_PFiPPdPv_i
+PASS: gdb.cp/demangle.exp: arm: g__FcRdRCdT2
+PASS: gdb.cp/demangle.exp: arm: g__FcRfRCfT2
+PASS: gdb.cp/demangle.exp: arm: __md__FC2T2i
+PASS: gdb.cp/demangle.exp: arm: __dv__FC2T2i
+PASS: gdb.cp/demangle.exp: arm: __ml__FC2T2i
+PASS: gdb.cp/demangle.exp: arm: __mi__FC2T2i
+PASS: gdb.cp/demangle.exp: arm: __pl__FC2T2i
+PASS: gdb.cp/demangle.exp: arm: __dl__11T5__pt__2_iSFPv
+PASS: gdb.cp/demangle.exp: arm: __dl__11T5__pt__2_cSFPv
+PASS: gdb.cp/demangle.exp: arm: h__Fc
+PASS: gdb.cp/demangle.exp: arm: h__Fd
+PASS: gdb.cp/demangle.exp: arm: h__Ff
+PASS: gdb.cp/demangle.exp: arm: h__Fi
+PASS: gdb.cp/demangle.exp: arm: f__Fi
+PASS: gdb.cp/demangle.exp: arm: h__Fl
+PASS: gdb.cp/demangle.exp: arm: h__Fs
+PASS: gdb.cp/demangle.exp: arm: __md__FC2T2RC2T2
+PASS: gdb.cp/demangle.exp: arm: __dv__FC2T2RC2T2
+PASS: gdb.cp/demangle.exp: arm: __ml__FC2T2RC2T2
+PASS: gdb.cp/demangle.exp: arm: __mi__FC2T2RC2T2
+PASS: gdb.cp/demangle.exp: arm: __pl__FC2T2RC2T2
+PASS: gdb.cp/demangle.exp: arm: g__FcRP1cRPC1cT2
+PASS: gdb.cp/demangle.exp: arm: X__11T5__pt__2_c
+PASS: gdb.cp/demangle.exp: arm: X__11T5__pt__2_i
+PASS: gdb.cp/demangle.exp: arm: g__FdCdT1
+PASS: gdb.cp/demangle.exp: arm: g__FfCfT1
+PASS: gdb.cp/demangle.exp: arm: g__FlClT1
+PASS: gdb.cp/demangle.exp: arm: g__FiCiT1
+PASS: gdb.cp/demangle.exp: arm: g__FsCsT1
+PASS: gdb.cp/demangle.exp: arm: g__FcCcT1
+PASS: gdb.cp/demangle.exp: arm: __ct__17T5__pt__8_PFcPv_iFi
+PASS: gdb.cp/demangle.exp: arm: f__FicdPc
+PASS: gdb.cp/demangle.exp: arm: __nw__FUi
+PASS: gdb.cp/demangle.exp: arm: __ct__Q3_2T11a1bSFi
+PASS: gdb.cp/demangle.exp: arm: __dt__Q3_2T11a1bSFi
+PASS: gdb.cp/demangle.exp: arm: put__Q3_2T11a1bSFi
+PASS: gdb.cp/demangle.exp: arm: get__Q2_2T11aSFv
+PASS: gdb.cp/demangle.exp: arm: put__2T1SFi
+PASS: gdb.cp/demangle.exp: arm: put__Q5_2T11a1b1c1dSFi
+PASS: gdb.cp/demangle.exp: arm: get__Q4_2T11a1b1cSFv
+PASS: gdb.cp/demangle.exp: arm: put__Q2_2T11aSFi
+PASS: gdb.cp/demangle.exp: arm: put__Q4_2T11a1b1cSFi
+PASS: gdb.cp/demangle.exp: arm: get__Q3_2T11a1bSFv
+PASS: gdb.cp/demangle.exp: arm: get__2T1SFv
+PASS: gdb.cp/demangle.exp: arm: get__Q5_2T11a1b1c1dSFv
+PASS: gdb.cp/demangle.exp: arm: __dt__11T1__pt__2_cFv
+PASS: gdb.cp/demangle.exp: arm: __dt__12T1__pt__3_1tFv
+PASS: gdb.cp/demangle.exp: arm: __dl__12T1__pt__3_1tSFPv
+PASS: gdb.cp/demangle.exp: arm: __ct__11T1__pt__2_cFi
+PASS: gdb.cp/demangle.exp: arm: __ct__11T1__pt__2_cFv
+PASS: gdb.cp/demangle.exp: arm: __ct__12T1__pt__3_1tFi
+PASS: gdb.cp/demangle.exp: arm: __ct__12T1__pt__3_1tFv
+PASS: gdb.cp/demangle.exp: arm: __dl__11T1__pt__2_cSFPv
+PASS: gdb.cp/demangle.exp: arm: bar__3fooFPv
+PASS: gdb.cp/demangle.exp: arm: bar__3fooFPCv
+PASS: gdb.cp/demangle.exp: arm: bar__3fooCFPv
+PASS: gdb.cp/demangle.exp: arm: bar__3fooCFPCv
+PASS: gdb.cp/demangle.exp: arm: __eq__3fooFR3foo
+PASS: gdb.cp/demangle.exp: arm: __eq__3fooFRC3foo
+PASS: gdb.cp/demangle.exp: arm: __eq__3fooCFR3foo
+PASS: gdb.cp/demangle.exp: arm: __eq__3fooCFRC3foo
+PASS: gdb.cp/demangle.exp: arm: elem__15vector__pt__2_dFi
+PASS: gdb.cp/demangle.exp: arm: elem__15vector__pt__2_iFi
+PASS: gdb.cp/demangle.exp: arm: __ct__15vector__pt__2_dFi
+PASS: gdb.cp/demangle.exp: arm: __ct__15vector__pt__2_iFi
+PASS: gdb.cp/demangle.exp: arm: __ct__25DListNode__pt__9_R6RLabelFR6RLabelP25DListNode__pt__9_R6RLabelT2
+PASS: gdb.cp/demangle.exp: arm: bar__3fooFiT16FooBar
+PASS: gdb.cp/demangle.exp: arm: bar__3fooFPiN51PdN37PcN211T1iN215
+PASS: gdb.cp/demangle.exp: arm: _Utf390_1__1_9223372036854775807__9223372036854775
+PASS: gdb.cp/demangle.exp: hp: set demangle-style
+PASS: gdb.cp/demangle.exp: hp: check demangling style
+PASS: gdb.cp/demangle.exp: hp: g__FP1cPC1cT1
+PASS: gdb.cp/demangle.exp: hp: g__FPUlPCUlT1
+PASS: gdb.cp/demangle.exp: hp: g__FPUiPCUiT1
+PASS: gdb.cp/demangle.exp: hp: g__FPUsPCUsT1
+PASS: gdb.cp/demangle.exp: hp: g__FPUcPCUcT1
+PASS: gdb.cp/demangle.exp: hp: g__F1TPlPClT2
+PASS: gdb.cp/demangle.exp: hp: g__F1RRlRClT2
+PASS: gdb.cp/demangle.exp: hp: g__F1TPiPCiT2
+PASS: gdb.cp/demangle.exp: hp: g__F1RRiRCiT2
+PASS: gdb.cp/demangle.exp: hp: g__F1TPsPCsT2
+PASS: gdb.cp/demangle.exp: hp: g__F1RRsRCsT2
+PASS: gdb.cp/demangle.exp: hp: g__F1TPcPCcT2
+PASS: gdb.cp/demangle.exp: hp: g__F1RRcRCcT2
+PASS: gdb.cp/demangle.exp: hp: __gt__FRC2T2c
+PASS: gdb.cp/demangle.exp: hp: __ge__FRC2T2c
+PASS: gdb.cp/demangle.exp: hp: __lt__FRC2T2c
+PASS: gdb.cp/demangle.exp: hp: __le__FRC2T2c
+PASS: gdb.cp/demangle.exp: hp: __ne__FRC2T2c
+PASS: gdb.cp/demangle.exp: hp: __eq__FRC2T2c
+PASS: gdb.cp/demangle.exp: hp: __amd__FR2T2i
+PASS: gdb.cp/demangle.exp: hp: __adv__FR2T2i
+PASS: gdb.cp/demangle.exp: hp: __amu__FR2T2i
+PASS: gdb.cp/demangle.exp: hp: __ami__FR2T2i
+PASS: gdb.cp/demangle.exp: hp: __apl__FR2T2i
+PASS: gdb.cp/demangle.exp: hp: __nw__2T1SFUi
+PASS: gdb.cp/demangle.exp: hp: __dl__2T1SFPv
+PASS: gdb.cp/demangle.exp: hp: put__2T7SFi
+PASS: gdb.cp/demangle.exp: hp: h__FUc
+PASS: gdb.cp/demangle.exp: hp: f__Fic
+PASS: gdb.cp/demangle.exp: hp: h__FUi
+PASS: gdb.cp/demangle.exp: hp: h__Fci
+PASS: gdb.cp/demangle.exp: hp: h__FUl
+PASS: gdb.cp/demangle.exp: hp: h__Fcl
+PASS: gdb.cp/demangle.exp: hp: h__FUs
+PASS: gdb.cp/demangle.exp: hp: h__Fcs
+PASS: gdb.cp/demangle.exp: hp: __amd__FR2T2RC2T2
+PASS: gdb.cp/demangle.exp: hp: __adv__FR2T2RC2T2
+PASS: gdb.cp/demangle.exp: hp: __amu__FR2T2RC2T2
+PASS: gdb.cp/demangle.exp: hp: __ami__FR2T2RC2T2
+PASS: gdb.cp/demangle.exp: hp: __apl__FR2T2RC2T2
+PASS: gdb.cp/demangle.exp: hp: g__F1SRPUlRPCUlT2
+PASS: gdb.cp/demangle.exp: hp: g__F1SRPUiRPCUiT2
+PASS: gdb.cp/demangle.exp: hp: g__F1SRPUsRPCUsT2
+PASS: gdb.cp/demangle.exp: hp: g__F1SRPUcRPCUcT2
+PASS: gdb.cp/demangle.exp: hp: g__F1T1SRPlRPClT3
+PASS: gdb.cp/demangle.exp: hp: g__F1T1SRPiRPCiT3
+PASS: gdb.cp/demangle.exp: hp: g__F1T1SRPcRPCcT3
+PASS: gdb.cp/demangle.exp: hp: __gt__FRC2T2T1
+PASS: gdb.cp/demangle.exp: hp: __ge__FRC2T2T1
+PASS: gdb.cp/demangle.exp: hp: __lt__FRC2T2T1
+PASS: gdb.cp/demangle.exp: hp: __le__FRC2T2T1
+PASS: gdb.cp/demangle.exp: hp: __ne__FRC2T2T1
+PASS: gdb.cp/demangle.exp: hp: __eq__FRC2T2T1
+PASS: gdb.cp/demangle.exp: hp: g__FcR1cRC1cT2
+PASS: gdb.cp/demangle.exp: hp: g__FcRPdRPCdT2
+PASS: gdb.cp/demangle.exp: hp: g__FcRPfRPCfT2
+PASS: gdb.cp/demangle.exp: hp: h__FcT1
+PASS: gdb.cp/demangle.exp: hp: f__Ficd
+PASS: gdb.cp/demangle.exp: hp: g__F1T1SdRPsRPCsT4
+PASS: gdb.cp/demangle.exp: hp: g__F1cC1cT1
+PASS: gdb.cp/demangle.exp: hp: g__FPdPCdT1
+PASS: gdb.cp/demangle.exp: hp: g__FPfPCfT1
+PASS: gdb.cp/demangle.exp: hp: g__FUlCUlT1
+PASS: gdb.cp/demangle.exp: hp: g__FPlPClT1
+PASS: gdb.cp/demangle.exp: hp: g__FUiCUiT1
+PASS: gdb.cp/demangle.exp: hp: g__FPiPCiT1
+PASS: gdb.cp/demangle.exp: hp: g__FUsCUsT1
+PASS: gdb.cp/demangle.exp: hp: g__FPsPCsT1
+PASS: gdb.cp/demangle.exp: hp: g__FUcCUcT1
+PASS: gdb.cp/demangle.exp: hp: g__FPcPCcT1
+PASS: gdb.cp/demangle.exp: hp: g__F1TlClT2
+PASS: gdb.cp/demangle.exp: hp: g__F1TiCiT2
+PASS: gdb.cp/demangle.exp: hp: g__F1TsCsT2
+PASS: gdb.cp/demangle.exp: hp: g__F1TcCcT2
+PASS: gdb.cp/demangle.exp: hp: printf__FPCce
+PASS: gdb.cp/demangle.exp: hp: g__F1SRUlRCUlT2
+PASS: gdb.cp/demangle.exp: hp: g__F1SRPlRPClT2
+PASS: gdb.cp/demangle.exp: hp: g__F1RRUiRCUiT2
+PASS: gdb.cp/demangle.exp: hp: g__F1SRPiRPCiT2
+PASS: gdb.cp/demangle.exp: hp: g__F1RRUsRCUsT2
+PASS: gdb.cp/demangle.exp: hp: g__F1SRPsRPCsT2
+PASS: gdb.cp/demangle.exp: hp: g__F1RRUcRCUcT2
+PASS: gdb.cp/demangle.exp: hp: g__F1SRPcRPCcT2
+PASS: gdb.cp/demangle.exp: hp: g__F1T1RRlRClT3
+PASS: gdb.cp/demangle.exp: hp: g__F1T1RRiRCiT3
+PASS: gdb.cp/demangle.exp: hp: g__F1T1RRsRCsT3
+PASS: gdb.cp/demangle.exp: hp: g__F1T1RRcRCcT3
+PASS: gdb.cp/demangle.exp: hp: f__FicdPcPFci_v
+PASS: gdb.cp/demangle.exp: hp: f__FicdPcPFic_v
+PASS: gdb.cp/demangle.exp: hp: get__2T7SFv
+PASS: gdb.cp/demangle.exp: hp: g__FcRdRCdT2
+PASS: gdb.cp/demangle.exp: hp: g__FcRfRCfT2
+PASS: gdb.cp/demangle.exp: hp: __md__FC2T2i
+PASS: gdb.cp/demangle.exp: hp: __dv__FC2T2i
+PASS: gdb.cp/demangle.exp: hp: __ml__FC2T2i
+PASS: gdb.cp/demangle.exp: hp: __mi__FC2T2i
+PASS: gdb.cp/demangle.exp: hp: __pl__FC2T2i
+PASS: gdb.cp/demangle.exp: hp: h__Fc
+PASS: gdb.cp/demangle.exp: hp: h__Fd
+PASS: gdb.cp/demangle.exp: hp: h__Ff
+PASS: gdb.cp/demangle.exp: hp: h__Fi
+PASS: gdb.cp/demangle.exp: hp: f__Fi
+PASS: gdb.cp/demangle.exp: hp: h__Fl
+PASS: gdb.cp/demangle.exp: hp: h__Fs
+PASS: gdb.cp/demangle.exp: hp: __md__FC2T2RC2T2
+PASS: gdb.cp/demangle.exp: hp: __dv__FC2T2RC2T2
+PASS: gdb.cp/demangle.exp: hp: __ml__FC2T2RC2T2
+PASS: gdb.cp/demangle.exp: hp: __mi__FC2T2RC2T2
+PASS: gdb.cp/demangle.exp: hp: __pl__FC2T2RC2T2
+PASS: gdb.cp/demangle.exp: hp: g__FcRP1cRPC1cT2
+PASS: gdb.cp/demangle.exp: hp: g__FdCdT1
+PASS: gdb.cp/demangle.exp: hp: g__FfCfT1
+PASS: gdb.cp/demangle.exp: hp: g__FlClT1
+PASS: gdb.cp/demangle.exp: hp: g__FiCiT1
+PASS: gdb.cp/demangle.exp: hp: g__FsCsT1
+PASS: gdb.cp/demangle.exp: hp: g__FcCcT1
+PASS: gdb.cp/demangle.exp: hp: f__FicdPc
+PASS: gdb.cp/demangle.exp: hp: __nw__FUi
+PASS: gdb.cp/demangle.exp: hp: __ct__Q3_2T11a1bSFi
+PASS: gdb.cp/demangle.exp: hp: __dt__Q3_2T11a1bSFi
+PASS: gdb.cp/demangle.exp: hp: put__Q3_2T11a1bSFi
+PASS: gdb.cp/demangle.exp: hp: get__Q2_2T11aSFv
+PASS: gdb.cp/demangle.exp: hp: put__2T1SFi
+PASS: gdb.cp/demangle.exp: hp: put__Q5_2T11a1b1c1dSFi
+PASS: gdb.cp/demangle.exp: hp: get__Q4_2T11a1b1cSFv
+PASS: gdb.cp/demangle.exp: hp: put__Q2_2T11aSFi
+PASS: gdb.cp/demangle.exp: hp: put__Q4_2T11a1b1cSFi
+PASS: gdb.cp/demangle.exp: hp: get__Q3_2T11a1bSFv
+PASS: gdb.cp/demangle.exp: hp: get__2T1SFv
+PASS: gdb.cp/demangle.exp: hp: get__Q5_2T11a1b1c1dSFv
+PASS: gdb.cp/demangle.exp: hp: bar__3fooFPv
+PASS: gdb.cp/demangle.exp: hp: bar__3fooFPCv
+PASS: gdb.cp/demangle.exp: hp: bar__3fooCFPv
+PASS: gdb.cp/demangle.exp: hp: bar__3fooCFPCv
+PASS: gdb.cp/demangle.exp: hp: __eq__3fooFR3foo
+PASS: gdb.cp/demangle.exp: hp: __eq__3fooFRC3foo
+PASS: gdb.cp/demangle.exp: hp: __eq__3fooCFR3foo
+PASS: gdb.cp/demangle.exp: hp: __eq__3fooCFRC3foo
+PASS: gdb.cp/demangle.exp: hp: bar__3fooFiT16FooBar
+PASS: gdb.cp/demangle.exp: hp: bar__3fooFPiN51PdN37PcN211T1iN215
+PASS: gdb.cp/demangle.exp: hp: __dt__2T5XTPFiPPdPv_i__Fv
+PASS: gdb.cp/demangle.exp: hp: __ct__1cFi
+PASS: gdb.cp/demangle.exp: hp: __dt__2T5XTi__Fv
+PASS: gdb.cp/demangle.exp: hp: __dt__2T5XTc__Fv
+PASS: gdb.cp/demangle.exp: hp: __ct__2T2Fi
+PASS: gdb.cp/demangle.exp: hp: __dt__2T1Fv
+PASS: gdb.cp/demangle.exp: hp: __dt__2T5XT1x__Fv
+PASS: gdb.cp/demangle.exp: hp: __dt__2T5XTPFcPv_i__Fv
+PASS: gdb.cp/demangle.exp: hp: __ct__2T5XTPFiPPdPv_i__Fi
+PASS: gdb.cp/demangle.exp: hp: __dl__2T5XT1x__SFPv
+PASS: gdb.cp/demangle.exp: hp: X__2T5XT1x
+PASS: gdb.cp/demangle.exp: hp: __ct__2T5XTi__Fi
+PASS: gdb.cp/demangle.exp: hp: __ct__2T5XTc__Fi
+PASS: gdb.cp/demangle.exp: hp: __dl__2T5XTPFcPv_i__SFPv
+PASS: gdb.cp/demangle.exp: hp: X__2T5XTPFcPv_i
+PASS: gdb.cp/demangle.exp: hp: __ct__2T5XT1x__Fi
+PASS: gdb.cp/demangle.exp: hp: __dl__2T5XTPFiPPdPv_i__SFPv
+PASS: gdb.cp/demangle.exp: hp: X__2T5XTPFiPPdPv_i
+PASS: gdb.cp/demangle.exp: hp: __dl__2T5XTi__SFPv
+PASS: gdb.cp/demangle.exp: hp: __dl__2T5XTc__SFPv
+PASS: gdb.cp/demangle.exp: hp: X__2T5XTc
+PASS: gdb.cp/demangle.exp: hp: X__2T5XTi
+PASS: gdb.cp/demangle.exp: hp: __ct__2T5XTPFcPv_i__Fi
+PASS: gdb.cp/demangle.exp: hp: __dt__2T1XTc__Fv
+PASS: gdb.cp/demangle.exp: hp: __dt__2T1XT1t__Fv
+PASS: gdb.cp/demangle.exp: hp: __dl__2T1XT1t__SFPv
+PASS: gdb.cp/demangle.exp: hp: __ct__2T1XTc__Fi
+PASS: gdb.cp/demangle.exp: hp: __ct__2T1XTc__Fv
+PASS: gdb.cp/demangle.exp: hp: __ct__2T1XT1t__Fi
+PASS: gdb.cp/demangle.exp: hp: __ct__2T1XT1t__Fv
+PASS: gdb.cp/demangle.exp: hp: __dl__2T1XTc__SFPv
+PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTd__Fi
+PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTi__Fi
+PASS: gdb.cp/demangle.exp: hp: __ct__6vectorXTd__Fi
+PASS: gdb.cp/demangle.exp: hp: __ct__6vectorXTi__Fi
+PASS: gdb.cp/demangle.exp: hp: __ct__9DListNodeXTR6RLabel__FR6RLabelP9DListNodeXTR6RLabel_T2
+PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiUP34__Fi
+PASS: gdb.cp/demangle.exp: hp: elem__6vectorXUP2701Td__Fi
+PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiSP334__Fi
+PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiSN67__Fi
+PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiSM__SCFPPd
+PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiSN67UP4000TRs__Fi
+PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiSN67TRdTFPv_i__Fi
+PASS: gdb.cp/demangle.exp: hp: X__6vectorXTiSN67TdTPvUP5TRs
+PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiA3foo__Fi
+PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiA3fooTPvA5Label__FiPPvT2
+PASS: gdb.cp/demangle.exp: hp: elem__6vectorXTiSN42A3foo__Fi
+PASS: gdb.cp/demangle.exp: hp: __ct__2T5XTPFcPv_i__Fi_2
+PASS: gdb.cp/demangle.exp: hp: __ct__2T5XTPFcPv_i__Fi_19
+PASS: gdb.cp/demangle.exp: hp: f__FicdPcPFci_v_34
+PASS: gdb.cp/demangle.exp: hp: spec__13Spec<%1,%1.*>XTiTPi_FPi
+PASS: gdb.cp/demangle.exp: hp: spec__16Spec<%1,%1.&,%1>XTiTRiTi_FPi
+PASS: gdb.cp/demangle.exp: hp: add__XTc_FcT1
+PASS: gdb.cp/demangle.exp: hp: add__XTcSP9A5label_FcPPlT1
+PASS: gdb.cp/demangle.exp: hp: add__XTPfTFPd_f_FcT1
+PASS: gdb.cp/demangle.exp: hp: unLink__12basic_stringXTcT18string_char_traitsXTc_T9allocator_Fv
+PASS: gdb.cp/demangle.exp: hp: _Utf390_1__1_9223372036854775807__9223372036854775
+Running ../../../master/gdb/testsuite/gdb.cp/derivation.exp ...
+PASS: gdb.cp/derivation.exp: up from marker1
+PASS: gdb.cp/derivation.exp: print value of a_instance
+PASS: gdb.cp/derivation.exp: ptype a_instance
+PASS: gdb.cp/derivation.exp: print value of d_instance
+PASS: gdb.cp/derivation.exp: ptype d_instance
+PASS: gdb.cp/derivation.exp: print value of e_instance
+PASS: gdb.cp/derivation.exp: ptype e_instance
+PASS: gdb.cp/derivation.exp: print value of f_instance
+PASS: gdb.cp/derivation.exp: ptype f_instance
+PASS: gdb.cp/derivation.exp: print value of d_instance.a
+PASS: gdb.cp/derivation.exp: print value of d_instance.aa
+PASS: gdb.cp/derivation.exp: print value of d_instance.b
+PASS: gdb.cp/derivation.exp: print value of d_instance.bb
+PASS: gdb.cp/derivation.exp: print value of d_instance.c
+PASS: gdb.cp/derivation.exp: print value of d_instance.cc
+PASS: gdb.cp/derivation.exp: print value of d_instance.d
+PASS: gdb.cp/derivation.exp: print value of d_instance.dd
+PASS: gdb.cp/derivation.exp: print value of g_instance.a
+PASS: gdb.cp/derivation.exp: print value of g_instance.b
+PASS: gdb.cp/derivation.exp: print value of g_instance.c
+PASS: gdb.cp/derivation.exp: print value of g_instance.afoo()
+PASS: gdb.cp/derivation.exp: re-selected 'main' frame after inferior call
+PASS: gdb.cp/derivation.exp: print value of g_instance.bfoo()
+PASS: gdb.cp/derivation.exp: print value of g_instance.cfoo()
+Running ../../../master/gdb/testsuite/gdb.cp/exception.exp ...
+PASS: gdb.cp/exception.exp: catch catch (before inferior run)
+PASS: gdb.cp/exception.exp: catch throw (before inferior run)
+PASS: gdb.cp/exception.exp: info breakpoints (before inferior run)
+PASS: gdb.cp/exception.exp: Set temporary breakpoint at main
+PASS: gdb.cp/exception.exp: Run to main
+PASS: gdb.cp/exception.exp: info breakpoints (after inferior run)
+PASS: gdb.cp/exception.exp: break catcher
+PASS: gdb.cp/exception.exp: continue to first throw
+PASS: gdb.cp/exception.exp: backtrace after first throw
+PASS: gdb.cp/exception.exp: continue to first catch
+PASS: gdb.cp/exception.exp: backtrace after first catch
+PASS: gdb.cp/exception.exp: continue to catcher for the first time
+PASS: gdb.cp/exception.exp: continue to second throw
+PASS: gdb.cp/exception.exp: backtrace after second throw
+PASS: gdb.cp/exception.exp: continue to second catch
+PASS: gdb.cp/exception.exp: backtrace after second catch
+PASS: gdb.cp/exception.exp: continue to catcher for the second time
+Running ../../../master/gdb/testsuite/gdb.cp/expand-sals.exp ...
+PASS: gdb.cp/expand-sals.exp: continue to breakpoint: func
+PASS: gdb.cp/expand-sals.exp: up
+PASS: gdb.cp/expand-sals.exp: break
+PASS: gdb.cp/expand-sals.exp: continue to breakpoint: caller
+PASS: gdb.cp/expand-sals.exp: bt from A
+PASS: gdb.cp/expand-sals.exp: continue to breakpoint: next caller func
+Running ../../../master/gdb/testsuite/gdb.cp/extern-c.exp ...
+PASS: gdb.cp/extern-c.exp: setting breakpoint at c_func
+PASS: gdb.cp/extern-c.exp: continue to breakpoint: c_func
+PASS: gdb.cp/extern-c.exp: initialize counter
+PASS: gdb.cp/extern-c.exp: rbreak c_funcs
+PASS: gdb.cp/extern-c.exp: command details for multiple breakpoints
+PASS: gdb.cp/extern-c.exp: set commands on multiple breakpoints
+PASS: gdb.cp/extern-c.exp: continue to breakpoint: c_funcs_1
+PASS: gdb.cp/extern-c.exp: verify counter at first breakpoint
+PASS: gdb.cp/extern-c.exp: continue to breakpoint: c_funcs_2
+PASS: gdb.cp/extern-c.exp: verify counter at second breakpoint
+Running ../../../master/gdb/testsuite/gdb.cp/formatted-ref.exp ...
+PASS: gdb.cp/formatted-ref.exp: print/x s
+PASS: gdb.cp/formatted-ref.exp: print/x e
+PASS: gdb.cp/formatted-ref.exp: print/x i
+PASS: gdb.cp/formatted-ref.exp: print/x &s
+PASS: gdb.cp/formatted-ref.exp: print/x &e
+PASS: gdb.cp/formatted-ref.exp: print/x &i
+PASS: gdb.cp/formatted-ref.exp: print/x *(&(&s))
+PASS: gdb.cp/formatted-ref.exp: print/x *(&(&i))
+PASS: gdb.cp/formatted-ref.exp: print/x *(&(&e))
+PASS: gdb.cp/formatted-ref.exp: print s.x == 13
+Running ../../../master/gdb/testsuite/gdb.cp/fpointer.exp ...
+PASS: gdb.cp/fpointer.exp: p p1()
+PASS: gdb.cp/fpointer.exp: p p2()
+PASS: gdb.cp/fpointer.exp: p p[0]()
+PASS: gdb.cp/fpointer.exp: p p[1]()
+PASS: gdb.cp/fpointer.exp: p p3('a')
+PASS: gdb.cp/fpointer.exp: p p4(1)
+Running ../../../master/gdb/testsuite/gdb.cp/gdb1355.exp ...
+PASS: gdb.cp/gdb1355.exp: ptype s1
+PASS: gdb.cp/gdb1355.exp: print s1
+Running ../../../master/gdb/testsuite/gdb.cp/gdb2384.exp ...
+PASS: gdb.cp/gdb2384.exp: continue to breakpoint: set breakpoint here
+PASS: gdb.cp/gdb2384.exp: print d1.meth ()
+PASS: gdb.cp/gdb2384.exp: continue to breakpoint: set breakpoint here
+PASS: gdb.cp/gdb2384.exp: gdb2384
+PASS: gdb.cp/gdb2384.exp: continue to breakpoint: set breakpoint here (second)
+PASS: gdb.cp/gdb2384.exp: print d2.meth()
+PASS: gdb.cp/gdb2384.exp: continue to breakpoint: set breakpoint here (second)
+PASS: gdb.cp/gdb2384.exp: gdb2384 (second)
+Running ../../../master/gdb/testsuite/gdb.cp/gdb2495.exp ...
+PASS: gdb.cp/gdb2495.exp: p exceptions.no_throw_function()
+PASS: gdb.cp/gdb2495.exp: p exceptions.throw_function_with_handler()
+PASS: gdb.cp/gdb2495.exp: Call a function that raises an exception without a handler.
+PASS: gdb.cp/gdb2495.exp: bt after returning from a popped frame
+PASS: gdb.cp/gdb2495.exp: info breakpoints
+PASS: gdb.cp/gdb2495.exp: set unwinn-on-terminating-exception off
+PASS: gdb.cp/gdb2495.exp: Turn off unwind on terminating exception flag
+PASS: gdb.cp/gdb2495.exp: Call a function that raises an exception with unwinding off..
+PASS: gdb.cp/gdb2495.exp: set unwindonsignal on
+PASS: gdb.cp/gdb2495.exp: Turn on unwind on signal
+PASS: gdb.cp/gdb2495.exp: p exceptions.raise_signal(1)
+PASS: gdb.cp/gdb2495.exp: set unwindonsignal off
+PASS: gdb.cp/gdb2495.exp: Turn off unwind on signal
+PASS: gdb.cp/gdb2495.exp: p exceptions.raise_signal(1)
+Running ../../../master/gdb/testsuite/gdb.cp/hang.exp ...
+PASS: gdb.cp/hang.exp: doesn't overwrite struct type
+PASS: gdb.cp/hang.exp: doesn't corrupt cv_type chain
+Running ../../../master/gdb/testsuite/gdb.cp/infcall-dlopen.exp ...
+PASS: gdb.cp/infcall-dlopen.exp: test 0
+PASS: gdb.cp/infcall-dlopen.exp: test 0 stub 1
+PASS: gdb.cp/infcall-dlopen.exp: test 0 stub 2
+PASS: gdb.cp/infcall-dlopen.exp: test 1
+PASS: gdb.cp/infcall-dlopen.exp: test 1 stub 1
+PASS: gdb.cp/infcall-dlopen.exp: test 1 stub 2
+PASS: gdb.cp/infcall-dlopen.exp: test 2
+PASS: gdb.cp/infcall-dlopen.exp: test 2 stub 1
+PASS: gdb.cp/infcall-dlopen.exp: test 2 stub 2
+PASS: gdb.cp/infcall-dlopen.exp: test 3
+PASS: gdb.cp/infcall-dlopen.exp: test 3 stub 1
+PASS: gdb.cp/infcall-dlopen.exp: test 3 stub 2
+PASS: gdb.cp/infcall-dlopen.exp: test 4
+PASS: gdb.cp/infcall-dlopen.exp: test 4 stub 1
+PASS: gdb.cp/infcall-dlopen.exp: test 4 stub 2
+PASS: gdb.cp/infcall-dlopen.exp: test 5
+PASS: gdb.cp/infcall-dlopen.exp: test 5 stub 1
+PASS: gdb.cp/infcall-dlopen.exp: test 5 stub 2
+PASS: gdb.cp/infcall-dlopen.exp: test 6
+PASS: gdb.cp/infcall-dlopen.exp: test 6 stub 1
+PASS: gdb.cp/infcall-dlopen.exp: test 6 stub 2
+PASS: gdb.cp/infcall-dlopen.exp: test 7
+PASS: gdb.cp/infcall-dlopen.exp: test 7 stub 1
+PASS: gdb.cp/infcall-dlopen.exp: test 7 stub 2
+PASS: gdb.cp/infcall-dlopen.exp: test 8
+PASS: gdb.cp/infcall-dlopen.exp: test 8 stub 1
+PASS: gdb.cp/infcall-dlopen.exp: test 8 stub 2
+PASS: gdb.cp/infcall-dlopen.exp: test 9
+PASS: gdb.cp/infcall-dlopen.exp: test 9 stub 1
+PASS: gdb.cp/infcall-dlopen.exp: test 9 stub 2
+Running ../../../master/gdb/testsuite/gdb.cp/inherit.exp ...
+PASS: gdb.cp/inherit.exp: set language c++
+PASS: gdb.cp/inherit.exp: set width 0
+PASS: gdb.cp/inherit.exp: ptype A (FIXME)
+PASS: gdb.cp/inherit.exp: ptype class A (FIXME)
+PASS: gdb.cp/inherit.exp: ptype g_A (FIXME)
+PASS: gdb.cp/inherit.exp: ptype B
+PASS: gdb.cp/inherit.exp: ptype class B
+PASS: gdb.cp/inherit.exp: ptype g_B
+PASS: gdb.cp/inherit.exp: ptype C
+PASS: gdb.cp/inherit.exp: ptype class C
+PASS: gdb.cp/inherit.exp: ptype g_C
+PASS: gdb.cp/inherit.exp: ptype tagless struct
+PASS: gdb.cp/inherit.exp: ptype variable of type tagless struct
+PASS: gdb.cp/inherit.exp: ptype D
+PASS: gdb.cp/inherit.exp: ptype class D
+PASS: gdb.cp/inherit.exp: ptype g_D
+PASS: gdb.cp/inherit.exp: ptype E
+PASS: gdb.cp/inherit.exp: ptype class E
+PASS: gdb.cp/inherit.exp: ptype g_E
+PASS: gdb.cp/inherit.exp: ptype vA
+PASS: gdb.cp/inherit.exp: ptype class vA
+PASS: gdb.cp/inherit.exp: ptype g_vA
+PASS: gdb.cp/inherit.exp: ptype vB
+PASS: gdb.cp/inherit.exp: ptype class vB
+PASS: gdb.cp/inherit.exp: ptype g_vB
+PASS: gdb.cp/inherit.exp: ptype vC
+PASS: gdb.cp/inherit.exp: ptype class vC
+PASS: gdb.cp/inherit.exp: ptype g_vC
+PASS: gdb.cp/inherit.exp: ptype vD
+PASS: gdb.cp/inherit.exp: ptype class vD
+PASS: gdb.cp/inherit.exp: ptype g_vD
+PASS: gdb.cp/inherit.exp: ptype vE
+PASS: gdb.cp/inherit.exp: ptype class vE
+PASS: gdb.cp/inherit.exp: ptype g_vE
+PASS: gdb.cp/inherit.exp: print g_A.A::a
+PASS: gdb.cp/inherit.exp: print g_A.A::x
+PASS: gdb.cp/inherit.exp: print g_A.a
+PASS: gdb.cp/inherit.exp: print g_A.x
+PASS: gdb.cp/inherit.exp: print g_B.A::a
+PASS: gdb.cp/inherit.exp: print g_B.A::x
+PASS: gdb.cp/inherit.exp: print g_B.B::b
+PASS: gdb.cp/inherit.exp: print g_B.B::x
+PASS: gdb.cp/inherit.exp: print g_B.a
+PASS: gdb.cp/inherit.exp: print g_B.b
+PASS: gdb.cp/inherit.exp: print g_B.x
+PASS: gdb.cp/inherit.exp: print g_C.A::a
+PASS: gdb.cp/inherit.exp: print g_C.A::x
+PASS: gdb.cp/inherit.exp: print g_C.C::c
+PASS: gdb.cp/inherit.exp: print g_C.C::x
+PASS: gdb.cp/inherit.exp: print g_C.a
+PASS: gdb.cp/inherit.exp: print g_C.c
+PASS: gdb.cp/inherit.exp: print g_C.x
+PASS: gdb.cp/inherit.exp: print g_A
+PASS: gdb.cp/inherit.exp: print g_B
+PASS: gdb.cp/inherit.exp: print g_C
+PASS: gdb.cp/inherit.exp: print g_A.A::a
+PASS: gdb.cp/inherit.exp: print g_A.A::x
+PASS: gdb.cp/inherit.exp: print g_B.A::a
+PASS: gdb.cp/inherit.exp: print g_B.A::x
+PASS: gdb.cp/inherit.exp: print g_B.B::b
+PASS: gdb.cp/inherit.exp: print g_B.B::x
+PASS: gdb.cp/inherit.exp: print g_C.A::a
+PASS: gdb.cp/inherit.exp: print g_C.A::x
+PASS: gdb.cp/inherit.exp: print g_C.C::c
+PASS: gdb.cp/inherit.exp: print g_C.C::x
+KFAIL: gdb.cp/inherit.exp: print g_D.A::a (PRMS: gdb/68)
+KFAIL: gdb.cp/inherit.exp: print g_D.A::x (PRMS: gdb/68)
+PASS: gdb.cp/inherit.exp: print g_D.B::b
+PASS: gdb.cp/inherit.exp: print g_D.B::x
+PASS: gdb.cp/inherit.exp: print g_D.C::c
+PASS: gdb.cp/inherit.exp: print g_D.C::x
+PASS: gdb.cp/inherit.exp: print g_D.D::d
+PASS: gdb.cp/inherit.exp: print g_D.D::x
+KFAIL: gdb.cp/inherit.exp: print g_E.A::a (PRMS: gdb/68)
+KFAIL: gdb.cp/inherit.exp: print g_E.A::x (PRMS: gdb/68)
+PASS: gdb.cp/inherit.exp: print g_E.B::b
+PASS: gdb.cp/inherit.exp: print g_E.B::x
+PASS: gdb.cp/inherit.exp: print g_E.C::c
+PASS: gdb.cp/inherit.exp: print g_E.C::x
+PASS: gdb.cp/inherit.exp: print g_E.D::d
+PASS: gdb.cp/inherit.exp: print g_E.D::x
+PASS: gdb.cp/inherit.exp: print g_E.E::e
+PASS: gdb.cp/inherit.exp: print g_E.E::x
+PASS: gdb.cp/inherit.exp: ptype g_D.b
+PASS: gdb.cp/inherit.exp: ptype g_D.c
+PASS: gdb.cp/inherit.exp: ptype g_D.d
+PASS: gdb.cp/inherit.exp: ptype g_A.A::a
+PASS: gdb.cp/inherit.exp: ptype g_A.A::x
+PASS: gdb.cp/inherit.exp: ptype g_B.A::a
+PASS: gdb.cp/inherit.exp: ptype g_B.A::x
+PASS: gdb.cp/inherit.exp: ptype g_B.B::b
+PASS: gdb.cp/inherit.exp: ptype g_B.B::x
+PASS: gdb.cp/inherit.exp: ptype g_C.A::a
+PASS: gdb.cp/inherit.exp: ptype g_C.A::x
+PASS: gdb.cp/inherit.exp: ptype g_C.C::c
+PASS: gdb.cp/inherit.exp: ptype g_C.C::x
+KFAIL: gdb.cp/inherit.exp: ptype g_D.A::a (PRMS: gdb/68)
+KFAIL: gdb.cp/inherit.exp: ptype g_D.A::x (PRMS: gdb/68)
+PASS: gdb.cp/inherit.exp: ptype g_D.B::b
+PASS: gdb.cp/inherit.exp: ptype g_D.B::x
+PASS: gdb.cp/inherit.exp: ptype g_D.C::c
+PASS: gdb.cp/inherit.exp: ptype g_D.C::x
+PASS: gdb.cp/inherit.exp: ptype g_D.D::d
+PASS: gdb.cp/inherit.exp: ptype g_D.D::x
+KFAIL: gdb.cp/inherit.exp: ptype g_E.A::a (PRMS: gdb/68)
+KFAIL: gdb.cp/inherit.exp: ptype g_E.A::x (PRMS: gdb/68)
+PASS: gdb.cp/inherit.exp: ptype g_E.B::b
+PASS: gdb.cp/inherit.exp: ptype g_E.B::x
+PASS: gdb.cp/inherit.exp: ptype g_E.C::c
+PASS: gdb.cp/inherit.exp: ptype g_E.C::x
+PASS: gdb.cp/inherit.exp: ptype g_E.D::d
+PASS: gdb.cp/inherit.exp: ptype g_E.D::x
+PASS: gdb.cp/inherit.exp: ptype g_E.E::e
+PASS: gdb.cp/inherit.exp: ptype g_E.E::x
+PASS: gdb.cp/inherit.exp: print g_D
+PASS: gdb.cp/inherit.exp: print g_E
+PASS: gdb.cp/inherit.exp: print anonymous union member
+PASS: gdb.cp/inherit.exp: print variable of type anonymous union
+PASS: gdb.cp/inherit.exp: print type of anonymous union
+PASS: gdb.cp/inherit.exp: print g_vA.vA::va
+PASS: gdb.cp/inherit.exp: print g_vA.vA::vx
+PASS: gdb.cp/inherit.exp: print g_vA.va
+PASS: gdb.cp/inherit.exp: print g_vA.vx
+PASS: gdb.cp/inherit.exp: print g_vB.vA::va
+PASS: gdb.cp/inherit.exp: print g_vB.vA::vx
+PASS: gdb.cp/inherit.exp: print g_vB.vB::vb
+PASS: gdb.cp/inherit.exp: print g_vB.vB::vx
+PASS: gdb.cp/inherit.exp: print g_vB.va
+PASS: gdb.cp/inherit.exp: print g_vB.vb
+PASS: gdb.cp/inherit.exp: print g_vB.vx
+PASS: gdb.cp/inherit.exp: print g_vC.vA::va
+PASS: gdb.cp/inherit.exp: print g_vC.vA::vx
+PASS: gdb.cp/inherit.exp: print g_vC.vC::vc
+PASS: gdb.cp/inherit.exp: print g_vC.vC::vx
+PASS: gdb.cp/inherit.exp: print g_vC.va
+PASS: gdb.cp/inherit.exp: print g_vC.vc
+PASS: gdb.cp/inherit.exp: print g_vC.vx
+PASS: gdb.cp/inherit.exp: print g_vA
+PASS: gdb.cp/inherit.exp: print g_vB (FIXME v3 vtbl ptr)
+PASS: gdb.cp/inherit.exp: print g_vC (FIXME v3 vtbl ptr)
+PASS: gdb.cp/inherit.exp: print g_vD.vA::va
+PASS: gdb.cp/inherit.exp: print g_vD.vA::vx
+PASS: gdb.cp/inherit.exp: print g_vD.vB::vb
+PASS: gdb.cp/inherit.exp: print g_vD.vB::vx
+PASS: gdb.cp/inherit.exp: print g_vD.vC::vc
+PASS: gdb.cp/inherit.exp: print g_vD.vC::vx
+PASS: gdb.cp/inherit.exp: print g_vD.vD::vd
+PASS: gdb.cp/inherit.exp: print g_vD.vD::vx
+PASS: gdb.cp/inherit.exp: print g_vE.vA::va
+PASS: gdb.cp/inherit.exp: print g_vE.vA::vx
+PASS: gdb.cp/inherit.exp: print g_vE.vB::vb
+PASS: gdb.cp/inherit.exp: print g_vE.vB::vx
+PASS: gdb.cp/inherit.exp: print g_vE.vC::vc
+PASS: gdb.cp/inherit.exp: print g_vE.vC::vx
+PASS: gdb.cp/inherit.exp: print g_vE.vD::vd
+PASS: gdb.cp/inherit.exp: print g_vE.vD::vx
+PASS: gdb.cp/inherit.exp: print g_vE.vE::ve
+PASS: gdb.cp/inherit.exp: print g_vE.vE::vx
+PASS: gdb.cp/inherit.exp: print g_vD (FIXME v3 vtbl ptr)
+PASS: gdb.cp/inherit.exp: print g_vE (FIXME v3 vtbl ptr)
+Running ../../../master/gdb/testsuite/gdb.cp/koenig.exp ...
+PASS: gdb.cp/koenig.exp: p first(c)
+PASS: gdb.cp/koenig.exp: p second(0,0,c,0,0)
+PASS: gdb.cp/koenig.exp: p first(0,c)
+PASS: gdb.cp/koenig.exp: p first(b.c)
+PASS: gdb.cp/koenig.exp: p foo(eo)
+PASS: gdb.cp/koenig.exp: p foo(eo, eo)
+PASS: gdb.cp/koenig.exp: p foo(eo, eo, 1)
+PASS: gdb.cp/koenig.exp: p foo(fo, eo)
+PASS: gdb.cp/koenig.exp: p foo(1 ,fo, eo)
+PASS: gdb.cp/koenig.exp: p foo(go, fo, eo)
+PASS: gdb.cp/koenig.exp: p fake(eo)
+PASS: gdb.cp/koenig.exp: p foo (fake)
+PASS: gdb.cp/koenig.exp: p foo(io)
+PASS: gdb.cp/koenig.exp: p foo(ix)
+PASS: gdb.cp/koenig.exp: p foo(ju)
+PASS: gdb.cp/koenig.exp: p foo(js)
+PASS: gdb.cp/koenig.exp: p foo(je)
+XFAIL: gdb.cp/koenig.exp: p foo(jab)
+PASS: gdb.cp/koenig.exp: p foo(jap)
+PASS: gdb.cp/koenig.exp: p foo(japp)
+PASS: gdb.cp/koenig.exp: p foo(jca)
+PASS: gdb.cp/koenig.exp: p foo(ko,1)
+PASS: gdb.cp/koenig.exp: p foo(ko,1.0f)
+XFAIL: gdb.cp/koenig.exp: p bar(ko,1)
+PASS: gdb.cp/koenig.exp: p foo(labo)
+PASS: gdb.cp/koenig.exp: p ma.foo('a')
+PASS: gdb.cp/koenig.exp: p foo(ma,'a')
+PASS: gdb.cp/koenig.exp: p M::N::foo(ma,'a')
+PASS: gdb.cp/koenig.exp: p M::FAKE::foo(ma,'a')
+PASS: gdb.cp/koenig.exp: p M::N::fake(ma,'a')
+PASS: gdb.cp/koenig.exp: p M::bar('a')
+PASS: gdb.cp/koenig.exp: p M::N::bar('a')
+PASS: gdb.cp/koenig.exp: p foo(ttoa, 'a')
+PASS: gdb.cp/koenig.exp: p foo (p_union)
+PASS: gdb.cp/koenig.exp: p q == 5
+PASS: gdb.cp/koenig.exp: p q == 5.0f
+PASS: gdb.cp/koenig.exp: p q != 5
+PASS: gdb.cp/koenig.exp: p q != 5.0f
+PASS: gdb.cp/koenig.exp: p q + 5.0f
+PASS: gdb.cp/koenig.exp: p q + 5
+PASS: gdb.cp/koenig.exp: p ++q
+PASS: gdb.cp/koenig.exp: p r.rfoo()
+PASS: gdb.cp/koenig.exp: continue to breakpoint: marker1
+PASS: gdb.cp/koenig.exp: p rfoo()
+PASS: gdb.cp/koenig.exp: p this->rfoo()
+Running ../../../master/gdb/testsuite/gdb.cp/local.exp ...
+PASS: gdb.cp/local.exp: up from marker1
+PASS: gdb.cp/local.exp: ptype l
+PASS: gdb.cp/local.exp: ptype Local
+PASS: gdb.cp/local.exp: break marker2
+PASS: gdb.cp/local.exp: continuing to marker2
+PASS: gdb.cp/local.exp: up from marker2
+PASS: gdb.cp/local.exp: Local out of scope
+PASS: gdb.cp/local.exp: ptype InnerLocal (pattern 1)
+PASS: gdb.cp/local.exp: ptype NestedInnerLocal
+KFAIL: gdb.cp/local.exp: ptype InnerLocal::NestedInnerLocal (PRMS: gdb/482)
+Running ../../../master/gdb/testsuite/gdb.cp/m-data.exp ...
+PASS: gdb.cp/m-data.exp: continue to breakpoint: end of first constructors
+PASS: gdb.cp/m-data.exp: simple object, const bool
+PASS: gdb.cp/m-data.exp: simple object, const int
+PASS: gdb.cp/m-data.exp: simple object, long
+PASS: gdb.cp/m-data.exp: simple object, enum
+PASS: gdb.cp/m-data.exp: derived template object, base const bool
+PASS: gdb.cp/m-data.exp: derived template object, base const int
+PASS: gdb.cp/m-data.exp: derived template object, base long
+PASS: gdb.cp/m-data.exp: derived template object, base enum
+PASS: gdb.cp/m-data.exp: derived template object, derived enum
+PASS: gdb.cp/m-data.exp: template object, const bool
+PASS: gdb.cp/m-data.exp: template object, const int
+PASS: gdb.cp/m-data.exp: template object, long
+PASS: gdb.cp/m-data.exp: template object, base enum
+PASS: gdb.cp/m-data.exp: template object, derived enum
+PASS: gdb.cp/m-data.exp: continue to breakpoint: continue to shadow breakpoint
+PASS: gdb.cp/m-data.exp: shadowing member
+PASS: gdb.cp/m-data.exp: shadowed global variable
+Running ../../../master/gdb/testsuite/gdb.cp/m-static.exp ...
+PASS: gdb.cp/m-static.exp: continue to breakpoint: end of constructors
+PASS: gdb.cp/m-static.exp: simple object, static const bool
+PASS: gdb.cp/m-static.exp: simple object, static const int
+PASS: gdb.cp/m-static.exp: simple object, static long
+PASS: gdb.cp/m-static.exp: simple object, static enum
+PASS: gdb.cp/m-static.exp: derived template object, base static const bool
+PASS: gdb.cp/m-static.exp: derived template object, base static const int
+PASS: gdb.cp/m-static.exp: derived template object, base static long
+PASS: gdb.cp/m-static.exp: derived template object, base static enum
+PASS: gdb.cp/m-static.exp: derived template object, static enum
+PASS: gdb.cp/m-static.exp: template object, static const bool
+PASS: gdb.cp/m-static.exp: template object, static const int
+PASS: gdb.cp/m-static.exp: template object, static long
+PASS: gdb.cp/m-static.exp: template object, static enum
+PASS: gdb.cp/m-static.exp: template object, static derived enum
+PASS: gdb.cp/m-static.exp: static const int initialized elsewhere
+PASS: gdb.cp/m-static.exp: static const int initialized nowhere
+PASS: gdb.cp/m-static.exp: static const int initialized in class definition
+PASS: gdb.cp/m-static.exp: static const float initialized in class definition
+PASS: gdb.cp/m-static.exp: info variable everywhere
+PASS: gdb.cp/m-static.exp: step
+PASS: gdb.cp/m-static.exp: print svar
+Running ../../../master/gdb/testsuite/gdb.cp/maint.exp ...
+PASS: gdb.cp/maint.exp: help maintenance cplus
+PASS: gdb.cp/maint.exp: help maint cp
+PASS: gdb.cp/maint.exp: maint cp
+PASS: gdb.cp/maint.exp: help maint cp first_component
+PASS: gdb.cp/maint.exp: help maint cp namespace
+PASS: gdb.cp/maint.exp: set complaints 1000
+PASS: gdb.cp/maint.exp: maint cp first_component foo
+PASS: gdb.cp/maint.exp: maint cp first_component operator<<
+PASS: gdb.cp/maint.exp: maint cp first_component operator>>
+PASS: gdb.cp/maint.exp: maint cp first_component operator ->
+PASS: gdb.cp/maint.exp: maint cp first_component operator()
+PASS: gdb.cp/maint.exp: maint cp first_component operator>
+PASS: gdb.cp/maint.exp: maint cp first_component operator<
+PASS: gdb.cp/maint.exp: maint cp first_component operator ->
+PASS: gdb.cp/maint.exp: maint cp first_component operator ->
+PASS: gdb.cp/maint.exp: maint cp first_component foo()
+PASS: gdb.cp/maint.exp: maint cp first_component foo(int)
+PASS: gdb.cp/maint.exp: maint cp first_component foo(X::Y)
+PASS: gdb.cp/maint.exp: maint cp first_component foo(X::Y, A::B)
+PASS: gdb.cp/maint.exp: maint cp first_component foo(std::basic_streambuf<wchar_t,std::char_traits<wchar_t> >)
+PASS: gdb.cp/maint.exp: maint cp first_component operator>(X::Y)
+PASS: gdb.cp/maint.exp: maint cp first_component int operator<< <char>()
+PASS: gdb.cp/maint.exp: maint cp first_component T<Cooperator>
+PASS: gdb.cp/maint.exp: maint cp first_component int foo<&(operator<<(C, C))>()
+PASS: gdb.cp/maint.exp: maint cp first_component int foo<&operator<<(C, C)>()
+PASS: gdb.cp/maint.exp: maint cp first_component int foo<operator<<(C, C)>()
+PASS: gdb.cp/maint.exp: maint cp first_component foo::bar
+PASS: gdb.cp/maint.exp: maint cp first_component foo::bar::baz
+PASS: gdb.cp/maint.exp: maint cp first_component C<A>::bar
+PASS: gdb.cp/maint.exp: maint cp first_component C<std::basic_streambuf<wchar_t,std::char_traits<wchar_t> > >::bar
+PASS: gdb.cp/maint.exp: maint cp first_component foo<
+PASS: gdb.cp/maint.exp: maint cp first_component foo(
+PASS: gdb.cp/maint.exp: maint cp first_component bool operator<<char>
+PASS: gdb.cp/maint.exp: maint cp namespace
+Running ../../../master/gdb/testsuite/gdb.cp/mb-ctor.exp ...
+PASS: gdb.cp/mb-ctor.exp: set-breakpoint at ctor
+PASS: gdb.cp/mb-ctor.exp: set-breakpoint at dtor
+PASS: gdb.cp/mb-ctor.exp: run to breakpoint 1 v1
+PASS: gdb.cp/mb-ctor.exp: continue to breakpoint: set breakpoint here
+PASS: gdb.cp/mb-ctor.exp: run to breakpoint 1 v2
+PASS: gdb.cp/mb-ctor.exp: continue to breakpoint: set breakpoint here
+PASS: gdb.cp/mb-ctor.exp: run to breakpoint 3 v1
+PASS: gdb.cp/mb-ctor.exp: run to breakpoint 3 v2
+PASS: gdb.cp/mb-ctor.exp: run to exit
+Running ../../../master/gdb/testsuite/gdb.cp/mb-inline.exp ...
+PASS: gdb.cp/mb-inline.exp: set breakpoint
+PASS: gdb.cp/mb-inline.exp: run to breakpoint
+PASS: gdb.cp/mb-inline.exp: run to breakpoint 2
+PASS: gdb.cp/mb-inline.exp: disabling location: disable
+PASS: gdb.cp/mb-inline.exp: disabling location: run to breakpoint
+PASS: gdb.cp/mb-inline.exp: disabled breakpoint 1.2
+PASS: gdb.cp/mb-inline.exp: set multi_line_foo breakpoint
+PASS: gdb.cp/mb-inline.exp: run to multi_line_foo breakpoint 4 afn
+PASS: gdb.cp/mb-inline.exp: run to multi_line_foo breakpoint 4 bfn
+Running ../../../master/gdb/testsuite/gdb.cp/mb-templates.exp ...
+PASS: gdb.cp/mb-templates.exp: initial condition: set breakpoint
+PASS: gdb.cp/mb-templates.exp: initial condition: run to breakpoint
+PASS: gdb.cp/mb-templates.exp: initial condition: run to breakpoint 2
+PASS: gdb.cp/mb-templates.exp: separate condition: set breakpoint
+PASS: gdb.cp/mb-templates.exp: separate condition: set condition
+PASS: gdb.cp/mb-templates.exp: separate condition: run to breakpoint
+PASS: gdb.cp/mb-templates.exp: separate condition: run to breakpoint 2
+PASS: gdb.cp/mb-templates.exp: disabling location: disable
+PASS: gdb.cp/mb-templates.exp: disabling location: run to breakpoint
+PASS: gdb.cp/mb-templates.exp: disabling location: enable
+PASS: gdb.cp/mb-templates.exp: disable breakpoint: disable
+PASS: gdb.cp/mb-templates.exp: disable breakpoint: run to breakpoint
+PASS: gdb.cp/mb-templates.exp: instantiation: set breakpoint
+PASS: gdb.cp/mb-templates.exp: instantiation: run to breakpoint
+PASS: gdb.cp/mb-templates.exp: instantiation: run to breakpoint 2
+PASS: gdb.cp/mb-templates.exp: set multi_line_foo breakpoint
+PASS: gdb.cp/mb-templates.exp: run to multi_line_foo breakpoint 2 <int>
+PASS: gdb.cp/mb-templates.exp: run to multi_line_foo breakpoint 2 <double>
+Running ../../../master/gdb/testsuite/gdb.cp/member-ptr.exp ...
+PASS: gdb.cp/member-ptr.exp: continue to breakpoint: continue to pmi = NULL
+PASS: gdb.cp/member-ptr.exp: ptype pmi (A::j)
+PASS: gdb.cp/member-ptr.exp: print pmi (A::j)
+PASS: gdb.cp/member-ptr.exp: print a.*pmi (A::j)
+PASS: gdb.cp/member-ptr.exp: print a_p->*pmi (A::j)
+PASS: gdb.cp/member-ptr.exp: set var pmi = &A::jj
+PASS: gdb.cp/member-ptr.exp: print pmi (A::jj)
+PASS: gdb.cp/member-ptr.exp: print a.*pmi (A::jj)
+PASS: gdb.cp/member-ptr.exp: set var pmi = &A::j
+PASS: gdb.cp/member-ptr.exp: print a.*pmi (A::j) (again)
+PASS: gdb.cp/member-ptr.exp: print a.*pmi = 33
+PASS: gdb.cp/member-ptr.exp: print a.*pmi (A::j) (33)
+PASS: gdb.cp/member-ptr.exp: print a (j = 33)
+PASS: gdb.cp/member-ptr.exp: print a_p->*pmi = 44
+PASS: gdb.cp/member-ptr.exp: print a_p->*pmi (44)
+PASS: gdb.cp/member-ptr.exp: print a (j = 44)
+PASS: gdb.cp/member-ptr.exp: ptype a.*pmi
+PASS: gdb.cp/member-ptr.exp: print *pmi
+PASS: gdb.cp/member-ptr.exp: ptype *pmi
+PASS: gdb.cp/member-ptr.exp: print (int) pmi
+PASS: gdb.cp/member-ptr.exp: print ((int) pmi) == ((char *) &a.j - (char *) &a)
+PASS: gdb.cp/member-ptr.exp: ptype pmf
+PASS: gdb.cp/member-ptr.exp: print pmf
+PASS: gdb.cp/member-ptr.exp: ptype pmf_p
+PASS: gdb.cp/member-ptr.exp: gdb/NNNN
+PASS: gdb.cp/member-ptr.exp: print a.*pmf
+PASS: gdb.cp/member-ptr.exp: print a_p->*pmf
+PASS: gdb.cp/member-ptr.exp: set var pmf = &A::foo
+PASS: gdb.cp/member-ptr.exp: print *pmf
+PASS: gdb.cp/member-ptr.exp: ptype *pmf
+PASS: gdb.cp/member-ptr.exp: print (a.*pmf)(3)
+PASS: gdb.cp/member-ptr.exp: ptype a.*pmf
+PASS: gdb.cp/member-ptr.exp: print diamond_pmi
+PASS: gdb.cp/member-ptr.exp: print diamond.*diamond_pmi
+PASS: gdb.cp/member-ptr.exp: print diamond.*left_pmf
+PASS: gdb.cp/member-ptr.exp: print diamond.*right_pmf
+PASS: gdb.cp/member-ptr.exp: print (diamond.*left_pmf) ()
+PASS: gdb.cp/member-ptr.exp: print (diamond.*right_pmf) ()
+PASS: gdb.cp/member-ptr.exp: print diamond.*left_vpmf
+PASS: gdb.cp/member-ptr.exp: print diamond.*right_vpmf
+PASS: gdb.cp/member-ptr.exp: print (diamond.*left_vpmf) ()
+PASS: gdb.cp/member-ptr.exp: print (diamond.*left_base_vpmf) ()
+PASS: gdb.cp/member-ptr.exp: print (diamond.*right_vpmf) ()
+PASS: gdb.cp/member-ptr.exp: print left_vpmf
+PASS: gdb.cp/member-ptr.exp: print right_vpmf
+PASS: gdb.cp/member-ptr.exp: print base_vpmf
+PASS: gdb.cp/member-ptr.exp: print diamond.*left_vpmf ()
+PASS: gdb.cp/member-ptr.exp: print null_pmi
+PASS: gdb.cp/member-ptr.exp: print null_pmi = &A::j
+PASS: gdb.cp/member-ptr.exp: print null_pmi = 0
+PASS: gdb.cp/member-ptr.exp: print null_pmf
+PASS: gdb.cp/member-ptr.exp: print null_pmf = &A::foo
+PASS: gdb.cp/member-ptr.exp: print null_pmf = 0
+Running ../../../master/gdb/testsuite/gdb.cp/method.exp ...
+PASS: gdb.cp/method.exp: break A::foo
+PASS: gdb.cp/method.exp: continue to A::foo
+PASS: gdb.cp/method.exp: print x in A::foo
+PASS: gdb.cp/method.exp: print this in A::foo
+PASS: gdb.cp/method.exp: break A::bar
+PASS: gdb.cp/method.exp: continue to A::bar
+PASS: gdb.cp/method.exp: print x in A::bar
+PASS: gdb.cp/method.exp: print this in A::bar
+PASS: gdb.cp/method.exp: break 21
+PASS: gdb.cp/method.exp: continue to 21
+PASS: gdb.cp/method.exp: print data_ in funk::getFunky
+PASS: gdb.cp/method.exp: print this in funk::getFunky
+PASS: gdb.cp/method.exp: print res in funk::getFunky
+PASS: gdb.cp/method.exp: ptype A
+PASS: gdb.cp/method.exp: finish program
+Running ../../../master/gdb/testsuite/gdb.cp/method2.exp ...
+PASS: gdb.cp/method2.exp: set multiple-symbols ask
+PASS: gdb.cp/method2.exp: setting language c
+PASS: gdb.cp/method2.exp: breaking in method (c)
+PASS: gdb.cp/method2.exp: setting language c++
+PASS: gdb.cp/method2.exp: breaking in method (c++)
+PASS: gdb.cp/method2.exp: continue until exit at continue to end
+Running ../../../master/gdb/testsuite/gdb.cp/minsym-fallback.exp ...
+PASS: gdb.cp/minsym-fallback.exp: set breakpoint pending off
+PASS: gdb.cp/minsym-fallback.exp: break C::f()
+PASS: gdb.cp/minsym-fallback.exp: break C::operator()()
+Running ../../../master/gdb/testsuite/gdb.cp/misc.exp ...
+PASS: gdb.cp/misc.exp: deduced language is C++, before full symbols
+PASS: gdb.cp/misc.exp: deduced language is C++, after full symbols
+PASS: gdb.cp/misc.exp: print s.a for foo struct (known gcc 2.7.2 and earlier bug)
+PASS: gdb.cp/misc.exp: print as bool (setup)
+PASS: gdb.cp/misc.exp: print as bool (print 1 == 1)
+PASS: gdb.cp/misc.exp: print as bool (print 1 == 2)
+PASS: gdb.cp/misc.exp: print a bool var
+PASS: gdb.cp/misc.exp: set a bool var (setup)
+PASS: gdb.cp/misc.exp: set a bool var (print v_bool)
+PASS: gdb.cp/misc.exp: print a bool array
+PASS: gdb.cp/misc.exp: set a bool array elem (setup)
+PASS: gdb.cp/misc.exp: set a bool array elem (print v_bool_array)
+PASS: gdb.cp/misc.exp: print true
+PASS: gdb.cp/misc.exp: print false
+PASS: gdb.cp/misc.exp: 1 + true
+PASS: gdb.cp/misc.exp: 3 + false
+PASS: gdb.cp/misc.exp: 1 < 2 < 3
+PASS: gdb.cp/misc.exp: 2 < 1 > 4
+PASS: gdb.cp/misc.exp: (bool)43
+PASS: gdb.cp/misc.exp: (bool)0
+PASS: gdb.cp/misc.exp: (bool)17.93
+PASS: gdb.cp/misc.exp: (bool)0.0
+PASS: gdb.cp/misc.exp: (int)true
+PASS: gdb.cp/misc.exp: (int)false
+Running ../../../master/gdb/testsuite/gdb.cp/namespace-nested-import.exp ...
+PASS: gdb.cp/namespace-nested-import.exp: print C::x
+Running ../../../master/gdb/testsuite/gdb.cp/namespace.exp ...
+PASS: gdb.cp/namespace.exp: up from marker1
+PASS: gdb.cp/namespace.exp: print 'AAA::c'
+PASS: gdb.cp/namespace.exp: print AAA::c
+PASS: gdb.cp/namespace.exp: print ina
+PASS: gdb.cp/namespace.exp: ptype ina
+PASS: gdb.cp/namespace.exp: info func xyzq
+PASS: gdb.cp/namespace.exp: print 'AAA::xyzq'('x')
+PASS: gdb.cp/namespace.exp: print AAA::xyzq('x')
+PASS: gdb.cp/namespace.exp: break AAA::xyzq
+PASS: gdb.cp/namespace.exp: print 'BBB::CCC::xyzq'('x')
+PASS: gdb.cp/namespace.exp: print BBB::CCC::xyzq('x')
+PASS: gdb.cp/namespace.exp: break BBB::CCC::xyzq
+PASS: gdb.cp/namespace.exp: print 'BBB::Class::xyzq'
+PASS: gdb.cp/namespace.exp: print BBB::Class::xyzq
+PASS: gdb.cp/namespace.exp: break BBB::Class::xyzq
+PASS: gdb.cp/namespace.exp: whatis C::cOtherFileType
+PASS: gdb.cp/namespace.exp: whatis ::C::cOtherFileType
+PASS: gdb.cp/namespace.exp: whatis C::cOtherFileVar
+PASS: gdb.cp/namespace.exp: whatis ::C::cOtherFileVar
+PASS: gdb.cp/namespace.exp: print C::cOtherFileVar
+PASS: gdb.cp/namespace.exp: print ::C::cOtherFileVar
+PASS: gdb.cp/namespace.exp: whatis C::OtherFileClass::cOtherFileClassType
+PASS: gdb.cp/namespace.exp: whatis ::C::OtherFileClass::cOtherFileClassType
+PASS: gdb.cp/namespace.exp: print C::OtherFileClass::cOtherFileClassVar
+PASS: gdb.cp/namespace.exp: print ::cOtherFileClassVar
+PASS: gdb.cp/namespace.exp: print ::C::OtherFileClass::cOtherFileClassVar
+PASS: gdb.cp/namespace.exp: print c
+PASS: gdb.cp/namespace.exp: print cc
+PASS: gdb.cp/namespace.exp: print 'C::cc'
+PASS: gdb.cp/namespace.exp: print C::cc
+PASS: gdb.cp/namespace.exp: print cd
+PASS: gdb.cp/namespace.exp: print C::D::cd
+PASS: gdb.cp/namespace.exp: print 'E::cde'
+PASS: gdb.cp/namespace.exp: print E::cde
+PASS: gdb.cp/namespace.exp: print shadow
+PASS: gdb.cp/namespace.exp: print E::ce
+PASS: gdb.cp/namespace.exp: ptype C
+PASS: gdb.cp/namespace.exp: ptype E
+PASS: gdb.cp/namespace.exp: ptype CClass
+PASS: gdb.cp/namespace.exp: ptype CClass::NestedClass
+PASS: gdb.cp/namespace.exp: ptype NestedClass
+PASS: gdb.cp/namespace.exp: ptype ::C::CClass
+PASS: gdb.cp/namespace.exp: ptype ::C::CClass::NestedClass
+PASS: gdb.cp/namespace.exp: ptype ::C::NestedClass
+PASS: gdb.cp/namespace.exp: ptype C::CClass
+PASS: gdb.cp/namespace.exp: ptype C::CClass::NestedClass
+PASS: gdb.cp/namespace.exp: ptype C::NestedClass
+PASS: gdb.cp/namespace.exp: print cOtherFile
+PASS: gdb.cp/namespace.exp: ptype OtherFileClass
+PASS: gdb.cp/namespace.exp: ptype ::C::OtherFileClass
+PASS: gdb.cp/namespace.exp: ptype C::OtherFileClass
+PASS: gdb.cp/namespace.exp: ptype OtherFileClass typedefs
+PASS: gdb.cp/namespace.exp: ptype ::C::OtherFileClass typedefs
+PASS: gdb.cp/namespace.exp: print cX
+PASS: gdb.cp/namespace.exp: print 'F::cXf'
+PASS: gdb.cp/namespace.exp: print F::cXf
+PASS: gdb.cp/namespace.exp: print F::cXfX
+PASS: gdb.cp/namespace.exp: print X
+PASS: gdb.cp/namespace.exp: print 'G::Xg'
+PASS: gdb.cp/namespace.exp: print G::Xg
+PASS: gdb.cp/namespace.exp: print G::XgX
+PASS: gdb.cp/namespace.exp: print cXOtherFile
+PASS: gdb.cp/namespace.exp: print XOtherFile
+PASS: gdb.cp/namespace.exp: print AAA::ALPHA
+PASS: gdb.cp/namespace.exp: whatis ::C::CClass::NestedClass
+PASS: gdb.cp/namespace.exp: whatis ::C::CClass::NestedClass *
+Running ../../../master/gdb/testsuite/gdb.cp/nextoverthrow.exp ...
+PASS: gdb.cp/nextoverthrow.exp: check for unwinder hook
+UNSUPPORTED: gdb.cp/nextoverthrow.exp: nextoverthrow.exp could not find _Unwind_DebugHook
+Running ../../../master/gdb/testsuite/gdb.cp/no-dmgl-verbose.exp ...
+PASS: gdb.cp/no-dmgl-verbose.exp: set breakpoint pending off
+PASS: gdb.cp/no-dmgl-verbose.exp: DMGL_VERBOSE-demangled f(std::string) is not defined
+Running ../../../master/gdb/testsuite/gdb.cp/noparam.exp ...
+PASS: gdb.cp/noparam.exp: p C::m (int)
+Running ../../../master/gdb/testsuite/gdb.cp/nsdecl.exp ...
+PASS: gdb.cp/nsdecl.exp: print fakex
+Running ../../../master/gdb/testsuite/gdb.cp/nsimport.exp ...
+PASS: gdb.cp/nsimport.exp: print x
+PASS: gdb.cp/nsimport.exp: print xx
+PASS: gdb.cp/nsimport.exp: print xxx
+Running ../../../master/gdb/testsuite/gdb.cp/nsnested.exp ...
+PASS: gdb.cp/nsnested.exp: print ab
+PASS: gdb.cp/nsnested.exp: continue to breakpoint: C::first
+PASS: gdb.cp/nsnested.exp: print ab
+PASS: gdb.cp/nsnested.exp: print C::D::ab
+PASS: gdb.cp/nsnested.exp: continue to breakpoint: C::D::second
+PASS: gdb.cp/nsnested.exp: print ab
+Running ../../../master/gdb/testsuite/gdb.cp/nsnoimports.exp ...
+PASS: gdb.cp/nsnoimports.exp: print A::_a
+PASS: gdb.cp/nsnoimports.exp: print A::B::ab
+PASS: gdb.cp/nsnoimports.exp: print A::B::C::abc
+PASS: gdb.cp/nsnoimports.exp: print _a
+PASS: gdb.cp/nsnoimports.exp: print ab
+PASS: gdb.cp/nsnoimports.exp: print abc
+PASS: gdb.cp/nsnoimports.exp: continue to breakpoint: A::B::first
+PASS: gdb.cp/nsnoimports.exp: print A::_a
+PASS: gdb.cp/nsnoimports.exp: print A::B::ab
+PASS: gdb.cp/nsnoimports.exp: print A::B::C::abc
+PASS: gdb.cp/nsnoimports.exp: print _a
+PASS: gdb.cp/nsnoimports.exp: print ab
+PASS: gdb.cp/nsnoimports.exp: print C::abc
+PASS: gdb.cp/nsnoimports.exp: print abc
+PASS: gdb.cp/nsnoimports.exp: continue to breakpoint: A::B::C::second
+PASS: gdb.cp/nsnoimports.exp: print A::_a
+PASS: gdb.cp/nsnoimports.exp: print A::B::ab
+PASS: gdb.cp/nsnoimports.exp: print A::B::C::abc
+PASS: gdb.cp/nsnoimports.exp: print _a
+PASS: gdb.cp/nsnoimports.exp: print ab
+PASS: gdb.cp/nsnoimports.exp: print abc
+Running ../../../master/gdb/testsuite/gdb.cp/nsrecurs.exp ...
+PASS: gdb.cp/nsrecurs.exp: print ax
+PASS: gdb.cp/nsrecurs.exp: print dx
+PASS: gdb.cp/nsrecurs.exp: print xx
+KFAIL: gdb.cp/nsrecurs.exp: ptype G::GF (PRMS: gdb/10541)
+KFAIL: gdb.cp/nsrecurs.exp: print G::GF::FE::ex (PRMS: gdb/10541)
+Running ../../../master/gdb/testsuite/gdb.cp/nsstress.exp ...
+PASS: gdb.cp/nsstress.exp: print y
+Running ../../../master/gdb/testsuite/gdb.cp/nsusing.exp ...
+PASS: gdb.cp/nsusing.exp: print _a
+PASS: gdb.cp/nsusing.exp: continue to breakpoint: marker3
+PASS: gdb.cp/nsusing.exp: Print _a without import
+PASS: gdb.cp/nsusing.exp: continue to breakpoint: marker1 stop
+PASS: gdb.cp/nsusing.exp: print _a in a nested scope
+PASS: gdb.cp/nsusing.exp: print cc
+PASS: gdb.cp/nsusing.exp: print B::_a
+PASS: gdb.cp/nsusing.exp: print _a in namespace alias scope
+PASS: gdb.cp/nsusing.exp: print x in namespace alias scope
+PASS: gdb.cp/nsusing.exp: Print _a without import
+PASS: gdb.cp/nsusing.exp: print dx
+PASS: gdb.cp/nsusing.exp: print efx
+PASS: gdb.cp/nsusing.exp: print ghx
+PASS: gdb.cp/nsusing.exp: print jx
+PASS: gdb.cp/nsusing.exp: continue to breakpoint: K::marker9
+PASS: gdb.cp/nsusing.exp: print jx
+PASS: gdb.cp/nsusing.exp: continue to breakpoint: marker10 stop
+PASS: gdb.cp/nsusing.exp: print x (from M::x)
+Running ../../../master/gdb/testsuite/gdb.cp/operator.exp ...
+PASS: gdb.cp/operator.exp: global operator
+PASS: gdb.cp/operator.exp: global operator overload
+PASS: gdb.cp/operator.exp: ADL operator
+PASS: gdb.cp/operator.exp: ADL operator overload
+PASS: gdb.cp/operator.exp: Fully qualified explicit operator call
+PASS: gdb.cp/operator.exp: anonymous namespace operator
+PASS: gdb.cp/operator.exp: anonymous namespace operator overload
+PASS: gdb.cp/operator.exp: anonymous namespace operator overload float
+PASS: gdb.cp/operator.exp: imported operator
+PASS: gdb.cp/operator.exp: imported operator overload
+PASS: gdb.cp/operator.exp: imported operator overload float
+PASS: gdb.cp/operator.exp: member operator
+PASS: gdb.cp/operator.exp: member operator overload
+PASS: gdb.cp/operator.exp: namespace alias
+PASS: gdb.cp/operator.exp: imported declaration
+PASS: gdb.cp/operator.exp: p l == 1
+PASS: gdb.cp/operator.exp: p x[0]
+Running ../../../master/gdb/testsuite/gdb.cp/oranking.exp ...
+PASS: gdb.cp/oranking.exp: continue to breakpoint: end of main
+KFAIL: gdb.cp/oranking.exp: p foo0(b) (PRMS: gdb/12096)
+PASS: gdb.cp/oranking.exp: p test1()
+PASS: gdb.cp/oranking.exp: p foo1(b)
+PASS: gdb.cp/oranking.exp: p test2()
+KFAIL: gdb.cp/oranking.exp: p foo2(b) (PRMS: gdb/12098)
+PASS: gdb.cp/oranking.exp: p test3()
+PASS: gdb.cp/oranking.exp: p foo3(1.0f)
+PASS: gdb.cp/oranking.exp: p test4()
+KFAIL: gdb.cp/oranking.exp: p foo4(&a) (PRMS: gdb/12098)
+PASS: gdb.cp/oranking.exp: p test5()
+PASS: gdb.cp/oranking.exp: p foo5(c)
+PASS: gdb.cp/oranking.exp: p test6()
+PASS: gdb.cp/oranking.exp: p foo6(bp)
+PASS: gdb.cp/oranking.exp: p test7()
+PASS: gdb.cp/oranking.exp: p foo7(cp)
+PASS: gdb.cp/oranking.exp: p test8()
+PASS: gdb.cp/oranking.exp: p foo8(co)
+PASS: gdb.cp/oranking.exp: p test9()
+PASS: gdb.cp/oranking.exp: p foo9(co)
+PASS: gdb.cp/oranking.exp: p test10()
+KFAIL: gdb.cp/oranking.exp: p foo10(amp) (PRMS: gdb/12098)
+PASS: gdb.cp/oranking.exp: p test101()
+KFAIL: gdb.cp/oranking.exp: p foo101("abc") (PRMS: gdb/12098)
+PASS: gdb.cp/oranking.exp: p test11()
+KFAIL: gdb.cp/oranking.exp: p foo11(d) (PRMS: gdb/12096)
+PASS: gdb.cp/oranking.exp: p test12()
+PASS: gdb.cp/oranking.exp: p foo12(1)
+PASS: gdb.cp/oranking.exp: p test13()
+KFAIL: gdb.cp/oranking.exp: p foo13(c) (PRMS: gdb/12098)
+PASS: gdb.cp/oranking.exp: p test14()
+KFAIL: gdb.cp/oranking.exp: p foo14(e) (PRMS: gdb/12096)
+Running ../../../master/gdb/testsuite/gdb.cp/overload-const.exp ...
+PASS: gdb.cp/overload-const.exp: set language c++
+PASS: gdb.cp/overload-const.exp: setting breakpoint at myclass::func
+Running ../../../master/gdb/testsuite/gdb.cp/overload.exp ...
+PASS: gdb.cp/overload.exp: up from marker1
+PASS: gdb.cp/overload.exp: print foo_instance1
+PASS: gdb.cp/overload.exp: ptype foo_instance1 (shorter match)
+PASS: gdb.cp/overload.exp: print foo_instance2
+PASS: gdb.cp/overload.exp: print foo_instance3
+PASS: gdb.cp/overload.exp: print call overloaded func 1 arg
+PASS: gdb.cp/overload.exp: re-selected 'main' frame after inferior call
+PASS: gdb.cp/overload.exp: print call overloaded func 2 args
+PASS: gdb.cp/overload.exp: print call overloaded func 3 args
+PASS: gdb.cp/overload.exp: print call overloaded func 4 args
+PASS: gdb.cp/overload.exp: print call overloaded func 5 args
+PASS: gdb.cp/overload.exp: print call overloaded func 6 args
+PASS: gdb.cp/overload.exp: print call overloaded func 7 args
+PASS: gdb.cp/overload.exp: print call overloaded func 8 args
+PASS: gdb.cp/overload.exp: print call overloaded func 9 args
+PASS: gdb.cp/overload.exp: print call overloaded func 10 args
+PASS: gdb.cp/overload.exp: print call overloaded func 11 args
+PASS: gdb.cp/overload.exp: print call overloaded func void arg
+PASS: gdb.cp/overload.exp: print call overloaded func char arg
+PASS: gdb.cp/overload.exp: print call overloaded func signed char arg
+PASS: gdb.cp/overload.exp: print call overloaded func unsigned char arg
+PASS: gdb.cp/overload.exp: print call overloaded func short arg
+PASS: gdb.cp/overload.exp: print call overloaded func unsigned short arg
+PASS: gdb.cp/overload.exp: print call overloaded func int arg
+PASS: gdb.cp/overload.exp: print call overloaded func unsigned int arg
+PASS: gdb.cp/overload.exp: print call overloaded func long arg
+PASS: gdb.cp/overload.exp: print call overloaded func unsigned long arg
+PASS: gdb.cp/overload.exp: print call overloaded func float arg
+PASS: gdb.cp/overload.exp: print call overloaded func double arg
+PASS: gdb.cp/overload.exp: print call overloaded func int\* arg
+PASS: gdb.cp/overload.exp: print call overloaded func char\* arg
+PASS: gdb.cp/overload.exp: print bar(a)
+PASS: gdb.cp/overload.exp: print bar(b)
+PASS: gdb.cp/overload.exp: print bar(c)
+PASS: gdb.cp/overload.exp: print bar(d)
+PASS: gdb.cp/overload.exp: list overloaded function with no args
+PASS: gdb.cp/overload.exp: list overloaded function with int arg
+PASS: gdb.cp/overload.exp: list overloaded function with function ptr args
+PASS: gdb.cp/overload.exp: list overloaded function with function ptr args - quotes around argument
+PASS: gdb.cp/overload.exp: list overload.cc:intToChar
+PASS: gdb.cp/overload.exp: list overload.cc:intToChar(char)
+PASS: gdb.cp/overload.exp: list overload.cc:'intToChar(char)'
+PASS: gdb.cp/overload.exp: list 'overload.cc:intToChar(char)'
+PASS: gdb.cp/overload.exp: list 'overload.cc':intToChar(char)
+PASS: gdb.cp/overload.exp: list 'overload.cc':'intToChar(char)'
+KFAIL: gdb.cp/overload.exp: list overload.cc:foo::overloadfnarg(int) (PRMS: gdb/11289)
+KFAIL: gdb.cp/overload.exp: list overload.cc:'foo::overloadfnarg(int)' (PRMS: gdb/11289)
+PASS: gdb.cp/overload.exp: print overloadNamespace(1)
+PASS: gdb.cp/overload.exp: print overloadNamespace('a')
+PASS: gdb.cp/overload.exp: print overloadNamespace(dummyInstance)
+PASS: gdb.cp/overload.exp: print K::staticoverload ()
+PASS: gdb.cp/overload.exp: print K::staticoverload (2)
+PASS: gdb.cp/overload.exp: print K::staticoverload (2, 3)
+PASS: gdb.cp/overload.exp: print N::nsoverload ()
+PASS: gdb.cp/overload.exp: print N::nsoverload (2)
+PASS: gdb.cp/overload.exp: print N::nsoverload (2, 3)
+PASS: gdb.cp/overload.exp: print overloadNamespace(1) in XXX
+PASS: gdb.cp/overload.exp: print overloadNamespace('a') in XXX
+PASS: gdb.cp/overload.exp: print overloadNamespace(dummyInstance) in XXX
+PASS: gdb.cp/overload.exp: print intToChar(1)
+PASS: gdb.cp/overload.exp: print foo::overload1arg
+PASS: gdb.cp/overload.exp: print foo::overload1arg(char***)
+PASS: gdb.cp/overload.exp: print foo::overload1arg(void)
+PASS: gdb.cp/overload.exp: print foo::overload1arg(char)
+PASS: gdb.cp/overload.exp: print foo::overload1arg(signed char)
+PASS: gdb.cp/overload.exp: print foo::overload1arg(unsigned char)
+PASS: gdb.cp/overload.exp: print foo::overload1arg(short)
+PASS: gdb.cp/overload.exp: print foo::overload1arg(unsigned short)
+PASS: gdb.cp/overload.exp: print foo::overload1arg(int)
+PASS: gdb.cp/overload.exp: print foo::overload1arg(unsigned int)
+PASS: gdb.cp/overload.exp: print foo::overload1arg(long)
+PASS: gdb.cp/overload.exp: print foo::overload1arg(unsigned long)
+PASS: gdb.cp/overload.exp: print foo::overload1arg(float)
+PASS: gdb.cp/overload.exp: print foo::overload1arg(double)
+Running ../../../master/gdb/testsuite/gdb.cp/ovldbreak.exp ...
+PASS: gdb.cp/ovldbreak.exp: set multiple-symbols ask
+PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 12
+PASS: gdb.cp/ovldbreak.exp: set bp 2 on foo::overload1arg 12 line 111
+PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 11
+PASS: gdb.cp/ovldbreak.exp: set bp 3 on foo::overload1arg 11 line 112
+PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 10
+PASS: gdb.cp/ovldbreak.exp: set bp 4 on foo::overload1arg 10 line 113
+PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 9
+PASS: gdb.cp/ovldbreak.exp: set bp 5 on foo::overload1arg 9 line 114
+PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 8
+PASS: gdb.cp/ovldbreak.exp: set bp 6 on foo::overload1arg 8 line 115
+PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 7
+PASS: gdb.cp/ovldbreak.exp: set bp 7 on foo::overload1arg 7 line 116
+PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 6
+PASS: gdb.cp/ovldbreak.exp: set bp 8 on foo::overload1arg 6 line 117
+PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 5
+PASS: gdb.cp/ovldbreak.exp: set bp 9 on foo::overload1arg 5 line 118
+PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 4
+PASS: gdb.cp/ovldbreak.exp: set bp 10 on foo::overload1arg 4 line 119
+PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 3
+PASS: gdb.cp/ovldbreak.exp: set bp 11 on foo::overload1arg 3 line 120
+PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 2
+PASS: gdb.cp/ovldbreak.exp: set bp 12 on foo::overload1arg 2 line 121
+PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice 13
+PASS: gdb.cp/ovldbreak.exp: set bp 13 on foo::overload1arg 13 line 110
+PASS: gdb.cp/ovldbreak.exp: breakpoint info (after setting one-by-one)
+PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice cancel
+PASS: gdb.cp/ovldbreak.exp: set bp on overload1arg canceled
+PASS: gdb.cp/ovldbreak.exp: breakpoint info (after cancel)
+PASS: gdb.cp/ovldbreak.exp: delete all breakpoints
+PASS: gdb.cp/ovldbreak.exp: breakpoint info (after delete)
+PASS: gdb.cp/ovldbreak.exp: bp menu for foo::overload1arg choice all
+PASS: gdb.cp/ovldbreak.exp: set bp on overload1arg all
+PASS: gdb.cp/ovldbreak.exp: breakpoint info (after setting on all)
+PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : (void|)
+PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : char
+PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : signed char
+PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : unsigned char
+PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : short
+PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : unsigned short
+PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : int
+PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : (unsigned|unsigned int)
+PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : long
+PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : unsigned long
+PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : float
+PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : double
+PASS: gdb.cp/ovldbreak.exp: set multiple-symbols cancel
+PASS: gdb.cp/ovldbreak.exp: break foo::foofunc
+PASS: gdb.cp/ovldbreak.exp: set multiple-symbols all
+PASS: gdb.cp/ovldbreak.exp: break foo::foofunc
+PASS: gdb.cp/ovldbreak.exp: continue until exit at finish program
+Running ../../../master/gdb/testsuite/gdb.cp/ovsrch.exp ...
+PASS: gdb.cp/ovsrch.exp: break stop_here
+PASS: gdb.cp/ovsrch.exp: break 'stop_here'
+PASS: gdb.cp/ovsrch.exp: continue to breakpoint: stop_here
+PASS: gdb.cp/ovsrch.exp: break outer::foo (char*) const
+PASS: gdb.cp/ovsrch.exp: break 'outer::foo (char*) const'
+PASS: gdb.cp/ovsrch.exp: break outer::foo (char*) const if (a == 3)
+PASS: gdb.cp/ovsrch.exp: break 'outer::foo (char*) const' if (a == 3)
+PASS: gdb.cp/ovsrch.exp: break outer::foo (char*) const if (A::outer::func ())
+PASS: gdb.cp/ovsrch.exp: break 'outer::foo (char*) const' if (A::outer::func ())
+PASS: gdb.cp/ovsrch.exp: break outer::foo (void) const
+PASS: gdb.cp/ovsrch.exp: break 'outer::foo (void) const'
+PASS: gdb.cp/ovsrch.exp: break outer::foo (int) const
+PASS: gdb.cp/ovsrch.exp: break 'outer::foo (int) const'
+PASS: gdb.cp/ovsrch.exp: break outer::foo (int) const if (a == 3)
+PASS: gdb.cp/ovsrch.exp: break 'outer::foo (int) const' if (a == 3)
+PASS: gdb.cp/ovsrch.exp: break outer::foo (int) const if (A::outer::func ())
+PASS: gdb.cp/ovsrch.exp: break 'outer::foo (int) const' if (A::outer::func ())
+PASS: gdb.cp/ovsrch.exp: break outer::foo if (a == 3)
+PASS: gdb.cp/ovsrch.exp: break B::stop_here_too
+PASS: gdb.cp/ovsrch.exp: break 'B::stop_here_too'
+PASS: gdb.cp/ovsrch.exp: continue to breakpoint: stop_here_too
+PASS: gdb.cp/ovsrch.exp: break inner::foo (char*) const
+PASS: gdb.cp/ovsrch.exp: break 'inner::foo (char*) const'
+PASS: gdb.cp/ovsrch.exp: break inner::foo (char*) const if (a == 3)
+PASS: gdb.cp/ovsrch.exp: break 'inner::foo (char*) const' if (a == 3)
+PASS: gdb.cp/ovsrch.exp: break inner::foo (char*) const if (A::outer::func ())
+PASS: gdb.cp/ovsrch.exp: break 'inner::foo (char*) const' if (A::outer::func ())
+PASS: gdb.cp/ovsrch.exp: break inner::foo (void) const
+PASS: gdb.cp/ovsrch.exp: break 'inner::foo (void) const'
+PASS: gdb.cp/ovsrch.exp: break inner::foo (int) const
+PASS: gdb.cp/ovsrch.exp: break 'inner::foo (int) const'
+PASS: gdb.cp/ovsrch.exp: break inner::foo (int) const if (a == 3)
+PASS: gdb.cp/ovsrch.exp: break 'inner::foo (int) const' if (a == 3)
+PASS: gdb.cp/ovsrch.exp: break inner::foo (int) const if (A::outer::func ())
+PASS: gdb.cp/ovsrch.exp: break 'inner::foo (int) const' if (A::outer::func ())
+PASS: gdb.cp/ovsrch.exp: break inner::foo if (a == 3)
+Running ../../../master/gdb/testsuite/gdb.cp/paren-type.exp ...
+PASS: gdb.cp/paren-type.exp: set breakpoint pending off
+PASS: gdb.cp/paren-type.exp: break C::f(long)
+PASS: gdb.cp/paren-type.exp: break C::f(short)
+Running ../../../master/gdb/testsuite/gdb.cp/pass-by-ref.exp ...
+PASS: gdb.cp/pass-by-ref.exp: call function in obj
+PASS: gdb.cp/pass-by-ref.exp: call function in derived
+PASS: gdb.cp/pass-by-ref.exp: call function in container
+Running ../../../master/gdb/testsuite/gdb.cp/pr-1023.exp ...
+PASS: gdb.cp/pr-1023.exp: break myClass::performBlocking
+PASS: gdb.cp/pr-1023.exp: break myClass::performUnblocking
+Running ../../../master/gdb/testsuite/gdb.cp/pr-1210.exp ...
+PASS: gdb.cp/pr-1210.exp: step past initialization
+PASS: gdb.cp/pr-1210.exp: print *obj
+PASS: gdb.cp/pr-1210.exp: print obj->myB
+Running ../../../master/gdb/testsuite/gdb.cp/pr-574.exp ...
+PASS: gdb.cp/pr-574.exp: continue to breakpoint: end of constructors
+PASS: gdb.cp/pr-574.exp: PR gdb/574
+Running ../../../master/gdb/testsuite/gdb.cp/pr10687.exp ...
+PASS: gdb.cp/pr10687.exp: continue to breakpoint: marker
+PASS: gdb.cp/pr10687.exp: p a
+Running ../../../master/gdb/testsuite/gdb.cp/pr10728.exp ...
+PASS: gdb.cp/pr10728.exp: continue to breakpoint: marker 1
+PASS: gdb.cp/pr10728.exp: print x->y2 - x->y1
+Running ../../../master/gdb/testsuite/gdb.cp/pr12028.exp ...
+PASS: gdb.cp/pr12028.exp: p D::foo(b)
+Running ../../../master/gdb/testsuite/gdb.cp/pr9067.exp ...
+PASS: gdb.cp/pr9067.exp: print b
+Running ../../../master/gdb/testsuite/gdb.cp/pr9167.exp ...
+PASS: gdb.cp/pr9167.exp: continue to breakpoint: marker
+PASS: gdb.cp/pr9167.exp: p b
+Running ../../../master/gdb/testsuite/gdb.cp/pr9631.exp ...
+PASS: gdb.cp/pr9631.exp: continue to breakpoint: after bar tender is initialized
+PASS: gdb.cp/pr9631.exp: print tender
+Running ../../../master/gdb/testsuite/gdb.cp/printmethod.exp ...
+PASS: gdb.cp/printmethod.exp: continue to breakpoint: end of constructors
+PASS: gdb.cp/printmethod.exp: print virtual method.
+PASS: gdb.cp/printmethod.exp: print nonvirtual method.
+Running ../../../master/gdb/testsuite/gdb.cp/psmang.exp ...
+PASS: gdb.cp/psmang.exp: break s::method1
+PASS: gdb.cp/psmang.exp: break s::method2
+Running ../../../master/gdb/testsuite/gdb.cp/psymtab-parameter.exp ...
+PASS: gdb.cp/psymtab-parameter.exp: set language c++
+PASS: gdb.cp/psymtab-parameter.exp: maintenance info symtabs
+PASS: gdb.cp/psymtab-parameter.exp: complete p 'func<short>(
+Running ../../../master/gdb/testsuite/gdb.cp/ptype-cv-cp.exp ...
+PASS: gdb.cp/ptype-cv-cp.exp: whatis v_my_int
+PASS: gdb.cp/ptype-cv-cp.exp: ptype v_my_int
+PASS: gdb.cp/ptype-cv-cp.exp: whatis v_const_my_int
+PASS: gdb.cp/ptype-cv-cp.exp: ptype v_const_my_int
+PASS: gdb.cp/ptype-cv-cp.exp: whatis v_volatile_my_int
+PASS: gdb.cp/ptype-cv-cp.exp: ptype v_volatile_my_int
+PASS: gdb.cp/ptype-cv-cp.exp: whatis v_const_volatile_my_int
+PASS: gdb.cp/ptype-cv-cp.exp: ptype v_const_volatile_my_int
+PASS: gdb.cp/ptype-cv-cp.exp: whatis v_volatile_const_my_int
+KFAIL: gdb.cp/ptype-cv-cp.exp: ptype v_volatile_const_my_int (PRMS: gcc/45997)
+Running ../../../master/gdb/testsuite/gdb.cp/punctuator.exp ...
+PASS: gdb.cp/punctuator.exp: set lang c++
+PASS: gdb.cp/punctuator.exp: print (0x5a5a bitand 0xaaaa) == (0x5a5a & 0xaaaa)
+PASS: gdb.cp/punctuator.exp: print (0x5a5a bitor 0xaaaa) == (0x5a5a | 0xaaaa)
+PASS: gdb.cp/punctuator.exp: print (0x5a5a xor 0xaaaa) == (0x5a5a ^ 0xaaaa)
+PASS: gdb.cp/punctuator.exp: print (0x5a5a and 0xaaaa) == (0x5a5a && 0xaaaa)
+PASS: gdb.cp/punctuator.exp: print (0x5a5a or 0xaaaa) == (0x5a5a || 0xaaaa)
+PASS: gdb.cp/punctuator.exp: print (not not 0xaaaa) == (!!0xaaaa)
+PASS: gdb.cp/punctuator.exp: print (compl 0xaaaa) == (~0xaaaa)
+PASS: gdb.cp/punctuator.exp: set $u 1
+PASS: gdb.cp/punctuator.exp: set $v 1
+PASS: gdb.cp/punctuator.exp: print ($u not_eq 0xaaaa) == ($v != 0xaaaa)
+PASS: gdb.cp/punctuator.exp: print ($u and_eq 0xaaaa) == ($v &= 0xaaaa)
+PASS: gdb.cp/punctuator.exp: set $u 2
+PASS: gdb.cp/punctuator.exp: set $v 2
+PASS: gdb.cp/punctuator.exp: print ($u or_eq 0xaaaa) == ($v |= 0xaaaa)
+PASS: gdb.cp/punctuator.exp: set $u 3
+PASS: gdb.cp/punctuator.exp: set $v 3
+PASS: gdb.cp/punctuator.exp: print ($u xor_eq 0xaaaa) == ($v ^= 0xaaaa)
+Running ../../../master/gdb/testsuite/gdb.cp/re-set-overloaded.exp ...
+PASS: gdb.cp/re-set-overloaded.exp: set breakpoint pending yes
+PASS: gdb.cp/re-set-overloaded.exp: break C::C
+PASS: gdb.cp/re-set-overloaded.exp: set variable $brk = $bpnum
+KFAIL: gdb.cp/re-set-overloaded.exp: start (GDB internal error) (PRMS: breakpoints/11657)
+KFAIL: gdb.cp/re-set-overloaded.exp: breakpoint resolved (PRMS: breakpoints/11657)
+Running ../../../master/gdb/testsuite/gdb.cp/ref-params.exp ...
+PASS: gdb.cp/ref-params.exp: print value of a Child in main
+PASS: gdb.cp/ref-params.exp: print value of f1 on Child in main
+PASS: gdb.cp/ref-params.exp: print value of f2 on Child in main
+PASS: gdb.cp/ref-params.exp: print value of f1 on (Child&) in main
+PASS: gdb.cp/ref-params.exp: print value of f2 on (Child&) in main
+PASS: gdb.cp/ref-params.exp: print value of Child& in f2
+PASS: gdb.cp/ref-params.exp: print value of f1 on Child& in f2
+PASS: gdb.cp/ref-params.exp: print value of Parent& in f1
+PASS: gdb.cp/ref-params.exp: print f1(MQ)
+PASS: gdb.cp/ref-params.exp: print mf1(MQ)
+PASS: gdb.cp/ref-params.exp: print mf2(MQ)
+PASS: gdb.cp/ref-params.exp: print f1(MQR)
+PASS: gdb.cp/ref-params.exp: print mf1(MQR)
+PASS: gdb.cp/ref-params.exp: print mf2(MQR)
+Running ../../../master/gdb/testsuite/gdb.cp/ref-types.exp ...
+PASS: gdb.cp/ref-types.exp: up from marker1 1
+PASS: gdb.cp/ref-types.exp: print value of s
+PASS: gdb.cp/ref-types.exp: ptype s
+PASS: gdb.cp/ref-types.exp: print value of ps
+PASS: gdb.cp/ref-types.exp: ptype ps
+PASS: gdb.cp/ref-types.exp: print value of as[0]
+PASS: gdb.cp/ref-types.exp: ptype as
+PASS: gdb.cp/ref-types.exp: print value of as[1]
+PASS: gdb.cp/ref-types.exp: print value of as[2]
+PASS: gdb.cp/ref-types.exp: print value of as[3]
+PASS: gdb.cp/ref-types.exp: print value of rs
+PASS: gdb.cp/ref-types.exp: ptype rs
+PASS: gdb.cp/ref-types.exp: print value of *rps
+PASS: gdb.cp/ref-types.exp: examine value at rps
+PASS: gdb.cp/ref-types.exp: ptype rps
+PASS: gdb.cp/ref-types.exp: print value of ras[0]
+PASS: gdb.cp/ref-types.exp: ptype ras
+PASS: gdb.cp/ref-types.exp: print value of ras[1]
+PASS: gdb.cp/ref-types.exp: print value of ras[2]
+PASS: gdb.cp/ref-types.exp: print value of ras[3]
+PASS: gdb.cp/ref-types.exp: up from f
+PASS: gdb.cp/ref-types.exp: print value of C
+PASS: gdb.cp/ref-types.exp: ptype C
+PASS: gdb.cp/ref-types.exp: print value of UC
+PASS: gdb.cp/ref-types.exp: ptype UC
+PASS: gdb.cp/ref-types.exp: print value of S
+PASS: gdb.cp/ref-types.exp: ptype S
+PASS: gdb.cp/ref-types.exp: print value of US
+PASS: gdb.cp/ref-types.exp: ptype US
+PASS: gdb.cp/ref-types.exp: print value of I
+PASS: gdb.cp/ref-types.exp: ptype I
+PASS: gdb.cp/ref-types.exp: print value of UI
+PASS: gdb.cp/ref-types.exp: ptype UI
+PASS: gdb.cp/ref-types.exp: print value of L
+PASS: gdb.cp/ref-types.exp: ptype L
+PASS: gdb.cp/ref-types.exp: print value of UL
+PASS: gdb.cp/ref-types.exp: ptype UL
+PASS: gdb.cp/ref-types.exp: print value of F
+PASS: gdb.cp/ref-types.exp: ptype F
+PASS: gdb.cp/ref-types.exp: print value of D
+PASS: gdb.cp/ref-types.exp: ptype D
+PASS: gdb.cp/ref-types.exp: ptype rC
+PASS: gdb.cp/ref-types.exp: ptype rUC
+PASS: gdb.cp/ref-types.exp: ptype rS
+PASS: gdb.cp/ref-types.exp: ptype rUS
+PASS: gdb.cp/ref-types.exp: ptype rI
+PASS: gdb.cp/ref-types.exp: ptype rUI
+PASS: gdb.cp/ref-types.exp: ptype rL
+PASS: gdb.cp/ref-types.exp: ptype rUL
+PASS: gdb.cp/ref-types.exp: ptype rF
+PASS: gdb.cp/ref-types.exp: ptype rD
+PASS: gdb.cp/ref-types.exp: print value of rC
+PASS: gdb.cp/ref-types.exp: print value of rUC
+PASS: gdb.cp/ref-types.exp: print value of rS
+PASS: gdb.cp/ref-types.exp: print value of rUS
+PASS: gdb.cp/ref-types.exp: print value of rI
+PASS: gdb.cp/ref-types.exp: print value of UI
+PASS: gdb.cp/ref-types.exp: print value of rL
+PASS: gdb.cp/ref-types.exp: print value of rUL
+PASS: gdb.cp/ref-types.exp: print value of rF
+PASS: gdb.cp/ref-types.exp: print value of rD
+Running ../../../master/gdb/testsuite/gdb.cp/rtti.exp ...
+PASS: gdb.cp/rtti.exp: continue to breakpoint: end of constructors in main
+PASS: gdb.cp/rtti.exp: print *e1
+PASS: gdb.cp/rtti.exp: print *e2
+PASS: gdb.cp/rtti.exp: continue to breakpoint: end of constructors in func
+PASS: gdb.cp/rtti.exp: print *obj
+PASS: gdb.cp/rtti.exp: continue to breakpoint: end of constructors in func3
+PASS: gdb.cp/rtti.exp: print *obj3
+Running ../../../master/gdb/testsuite/gdb.cp/shadow.exp ...
+PASS: gdb.cp/shadow.exp: continue to breakpoint: marker1
+PASS: gdb.cp/shadow.exp: Print class x shadowing global x
+PASS: gdb.cp/shadow.exp: continue to breakpoint: marker2
+PASS: gdb.cp/shadow.exp: Print local x shadowing class x
+PASS: gdb.cp/shadow.exp: continue to breakpoint: marker3
+PASS: gdb.cp/shadow.exp: Print inner scope x
+PASS: gdb.cp/shadow.exp: continue to breakpoint: marker4
+PASS: gdb.cp/shadow.exp: Print local x not namespace x
+PASS: gdb.cp/shadow.exp: continue to breakpoint: marker5
+PASS: gdb.cp/shadow.exp: Print imported namespace x
+Running ../../../master/gdb/testsuite/gdb.cp/smartp.exp ...
+PASS: gdb.cp/smartp.exp: continue to breakpoint: end of main
+PASS: gdb.cp/smartp.exp: p mp->foo()
+PASS: gdb.cp/smartp.exp: p mtp->foo()
+PASS: gdb.cp/smartp.exp: p mt1.foo()
+PASS: gdb.cp/smartp.exp: p mt4p.a
+PASS: gdb.cp/smartp.exp: p mt4->a
+PASS: gdb.cp/smartp.exp: p sp1->foo()
+PASS: gdb.cp/smartp.exp: p sp2->foo()
+PASS: gdb.cp/smartp.exp: p sp3->foo(1)
+PASS: gdb.cp/smartp.exp: p sp3->foo('a')
+PASS: gdb.cp/smartp.exp: p sp4->a
+PASS: gdb.cp/smartp.exp: p sp4->b
+PASS: gdb.cp/smartp.exp: p mt4p->a
+PASS: gdb.cp/smartp.exp: p mt4p->b
+PASS: gdb.cp/smartp.exp: p mt4->fake
+PASS: gdb.cp/smartp.exp: p mt4->fake()
+PASS: gdb.cp/smartp.exp: p b->foo()
+PASS: gdb.cp/smartp.exp: p c->foo()
+PASS: gdb.cp/smartp.exp: p c->inta
+KFAIL: gdb.cp/smartp.exp: p c2->inta (PRMS: gdb/11606)
+Running ../../../master/gdb/testsuite/gdb.cp/static-method.exp ...
+PASS: gdb.cp/static-method.exp: list static-method.cc:xxx::(anonymous namespace)::func
+PASS: gdb.cp/static-method.exp: list 'static-method.cc:xxx::(anonymous namespace)::func'
+PASS: gdb.cp/static-method.exp: list 'static-method.cc':xxx::(anonymous namespace)::func'
+PASS: gdb.cp/static-method.exp: list static-method.cc:'xxx::(anonymous namespace)::func'
+PASS: gdb.cp/static-method.exp: continue to xxx::(anonymous namespace)::func
+PASS: gdb.cp/static-method.exp: continue to 'xxx::(anonymous namespace)::func'
+PASS: gdb.cp/static-method.exp: list static-method.cc:xxx::(anonymous namespace)::A::func
+PASS: gdb.cp/static-method.exp: list 'static-method.cc:xxx::(anonymous namespace)::A::func'
+PASS: gdb.cp/static-method.exp: list 'static-method.cc':xxx::(anonymous namespace)::A::func'
+PASS: gdb.cp/static-method.exp: list static-method.cc:'xxx::(anonymous namespace)::A::func'
+PASS: gdb.cp/static-method.exp: continue to xxx::(anonymous namespace)::A::func
+PASS: gdb.cp/static-method.exp: continue to 'xxx::(anonymous namespace)::A::func'
+Running ../../../master/gdb/testsuite/gdb.cp/static-print-quit.exp ...
+PASS: gdb.cp/static-print-quit.exp: set width 80
+PASS: gdb.cp/static-print-quit.exp: set height 2
+PASS: gdb.cp/static-print-quit.exp: print c - <return>
+PASS: gdb.cp/static-print-quit.exp: print c - q <return>
+PASS: gdb.cp/static-print-quit.exp: print c - to quit
+PASS: gdb.cp/static-print-quit.exp: q
+PASS: gdb.cp/static-print-quit.exp: set pagination off
+PASS: gdb.cp/static-print-quit.exp: first print
+PASS: gdb.cp/static-print-quit.exp: second print
+Running ../../../master/gdb/testsuite/gdb.cp/temargs.exp ...
+PASS: gdb.cp/temargs.exp: set first breakpoint for temargs
+PASS: gdb.cp/temargs.exp: set second breakpoint for temargs
+PASS: gdb.cp/temargs.exp: set third breakpoint for temargs
+PASS: gdb.cp/temargs.exp: set fourth breakpoint for temargs
+PASS: gdb.cp/temargs.exp: set fifth breakpoint for temargs
+PASS: gdb.cp/temargs.exp: set sixth breakpoint for temargs
+PASS: gdb.cp/temargs.exp: continue to breakpoint: continue to first breakpoint for temargs
+PASS: gdb.cp/temargs.exp: test type of T in base_m
+PASS: gdb.cp/temargs.exp: test value of I in base_m
+PASS: gdb.cp/temargs.exp: test value of P in base_m
+XFAIL: gdb.cp/temargs.exp: test value of MP in base_m
+PASS: gdb.cp/temargs.exp: continue to breakpoint: continue to second breakpoint for temargs
+XFAIL: gdb.cp/temargs.exp: test type of T in inner_m
+XFAIL: gdb.cp/temargs.exp: test value of I in inner_m
+XFAIL: gdb.cp/temargs.exp: test value of P in inner_m
+XFAIL: gdb.cp/temargs.exp: test value of MP in inner_m
+XFAIL: gdb.cp/temargs.exp: test type of Z in inner_m
+PASS: gdb.cp/temargs.exp: continue to breakpoint: continue to third breakpoint for temargs
+PASS: gdb.cp/temargs.exp: test type of T in func
+PASS: gdb.cp/temargs.exp: test value of I in func
+PASS: gdb.cp/temargs.exp: test value of P in func
+XFAIL: gdb.cp/temargs.exp: test value of MP in func
+PASS: gdb.cp/temargs.exp: continue to breakpoint: continue to fourth breakpoint for temargs
+PASS: gdb.cp/temargs.exp: test type of T in templ_m
+PASS: gdb.cp/temargs.exp: test value of I in templ_m
+PASS: gdb.cp/temargs.exp: test value of P in templ_m
+XFAIL: gdb.cp/temargs.exp: test value of MP in templ_m
+PASS: gdb.cp/temargs.exp: test type of Q in templ_m
+PASS: gdb.cp/temargs.exp: continue to breakpoint: continue to fifth breakpoint for temargs
+PASS: gdb.cp/temargs.exp: test type of F in k2_m
+KFAIL: gdb.cp/temargs.exp: test value of F in k2_m (PRMS: gcc/49366)
+PASS: gdb.cp/temargs.exp: continue to breakpoint: continue to sixth breakpoint for temargs
+KFAIL: gdb.cp/temargs.exp: test type of F in k3_m (PRMS: gcc/49546)
+KFAIL: gdb.cp/temargs.exp: test value of F in k3_m (PRMS: gcc/49546)
+Running ../../../master/gdb/testsuite/gdb.cp/templates.exp ...
+PASS: gdb.cp/templates.exp: set multiple-symbols ask
+KFAIL: gdb.cp/templates.exp: ptype T5<int> (PRMS: gdb/1111)
+KFAIL: gdb.cp/templates.exp: ptype T5<int> (PRMS: gdb/1111)
+PASS: gdb.cp/templates.exp: constructor breakpoint
+PASS: gdb.cp/templates.exp: destructor breakpoint
+PASS: gdb.cp/templates.exp: value method breakpoint
+PASS: gdb.cp/templates.exp: breakpoint on a line with no real code
+PASS: gdb.cp/templates.exp: print method of template typedef
+PASS: gdb.cp/templates.exp: print destructor of template typedef
+PASS: gdb.cp/templates.exp: ptype empty
+PASS: gdb.cp/templates.exp: ptype arg
+PASS: gdb.cp/templates.exp: print t5i.value()
+PASS: gdb.cp/templates.exp: b 770
+PASS: gdb.cp/templates.exp: continue to line 770
+PASS: gdb.cp/templates.exp: print fint
+PASS: gdb.cp/templates.exp: print fvpchar
+PASS: gdb.cp/templates.exp: ptype Foo
+PASS: gdb.cp/templates.exp: ptype fint
+PASS: gdb.cp/templates.exp: ptype fchar
+KFAIL: gdb.cp/templates.exp: ptype fvpchar (PRMS: gdb/1512)
+PASS: gdb.cp/templates.exp: print Foo<volatile char *>::foo
+PASS: gdb.cp/templates.exp: print Foo<volatile char*>::foo
+PASS: gdb.cp/templates.exp: ptype Bar
+PASS: gdb.cp/templates.exp: ptype bint
+PASS: gdb.cp/templates.exp: ptype bint2
+PASS: gdb.cp/templates.exp: ptype Baz
+PASS: gdb.cp/templates.exp: ptype bazint
+PASS: gdb.cp/templates.exp: ptype bazint2
+PASS: gdb.cp/templates.exp: ptype Qux
+PASS: gdb.cp/templates.exp: ptype quxint
+PASS: gdb.cp/templates.exp: ptype Spec
+PASS: gdb.cp/templates.exp: ptype siip
+PASS: gdb.cp/templates.exp: ptype Garply<int>
+PASS: gdb.cp/templates.exp: ptype Garply<Garply<char> >
+PASS: gdb.cp/templates.exp: print Garply<Garply<char> >::garply
+PASS: gdb.cp/templates.exp: break Garply<Garply<char> >::garply
+Running ../../../master/gdb/testsuite/gdb.cp/try_catch.exp ...
+PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 1-throw
+PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 1-catch
+PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 2-start
+PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 2-next
+PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 2-throw
+PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 2-catch
+PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 3-throw
+PASS: gdb.cp/try_catch.exp: continue to breakpoint: marker 3-catch
+Running ../../../master/gdb/testsuite/gdb.cp/typedef-operator.exp ...
+PASS: gdb.cp/typedef-operator.exp: set language c++
+PASS: gdb.cp/typedef-operator.exp: test crash
+PASS: gdb.cp/typedef-operator.exp: test typedef
+Running ../../../master/gdb/testsuite/gdb.cp/userdef.exp ...
+PASS: gdb.cp/userdef.exp: break marker1
+PASS: gdb.cp/userdef.exp: continue to marker1
+PASS: gdb.cp/userdef.exp: up from marker1
+PASS: gdb.cp/userdef.exp: print one + two
+PASS: gdb.cp/userdef.exp: re-selected 'main' frame after inferior call
+PASS: gdb.cp/userdef.exp: print one - two
+PASS: gdb.cp/userdef.exp: print one * two
+PASS: gdb.cp/userdef.exp: print one / two
+PASS: gdb.cp/userdef.exp: print one % two
+PASS: gdb.cp/userdef.exp: print one && two
+PASS: gdb.cp/userdef.exp: print one || two
+PASS: gdb.cp/userdef.exp: print one & two
+PASS: gdb.cp/userdef.exp: print one | two
+PASS: gdb.cp/userdef.exp: print one ^ two
+PASS: gdb.cp/userdef.exp: print one < two
+PASS: gdb.cp/userdef.exp: print one <= two
+PASS: gdb.cp/userdef.exp: print one > two
+PASS: gdb.cp/userdef.exp: print one >= two
+PASS: gdb.cp/userdef.exp: print one == two
+PASS: gdb.cp/userdef.exp: print one.operator== (two)
+PASS: gdb.cp/userdef.exp: print one != two
+PASS: gdb.cp/userdef.exp: print one << 31
+PASS: gdb.cp/userdef.exp: print one >> 31
+PASS: gdb.cp/userdef.exp: print !one
+PASS: gdb.cp/userdef.exp: print +one
+PASS: gdb.cp/userdef.exp: print ~one
+PASS: gdb.cp/userdef.exp: print -one
+PASS: gdb.cp/userdef.exp: print one++
+PASS: gdb.cp/userdef.exp: print ++one
+PASS: gdb.cp/userdef.exp: print one--
+PASS: gdb.cp/userdef.exp: print --one
+PASS: gdb.cp/userdef.exp: print one += 7
+PASS: gdb.cp/userdef.exp: print two = one
+PASS: gdb.cp/userdef.exp: break A2::'operator+'
+PASS: gdb.cp/userdef.exp: break A2::'operator +'
+PASS: gdb.cp/userdef.exp: print c
+PASS: gdb.cp/userdef.exp: print *c
+PASS: gdb.cp/userdef.exp: print &*c
+PASS: gdb.cp/userdef.exp: ptype &*c
+PASS: gdb.cp/userdef.exp: print operator== (mem1, mem2)
+PASS: gdb.cp/userdef.exp: print operator== (mem1, mem1)
+Running ../../../master/gdb/testsuite/gdb.cp/virtbase.exp ...
+PASS: gdb.cp/virtbase.exp: continue to breakpoint: first breakpoint
+PASS: gdb.cp/virtbase.exp: print *this
+PASS: gdb.cp/virtbase.exp: print x in get_y
+PASS: gdb.cp/virtbase.exp: continue to breakpoint: second breakpoint
+PASS: gdb.cp/virtbase.exp: print x in get_z
+PASS: gdb.cp/virtbase.exp: continue to breakpoint: third breakpoint
+PASS: gdb.cp/virtbase.exp: print *(D *) e
+PASS: gdb.cp/virtbase.exp: set print object on
+PASS: gdb.cp/virtbase.exp: print/x b->mA
+PASS: gdb.cp/virtbase.exp: print rtti_data
+PASS: gdb.cp/virtbase.exp: print pointer to virtual base at non-zero offset of larger object
+PASS: gdb.cp/virtbase.exp: print same pointer from history value
+PASS: gdb.cp/virtbase.exp: print whole pointed-to object, starting from the virtual base pointer
+Running ../../../master/gdb/testsuite/gdb.cp/virtfunc.exp ...
+PASS: gdb.cp/virtfunc.exp: ptype VA
+PASS: gdb.cp/virtfunc.exp: ptype VB
+PASS: gdb.cp/virtfunc.exp: ptype V
+PASS: gdb.cp/virtfunc.exp: ptype A
+PASS: gdb.cp/virtfunc.exp: ptype B
+PASS: gdb.cp/virtfunc.exp: ptype C
+PASS: gdb.cp/virtfunc.exp: ptype AD
+PASS: gdb.cp/virtfunc.exp: ptype D
+PASS: gdb.cp/virtfunc.exp: ptype E
+PASS: gdb.cp/virtfunc.exp: ptype dd
+PASS: gdb.cp/virtfunc.exp: ptype ppd
+PASS: gdb.cp/virtfunc.exp: ptype pAd
+PASS: gdb.cp/virtfunc.exp: ptype a
+PASS: gdb.cp/virtfunc.exp: ptype b
+PASS: gdb.cp/virtfunc.exp: ptype c
+PASS: gdb.cp/virtfunc.exp: ptype d
+PASS: gdb.cp/virtfunc.exp: ptype e
+PASS: gdb.cp/virtfunc.exp: ptype v
+PASS: gdb.cp/virtfunc.exp: ptype vb
+PASS: gdb.cp/virtfunc.exp: ptype pAa
+PASS: gdb.cp/virtfunc.exp: ptype pAe
+PASS: gdb.cp/virtfunc.exp: ptype pBe
+PASS: gdb.cp/virtfunc.exp: ptype pDd
+PASS: gdb.cp/virtfunc.exp: ptype pDe
+PASS: gdb.cp/virtfunc.exp: ptype pVa
+PASS: gdb.cp/virtfunc.exp: ptype pVv
+PASS: gdb.cp/virtfunc.exp: ptype pVe
+PASS: gdb.cp/virtfunc.exp: ptype pVd
+PASS: gdb.cp/virtfunc.exp: ptype pADe
+PASS: gdb.cp/virtfunc.exp: ptype pEe
+PASS: gdb.cp/virtfunc.exp: ptype pVB
+PASS: gdb.cp/virtfunc.exp: print pAe->f()
+PASS: gdb.cp/virtfunc.exp: print pAa->f()
+PASS: gdb.cp/virtfunc.exp: print pDe->vg()
+PASS: gdb.cp/virtfunc.exp: print pADe->vg()
+PASS: gdb.cp/virtfunc.exp: print pDd->vg()
+PASS: gdb.cp/virtfunc.exp: print pEe->vvb()
+PASS: gdb.cp/virtfunc.exp: print pVB->vvb()
+PASS: gdb.cp/virtfunc.exp: print pBe->vvb()
+PASS: gdb.cp/virtfunc.exp: print pDe->vvb()
+PASS: gdb.cp/virtfunc.exp: print pEe->vd()
+PASS: gdb.cp/virtfunc.exp: print pEe->fvb()
+KFAIL: gdb.cp/virtfunc.exp: print pEe->D::vg() (PRMS: gdb/1064)
+PASS: gdb.cp/virtfunc.exp: next to pAa->f call
+PASS: gdb.cp/virtfunc.exp: next to pDe->vg call
+PASS: gdb.cp/virtfunc.exp: step through thunk into E::vg
+Running ../../../master/gdb/testsuite/gdb.cp/virtfunc2.exp ...
+PASS: gdb.cp/virtfunc2.exp: continue to breakpoint: marker 1
+PASS: gdb.cp/virtfunc2.exp: print o.do_print()
+PASS: gdb.cp/virtfunc2.exp: print o.do_print3()
+PASS: gdb.cp/virtfunc2.exp: print o2.do_print()
+PASS: gdb.cp/virtfunc2.exp: print o2.do_print2()
+PASS: gdb.cp/virtfunc2.exp: print o2.do_print3()
+Running ../../../master/gdb/testsuite/gdb.disasm/am33.exp ...
+Running ../../../master/gdb/testsuite/gdb.disasm/h8300s.exp ...
+Running ../../../master/gdb/testsuite/gdb.disasm/hppa.exp ...
+Running ../../../master/gdb/testsuite/gdb.disasm/mn10300.exp ...
+Running ../../../master/gdb/testsuite/gdb.disasm/sh3.exp ...
+Running ../../../master/gdb/testsuite/gdb.disasm/t01_mov.exp ...
+Running ../../../master/gdb/testsuite/gdb.disasm/t02_mova.exp ...
+Running ../../../master/gdb/testsuite/gdb.disasm/t03_add.exp ...
+Running ../../../master/gdb/testsuite/gdb.disasm/t04_sub.exp ...
+Running ../../../master/gdb/testsuite/gdb.disasm/t05_cmp.exp ...
+Running ../../../master/gdb/testsuite/gdb.disasm/t06_ari2.exp ...
+Running ../../../master/gdb/testsuite/gdb.disasm/t07_ari3.exp ...
+Running ../../../master/gdb/testsuite/gdb.disasm/t08_or.exp ...
+Running ../../../master/gdb/testsuite/gdb.disasm/t09_xor.exp ...
+Running ../../../master/gdb/testsuite/gdb.disasm/t10_and.exp ...
+Running ../../../master/gdb/testsuite/gdb.disasm/t11_logs.exp ...
+Running ../../../master/gdb/testsuite/gdb.disasm/t12_bit.exp ...
+Running ../../../master/gdb/testsuite/gdb.disasm/t13_otr.exp ...
+Running ../../../master/gdb/testsuite/gdb.dwarf2/callframecfa.exp ...
+PASS: gdb.dwarf2/callframecfa.exp: set breakpoint for call-frame-cfa
+PASS: gdb.dwarf2/callframecfa.exp: continue to breakpoint: continue to breakpoint for call-frame-cfa
+PASS: gdb.dwarf2/callframecfa.exp: set display for call-frame-cfa
+PASS: gdb.dwarf2/callframecfa.exp: step 1 for call-frame-cfa
+PASS: gdb.dwarf2/callframecfa.exp: step 2 for call-frame-cfa
+PASS: gdb.dwarf2/callframecfa.exp: step 3 for call-frame-cfa
+PASS: gdb.dwarf2/callframecfa.exp: step 4 for call-frame-cfa
+Running ../../../master/gdb/testsuite/gdb.dwarf2/clztest.exp ...
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dup-psym.exp ...
+PASS: gdb.dwarf2/dup-psym.exp: info sources should contain only one reference to file1.txt
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-ada-ffffffff.exp ...
+PASS: gdb.dwarf2/dw2-ada-ffffffff.exp: p sizeof (t)
+PASS: gdb.dwarf2/dw2-ada-ffffffff.exp: ptype t
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-anonymous-func.exp ...
+PASS: gdb.dwarf2/dw2-anonymous-func.exp: list file1.txt
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-bad-parameter-type.exp ...
+PASS: gdb.dwarf2/dw2-bad-parameter-type.exp: ptype f
+PASS: gdb.dwarf2/dw2-bad-parameter-type.exp: ptype f
+PASS: gdb.dwarf2/dw2-bad-parameter-type.exp: is alive
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-basic.exp ...
+PASS: gdb.dwarf2/dw2-basic.exp: set listsize 1
+PASS: gdb.dwarf2/dw2-basic.exp: list func_cu1
+PASS: gdb.dwarf2/dw2-basic.exp: ptype func_cu1
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.exp ...
+PASS: gdb.dwarf2/dw2-case-insensitive.exp: show case-sensitive
+PASS: gdb.dwarf2/dw2-case-insensitive.exp: regexp case-sensitive on
+PASS: gdb.dwarf2/dw2-case-insensitive.exp: set case-sensitive off
+PASS: gdb.dwarf2/dw2-case-insensitive.exp: regexp case-sensitive off
+PASS: gdb.dwarf2/dw2-case-insensitive.exp: p fuNC_lang
+PASS: gdb.dwarf2/dw2-case-insensitive.exp: p fuNC_symtab
+PASS: gdb.dwarf2/dw2-case-insensitive.exp: setting breakpoint at fuNC_lang
+PASS: gdb.dwarf2/dw2-case-insensitive.exp: setting breakpoint at fuNC_symtab
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-compressed.exp ...
+PASS: gdb.dwarf2/dw2-compressed.exp: set listsize 1
+PASS: gdb.dwarf2/dw2-compressed.exp: list func_cu1
+PASS: gdb.dwarf2/dw2-compressed.exp: ptype func_cu1
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-const.exp ...
+PASS: gdb.dwarf2/dw2-const.exp: print twelve
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static.exp ...
+PASS: gdb.dwarf2/dw2-cp-infcall-ref-static.exp: set language c++
+PASS: gdb.dwarf2/dw2-cp-infcall-ref-static.exp: set cp-abi gnu-v3
+PASS: gdb.dwarf2/dw2-cp-infcall-ref-static.exp: p f()
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-cu-size.exp ...
+PASS: gdb.dwarf2/dw2-cu-size.exp: ptype noloc
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-double-set-die-type.exp ...
+PASS: gdb.dwarf2/dw2-double-set-die-type.exp: ptype a
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-empty-namespace.exp ...
+PASS: gdb.dwarf2/dw2-empty-namespace.exp: ptype var
+PASS: gdb.dwarf2/dw2-empty-namespace.exp: p var
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-empty-pc-range.exp ...
+PASS: gdb.dwarf2/dw2-empty-pc-range.exp: empty range before CU load
+PASS: gdb.dwarf2/dw2-empty-pc-range.exp: valid range after CU load
+PASS: gdb.dwarf2/dw2-empty-pc-range.exp: empty range after CU load
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-entry-value.exp ...
+PASS: gdb.dwarf2/dw2-entry-value.exp: <optimized out> is printed
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-filename.exp ...
+PASS: gdb.dwarf2/dw2-filename.exp: interpreter-exec mi -file-list-exec-source-files
+PASS: gdb.dwarf2/dw2-filename.exp: info sources
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-inheritance.exp ...
+PASS: gdb.dwarf2/dw2-inheritance.exp: ptype inherited
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-inline-param.exp ...
+PASS: gdb.dwarf2/dw2-inline-param.exp: info addr break_at
+PASS: gdb.dwarf2/dw2-inline-param.exp: bt
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-intercu.exp ...
+PASS: gdb.dwarf2/dw2-intercu.exp: set listsize 1
+PASS: gdb.dwarf2/dw2-intercu.exp: list func_cu1
+PASS: gdb.dwarf2/dw2-intercu.exp: ptype func_cu1
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-intermix.exp ...
+PASS: gdb.dwarf2/dw2-intermix.exp: set listsize 1
+PASS: gdb.dwarf2/dw2-intermix.exp: list func_cu1
+PASS: gdb.dwarf2/dw2-intermix.exp: ptype func_cu1
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-linkage-name-trust.exp ...
+PASS: gdb.dwarf2/dw2-linkage-name-trust.exp: set language c++
+PASS: gdb.dwarf2/dw2-linkage-name-trust.exp: set cp-abi gnu-v3
+PASS: gdb.dwarf2/dw2-linkage-name-trust.exp: p c.membername
+PASS: gdb.dwarf2/dw2-linkage-name-trust.exp: p c.membername ()
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-modula2-self-type.exp ...
+PASS: gdb.dwarf2/dw2-modula2-self-type.exp: set language modula-2
+PASS: gdb.dwarf2/dw2-modula2-self-type.exp: ptype v
+PASS: gdb.dwarf2/dw2-modula2-self-type.exp: alive
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-noloc.exp ...
+PASS: gdb.dwarf2/dw2-noloc.exp: no-run: print file_locaddr_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: no-run: ptype file_locaddr_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: no-run: print file_locaddr_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: no-run: ptype file_locaddr_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: no-run: print file_locempty_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: no-run: ptype file_locempty_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: no-run: print file_locempty_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: no-run: ptype file_locempty_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: no-run: print file_locno_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: no-run: ptype file_locno_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: no-run: print file_locno_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: no-run: ptype file_locno_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: no-run: print file_extern_locaddr_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: no-run: ptype file_extern_locaddr_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: no-run: print file_extern_locaddr_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: no-run: ptype file_extern_locaddr_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: no-run: print file_extern_locempty_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: no-run: ptype file_extern_locempty_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: no-run: print file_extern_locempty_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: no-run: ptype file_extern_locempty_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: no-run: print file_extern_locno_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: no-run: ptype file_extern_locno_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: in-main: print file_locaddr_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: in-main: ptype file_locaddr_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: in-main: print file_locaddr_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: in-main: ptype file_locaddr_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: in-main: print file_locempty_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: in-main: ptype file_locempty_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: in-main: print file_locempty_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: in-main: ptype file_locempty_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: in-main: print file_locno_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: in-main: ptype file_locno_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: in-main: print file_locno_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: in-main: ptype file_locno_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: in-main: print file_extern_locaddr_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: in-main: ptype file_extern_locaddr_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: in-main: print file_extern_locaddr_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: in-main: ptype file_extern_locaddr_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: in-main: print file_extern_locempty_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: in-main: ptype file_extern_locempty_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: in-main: print file_extern_locempty_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: in-main: ptype file_extern_locempty_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: in-main: print file_extern_locno_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: in-main: ptype file_extern_locno_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: print main_local_locaddr_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: ptype main_local_locaddr_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: print main_local_locaddr_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: ptype main_local_locaddr_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: print main_local_locempty_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: ptype main_local_locempty_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: print main_local_locempty_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: ptype main_local_locempty_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: print main_local_locno_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: ptype main_local_locno_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: print main_local_locno_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: ptype main_local_locno_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: print main_extern_locaddr_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: ptype main_extern_locaddr_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: print main_extern_locaddr_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: ptype main_extern_locaddr_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: print main_extern_locempty_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: ptype main_extern_locempty_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: print main_extern_locempty_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: ptype main_extern_locempty_unresolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: print main_extern_locno_resolvable
+PASS: gdb.dwarf2/dw2-noloc.exp: ptype main_extern_locno_resolvable
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-op-call.exp ...
+PASS: gdb.dwarf2/dw2-op-call.exp: p array1
+PASS: gdb.dwarf2/dw2-op-call.exp: array2 using DW_OP_call2
+PASS: gdb.dwarf2/dw2-op-call.exp: array3 using DW_OP_call4
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-producer.exp ...
+PASS: gdb.dwarf2/dw2-producer.exp: set listsize 1
+PASS: gdb.dwarf2/dw2-producer.exp: list func_cu1
+PASS: gdb.dwarf2/dw2-producer.exp: ptype func_cu1
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-ranges.exp ...
+PASS: gdb.dwarf2/dw2-ranges.exp: info line main
+PASS: gdb.dwarf2/dw2-ranges.exp: info line func
+PASS: gdb.dwarf2/dw2-ranges.exp: info line main2
+PASS: gdb.dwarf2/dw2-ranges.exp: info line func2
+PASS: gdb.dwarf2/dw2-ranges.exp: info line main3
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame.exp ...
+PASS: gdb.dwarf2/dw2-ref-missing-frame.exp: func_nofb print
+PASS: gdb.dwarf2/dw2-ref-missing-frame.exp: func_nofb backtrace
+PASS: gdb.dwarf2/dw2-ref-missing-frame.exp: func_loopfb print
+PASS: gdb.dwarf2/dw2-ref-missing-frame.exp: func_loopfb backtrace
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-restore.exp ...
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.exp ...
+PASS: gdb.dwarf2/dw2-skip-prologue.exp: strip stub symbols
+PASS: gdb.dwarf2/dw2-skip-prologue.exp: continue to breakpoint: func
+PASS: gdb.dwarf2/dw2-skip-prologue.exp: 2 locations found
+PASS: gdb.dwarf2/dw2-skip-prologue.exp: no statement got executed
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-stack-boundary.exp ...
+PASS: gdb.dwarf2/dw2-stack-boundary.exp: set complaints 100
+PASS: gdb.dwarf2/dw2-stack-boundary.exp: check partial symtab errors
+PASS: gdb.dwarf2/dw2-stack-boundary.exp: p underflow
+PASS: gdb.dwarf2/dw2-stack-boundary.exp: p overflow
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-strp.exp ...
+PASS: gdb.dwarf2/dw2-strp.exp: p a_string
+PASS: gdb.dwarf2/dw2-strp.exp: ptype a_string
+PASS: gdb.dwarf2/dw2-strp.exp: p a_string2
+PASS: gdb.dwarf2/dw2-strp.exp: ptype a_string2
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw2-unresolved.exp ...
+PASS: gdb.dwarf2/dw2-unresolved.exp: continue to breakpoint: *extern_block_start
+PASS: gdb.dwarf2/dw2-unresolved.exp: print/d var
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw4-sig-type-unused.exp ...
+PASS: gdb.dwarf2/dw4-sig-type-unused.exp: alive
+Running ../../../master/gdb/testsuite/gdb.dwarf2/dw4-sig-types.exp ...
+PASS: gdb.dwarf2/dw4-sig-types.exp: maint set dwarf2 max-cache-age 0
+PASS: gdb.dwarf2/dw4-sig-types.exp: p myset
+PASS: gdb.dwarf2/dw4-sig-types.exp: continue to foo
+Running ../../../master/gdb/testsuite/gdb.dwarf2/implptr.exp ...
+PASS: gdb.dwarf2/implptr.exp: set bar breakpoint for implptr
+PASS: gdb.dwarf2/implptr.exp: continue to breakpoint: continue to bar breakpoint for implptr
+PASS: gdb.dwarf2/implptr.exp: print j in implptr:bar
+PASS: gdb.dwarf2/implptr.exp: print *j in implptr:bar
+PASS: gdb.dwarf2/implptr.exp: print **k in implptr:bar
+PASS: gdb.dwarf2/implptr.exp: print ***l in implptr:bar
+PASS: gdb.dwarf2/implptr.exp: set foo breakpoint for implptr
+PASS: gdb.dwarf2/implptr.exp: continue to breakpoint: continue to foo breakpoint for implptr
+PASS: gdb.dwarf2/implptr.exp: print p[0].x in implptr:foo
+PASS: gdb.dwarf2/implptr.exp: print *p[0].x in implptr:foo
+PASS: gdb.dwarf2/implptr.exp: print byte inside *p[0].x in implptr:foo
+PASS: gdb.dwarf2/implptr.exp: print invalid offset from *p[0].x in implptr:foo
+PASS: gdb.dwarf2/implptr.exp: print j in implptr:foo
+Running ../../../master/gdb/testsuite/gdb.dwarf2/mac-fileno.exp ...
+PASS: gdb.dwarf2/mac-fileno.exp: set listsize 1
+PASS: gdb.dwarf2/mac-fileno.exp: list func_cu1
+PASS: gdb.dwarf2/mac-fileno.exp: ptype func_cu1
+Running ../../../master/gdb/testsuite/gdb.dwarf2/member-ptr-forwardref.exp ...
+PASS: gdb.dwarf2/member-ptr-forwardref.exp: set cp-abi gnu-v3
+PASS: gdb.dwarf2/member-ptr-forwardref.exp: show cp-abi
+PASS: gdb.dwarf2/member-ptr-forwardref.exp: ptype c
+Running ../../../master/gdb/testsuite/gdb.dwarf2/pieces.exp ...
+PASS: gdb.dwarf2/pieces.exp: set f1 breakpoint for pieces
+PASS: gdb.dwarf2/pieces.exp: continue to breakpoint: continue to f1 breakpoint for pieces
+PASS: gdb.dwarf2/pieces.exp: print a in pieces:f1
+PASS: gdb.dwarf2/pieces.exp: print a.j in pieces:f1
+PASS: gdb.dwarf2/pieces.exp: set f2 breakpoint for pieces
+PASS: gdb.dwarf2/pieces.exp: continue to breakpoint: continue to f2 breakpoint for pieces
+PASS: gdb.dwarf2/pieces.exp: print a in pieces:f2
+PASS: gdb.dwarf2/pieces.exp: print a[0] in pieces:f2
+PASS: gdb.dwarf2/pieces.exp: print a[1] in pieces:f2
+PASS: gdb.dwarf2/pieces.exp: set f3 breakpoint for pieces
+PASS: gdb.dwarf2/pieces.exp: continue to breakpoint: continue to f3 breakpoint for pieces
+PASS: gdb.dwarf2/pieces.exp: print a.i in pieces:f3
+PASS: gdb.dwarf2/pieces.exp: print a.j in pieces:f3
+PASS: gdb.dwarf2/pieces.exp: set a.i in pieces:f3
+PASS: gdb.dwarf2/pieces.exp: print new a.i in pieces:f3
+PASS: gdb.dwarf2/pieces.exp: set f6 breakpoint for pieces
+PASS: gdb.dwarf2/pieces.exp: continue to breakpoint: continue to f6 breakpoint for pieces
+PASS: gdb.dwarf2/pieces.exp: print a with optimized out piece
+PASS: gdb.dwarf2/pieces.exp: print a.i with optimized out piece
+Running ../../../master/gdb/testsuite/gdb.dwarf2/pr10770.exp ...
+PASS: gdb.dwarf2/pr10770.exp: set breakpoint for pr10770
+PASS: gdb.dwarf2/pr10770.exp: cont
+PASS: gdb.dwarf2/pr10770.exp: frame 2
+Running ../../../master/gdb/testsuite/gdb.dwarf2/pr11465.exp ...
+PASS: gdb.dwarf2/pr11465.exp: p N::c.C
+Running ../../../master/gdb/testsuite/gdb.dwarf2/typeddwarf.exp ...
+PASS: gdb.dwarf2/typeddwarf.exp: set breakpoint at typeddwarf.c:29
+PASS: gdb.dwarf2/typeddwarf.exp: continue to breakpoint: continue to typeddwarf.c:29
+PASS: gdb.dwarf2/typeddwarf.exp: check value of j at typeddwarf.c:29
+PASS: gdb.dwarf2/typeddwarf.exp: check value of l at typeddwarf.c:29
+PASS: gdb.dwarf2/typeddwarf.exp: check value of m at typeddwarf.c:29
+PASS: gdb.dwarf2/typeddwarf.exp: check value of n at typeddwarf.c:29
+PASS: gdb.dwarf2/typeddwarf.exp: check value of o at typeddwarf.c:29
+PASS: gdb.dwarf2/typeddwarf.exp: check value of p at typeddwarf.c:29
+PASS: gdb.dwarf2/typeddwarf.exp: check value of q at typeddwarf.c:29
+PASS: gdb.dwarf2/typeddwarf.exp: check value of r at typeddwarf.c:29
+PASS: gdb.dwarf2/typeddwarf.exp: check value of s at typeddwarf.c:29
+PASS: gdb.dwarf2/typeddwarf.exp: check value of t at typeddwarf.c:29
+PASS: gdb.dwarf2/typeddwarf.exp: check value of u at typeddwarf.c:29
+PASS: gdb.dwarf2/typeddwarf.exp: check value of v at typeddwarf.c:29
+PASS: gdb.dwarf2/typeddwarf.exp: check value of w at typeddwarf.c:29
+PASS: gdb.dwarf2/typeddwarf.exp: check value of x at typeddwarf.c:29
+PASS: gdb.dwarf2/typeddwarf.exp: check value of y at typeddwarf.c:29
+PASS: gdb.dwarf2/typeddwarf.exp: check value of z at typeddwarf.c:29
+PASS: gdb.dwarf2/typeddwarf.exp: set breakpoint at typeddwarf.c:53
+PASS: gdb.dwarf2/typeddwarf.exp: continue to breakpoint: continue to typeddwarf.c:53
+PASS: gdb.dwarf2/typeddwarf.exp: check value of j at typeddwarf.c:53
+PASS: gdb.dwarf2/typeddwarf.exp: check value of l at typeddwarf.c:53
+PASS: gdb.dwarf2/typeddwarf.exp: check value of m at typeddwarf.c:53
+PASS: gdb.dwarf2/typeddwarf.exp: check value of p at typeddwarf.c:53
+PASS: gdb.dwarf2/typeddwarf.exp: check value of q at typeddwarf.c:53
+PASS: gdb.dwarf2/typeddwarf.exp: check value of r at typeddwarf.c:53
+PASS: gdb.dwarf2/typeddwarf.exp: check value of s at typeddwarf.c:53
+PASS: gdb.dwarf2/typeddwarf.exp: check value of t at typeddwarf.c:53
+PASS: gdb.dwarf2/typeddwarf.exp: check value of u at typeddwarf.c:53
+PASS: gdb.dwarf2/typeddwarf.exp: check value of v at typeddwarf.c:53
+PASS: gdb.dwarf2/typeddwarf.exp: check value of w at typeddwarf.c:53
+PASS: gdb.dwarf2/typeddwarf.exp: check value of x at typeddwarf.c:53
+PASS: gdb.dwarf2/typeddwarf.exp: check value of y at typeddwarf.c:53
+PASS: gdb.dwarf2/typeddwarf.exp: check value of z at typeddwarf.c:53
+PASS: gdb.dwarf2/typeddwarf.exp: set breakpoint at typeddwarf.c:73
+PASS: gdb.dwarf2/typeddwarf.exp: continue to breakpoint: continue to typeddwarf.c:73
+PASS: gdb.dwarf2/typeddwarf.exp: check value of w at typeddwarf.c:73
+PASS: gdb.dwarf2/typeddwarf.exp: check value of x at typeddwarf.c:73
+PASS: gdb.dwarf2/typeddwarf.exp: check value of y at typeddwarf.c:73
+PASS: gdb.dwarf2/typeddwarf.exp: check value of z at typeddwarf.c:73
+Running ../../../master/gdb/testsuite/gdb.dwarf2/valop.exp ...
+PASS: gdb.dwarf2/valop.exp: set breakpoint for valop
+PASS: gdb.dwarf2/valop.exp: continue to breakpoint: continue to breakpoint for valop
+PASS: gdb.dwarf2/valop.exp: print uses_stack_op
+PASS: gdb.dwarf2/valop.exp: print uses_lit_op
+Running ../../../master/gdb/testsuite/gdb.dwarf2/watch-notconst.exp ...
+PASS: gdb.dwarf2/watch-notconst.exp: watch x
+Running ../../../master/gdb/testsuite/gdb.fortran/array-element.exp ...
+gdb compile failed, default_target_compile: Can't find gfortran.
+Running ../../../master/gdb/testsuite/gdb.fortran/charset.exp ...
+gdb compile failed, default_target_compile: Can't find gfortran.
+UNTESTED: gdb.fortran/charset.exp: charset.exp
+Running ../../../master/gdb/testsuite/gdb.fortran/complex.exp ...
+UNTESTED: gdb.fortran/complex.exp: Couldn't compile complex.f
+Running ../../../master/gdb/testsuite/gdb.fortran/derived-type.exp ...
+gdb compile failed, default_target_compile: Can't find gfortran.
+Running ../../../master/gdb/testsuite/gdb.fortran/exprs.exp ...
+PASS: gdb.fortran/exprs.exp: set print sevenbit-strings
+PASS: gdb.fortran/exprs.exp: set language fortran
+PASS: gdb.fortran/exprs.exp: set language to "fortran"
+PASS: gdb.fortran/exprs.exp: Set value-history[1] using $1
+PASS: gdb.fortran/exprs.exp: Set value-history[2] using $2
+PASS: gdb.fortran/exprs.exp: Set value-history[3] using $3
+PASS: gdb.fortran/exprs.exp: Print value-history[MAX-1] using inplicit index $$
+PASS: gdb.fortran/exprs.exp: Print value-history[MAX-1] again using implicit index $$
+PASS: gdb.fortran/exprs.exp: Print value-history[MAX] using implicit index $
+PASS: gdb.fortran/exprs.exp: Print value-history[MAX-2] using explicit index $$2
+PASS: gdb.fortran/exprs.exp: Print value-history[MAX] using explicit index $0
+PASS: gdb.fortran/exprs.exp: Print value-history[MAX] using explicit index $$0
+PASS: gdb.fortran/exprs.exp: Print value-history[1] using explicit index $1
+PASS: gdb.fortran/exprs.exp: Print value-history[2] using explicit index $2
+PASS: gdb.fortran/exprs.exp: Print value-history[3] using explicit index $3
+PASS: gdb.fortran/exprs.exp: Print (value-history[MAX] - 3) using implicit index $
+PASS: gdb.fortran/exprs.exp: Use value-history element in arithmetic expression
+PASS: gdb.fortran/exprs.exp: Set a new convenience variable
+PASS: gdb.fortran/exprs.exp: Print contents of new convenience variable
+PASS: gdb.fortran/exprs.exp: Set convenience variable to a new value
+PASS: gdb.fortran/exprs.exp: Print new contents of convenience variable
+PASS: gdb.fortran/exprs.exp: Set convenience variable $_
+PASS: gdb.fortran/exprs.exp: Print contents of convenience variable $_
+PASS: gdb.fortran/exprs.exp: Use convenience variable in arithmetic expression
+PASS: gdb.fortran/exprs.exp: Use convenience variable assignment in arithmetic expression
+PASS: gdb.fortran/exprs.exp: Print contents of uninitialized convenience variable
+PASS: gdb.fortran/exprs.exp: p 123
+PASS: gdb.fortran/exprs.exp: p -123
+PASS: gdb.fortran/exprs.exp: reject p _
+PASS: gdb.fortran/exprs.exp: p .TRUE.
+PASS: gdb.fortran/exprs.exp: p .FALSE.
+PASS: gdb.fortran/exprs.exp: p 'a'
+PASS: gdb.fortran/exprs.exp: p 'abcdefg'(2:4)
+PASS: gdb.fortran/exprs.exp: p 'abcdefg'(:3)
+PASS: gdb.fortran/exprs.exp: p 'abcdefg'(5:)
+PASS: gdb.fortran/exprs.exp: p 'abcdefg'(:)
+PASS: gdb.fortran/exprs.exp: p .44 .LT. .45
+PASS: gdb.fortran/exprs.exp: p .44 .GT. .45
+PASS: gdb.fortran/exprs.exp: p 0.44 .LT. 0.45
+PASS: gdb.fortran/exprs.exp: p 0.44 .GT. 0.45
+PASS: gdb.fortran/exprs.exp: p 44. .LT. 45.
+PASS: gdb.fortran/exprs.exp: p 44. .GT. 45.
+PASS: gdb.fortran/exprs.exp: p 44.0 .LT. 45.0
+PASS: gdb.fortran/exprs.exp: p 44.0 .GT. 45.0
+PASS: gdb.fortran/exprs.exp: p 10D20 .LT. 10D21
+PASS: gdb.fortran/exprs.exp: p 10D20 .GT. 10D21
+PASS: gdb.fortran/exprs.exp: p 10d20 .LT. 10d21
+PASS: gdb.fortran/exprs.exp: p 10d20 .GT. 10d21
+PASS: gdb.fortran/exprs.exp: p 10E20 .LT. 10E21
+PASS: gdb.fortran/exprs.exp: p 10E20 .GT. 10E21
+PASS: gdb.fortran/exprs.exp: p 10e20 .LT. 10e21
+PASS: gdb.fortran/exprs.exp: p 10e20 .GT. 10e21
+PASS: gdb.fortran/exprs.exp: p 10.D20 .LT. 10.D21
+PASS: gdb.fortran/exprs.exp: p 10.D20 .GT. 10.D21
+PASS: gdb.fortran/exprs.exp: p 10.d20 .LT. 10.d21
+PASS: gdb.fortran/exprs.exp: p 10.d20 .GT. 10.d21
+PASS: gdb.fortran/exprs.exp: p 10.E20 .LT. 10.E21
+PASS: gdb.fortran/exprs.exp: p 10.E20 .GT. 10.E21
+PASS: gdb.fortran/exprs.exp: p 10.e20 .LT. 10.e21
+PASS: gdb.fortran/exprs.exp: p 10.e20 .GT. 10.e21
+PASS: gdb.fortran/exprs.exp: p 10.0D20 .LT. 10.0D21
+PASS: gdb.fortran/exprs.exp: p 10.0D20 .GT. 10.0D21
+PASS: gdb.fortran/exprs.exp: p 10.0d20 .LT. 10.0d21
+PASS: gdb.fortran/exprs.exp: p 10.0d20 .GT. 10.0d21
+PASS: gdb.fortran/exprs.exp: p 10.0E20 .LT. 10.0E21
+PASS: gdb.fortran/exprs.exp: p 10.0E20 .GT. 10.0E21
+PASS: gdb.fortran/exprs.exp: p 10.0e20 .LT. 10.0e21
+PASS: gdb.fortran/exprs.exp: p 10.0e20 .GT. 10.0e21
+PASS: gdb.fortran/exprs.exp: p 10.0D+20 .LT. 10.0D+21
+PASS: gdb.fortran/exprs.exp: p 10.0D+20 .GT. 10.0D+21
+PASS: gdb.fortran/exprs.exp: p 10.0d+20 .LT. 10.0d+21
+PASS: gdb.fortran/exprs.exp: p 10.0d+20 .GT. 10.0d+21
+PASS: gdb.fortran/exprs.exp: p 10.0E+20 .LT. 10.0E+21
+PASS: gdb.fortran/exprs.exp: p 10.0E+20 .GT. 10.0E+21
+PASS: gdb.fortran/exprs.exp: p 10.0e+20 .LT. 10.0e+21
+PASS: gdb.fortran/exprs.exp: p 10.0e+20 .GT. 10.0e+21
+PASS: gdb.fortran/exprs.exp: p 10.0D-11 .LT. 10.0D-10
+PASS: gdb.fortran/exprs.exp: p 10.0D-11 .GT. 10.0D-10
+PASS: gdb.fortran/exprs.exp: p 10.0d-11 .LT. 10.0d-10
+PASS: gdb.fortran/exprs.exp: p 10.0d-11 .GT. 10.0d-10
+PASS: gdb.fortran/exprs.exp: p 10.0E-11 .LT. 10.0E-10
+PASS: gdb.fortran/exprs.exp: p 10.0E-11 .GT. 10.0E-10
+PASS: gdb.fortran/exprs.exp: p 10.0e-11 .LT. 10.0e-10
+PASS: gdb.fortran/exprs.exp: p 10.0e-11 .GT. 10.0e-10
+PASS: gdb.fortran/exprs.exp: unary minus applied to int
+PASS: gdb.fortran/exprs.exp: unary minus applied to real
+PASS: gdb.fortran/exprs.exp: bool plus int
+PASS: gdb.fortran/exprs.exp: int plus int
+PASS: gdb.fortran/exprs.exp: real plus int
+PASS: gdb.fortran/exprs.exp: real plus real
+PASS: gdb.fortran/exprs.exp: bool minus int
+PASS: gdb.fortran/exprs.exp: int minus int
+PASS: gdb.fortran/exprs.exp: real minus int
+PASS: gdb.fortran/exprs.exp: real minus real
+PASS: gdb.fortran/exprs.exp: bool times int
+PASS: gdb.fortran/exprs.exp: int times int
+PASS: gdb.fortran/exprs.exp: real times int
+PASS: gdb.fortran/exprs.exp: real times real
+PASS: gdb.fortran/exprs.exp: bool divided by int
+PASS: gdb.fortran/exprs.exp: int divided by int
+PASS: gdb.fortran/exprs.exp: real divided by int
+PASS: gdb.fortran/exprs.exp: real divided by real
+PASS: gdb.fortran/exprs.exp: int powered by int
+PASS: gdb.fortran/exprs.exp: combined exponentiation expression
+PASS: gdb.fortran/exprs.exp: combined exponentiation expression in specified order
+PASS: gdb.fortran/exprs.exp: int powered by real
+PASS: gdb.fortran/exprs.exp: real powered by real
+Running ../../../master/gdb/testsuite/gdb.fortran/library-module.exp ...
+gdb compile failed, default_target_compile: Can't find gfortran.
+UNTESTED: gdb.fortran/library-module.exp: Couldn't compile library-module-lib.f90
+Running ../../../master/gdb/testsuite/gdb.fortran/logical.exp ...
+UNTESTED: gdb.fortran/logical.exp: logical.exp
+UNTESTED: gdb.fortran/logical.exp: Could not compile logical.f90.
+Running ../../../master/gdb/testsuite/gdb.fortran/module.exp ...
+gdb compile failed, default_target_compile: Can't find gfortran.
+UNTESTED: gdb.fortran/module.exp: module.exp
+Running ../../../master/gdb/testsuite/gdb.fortran/multi-dim.exp ...
+gdb compile failed, default_target_compile: Can't find gfortran.
+UNTESTED: gdb.fortran/multi-dim.exp: multi-dim.exp
+Running ../../../master/gdb/testsuite/gdb.fortran/subarray.exp ...
+gdb compile failed, default_target_compile: Can't find gfortran.
+Running ../../../master/gdb/testsuite/gdb.fortran/types.exp ...
+PASS: gdb.fortran/types.exp: set print sevenbit-strings
+PASS: gdb.fortran/types.exp: set language fortran
+PASS: gdb.fortran/types.exp: set language to "fortran"
+PASS: gdb.fortran/types.exp: pt 123
+PASS: gdb.fortran/types.exp: reject pt _
+PASS: gdb.fortran/types.exp: pt .TRUE.
+PASS: gdb.fortran/types.exp: pt .FALSE.
+PASS: gdb.fortran/types.exp: pt 'a'
+PASS: gdb.fortran/types.exp: pt .44
+PASS: gdb.fortran/types.exp: pt 44.0
+PASS: gdb.fortran/types.exp: pt 10D20
+PASS: gdb.fortran/types.exp: pt 10D20
+PASS: gdb.fortran/types.exp: pt 10d20
+PASS: gdb.fortran/types.exp: pt 10d20
+PASS: gdb.fortran/types.exp: pt 10E20
+PASS: gdb.fortran/types.exp: pt 10E20
+PASS: gdb.fortran/types.exp: pt 10e20
+PASS: gdb.fortran/types.exp: pt 10e20
+Running ../../../master/gdb/testsuite/gdb.gdb/complaints.exp ...
+PASS: gdb.gdb/complaints.exp: breakpoint in captured_command_loop
+PASS: gdb.gdb/complaints.exp: run until breakpoint at captured_command_loop
+PASS: gdb.gdb/complaints.exp: set stop_whining = 2
+PASS: gdb.gdb/complaints.exp: call complaint (&symfile_complaints, "Register a complaint")
+PASS: gdb.gdb/complaints.exp: print symfile_complaints->root->fmt
+PASS: gdb.gdb/complaints.exp: call complaint (&symfile_complaints, symfile_complaints->root->fmt)
+PASS: gdb.gdb/complaints.exp: list has one entry
+PASS: gdb.gdb/complaints.exp: call complaint (&symfile_complaints, "Testing! Testing! Testing!")
+PASS: gdb.gdb/complaints.exp: serial start
+PASS: gdb.gdb/complaints.exp: serial line 1
+PASS: gdb.gdb/complaints.exp: serial line 2
+PASS: gdb.gdb/complaints.exp: serial end
+PASS: gdb.gdb/complaints.exp: short start
+PASS: gdb.gdb/complaints.exp: short line 1
+PASS: gdb.gdb/complaints.exp: short line 2
+PASS: gdb.gdb/complaints.exp: short end
+PASS: gdb.gdb/complaints.exp: empty non-verbose non-noisy clear
+PASS: gdb.gdb/complaints.exp: empty verbose non-noisy clear
+PASS: gdb.gdb/complaints.exp: empty verbose noisy clear
+PASS: gdb.gdb/complaints.exp: empty non-verbose noisy clear
+Running ../../../master/gdb/testsuite/gdb.gdb/observer.exp ...
+PASS: gdb.gdb/observer.exp: breakpoint in captured_main
+PASS: gdb.gdb/observer.exp: run until breakpoint at captured_main
+PASS: gdb.gdb/observer.exp: no observer attached; reset first observer counter
+PASS: gdb.gdb/observer.exp: no observer attached; reset second observer counter
+PASS: gdb.gdb/observer.exp: no observer attached; reset third observer counter
+PASS: gdb.gdb/observer.exp: no observer attached; sending notification
+PASS: gdb.gdb/observer.exp: no observer attached; check first observer counter value
+PASS: gdb.gdb/observer.exp: no observer attached; check second observer counter value
+PASS: gdb.gdb/observer.exp: no observer attached; check third observer counter value
+PASS: gdb.gdb/observer.exp: second observer attached; attach second observer
+PASS: gdb.gdb/observer.exp: second observer attached; reset first observer counter
+PASS: gdb.gdb/observer.exp: second observer attached; reset second observer counter
+PASS: gdb.gdb/observer.exp: second observer attached; reset third observer counter
+PASS: gdb.gdb/observer.exp: second observer attached; sending notification
+PASS: gdb.gdb/observer.exp: second observer attached; check first observer counter value
+PASS: gdb.gdb/observer.exp: second observer attached; check second observer counter value
+PASS: gdb.gdb/observer.exp: second observer attached; check third observer counter value
+PASS: gdb.gdb/observer.exp: second observer detached; detach second observer
+PASS: gdb.gdb/observer.exp: second observer detached; reset first observer counter
+PASS: gdb.gdb/observer.exp: second observer detached; reset second observer counter
+PASS: gdb.gdb/observer.exp: second observer detached; reset third observer counter
+PASS: gdb.gdb/observer.exp: second observer detached; sending notification
+PASS: gdb.gdb/observer.exp: second observer detached; check first observer counter value
+PASS: gdb.gdb/observer.exp: second observer detached; check second observer counter value
+PASS: gdb.gdb/observer.exp: second observer detached; check third observer counter value
+PASS: gdb.gdb/observer.exp: 1st observer added; attach first observer
+PASS: gdb.gdb/observer.exp: 1st observer added; reset first observer counter
+PASS: gdb.gdb/observer.exp: 1st observer added; reset second observer counter
+PASS: gdb.gdb/observer.exp: 1st observer added; reset third observer counter
+PASS: gdb.gdb/observer.exp: 1st observer added; sending notification
+PASS: gdb.gdb/observer.exp: 1st observer added; check first observer counter value
+PASS: gdb.gdb/observer.exp: 1st observer added; check second observer counter value
+PASS: gdb.gdb/observer.exp: 1st observer added; check third observer counter value
+PASS: gdb.gdb/observer.exp: 2nd observer added; attach second observer
+PASS: gdb.gdb/observer.exp: 2nd observer added; reset first observer counter
+PASS: gdb.gdb/observer.exp: 2nd observer added; reset second observer counter
+PASS: gdb.gdb/observer.exp: 2nd observer added; reset third observer counter
+PASS: gdb.gdb/observer.exp: 2nd observer added; sending notification
+PASS: gdb.gdb/observer.exp: 2nd observer added; check first observer counter value
+PASS: gdb.gdb/observer.exp: 2nd observer added; check second observer counter value
+PASS: gdb.gdb/observer.exp: 2nd observer added; check third observer counter value
+PASS: gdb.gdb/observer.exp: 3rd observer added; attach third observer
+PASS: gdb.gdb/observer.exp: 3rd observer added; reset first observer counter
+PASS: gdb.gdb/observer.exp: 3rd observer added; reset second observer counter
+PASS: gdb.gdb/observer.exp: 3rd observer added; reset third observer counter
+PASS: gdb.gdb/observer.exp: 3rd observer added; sending notification
+PASS: gdb.gdb/observer.exp: 3rd observer added; check first observer counter value
+PASS: gdb.gdb/observer.exp: 3rd observer added; check second observer counter value
+PASS: gdb.gdb/observer.exp: 3rd observer added; check third observer counter value
+PASS: gdb.gdb/observer.exp: 2nd observer removed; detach second observer
+PASS: gdb.gdb/observer.exp: 2nd observer removed; reset first observer counter
+PASS: gdb.gdb/observer.exp: 2nd observer removed; reset second observer counter
+PASS: gdb.gdb/observer.exp: 2nd observer removed; reset third observer counter
+PASS: gdb.gdb/observer.exp: 2nd observer removed; sending notification
+PASS: gdb.gdb/observer.exp: 2nd observer removed; check first observer counter value
+PASS: gdb.gdb/observer.exp: 2nd observer removed; check second observer counter value
+PASS: gdb.gdb/observer.exp: 2nd observer removed; check third observer counter value
+PASS: gdb.gdb/observer.exp: 1st observer removed; detach first observer
+PASS: gdb.gdb/observer.exp: 1st observer removed; reset first observer counter
+PASS: gdb.gdb/observer.exp: 1st observer removed; reset second observer counter
+PASS: gdb.gdb/observer.exp: 1st observer removed; reset third observer counter
+PASS: gdb.gdb/observer.exp: 1st observer removed; sending notification
+PASS: gdb.gdb/observer.exp: 1st observer removed; check first observer counter value
+PASS: gdb.gdb/observer.exp: 1st observer removed; check second observer counter value
+PASS: gdb.gdb/observer.exp: 1st observer removed; check third observer counter value
+PASS: gdb.gdb/observer.exp: 3rd observer removed; detach third observer
+PASS: gdb.gdb/observer.exp: 3rd observer removed; reset first observer counter
+PASS: gdb.gdb/observer.exp: 3rd observer removed; reset second observer counter
+PASS: gdb.gdb/observer.exp: 3rd observer removed; reset third observer counter
+PASS: gdb.gdb/observer.exp: 3rd observer removed; sending notification
+PASS: gdb.gdb/observer.exp: 3rd observer removed; check first observer counter value
+PASS: gdb.gdb/observer.exp: 3rd observer removed; check second observer counter value
+PASS: gdb.gdb/observer.exp: 3rd observer removed; check third observer counter value
+PASS: gdb.gdb/observer.exp: three observers added; attach first observer
+PASS: gdb.gdb/observer.exp: three observers added; attach second observer
+PASS: gdb.gdb/observer.exp: three observers added; attach third observer
+PASS: gdb.gdb/observer.exp: three observers added; reset first observer counter
+PASS: gdb.gdb/observer.exp: three observers added; reset second observer counter
+PASS: gdb.gdb/observer.exp: three observers added; reset third observer counter
+PASS: gdb.gdb/observer.exp: three observers added; sending notification
+PASS: gdb.gdb/observer.exp: three observers added; check first observer counter value
+PASS: gdb.gdb/observer.exp: three observers added; check second observer counter value
+PASS: gdb.gdb/observer.exp: three observers added; check third observer counter value
+PASS: gdb.gdb/observer.exp: third observer removed; detach third observer
+PASS: gdb.gdb/observer.exp: third observer removed; reset first observer counter
+PASS: gdb.gdb/observer.exp: third observer removed; reset second observer counter
+PASS: gdb.gdb/observer.exp: third observer removed; reset third observer counter
+PASS: gdb.gdb/observer.exp: third observer removed; sending notification
+PASS: gdb.gdb/observer.exp: third observer removed; check first observer counter value
+PASS: gdb.gdb/observer.exp: third observer removed; check second observer counter value
+PASS: gdb.gdb/observer.exp: third observer removed; check third observer counter value
+PASS: gdb.gdb/observer.exp: second observer removed; detach second observer
+PASS: gdb.gdb/observer.exp: second observer removed; reset first observer counter
+PASS: gdb.gdb/observer.exp: second observer removed; reset second observer counter
+PASS: gdb.gdb/observer.exp: second observer removed; reset third observer counter
+PASS: gdb.gdb/observer.exp: second observer removed; sending notification
+PASS: gdb.gdb/observer.exp: second observer removed; check first observer counter value
+PASS: gdb.gdb/observer.exp: second observer removed; check second observer counter value
+PASS: gdb.gdb/observer.exp: second observer removed; check third observer counter value
+PASS: gdb.gdb/observer.exp: first observer removed; detach first observer
+PASS: gdb.gdb/observer.exp: first observer removed; reset first observer counter
+PASS: gdb.gdb/observer.exp: first observer removed; reset second observer counter
+PASS: gdb.gdb/observer.exp: first observer removed; reset third observer counter
+PASS: gdb.gdb/observer.exp: first observer removed; sending notification
+PASS: gdb.gdb/observer.exp: first observer removed; check first observer counter value
+PASS: gdb.gdb/observer.exp: first observer removed; check second observer counter value
+PASS: gdb.gdb/observer.exp: first observer removed; check third observer counter value
+Running ../../../master/gdb/testsuite/gdb.gdb/selftest.exp ...
+PASS: gdb.gdb/selftest.exp: Disassemble main
+PASS: gdb.gdb/selftest.exp: breakpoint in captured_main
+PASS: gdb.gdb/selftest.exp: set interrupt character in test_with_self
+PASS: gdb.gdb/selftest.exp: set listsize to 1
+PASS: gdb.gdb/selftest.exp: run until breakpoint at captured_main
+PASS: gdb.gdb/selftest.exp: printed version as string
+PASS: gdb.gdb/selftest.exp: step over initial brace
+PASS: gdb.gdb/selftest.exp: step over argc initialization
+PASS: gdb.gdb/selftest.exp: step over argv initialization
+PASS: gdb.gdb/selftest.exp: next over make_command_stats_cleanup and everything it calls
+PASS: gdb.gdb/selftest.exp: step over argc initialization
+PASS: gdb.gdb/selftest.exp: next over make_command_stats_cleanup and everything it calls
+PASS: gdb.gdb/selftest.exp: next over setlocale LC_MESSAGES
+PASS: gdb.gdb/selftest.exp: next over make_command_stats_cleanup and everything it calls
+PASS: gdb.gdb/selftest.exp: next over setlocale LC_MESSAGES
+PASS: gdb.gdb/selftest.exp: next over setlocale LC_CTYPE
+PASS: gdb.gdb/selftest.exp: next over bindtextdomain
+PASS: gdb.gdb/selftest.exp: next over textdomain PACKAGE
+PASS: gdb.gdb/selftest.exp: next over lim_at_start initialization
+PASS: gdb.gdb/selftest.exp: next over cmdarg initialization via xmalloc
+PASS: gdb.gdb/selftest.exp: next over lim_at_start initialization
+PASS: gdb.gdb/selftest.exp: next over cmdarg initialization via xmalloc
+PASS: gdb.gdb/selftest.exp: print a string
+PASS: gdb.gdb/selftest.exp: step into xmalloc call
+PASS: gdb.gdb/selftest.exp: xgdb is at prompt
+PASS: gdb.gdb/selftest.exp: Set xgdb prompt
+PASS: gdb.gdb/selftest.exp: send ^C to child process
+PASS: gdb.gdb/selftest.exp: send SIGINT signal to child process
+PASS: gdb.gdb/selftest.exp: backtrace through signal handler
+Running ../../../master/gdb/testsuite/gdb.gdb/xfullpath.exp ...
+PASS: gdb.gdb/xfullpath.exp: breakpoint in captured_main
+PASS: gdb.gdb/xfullpath.exp: run until breakpoint at captured_main
+PASS: gdb.gdb/xfullpath.exp: A filename with ./ as the directory prefix
+PASS: gdb.gdb/xfullpath.exp: A filename with ../ in the directory prefix
+PASS: gdb.gdb/xfullpath.exp: A one-char filename in the current directory
+PASS: gdb.gdb/xfullpath.exp: A filename in the root directory
+PASS: gdb.gdb/xfullpath.exp: A filename without any directory prefix
+PASS: gdb.gdb/xfullpath.exp: A one-char filename without any directory prefix
+PASS: gdb.gdb/xfullpath.exp: An empty filename
+Running ../../../master/gdb/testsuite/gdb.java/jmain.exp ...
+PASS: gdb.java/jmain.exp: compilation jmain.java
+PASS: gdb.java/jmain.exp: set print sevenbit-strings
+KFAIL: gdb.java/jmain.exp: break main (PRMS: java/1567)
+KPASS: gdb.java/jmain.exp: break jmain.main (PRMS java/1565)
+PASS: gdb.java/jmain.exp: break jmain.main(java.lang.String[])void
+Running ../../../master/gdb/testsuite/gdb.java/jmisc.exp ...
+PASS: gdb.java/jmisc.exp: compilation jmisc.java
+PASS: gdb.java/jmisc.exp: set print sevenbit-strings
+PASS: gdb.java/jmisc.exp: set language java
+PASS: gdb.java/jmisc.exp: set language to "java"
+PASS: gdb.java/jmisc.exp: continue to breakpoint: jmisc.main(java.lang.String[])
+PASS: gdb.java/jmisc.exp: ptype jmisc
+PASS: gdb.java/jmisc.exp: p args
+KFAIL: gdb.java/jmisc.exp: gdb/2214 (PRMS: p *args)
+PASS: gdb.java/jmisc.exp: break exit
+PASS: gdb.java/jmisc.exp: continue to exit
+PASS: gdb.java/jmisc.exp: set breakpoint pending off
+PASS: gdb.java/jmisc.exp: break jmisc.main(java.lang.String[])int
+Running ../../../master/gdb/testsuite/gdb.java/jnpe.exp ...
+PASS: gdb.java/jnpe.exp: compilation jnpe.java
+XFAIL: gdb.java/jnpe.exp: check for unwinder hook in java
+UNSUPPORTED: gdb.java/jnpe.exp: jnpe.exp could not find _Unwind_DebugHook
+Running ../../../master/gdb/testsuite/gdb.java/jprint.exp ...
+PASS: gdb.java/jprint.exp: compilation jprint.java
+PASS: gdb.java/jprint.exp: set print sevenbit-strings
+PASS: gdb.java/jprint.exp: set language java
+PASS: gdb.java/jprint.exp: set language to "java"
+PASS: gdb.java/jprint.exp: continue to breakpoint: jprint.main(java.lang.String[])
+PASS: gdb.java/jprint.exp: unambiguous static call
+PASS: gdb.java/jprint.exp: next
+PASS: gdb.java/jprint.exp: next
+PASS: gdb.java/jprint.exp: single argument print call
+PASS: gdb.java/jprint.exp: double argument print call
+FAIL: gdb.java/jprint.exp: virtual fn call
+PASS: gdb.java/jprint.exp: inherited static call
+FAIL: gdb.java/jprint.exp: inherited virtual fn call
+XPASS: gdb.java/jprint.exp: print a java.util.Properties (PRMS gcc/43260)
+Running ../../../master/gdb/testsuite/gdb.java/jv-exp.exp ...
+PASS: gdb.java/jv-exp.exp: set print sevenbit-strings
+PASS: gdb.java/jv-exp.exp: set width 0
+PASS: gdb.java/jv-exp.exp: set language java
+PASS: gdb.java/jv-exp.exp: set language to "java"
+PASS: gdb.java/jv-exp.exp: p 1 > 2
+PASS: gdb.java/jv-exp.exp: p 1 < 2
+Running ../../../master/gdb/testsuite/gdb.java/jv-print.exp ...
+PASS: gdb.java/jv-print.exp: print $pc
+PASS: gdb.java/jv-print.exp: set print sevenbit-strings
+PASS: gdb.java/jv-print.exp: set width 0
+PASS: gdb.java/jv-print.exp: set language java
+PASS: gdb.java/jv-print.exp: set language to "java"
+PASS: gdb.java/jv-print.exp: p 123
+PASS: gdb.java/jv-print.exp: p -123
+PASS: gdb.java/jv-print.exp: p/d 123
+PASS: gdb.java/jv-print.exp: p 0123
+PASS: gdb.java/jv-print.exp: p 00123
+PASS: gdb.java/jv-print.exp: p -0123
+PASS: gdb.java/jv-print.exp: p/o 0123
+PASS: gdb.java/jv-print.exp: p 0x123
+PASS: gdb.java/jv-print.exp: p -0x123
+PASS: gdb.java/jv-print.exp: p 0x0123
+PASS: gdb.java/jv-print.exp: p -0x0123
+PASS: gdb.java/jv-print.exp: p 0xABCDEF
+PASS: gdb.java/jv-print.exp: p 0xabcdef
+PASS: gdb.java/jv-print.exp: p 0xAbCdEf
+PASS: gdb.java/jv-print.exp: p/x 0x123
+PASS: gdb.java/jv-print.exp: p 'a'
+PASS: gdb.java/jv-print.exp: p/c 'a'
+PASS: gdb.java/jv-print.exp: p/c 70
+PASS: gdb.java/jv-print.exp: p/x 'a'
+PASS: gdb.java/jv-print.exp: p/d 'a'
+PASS: gdb.java/jv-print.exp: p/t 'a'
+PASS: gdb.java/jv-print.exp: p/x '\377'
+PASS: gdb.java/jv-print.exp: p '\''
+PASS: gdb.java/jv-print.exp: p '\\'
+PASS: gdb.java/jv-print.exp: reject p 0x
+PASS: gdb.java/jv-print.exp: p ''
+PASS: gdb.java/jv-print.exp: p '''
+PASS: gdb.java/jv-print.exp: reject p '\'
+PASS: gdb.java/jv-print.exp: reject p '\\\'
+PASS: gdb.java/jv-print.exp: reject p DEADBEEF
+PASS: gdb.java/jv-print.exp: reject p 123DEADBEEF
+PASS: gdb.java/jv-print.exp: reject p 123foobar.bazfoo3
+PASS: gdb.java/jv-print.exp: reject p 123EEEEEEEEEEEEEEEEE33333k333
+PASS: gdb.java/jv-print.exp: check for floating addition
+PASS: gdb.java/jv-print.exp: reject p 09
+PASS: gdb.java/jv-print.exp: reject p 079
+PASS: gdb.java/jv-print.exp: reject p 0xG
+PASS: gdb.java/jv-print.exp: reject p 0xAG
+PASS: gdb.java/jv-print.exp: check fp + text
+PASS: gdb.java/jv-print.exp: p 1.
+PASS: gdb.java/jv-print.exp: p 1.5
+PASS: gdb.java/jv-print.exp: p 1.f
+PASS: gdb.java/jv-print.exp: p 1.5f
+PASS: gdb.java/jv-print.exp: p 1.d
+PASS: gdb.java/jv-print.exp: p 1.5d
+PASS: gdb.java/jv-print.exp: p 0x1.1
+PASS: gdb.java/jv-print.exp: reject p 1.1x
+PASS: gdb.java/jv-print.exp: reject p 1.1ff
+PASS: gdb.java/jv-print.exp: reject p 1.1dd
+Running ../../../master/gdb/testsuite/gdb.mi/dw2-ref-missing-frame.exp ...
+PASS: gdb.mi/dw2-ref-missing-frame.exp: breakpoint at func_nofb_marker
+PASS: gdb.mi/dw2-ref-missing-frame.exp: mi runto func_nofb_marker
+PASS: gdb.mi/dw2-ref-missing-frame.exp: test func_nofb_marker
+PASS: gdb.mi/dw2-ref-missing-frame.exp: breakpoint at func_loopfb_marker
+PASS: gdb.mi/dw2-ref-missing-frame.exp: mi runto func_loopfb_marker
+PASS: gdb.mi/dw2-ref-missing-frame.exp: test func_loopfb_var
+Running ../../../master/gdb/testsuite/gdb.mi/gdb2549.exp ...
+PASS: gdb.mi/gdb2549.exp: wrong arguments
+PASS: gdb.mi/gdb2549.exp: no executable
+PASS: gdb.mi/gdb2549.exp: breakpoint at main
+PASS: gdb.mi/gdb2549.exp: mi runto main
+PASS: gdb.mi/gdb2549.exp: register values x
+PASS: gdb.mi/gdb2549.exp: register values f
+PASS: gdb.mi/gdb2549.exp: register values d
+PASS: gdb.mi/gdb2549.exp: register values o
+PASS: gdb.mi/gdb2549.exp: register values t
+Running ../../../master/gdb/testsuite/gdb.mi/gdb669.exp ...
+PASS: gdb.mi/gdb669.exp: successfully compiled posix threads test case
+PASS: gdb.mi/gdb669.exp: breakpoint at main
+PASS: gdb.mi/gdb669.exp: mi runto main
+PASS: gdb.mi/gdb669.exp: -thread-list-ids (at main)
+PASS: gdb.mi/gdb669.exp: info threads (at main)
+PASS: gdb.mi/gdb669.exp: finding MI result string (at main)
+PASS: gdb.mi/gdb669.exp: finding number of threads in MI output (at main)
+PASS: gdb.mi/gdb669.exp: got number of threads from MI (at main)
+PASS: gdb.mi/gdb669.exp: console and MI have same number of threads (at main)
+PASS: gdb.mi/gdb669.exp: -thread_list_ids (at main)
+PASS: gdb.mi/gdb669.exp: finding threads in MI output (at main)
+PASS: gdb.mi/gdb669.exp: MI and console have same threads (at main)
+PASS: gdb.mi/gdb669.exp: next, try 0
+PASS: gdb.mi/gdb669.exp: -thread-list-ids (try 0)
+PASS: gdb.mi/gdb669.exp: info threads (try 0)
+PASS: gdb.mi/gdb669.exp: finding MI result string (try 0)
+PASS: gdb.mi/gdb669.exp: finding number of threads in MI output (try 0)
+PASS: gdb.mi/gdb669.exp: got number of threads from MI (try 0)
+PASS: gdb.mi/gdb669.exp: console and MI have same number of threads (try 0)
+PASS: gdb.mi/gdb669.exp: -thread_list_ids (try 0)
+PASS: gdb.mi/gdb669.exp: finding threads in MI output (try 0)
+PASS: gdb.mi/gdb669.exp: MI and console have same threads (try 0)
+PASS: gdb.mi/gdb669.exp: next, try 1
+PASS: gdb.mi/gdb669.exp: -thread-list-ids (try 1)
+PASS: gdb.mi/gdb669.exp: info threads (try 1)
+PASS: gdb.mi/gdb669.exp: finding MI result string (try 1)
+PASS: gdb.mi/gdb669.exp: finding number of threads in MI output (try 1)
+PASS: gdb.mi/gdb669.exp: got number of threads from MI (try 1)
+PASS: gdb.mi/gdb669.exp: console and MI have same number of threads (try 1)
+PASS: gdb.mi/gdb669.exp: -thread_list_ids (try 1)
+PASS: gdb.mi/gdb669.exp: finding threads in MI output (try 1)
+PASS: gdb.mi/gdb669.exp: MI and console have same threads (try 1)
+PASS: gdb.mi/gdb669.exp: next, try 2
+PASS: gdb.mi/gdb669.exp: -thread-list-ids (try 2)
+PASS: gdb.mi/gdb669.exp: info threads (try 2)
+PASS: gdb.mi/gdb669.exp: finding MI result string (try 2)
+PASS: gdb.mi/gdb669.exp: finding number of threads in MI output (try 2)
+PASS: gdb.mi/gdb669.exp: got number of threads from MI (try 2)
+PASS: gdb.mi/gdb669.exp: console and MI have same number of threads (try 2)
+PASS: gdb.mi/gdb669.exp: -thread_list_ids (try 2)
+PASS: gdb.mi/gdb669.exp: finding threads in MI output (try 2)
+PASS: gdb.mi/gdb669.exp: MI and console have same threads (try 2)
+PASS: gdb.mi/gdb669.exp: next, try 3
+PASS: gdb.mi/gdb669.exp: -thread-list-ids (try 3)
+PASS: gdb.mi/gdb669.exp: info threads (try 3)
+PASS: gdb.mi/gdb669.exp: finding MI result string (try 3)
+PASS: gdb.mi/gdb669.exp: finding number of threads in MI output (try 3)
+PASS: gdb.mi/gdb669.exp: got number of threads from MI (try 3)
+PASS: gdb.mi/gdb669.exp: console and MI have same number of threads (try 3)
+PASS: gdb.mi/gdb669.exp: -thread_list_ids (try 3)
+PASS: gdb.mi/gdb669.exp: finding threads in MI output (try 3)
+PASS: gdb.mi/gdb669.exp: MI and console have same threads (try 3)
+Running ../../../master/gdb/testsuite/gdb.mi/gdb680.exp ...
+PASS: gdb.mi/gdb680.exp: -data-list-register-names -1, try 0
+PASS: gdb.mi/gdb680.exp: -data-list-register-names -1, try 1
+PASS: gdb.mi/gdb680.exp: -data-list-register-names -1, try 2
+PASS: gdb.mi/gdb680.exp: -data-list-register-names -1, try 3
+PASS: gdb.mi/gdb680.exp: -data-list-register-names -1, try 4
+Running ../../../master/gdb/testsuite/gdb.mi/gdb701.exp ...
+PASS: gdb.mi/gdb701.exp: breakpoint at main
+PASS: gdb.mi/gdb701.exp: mi runto main
+PASS: gdb.mi/gdb701.exp: step over "foo = 0"
+PASS: gdb.mi/gdb701.exp: create fooPtr
+PASS: gdb.mi/gdb701.exp: list children of fooPtr
+PASS: gdb.mi/gdb701.exp: list children of fooPtr.x
+PASS: gdb.mi/gdb701.exp: list children of fooPtr.y
+PASS: gdb.mi/gdb701.exp: list children of fooPtr.z
+Running ../../../master/gdb/testsuite/gdb.mi/gdb792.exp ...
+PASS: gdb.mi/gdb792.exp: breakpoint at main
+PASS: gdb.mi/gdb792.exp: mi runto main
+PASS: gdb.mi/gdb792.exp: create var for class A
+PASS: gdb.mi/gdb792.exp: list children of class A
+PASS: gdb.mi/gdb792.exp: list children of A.public
+PASS: gdb.mi/gdb792.exp: list children of A.private
+PASS: gdb.mi/gdb792.exp: list children of A.protected
+PASS: gdb.mi/gdb792.exp: list children of A.protected.b
+PASS: gdb.mi/gdb792.exp: list children of A.protected.b.public
+PASS: gdb.mi/gdb792.exp: list children of A.protected.b.private
+PASS: gdb.mi/gdb792.exp: create var for class C which has baseclass A
+PASS: gdb.mi/gdb792.exp: list children of class C
+Running ../../../master/gdb/testsuite/gdb.mi/mi-async.exp ...
+PASS: gdb.mi/mi-async.exp: start: stop
+PASS: gdb.mi/mi-async.exp: CLI next: stop
+PASS: gdb.mi/mi-async.exp: restart: stop
+Running ../../../master/gdb/testsuite/gdb.mi/mi-basics.exp ...
+PASS: gdb.mi/mi-basics.exp: acceptance of MI operations
+PASS: gdb.mi/mi-basics.exp: file-exec-and-symbols operation
+PASS: gdb.mi/mi-basics.exp: file-exec-file operation
+PASS: gdb.mi/mi-basics.exp: file-symbol-file operation
+PASS: gdb.mi/mi-basics.exp: break-delete (all) operation
+PASS: gdb.mi/mi-basics.exp: all breakpoints removed
+PASS: gdb.mi/mi-basics.exp: environment-directory arg operation
+PASS: gdb.mi/mi-basics.exp: environment-directory empty-string operation
+PASS: gdb.mi/mi-basics.exp: environment-directory operation
+PASS: gdb.mi/mi-basics.exp: environment-cd arg operation
+PASS: gdb.mi/mi-basics.exp: environment-pwd operation
+PASS: gdb.mi/mi-basics.exp: environment-path
+PASS: gdb.mi/mi-basics.exp: environment-path no-args operation
+PASS: gdb.mi/mi-basics.exp: environment-path dir1 dir2 operation
+PASS: gdb.mi/mi-basics.exp: environment-path -r dir operation
+PASS: gdb.mi/mi-basics.exp: environment-path -r operation
+PASS: gdb.mi/mi-basics.exp: initial tty is mi_inferior_tty_name
+PASS: gdb.mi/mi-basics.exp: set tty to /dev/pts/1
+PASS: gdb.mi/mi-basics.exp: tty was set correctly
+PASS: gdb.mi/mi-basics.exp: set tty to the empty string
+PASS: gdb.mi/mi-basics.exp: make sure tty is empty
+PASS: gdb.mi/mi-basics.exp: set tty to mi_inferior_tty_name (the way it was)
+PASS: gdb.mi/mi-basics.exp: verify tty is correct
+Running ../../../master/gdb/testsuite/gdb.mi/mi-break.exp ...
+PASS: gdb.mi/mi-break.exp: break-insert -t operation
+PASS: gdb.mi/mi-break.exp: insert temp breakpoint at basics.c:callee2
+PASS: gdb.mi/mi-break.exp: insert temp breakpoint at basics.c:$line_callee3_head
+PASS: gdb.mi/mi-break.exp: insert temp breakpoint at "<fullfilename>":$line_callee4_head
+PASS: gdb.mi/mi-break.exp: list of breakpoints
+PASS: gdb.mi/mi-break.exp: delete temp breakpoints
+XFAIL: gdb.mi/mi-break.exp: break-insert -r operation
+XFAIL: gdb.mi/mi-break.exp: insert breakpoint with regexp callee2
+XFAIL: gdb.mi/mi-break.exp: insert breakpoint with regexp callee
+XFAIL: gdb.mi/mi-break.exp: insert breakpoint with regexp .*llee
+XFAIL: gdb.mi/mi-break.exp: list of breakpoints
+PASS: gdb.mi/mi-break.exp: delete temp breakpoints
+PASS: gdb.mi/mi-break.exp: insert breakpoint with ignore count at callme
+PASS: gdb.mi/mi-break.exp: run to breakpoint with ignore count
+PASS: gdb.mi/mi-break.exp: breakpoint at nonexistent function
+PASS: gdb.mi/mi-break.exp: create varobj for function call
+PASS: gdb.mi/mi-break.exp: update varobj for function call
+PASS: gdb.mi/mi-break.exp: test disabled creation
+PASS: gdb.mi/mi-break.exp: test disabled creation: cleanup
+PASS: gdb.mi/mi-break.exp: breakpoint commands: insert breakpoint at basics.c:callee2
+PASS: gdb.mi/mi-break.exp: breakpoint commands: set commands
+PASS: gdb.mi/mi-break.exp: breakpoint commands: check that commands are set
+PASS: gdb.mi/mi-break.exp: breakpoint commands: clear commands
+PASS: gdb.mi/mi-break.exp: breakpoint commands: check that commands are cleared
+PASS: gdb.mi/mi-break.exp: breakpoint at main
+PASS: gdb.mi/mi-break.exp: mi runto main
+PASS: gdb.mi/mi-break.exp: breakpoint commands: insert breakpoint at basics.c:callee2, again
+PASS: gdb.mi/mi-break.exp: breakpoint commands: set commands
+PASS: gdb.mi/mi-break.exp: intermediate stop and continue
+PASS: gdb.mi/mi-break.exp: test hitting breakpoint with commands
+Running ../../../master/gdb/testsuite/gdb.mi/mi-cli.exp ...
+PASS: gdb.mi/mi-cli.exp: -interpreter-exec with no arguments
+PASS: gdb.mi/mi-cli.exp: -interpreter-exec with one argument
+PASS: gdb.mi/mi-cli.exp: -interpreter-exec with bogus interpreter
+PASS: gdb.mi/mi-cli.exp: -interpreter-exec console bogus
+PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "file $binfile"
+PASS: gdb.mi/mi-cli.exp: breakpoint at main
+PASS: gdb.mi/mi-cli.exp: mi runto main
+PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "set args foobar"
+PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "show args"
+PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "break callee4"
+PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "info break"
+PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "set listsize 1"
+PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "list"
+PASS: gdb.mi/mi-cli.exp: continue to callee4
+PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "delete 2"
+PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "up"
+PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "down"
+PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "frame 2"
+PASS: gdb.mi/mi-cli.exp: -stack-select-frame 0
+PASS: gdb.mi/mi-cli.exp: check *stopped from CLI command
+PASS: gdb.mi/mi-cli.exp: -break-insert -t basics.c:$line_main_hello
+PASS: gdb.mi/mi-cli.exp: -exec-continue to line 66
+PASS: gdb.mi/mi-cli.exp: 34 next: run
+PASS: gdb.mi/mi-cli.exp: 34 next: stop
+PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "list" at basics.c:$line_main_return
+PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "help set args"
+PASS: gdb.mi/mi-cli.exp: -interpreter-exec console "set $pc=0x0"
+Running ../../../master/gdb/testsuite/gdb.mi/mi-console.exp ...
+PASS: gdb.mi/mi-console.exp: breakpoint at main
+PASS: gdb.mi/mi-console.exp: mi runto main
+PASS: gdb.mi/mi-console.exp: Testing console output
+PASS: gdb.mi/mi-console.exp: Testing console output inferior output
+PASS: gdb.mi/mi-console.exp: finished step over hello
+Running ../../../master/gdb/testsuite/gdb.mi/mi-disassemble.exp ...
+PASS: gdb.mi/mi-disassemble.exp: breakpoint at main
+PASS: gdb.mi/mi-disassemble.exp: mi runto main
+PASS: gdb.mi/mi-disassemble.exp: data-disassemble from pc to pc+12 assembly only
+PASS: gdb.mi/mi-disassemble.exp: data-disassemble file & line, assembly only
+PASS: gdb.mi/mi-disassemble.exp: data-disassemble from pc to pc+12 assembly with opcodes
+PASS: gdb.mi/mi-disassemble.exp: data-disassemble file & line, assembly with opcodes
+PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line assembly mixed
+PASS: gdb.mi/mi-disassemble.exp: data-disassemble range assembly mixed
+PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line assembly mixed with opcodes
+PASS: gdb.mi/mi-disassemble.exp: data-disassemble range assembly mixed with opcodes
+PASS: gdb.mi/mi-disassemble.exp: data-disassemble bogus filename
+PASS: gdb.mi/mi-disassemble.exp: data-disassemble bogus address
+PASS: gdb.mi/mi-disassemble.exp: data-disassemble mix different args
+PASS: gdb.mi/mi-disassemble.exp: data-disassemble wrong mode arg
+PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line, number assembly only
+PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line, number (zero lines) assembly only
+PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line, number (more than main lines) assembly only
+PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line, number assembly mixed
+PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line, number (zero lines) assembly mixed
+PASS: gdb.mi/mi-disassemble.exp: data-disassemble file, line, number (more than main lines) assembly mixed
+Running ../../../master/gdb/testsuite/gdb.mi/mi-eval.exp ...
+PASS: gdb.mi/mi-eval.exp: breakpoint at callee4
+PASS: gdb.mi/mi-eval.exp: mi runto callee4
+PASS: gdb.mi/mi-eval.exp: next at callee4
+PASS: gdb.mi/mi-eval.exp: eval A
+PASS: gdb.mi/mi-eval.exp: eval &A
+PASS: gdb.mi/mi-eval.exp: eval A+3
+PASS: gdb.mi/mi-eval.exp: eval A + 3
+Running ../../../master/gdb/testsuite/gdb.mi/mi-file-transfer.exp ...
+PASS: gdb.mi/mi-file-transfer.exp: put binary file
+PASS: gdb.mi/mi-file-transfer.exp: get binary file
+PASS: gdb.mi/mi-file-transfer.exp: compare intermediate binary file
+PASS: gdb.mi/mi-file-transfer.exp: compare binary file
+PASS: gdb.mi/mi-file-transfer.exp: deleted binary file
+PASS: gdb.mi/mi-file-transfer.exp: verified deleted binary file
+Running ../../../master/gdb/testsuite/gdb.mi/mi-file.exp ...
+PASS: gdb.mi/mi-file.exp: request path info of current source file (basics.c)
+PASS: gdb.mi/mi-file.exp: Getting a list of source files.
+Running ../../../master/gdb/testsuite/gdb.mi/mi-hack-cli.exp ...
+PASS: gdb.mi/mi-hack-cli.exp: show architecture
+PASS: gdb.mi/mi-hack-cli.exp: 47show architecture
+Running ../../../master/gdb/testsuite/gdb.mi/mi-nonstop-exit.exp ...
+PASS: gdb.mi/mi-nonstop-exit.exp: successfully compiled posix threads test case
+PASS: gdb.mi/mi-nonstop-exit.exp: breakpoint at main
+PASS: gdb.mi/mi-nonstop-exit.exp: mi runto main
+PASS: gdb.mi/mi-nonstop-exit.exp: finished exec continue
+PASS: gdb.mi/mi-nonstop-exit.exp: breakpoint at main
+PASS: gdb.mi/mi-nonstop-exit.exp: mi runto main
+PASS: gdb.mi/mi-nonstop-exit.exp: finished exec continue (2)
+Running ../../../master/gdb/testsuite/gdb.mi/mi-nonstop.exp ...
+PASS: gdb.mi/mi-nonstop.exp: successfully compiled posix threads test case
+PASS: gdb.mi/mi-nonstop.exp: breakpoint at main
+PASS: gdb.mi/mi-nonstop.exp: mi runto main
+PASS: gdb.mi/mi-nonstop.exp: breakpoint at marker
+PASS: gdb.mi/mi-nonstop.exp: w0,i0 stop
+PASS: gdb.mi/mi-nonstop.exp: w1,i0 stop
+PASS: gdb.mi/mi-nonstop.exp: thread state, stop 1
+PASS: gdb.mi/mi-nonstop.exp: select thread 2
+PASS: gdb.mi/mi-nonstop.exp: create varobj in first thread
+PASS: gdb.mi/mi-nonstop.exp: select thread 3
+PASS: gdb.mi/mi-nonstop.exp: create varobj in second thread
+PASS: gdb.mi/mi-nonstop.exp: thread state, resume 1
+PASS: gdb.mi/mi-nonstop.exp: w0,i1 stop
+PASS: gdb.mi/mi-nonstop.exp: thread state, stop 2
+PASS: gdb.mi/mi-nonstop.exp: thread state, resume 2
+PASS: gdb.mi/mi-nonstop.exp: w1,i1 stop
+PASS: gdb.mi/mi-nonstop.exp: thread state, stop 3
+PASS: gdb.mi/mi-nonstop.exp: update varobj, 1
+PASS: gdb.mi/mi-nonstop.exp: check varobj, w0, 1
+PASS: gdb.mi/mi-nonstop.exp: check varobj, w1, 1
+PASS: gdb.mi/mi-nonstop.exp: interrupted
+PASS: gdb.mi/mi-nonstop.exp: got interrupt
+PASS: gdb.mi/mi-nonstop.exp: thread state, stop 4
+PASS: gdb.mi/mi-nonstop.exp: resume all
+PASS: gdb.mi/mi-nonstop.exp: w0,i2 stop
+PASS: gdb.mi/mi-nonstop.exp: w1,i2 stop
+PASS: gdb.mi/mi-nonstop.exp: set condition, 1
+PASS: gdb.mi/mi-nonstop.exp: w0,i3 stop
+PASS: gdb.mi/mi-nonstop.exp: thread state, stop on cond breakpoint
+PASS: gdb.mi/mi-nonstop.exp: update varobj, 2
+PASS: gdb.mi/mi-nonstop.exp: check varobj, w1, 1
+PASS: gdb.mi/mi-nonstop.exp: stacktrace of running thread
+PASS: gdb.mi/mi-nonstop.exp: stacktrace of stopped thread
+PASS: gdb.mi/mi-nonstop.exp: select first worker thread
+PASS: gdb.mi/mi-nonstop.exp: ask the second thread to exit
+PASS: gdb.mi/mi-nonstop.exp: wait for thread exit
+PASS: gdb.mi/mi-nonstop.exp: stacktrace of stopped thread
+Running ../../../master/gdb/testsuite/gdb.mi/mi-ns-stale-regcache.exp ...
+PASS: gdb.mi/mi-ns-stale-regcache.exp: breakpoint at main
+PASS: gdb.mi/mi-ns-stale-regcache.exp: mi runto main
+PASS: gdb.mi/mi-ns-stale-regcache.exp: no stale register cache of resumed thread
+PASS: gdb.mi/mi-ns-stale-regcache.exp: no stale frame info of resumed thread
+PASS: gdb.mi/mi-ns-stale-regcache.exp: main thread still running
+Running ../../../master/gdb/testsuite/gdb.mi/mi-nsintrall.exp ...
+PASS: gdb.mi/mi-nsintrall.exp: successfully compiled posix threads test case
+PASS: gdb.mi/mi-nsintrall.exp: breakpoint at main
+PASS: gdb.mi/mi-nsintrall.exp: mi runto main
+PASS: gdb.mi/mi-nsintrall.exp: breakpoint at thread_function
+PASS: gdb.mi/mi-nsintrall.exp: stop 0
+PASS: gdb.mi/mi-nsintrall.exp: stop 1
+PASS: gdb.mi/mi-nsintrall.exp: stop 2
+PASS: gdb.mi/mi-nsintrall.exp: stop 3
+PASS: gdb.mi/mi-nsintrall.exp: stop 4
+PASS: gdb.mi/mi-nsintrall.exp: stop 5
+PASS: gdb.mi/mi-nsintrall.exp: thread state, all stopped
+PASS: gdb.mi/mi-nsintrall.exp: resume all, no breakpoint
+PASS: gdb.mi/mi-nsintrall.exp: thread state, resume all
+PASS: gdb.mi/mi-nsintrall.exp: interrupt all threads
+PASS: gdb.mi/mi-nsintrall.exp: interrupt 0
+PASS: gdb.mi/mi-nsintrall.exp: interrupt 1
+PASS: gdb.mi/mi-nsintrall.exp: interrupt 2
+PASS: gdb.mi/mi-nsintrall.exp: interrupt 3
+PASS: gdb.mi/mi-nsintrall.exp: interrupt 4
+PASS: gdb.mi/mi-nsintrall.exp: interrupt 5
+PASS: gdb.mi/mi-nsintrall.exp: thread state, all interrupted
+PASS: gdb.mi/mi-nsintrall.exp: resume all after interrupting
+PASS: gdb.mi/mi-nsintrall.exp: thread state, resume all after interrupting
+Running ../../../master/gdb/testsuite/gdb.mi/mi-nsmoribund.exp ...
+PASS: gdb.mi/mi-nsmoribund.exp: successfully compiled posix threads test case
+PASS: gdb.mi/mi-nsmoribund.exp: breakpoint at main
+PASS: gdb.mi/mi-nsmoribund.exp: mi runto main
+PASS: gdb.mi/mi-nsmoribund.exp: breakpoint at thread_function
+PASS: gdb.mi/mi-nsmoribund.exp: stop 0
+PASS: gdb.mi/mi-nsmoribund.exp: stop 1
+PASS: gdb.mi/mi-nsmoribund.exp: stop 2
+PASS: gdb.mi/mi-nsmoribund.exp: stop 3
+PASS: gdb.mi/mi-nsmoribund.exp: stop 4
+PASS: gdb.mi/mi-nsmoribund.exp: stop 5
+PASS: gdb.mi/mi-nsmoribund.exp: stop 6
+PASS: gdb.mi/mi-nsmoribund.exp: stop 7
+PASS: gdb.mi/mi-nsmoribund.exp: stop 8
+PASS: gdb.mi/mi-nsmoribund.exp: stop 9
+PASS: gdb.mi/mi-nsmoribund.exp: thread state: all stopped except the main thread
+PASS: gdb.mi/mi-nsmoribund.exp: select thread 5
+PASS: gdb.mi/mi-nsmoribund.exp: thread specific breakpoint at thread_function
+PASS: gdb.mi/mi-nsmoribund.exp: resume all, thread specific breakpoint
+PASS: gdb.mi/mi-nsmoribund.exp: hit thread specific breakpoint
+PASS: gdb.mi/mi-nsmoribund.exp: thread state: all running except the breakpoint thread
+PASS: gdb.mi/mi-nsmoribund.exp: resume all, program exited normally
+Running ../../../master/gdb/testsuite/gdb.mi/mi-nsthrexec.exp ...
+PASS: gdb.mi/mi-nsthrexec.exp: successfully compiled posix threads test case
+PASS: gdb.mi/mi-nsthrexec.exp: breakpoint at main
+PASS: gdb.mi/mi-nsthrexec.exp: mi runto main
+PASS: gdb.mi/mi-nsthrexec.exp: breakpoint at thread_execler
+PASS: gdb.mi/mi-nsthrexec.exp: stop at thread_execler
+PASS: gdb.mi/mi-nsthrexec.exp: thread state, execler stopped, main running
+PASS: gdb.mi/mi-nsthrexec.exp: interrupt main thread
+PASS: gdb.mi/mi-nsthrexec.exp: main thread interrupted
+PASS: gdb.mi/mi-nsthrexec.exp: thread state, all stopped
+PASS: gdb.mi/mi-nsthrexec.exp: breakpoint at main
+PASS: gdb.mi/mi-nsthrexec.exp: stop at main after exec
+Running ../../../master/gdb/testsuite/gdb.mi/mi-pending.exp ...
+PASS: gdb.mi/mi-pending.exp: MI pending breakpoint on pendfunc1
+PASS: gdb.mi/mi-pending.exp: Run till MI pending breakpoint on pendfunc1
+Running ../../../master/gdb/testsuite/gdb.mi/mi-pthreads.exp ...
+PASS: gdb.mi/mi-pthreads.exp: successfully compiled posix threads test case
+PASS: gdb.mi/mi-pthreads.exp: breakpoint at done_making_threads
+PASS: gdb.mi/mi-pthreads.exp: mi runto done_making_threads
+PASS: gdb.mi/mi-pthreads.exp: -thread_list_ids (in check_mi_thread_command_set)
+PASS: gdb.mi/mi-pthreads.exp: finding threads in MI output (in check_mi_thread_command_set)
+PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select
+PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 123456789
+PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 6
+PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 5
+PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 4
+PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 3
+PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 2
+PASS: gdb.mi/mi-pthreads.exp: check_mi_thread_command_set: -thread-select 1
+PASS: gdb.mi/mi-pthreads.exp: check =thread-selected: thread 6
+PASS: gdb.mi/mi-pthreads.exp: check =thread-selected: thread 5
+PASS: gdb.mi/mi-pthreads.exp: check =thread-selected: thread 4
+PASS: gdb.mi/mi-pthreads.exp: check =thread-selected: thread 3
+PASS: gdb.mi/mi-pthreads.exp: check =thread-selected: thread 2
+PASS: gdb.mi/mi-pthreads.exp: check =thread-selected: thread 1
+Running ../../../master/gdb/testsuite/gdb.mi/mi-read-memory.exp ...
+PASS: gdb.mi/mi-read-memory.exp: breakpoint at main
+PASS: gdb.mi/mi-read-memory.exp: mi runto main
+PASS: gdb.mi/mi-read-memory.exp: next at main
+PASS: gdb.mi/mi-read-memory.exp: no arguments
+PASS: gdb.mi/mi-read-memory.exp: 3x2, one byte
+PASS: gdb.mi/mi-read-memory.exp: 3x2, one byte offset by -6
+PASS: gdb.mi/mi-read-memory.exp: expression in quotes
+PASS: gdb.mi/mi-read-memory.exp: ascii and data
+PASS: gdb.mi/mi-read-memory.exp: decimal
+PASS: gdb.mi/mi-read-memory.exp: octal
+Running ../../../master/gdb/testsuite/gdb.mi/mi-regs.exp ...
+Running ../../../master/gdb/testsuite/gdb.mi/mi-return.exp ...
+PASS: gdb.mi/mi-return.exp: breakpoint at callee4
+PASS: gdb.mi/mi-return.exp: mi runto callee4
+PASS: gdb.mi/mi-return.exp: delete all breakpoints
+PASS: gdb.mi/mi-return.exp: return from callee4 now
+Running ../../../master/gdb/testsuite/gdb.mi/mi-reverse.exp ...
+Running ../../../master/gdb/testsuite/gdb.mi/mi-simplerun.exp ...
+PASS: gdb.mi/mi-simplerun.exp: break-insert operation
+PASS: gdb.mi/mi-simplerun.exp: insert breakpoint at basics.c:callee2
+PASS: gdb.mi/mi-simplerun.exp: insert breakpoint at basics.c:$line_callee3_head
+PASS: gdb.mi/mi-simplerun.exp: insert breakpoint at "<fullfilename>":$line_callee4_head
+PASS: gdb.mi/mi-simplerun.exp: list of breakpoints
+PASS: gdb.mi/mi-simplerun.exp: disabling of breakpoints
+PASS: gdb.mi/mi-simplerun.exp: list of breakpoints, 16 disabled
+PASS: gdb.mi/mi-simplerun.exp: run to main
+PASS: gdb.mi/mi-simplerun.exp: next at main
+PASS: gdb.mi/mi-simplerun.exp: step at main
+PASS: gdb.mi/mi-simplerun.exp: step to callee4
+PASS: gdb.mi/mi-simplerun.exp: exec-finish
+PASS: gdb.mi/mi-simplerun.exp: continue to end
+Running ../../../master/gdb/testsuite/gdb.mi/mi-stack.exp ...
+PASS: gdb.mi/mi-stack.exp: breakpoint at callee4
+PASS: gdb.mi/mi-stack.exp: mi runto callee4
+PASS: gdb.mi/mi-stack.exp: stack frame listing
+PASS: gdb.mi/mi-stack.exp: stack frame listing 1 1
+PASS: gdb.mi/mi-stack.exp: stack frame listing 1 3
+PASS: gdb.mi/mi-stack.exp: stack frame listing wrong
+PASS: gdb.mi/mi-stack.exp: selected frame listing
+PASS: gdb.mi/mi-stack.exp: stack frame listing 1 300
+PASS: gdb.mi/mi-stack.exp: stack args listing 0
+PASS: gdb.mi/mi-stack.exp: stack args listing 0 1 1
+PASS: gdb.mi/mi-stack.exp: stack args listing 0 1 3
+PASS: gdb.mi/mi-stack.exp: stack args listing 1
+PASS: gdb.mi/mi-stack.exp: stack args listing 1 1 1
+PASS: gdb.mi/mi-stack.exp: stack args listing 1 1 3
+PASS: gdb.mi/mi-stack.exp: stack args listing wrong
+PASS: gdb.mi/mi-stack.exp: stack args listing 1 1 300
+PASS: gdb.mi/mi-stack.exp: stack locals listing of names
+PASS: gdb.mi/mi-stack.exp: next's in callee4
+PASS: gdb.mi/mi-stack.exp: stack locals listing of names and values
+PASS: gdb.mi/mi-stack.exp: stack locals listing, simple types: names and values, complex type: names and types
+PASS: gdb.mi/mi-stack.exp: stack locals listing wrong
+PASS: gdb.mi/mi-stack.exp: stack select frame 1
+PASS: gdb.mi/mi-stack.exp: stack locals listing for new frame
+PASS: gdb.mi/mi-stack.exp: stack locals for same frame (level 1)
+PASS: gdb.mi/mi-stack.exp: stack info-depth
+PASS: gdb.mi/mi-stack.exp: stack info-depth 3
+PASS: gdb.mi/mi-stack.exp: stack info-depth 99
+PASS: gdb.mi/mi-stack.exp: stack info-depth wrong usage
+Running ../../../master/gdb/testsuite/gdb.mi/mi-stepi.exp ...
+PASS: gdb.mi/mi-stepi.exp: breakpoint at main
+PASS: gdb.mi/mi-stepi.exp: mi runto main
+PASS: gdb.mi/mi-stepi.exp: step-instruction at main
+PASS: gdb.mi/mi-stepi.exp: step-instruction at main (line check)
+PASS: gdb.mi/mi-stepi.exp: next-instruction at main
+PASS: gdb.mi/mi-stepi.exp: next-instruction at main (line check)
+PASS: gdb.mi/mi-stepi.exp: next-instruction at main 2
+PASS: gdb.mi/mi-stepi.exp: next-instruction at main 2 (line check)
+Running ../../../master/gdb/testsuite/gdb.mi/mi-syn-frame.exp ...
+PASS: gdb.mi/mi-syn-frame.exp: breakpoint at main
+PASS: gdb.mi/mi-syn-frame.exp: mi runto main
+PASS: gdb.mi/mi-syn-frame.exp: insert breakpoint foo
+PASS: gdb.mi/mi-syn-frame.exp: call inferior's function with a breakpoint set in it
+PASS: gdb.mi/mi-syn-frame.exp: backtrace from inferior function stopped at bp, showing gdb dummy frame
+PASS: gdb.mi/mi-syn-frame.exp: finished exec continue
+PASS: gdb.mi/mi-syn-frame.exp: list stack frames
+PASS: gdb.mi/mi-syn-frame.exp: insert breakpoint subroutine
+PASS: gdb.mi/mi-syn-frame.exp: data evaluate expression
+PASS: gdb.mi/mi-syn-frame.exp: list stack frames
+PASS: gdb.mi/mi-syn-frame.exp: finished exec continue
+PASS: gdb.mi/mi-syn-frame.exp: list stack frames
+PASS: gdb.mi/mi-syn-frame.exp: call inferior function which raises exception
+PASS: gdb.mi/mi-syn-frame.exp: backtrace from inferior function at exception
+Running ../../../master/gdb/testsuite/gdb.mi/mi-until.exp ...
+PASS: gdb.mi/mi-until.exp: break-insert operation
+PASS: gdb.mi/mi-until.exp: run to main
+PASS: gdb.mi/mi-until.exp: break-delete 1
+KFAIL: gdb.mi/mi-until.exp: until after while loop (stopped at wrong place) (PRMS: gdb/2104)
+PASS: gdb.mi/mi-until.exp: until line number
+PASS: gdb.mi/mi-until.exp: until line number:file
+PASS: gdb.mi/mi-until.exp: until after current function
+Running ../../../master/gdb/testsuite/gdb.mi/mi-var-block.exp ...
+PASS: gdb.mi/mi-var-block.exp: breakpoint at do_block_tests
+PASS: gdb.mi/mi-var-block.exp: mi runto do_block_tests
+PASS: gdb.mi/mi-var-block.exp: create local variable cb
+PASS: gdb.mi/mi-var-block.exp: try to create local variable foo
+PASS: gdb.mi/mi-var-block.exp: step at do_block_test
+PASS: gdb.mi/mi-var-block.exp: delete var foo
+PASS: gdb.mi/mi-var-block.exp: create local variable foo
+PASS: gdb.mi/mi-var-block.exp: step at do_block_test
+PASS: gdb.mi/mi-var-block.exp: update all vars: cb foo changed
+PASS: gdb.mi/mi-var-block.exp: step at do_block_test
+PASS: gdb.mi/mi-var-block.exp: create local variable inner_foo
+PASS: gdb.mi/mi-var-block.exp: step at do_block_test
+PASS: gdb.mi/mi-var-block.exp: create local variable foo2
+XFAIL: gdb.mi/mi-var-block.exp: update inner_foo: should be out of scope: KNOWN PROBLEM
+XFAIL: gdb.mi/mi-var-block.exp: evaluate inner_foo: should be out of scope: KNOWN PROBLEM
+PASS: gdb.mi/mi-var-block.exp: update foo: did not change
+PASS: gdb.mi/mi-var-block.exp: delete var inner_foo
+PASS: gdb.mi/mi-var-block.exp: step at do_block_test
+XFAIL: gdb.mi/mi-var-block.exp: update foo2: should be out of scope: KNOWN PROBLEM
+PASS: gdb.mi/mi-var-block.exp: step at do_block_test
+XFAIL: gdb.mi/mi-var-block.exp: update foo2 should be out of scope: KNOWN PROBLEM
+XFAIL: gdb.mi/mi-var-block.exp: update foo should be out of scope: KNOWN PROBLEM
+PASS: gdb.mi/mi-var-block.exp: update cb
+PASS: gdb.mi/mi-var-block.exp: delete var foo
+PASS: gdb.mi/mi-var-block.exp: delete var foo2
+PASS: gdb.mi/mi-var-block.exp: delete var cb
+Running ../../../master/gdb/testsuite/gdb.mi/mi-var-child-f.exp ...
+UNSUPPORTED: gdb.mi/mi-var-child-f.exp: compilation array.f
+Running ../../../master/gdb/testsuite/gdb.mi/mi-var-child.exp ...
+PASS: gdb.mi/mi-var-child.exp: breakpoint at do_children_tests
+PASS: gdb.mi/mi-var-child.exp: mi runto do_children_tests
+PASS: gdb.mi/mi-var-child.exp: run to 216 (set breakpoint)
+PASS: gdb.mi/mi-var-child.exp: create local variable struct_declarations
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.integer
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.integer
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.character
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.character
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.char_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.char_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_int
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_int
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.int_ptr_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.int_ptr_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.func_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.func_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.func_ptr_struct
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.func_ptr_struct
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.func_ptr_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.func_ptr_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.u1
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.u1
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.1
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.1
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.2
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.2
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.3
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.3
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.4
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.4
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.5
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.5
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.6
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.6
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.7
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.7
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.8
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.8
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.long_array.9
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.long_array.9
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.u1.a
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.u1.a
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.u1.b
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.u1.b
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.u1.c
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.u1.c
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.u1.d
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.u1.d
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.g
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.g
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.h
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.h
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.i
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.i
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s1
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.f
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.f
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s2
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s2
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s1.d
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.d
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s1.e
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.e
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s1.func
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.func
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s1.foo
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.foo
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s2.array_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s2.array_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.s2.u2.u1s2.func
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.s2.u2.u1s2.func
+PASS: gdb.mi/mi-var-child.exp: get children of struct_declarations.int_ptr_ptr.*int_ptr_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of struct_declarations.int_ptr_ptr.*int_ptr_ptr
+PASS: gdb.mi/mi-var-child.exp: step to line $line_dct_123
+PASS: gdb.mi/mi-var-child.exp: create local variable weird
+PASS: gdb.mi/mi-var-child.exp: get children of weird
+PASS: gdb.mi/mi-var-child.exp: get number of children of weird
+PASS: gdb.mi/mi-var-child.exp: get children of weird.long_array
+PASS: gdb.mi/mi-var-child.exp: get number of children of weird.long_array
+PASS: gdb.mi/mi-var-child.exp: get children of weird.int_ptr_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of weird.int_ptr_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of weird.int_ptr_ptr.*int_ptr_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of weird.int_ptr_ptr.*int_ptr_ptr
+PASS: gdb.mi/mi-var-child.exp: create local variable weird->int_ptr_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of weird->int_ptr_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of weird->int_ptr_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of weird->int_ptr_ptr.*weird->int_ptr_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of weird->int_ptr_ptr.*weird->int_ptr_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr
+PASS: gdb.mi/mi-var-child.exp: is weird editable
+PASS: gdb.mi/mi-var-child.exp: is weird->int_ptr_ptr editable
+PASS: gdb.mi/mi-var-child.exp: is weird.int_ptr_ptr.*int_ptr_ptr editable
+PASS: gdb.mi/mi-var-child.exp: is weird.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr editable
+PASS: gdb.mi/mi-var-child.exp: is weird.u1 editable
+PASS: gdb.mi/mi-var-child.exp: is weird.s2 editable
+PASS: gdb.mi/mi-var-child.exp: is struct_declarations.u1.a editable
+PASS: gdb.mi/mi-var-child.exp: is struct_declarations.u1.b editable
+PASS: gdb.mi/mi-var-child.exp: is struct_declarations.u1.c editable
+PASS: gdb.mi/mi-var-child.exp: is struct_declarations.long_array editable
+PASS: gdb.mi/mi-var-child.exp: is struct_declarations.long_array.0 editable
+PASS: gdb.mi/mi-var-child.exp: is struct_declarations editable
+PASS: gdb.mi/mi-var-child.exp: delete var weird
+PASS: gdb.mi/mi-var-child.exp: update all vars. None changed
+PASS: gdb.mi/mi-var-child.exp: step $line_dct_123 + 1
+PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.integer
+PASS: gdb.mi/mi-var-child.exp: step $line_dct_123 + 4
+PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.char_ptr
+PASS: gdb.mi/mi-var-child.exp: step $line_dct_123 + 5
+PASS: gdb.mi/mi-var-child.exp: update all vars int_ptr_ptr and children changed
+PASS: gdb.mi/mi-var-child.exp: step $line_dct_123 + 6
+PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.long_array.0 changed
+PASS: gdb.mi/mi-var-child.exp: step $line_dct_123 + 7
+PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.long_array.1 changed
+PASS: gdb.mi/mi-var-child.exp: step $line_dct_123 + 8
+PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.long_array.2 changed
+PASS: gdb.mi/mi-var-child.exp: step $line_dct_nothing
+PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.long_array.3-9 changed
+PASS: gdb.mi/mi-var-child.exp: step $line_dct_nothing + 1
+PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.func_ptr changed
+PASS: gdb.mi/mi-var-child.exp: step $line_dct_nothing + 2
+PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.long_array.10 changed, don't print values.
+PASS: gdb.mi/mi-var-child.exp: step $line_dct_a0_0
+PASS: gdb.mi/mi-var-child.exp: update all vars struct_declarations.long_array.11 changed, print values.
+PASS: gdb.mi/mi-var-child.exp: listing of names and values of children
+PASS: gdb.mi/mi-var-child.exp: listing of children, simple types: names, type and values, complex types: names and types
+PASS: gdb.mi/mi-var-child.exp: delete var struct_declarations
+PASS: gdb.mi/mi-var-child.exp: delete var weird->int_ptr_ptr
+PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 1
+PASS: gdb.mi/mi-var-child.exp: create local variable psnp->char_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of psnp->char_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->char_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr
+PASS: gdb.mi/mi-var-child.exp: create local variable psnp->long_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of psnp->long_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->long_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr
+PASS: gdb.mi/mi-var-child.exp: create local variable psnp->ptrs
+PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs
+PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs
+PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0
+PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0
+PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next
+PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0.next
+PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.char_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr
+PASS: gdb.mi/mi-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr
+PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.next
+PASS: gdb.mi/mi-var-child.exp: get children of psnp->ptrs.0.next.next.ptrs
+PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 2
+PASS: gdb.mi/mi-var-child.exp: update all vars psnp->char_ptr (and 0.char_ptr) changed
+PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 3
+PASS: gdb.mi/mi-var-child.exp: update all vars psnp->next->char_ptr (and 1.char_ptr) changed
+PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 4
+PASS: gdb.mi/mi-var-child.exp: update all vars psnp->next->next->char_ptr (and 2.char_ptr) changed
+PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 5
+PASS: gdb.mi/mi-var-child.exp: update all vars psnp->long_ptr (and 0.long_ptr) changed
+PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 6
+XFAIL: gdb.mi/mi-var-child.exp: update all vars psnp->next->long_ptr (and 1.long_ptr) changed
+PASS: gdb.mi/mi-var-child.exp: step $line_dct_snp0 + 7
+PASS: gdb.mi/mi-var-child.exp: update all vars psnp->next->next->long_ptr (and 2.long_ptr) changed
+PASS: gdb.mi/mi-var-child.exp: run to mi-var-child.c:324 (set breakpoint)
+PASS: gdb.mi/mi-var-child.exp: create varobj for s
+PASS: gdb.mi/mi-var-child.exp: list children of S
+PASS: gdb.mi/mi-var-child.exp: delete S.a
+PASS: gdb.mi/mi-var-child.exp: delete S.b
+PASS: gdb.mi/mi-var-child.exp: delete S
+Running ../../../master/gdb/testsuite/gdb.mi/mi-var-cmd.exp ...
+PASS: gdb.mi/mi-var-cmd.exp: create global variable
+PASS: gdb.mi/mi-var-cmd.exp: create non-existent variable
+PASS: gdb.mi/mi-var-cmd.exp: create out of scope variable
+PASS: gdb.mi/mi-var-cmd.exp: breakpoint at do_locals_tests
+PASS: gdb.mi/mi-var-cmd.exp: mi runto do_locals_tests
+PASS: gdb.mi/mi-var-cmd.exp: run to 131 (set breakpoint)
+PASS: gdb.mi/mi-var-cmd.exp: create local variable linteger
+PASS: gdb.mi/mi-var-cmd.exp: create local variable lpinteger
+PASS: gdb.mi/mi-var-cmd.exp: create local variable lcharacter
+PASS: gdb.mi/mi-var-cmd.exp: create local variable lpcharacter
+PASS: gdb.mi/mi-var-cmd.exp: create local variable llong
+PASS: gdb.mi/mi-var-cmd.exp: create local variable lplong
+PASS: gdb.mi/mi-var-cmd.exp: create local variable lfloat
+PASS: gdb.mi/mi-var-cmd.exp: create local variable lpfloat
+PASS: gdb.mi/mi-var-cmd.exp: create local variable ldouble
+PASS: gdb.mi/mi-var-cmd.exp: create local variable lpdouble
+PASS: gdb.mi/mi-var-cmd.exp: create local variable lsimple
+PASS: gdb.mi/mi-var-cmd.exp: create local variable lpsimple
+PASS: gdb.mi/mi-var-cmd.exp: create local variable func
+PASS: gdb.mi/mi-var-cmd.exp: create lsimple.character
+PASS: gdb.mi/mi-var-cmd.exp: create lsimple->integer
+PASS: gdb.mi/mi-var-cmd.exp: create lsimple.integer
+PASS: gdb.mi/mi-var-cmd.exp: create int
+PASS: gdb.mi/mi-var-cmd.exp: update all vars
+PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_test
+PASS: gdb.mi/mi-var-cmd.exp: update all vars: linteger changed
+PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_tests (2)
+PASS: gdb.mi/mi-var-cmd.exp: update all vars: lpinteger changed
+PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_tests (3)
+PASS: gdb.mi/mi-var-cmd.exp: update all vars: lcharacter changed
+PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_tests (4)
+PASS: gdb.mi/mi-var-cmd.exp: update all vars: lpcharacter changed
+PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_tests (5)
+PASS: gdb.mi/mi-var-cmd.exp: update all vars: many changed
+PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_tests (6)
+PASS: gdb.mi/mi-var-cmd.exp: update all vars: func and lpsimple changed
+PASS: gdb.mi/mi-var-cmd.exp: step at do_locals_tests (7)
+PASS: gdb.mi/mi-var-cmd.exp: update all vars: lsimple and others changed
+PASS: gdb.mi/mi-var-cmd.exp: assign to global_simple
+PASS: gdb.mi/mi-var-cmd.exp: assign to linteger
+PASS: gdb.mi/mi-var-cmd.exp: update all vars: linteger changed after assign
+PASS: gdb.mi/mi-var-cmd.exp: assign to linteger again, same value
+PASS: gdb.mi/mi-var-cmd.exp: update all vars: linteger not changed after same assign
+PASS: gdb.mi/mi-var-cmd.exp: eval linteger
+PASS: gdb.mi/mi-var-cmd.exp: assign to lpinteger
+PASS: gdb.mi/mi-var-cmd.exp: update all vars: lpinteger changed after assign
+PASS: gdb.mi/mi-var-cmd.exp: update all vars: no changes on second update
+PASS: gdb.mi/mi-var-cmd.exp: eval lpinteger
+PASS: gdb.mi/mi-var-cmd.exp: assign to linteger
+PASS: gdb.mi/mi-var-cmd.exp: assign to lpinteger
+PASS: gdb.mi/mi-var-cmd.exp: assign to lcharacter
+PASS: gdb.mi/mi-var-cmd.exp: eval lcharacter
+PASS: gdb.mi/mi-var-cmd.exp: assign to llong
+PASS: gdb.mi/mi-var-cmd.exp: eval llong
+PASS: gdb.mi/mi-var-cmd.exp: assign to llong
+PASS: gdb.mi/mi-var-cmd.exp: assign to lplong
+PASS: gdb.mi/mi-var-cmd.exp: eval lplong
+PASS: gdb.mi/mi-var-cmd.exp: assign to lplong
+PASS: gdb.mi/mi-var-cmd.exp: assign to lfloat
+PASS: gdb.mi/mi-var-cmd.exp: eval lfloat
+PASS: gdb.mi/mi-var-cmd.exp: assign to lfloat
+PASS: gdb.mi/mi-var-cmd.exp: assign to lpfloat
+PASS: gdb.mi/mi-var-cmd.exp: assign to ldouble
+PASS: gdb.mi/mi-var-cmd.exp: assign to func
+PASS: gdb.mi/mi-var-cmd.exp: assign to lsimple.character
+PASS: gdb.mi/mi-var-cmd.exp: assign to lsimple->integer
+PASS: gdb.mi/mi-var-cmd.exp: assign to lsimple.integer
+PASS: gdb.mi/mi-var-cmd.exp: var update
+PASS: gdb.mi/mi-var-cmd.exp: assign same value to func
+PASS: gdb.mi/mi-var-cmd.exp: assign same value to func (update)
+PASS: gdb.mi/mi-var-cmd.exp: create global variable array_ptr
+PASS: gdb.mi/mi-var-cmd.exp: assign array to pointer
+PASS: gdb.mi/mi-var-cmd.exp: assign array to pointer (update)
+PASS: gdb.mi/mi-var-cmd.exp: assign same array to pointer
+PASS: gdb.mi/mi-var-cmd.exp: assign same array to pointer (update)
+PASS: gdb.mi/mi-var-cmd.exp: breakpoint at subroutine1
+PASS: gdb.mi/mi-var-cmd.exp: mi runto subroutine1
+PASS: gdb.mi/mi-var-cmd.exp: create i
+PASS: gdb.mi/mi-var-cmd.exp: create l
+PASS: gdb.mi/mi-var-cmd.exp: create linteger
+PASS: gdb.mi/mi-var-cmd.exp: step at subroutine1
+XFAIL: gdb.mi/mi-var-cmd.exp: update all vars: changed FIXME
+PASS: gdb.mi/mi-var-cmd.exp: step at subroutine1 (2)
+PASS: gdb.mi/mi-var-cmd.exp: update all vars: i changed
+PASS: gdb.mi/mi-var-cmd.exp: step at subroutine1 (3)
+PASS: gdb.mi/mi-var-cmd.exp: update all vars: llong changed
+PASS: gdb.mi/mi-var-cmd.exp: next out of subroutine1
+PASS: gdb.mi/mi-var-cmd.exp: update all vars: all now out of scope
+PASS: gdb.mi/mi-var-cmd.exp: delete var
+PASS: gdb.mi/mi-var-cmd.exp: delete var linteger
+PASS: gdb.mi/mi-var-cmd.exp: delete var lpinteger
+PASS: gdb.mi/mi-var-cmd.exp: delete var lcharacter
+PASS: gdb.mi/mi-var-cmd.exp: delete var lpcharacter
+PASS: gdb.mi/mi-var-cmd.exp: delete var llong
+PASS: gdb.mi/mi-var-cmd.exp: delete var lplong
+PASS: gdb.mi/mi-var-cmd.exp: delete var lfloat
+PASS: gdb.mi/mi-var-cmd.exp: delete var lpfloat
+PASS: gdb.mi/mi-var-cmd.exp: delete var ldouble
+PASS: gdb.mi/mi-var-cmd.exp: delete var lpdouble
+PASS: gdb.mi/mi-var-cmd.exp: delete var lsimple
+PASS: gdb.mi/mi-var-cmd.exp: delete var lpsimple
+PASS: gdb.mi/mi-var-cmd.exp: delete var func
+PASS: gdb.mi/mi-var-cmd.exp: delete var lsimple.character
+PASS: gdb.mi/mi-var-cmd.exp: delete var lsimple->integer
+PASS: gdb.mi/mi-var-cmd.exp: delete var lsimple.integer
+PASS: gdb.mi/mi-var-cmd.exp: delete var i
+PASS: gdb.mi/mi-var-cmd.exp: delete var l
+PASS: gdb.mi/mi-var-cmd.exp: breakpoint at do_special_tests
+PASS: gdb.mi/mi-var-cmd.exp: mi runto do_special_tests
+PASS: gdb.mi/mi-var-cmd.exp: create selected_a
+PASS: gdb.mi/mi-var-cmd.exp: breakpoint at incr_a
+PASS: gdb.mi/mi-var-cmd.exp: mi runto incr_a
+PASS: gdb.mi/mi-var-cmd.exp: update selected_a in incr_a
+PASS: gdb.mi/mi-var-cmd.exp: step a line in incr_a
+PASS: gdb.mi/mi-var-cmd.exp: return from incr_a to do_special_tests
+PASS: gdb.mi/mi-var-cmd.exp: update selected_a in do_special_tests
+PASS: gdb.mi/mi-var-cmd.exp: floating varobj invalidation
+PASS: gdb.mi/mi-var-cmd.exp: delete selected_a
+PASS: gdb.mi/mi-var-cmd.exp: delete array_ptr
+PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:334 (set breakpoint)
+PASS: gdb.mi/mi-var-cmd.exp: create varobj for v1
+PASS: gdb.mi/mi-var-cmd.exp: create varobj for v2
+PASS: gdb.mi/mi-var-cmd.exp: list children of v1
+PASS: gdb.mi/mi-var-cmd.exp: list children of v1.nested
+PASS: gdb.mi/mi-var-cmd.exp: check V1.i: 1
+PASS: gdb.mi/mi-var-cmd.exp: check V1.nested.j: 2
+PASS: gdb.mi/mi-var-cmd.exp: check V1.nested.k: 3
+PASS: gdb.mi/mi-var-cmd.exp: check V2: 4
+PASS: gdb.mi/mi-var-cmd.exp: update varobjs: V2 changed
+PASS: gdb.mi/mi-var-cmd.exp: -var-set-frozen V2 1
+PASS: gdb.mi/mi-var-cmd.exp: update varobjs: nothing changed
+PASS: gdb.mi/mi-var-cmd.exp: check V2: 5
+PASS: gdb.mi/mi-var-cmd.exp: update V2 explicitly
+PASS: gdb.mi/mi-var-cmd.exp: check V2: 6
+PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:368 (set breakpoint)
+PASS: gdb.mi/mi-var-cmd.exp: -var-set-frozen V1 1
+PASS: gdb.mi/mi-var-cmd.exp: update varobjs: nothing changed
+PASS: gdb.mi/mi-var-cmd.exp: check V1.i: 1
+PASS: gdb.mi/mi-var-cmd.exp: check V1.nested.j: 2
+PASS: gdb.mi/mi-var-cmd.exp: check V1.nested.k: 3
+PASS: gdb.mi/mi-var-cmd.exp: update V1.nested.j
+PASS: gdb.mi/mi-var-cmd.exp: check V1.i: 1
+PASS: gdb.mi/mi-var-cmd.exp: check V1.nested.j: 8
+PASS: gdb.mi/mi-var-cmd.exp: check V1.nested.k: 3
+PASS: gdb.mi/mi-var-cmd.exp: update V1.nested
+PASS: gdb.mi/mi-var-cmd.exp: check V1.i: 1
+PASS: gdb.mi/mi-var-cmd.exp: check V1.nested.j: 8
+PASS: gdb.mi/mi-var-cmd.exp: check V1.nested.k: 9
+PASS: gdb.mi/mi-var-cmd.exp: update V1.i
+PASS: gdb.mi/mi-var-cmd.exp: check V1.i: 7
+PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:393 (set breakpoint)
+PASS: gdb.mi/mi-var-cmd.exp: -var-set-frozen V1 0
+PASS: gdb.mi/mi-var-cmd.exp: check V1.i: 7
+PASS: gdb.mi/mi-var-cmd.exp: check V1.nested.j: 8
+PASS: gdb.mi/mi-var-cmd.exp: check V1.nested.k: 9
+PASS: gdb.mi/mi-var-cmd.exp: update V1
+PASS: gdb.mi/mi-var-cmd.exp: check V1.i: 10
+PASS: gdb.mi/mi-var-cmd.exp: check V1.nested.j: 11
+PASS: gdb.mi/mi-var-cmd.exp: check V1.nested.k: 12
+PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:493 (set breakpoint)
+PASS: gdb.mi/mi-var-cmd.exp: create varobj for Data
+PASS: gdb.mi/mi-var-cmd.exp: list children of Data
+PASS: gdb.mi/mi-var-cmd.exp: access bitfield
+PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:436 (set breakpoint)
+PASS: gdb.mi/mi-var-cmd.exp: create floating varobj
+PASS: gdb.mi/mi-var-cmd.exp: update F (1)
+PASS: gdb.mi/mi-var-cmd.exp: check F (1)
+PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:447 (set breakpoint)
+PASS: gdb.mi/mi-var-cmd.exp: update F (2)
+PASS: gdb.mi/mi-var-cmd.exp: check F (2)
+PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:455 (set breakpoint)
+PASS: gdb.mi/mi-var-cmd.exp: update F (--all-values)
+PASS: gdb.mi/mi-var-cmd.exp: run to var-cmd.c:461 (set breakpoint)
+PASS: gdb.mi/mi-var-cmd.exp: update F (3)
+PASS: gdb.mi/mi-var-cmd.exp: check F (3)
+PASS: gdb.mi/mi-var-cmd.exp: inside breakpoint inside callee
+PASS: gdb.mi/mi-var-cmd.exp: continue to where i is initialized
+PASS: gdb.mi/mi-var-cmd.exp: update F inside callee
+PASS: gdb.mi/mi-var-cmd.exp: check F inside callee
+PASS: gdb.mi/mi-var-cmd.exp: create null_ptr
+PASS: gdb.mi/mi-var-cmd.exp: update null_ptr
+PASS: gdb.mi/mi-var-cmd.exp: delete null_ptr
+PASS: gdb.mi/mi-var-cmd.exp: kill program before endvar
+PASS: gdb.mi/mi-var-cmd.exp: create endvar
+PASS: gdb.mi/mi-var-cmd.exp: update endvar
+PASS: gdb.mi/mi-var-cmd.exp: delete endvar
+PASS: gdb.mi/mi-var-cmd.exp: breakpoint at do_locals_tests
+PASS: gdb.mi/mi-var-cmd.exp: mi runto do_locals_tests
+PASS: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: create varobj
+PASS: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: check initial value
+PASS: gdb.mi/mi-var-cmd.exp: breakpoint at main
+PASS: gdb.mi/mi-var-cmd.exp: mi runto main
+PASS: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: out of scope now
+PASS: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: out of scope now, not changed
+PASS: gdb.mi/mi-var-cmd.exp: breakpoint at do_locals_tests
+PASS: gdb.mi/mi-var-cmd.exp: mi runto do_locals_tests
+PASS: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: in scope now
+PASS: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: in scope now, not changed
+Running ../../../master/gdb/testsuite/gdb.mi/mi-var-cp.exp ...
+PASS: gdb.mi/mi-var-cp.exp: run to mi-var-cp.cc:20 (set breakpoint)
+PASS: gdb.mi/mi-var-cp.exp: create varobj for rx
+PASS: gdb.mi/mi-var-cp.exp: update RX (1)
+PASS: gdb.mi/mi-var-cp.exp: check RX: expect 167
+PASS: gdb.mi/mi-var-cp.exp: update RX (2)
+PASS: gdb.mi/mi-var-cp.exp: check RX: expect 567
+PASS: gdb.mi/mi-var-cp.exp: update RX (3)
+PASS: gdb.mi/mi-var-cp.exp: delete RX
+PASS: gdb.mi/mi-var-cp.exp: run to mi-var-cp.cc:46 (set breakpoint)
+PASS: gdb.mi/mi-var-cp.exp: create varobj for s2
+PASS: gdb.mi/mi-var-cp.exp: list children of s2
+PASS: gdb.mi/mi-var-cp.exp: list children of s2.s
+PASS: gdb.mi/mi-var-cp.exp: list children of s2.s.public
+PASS: gdb.mi/mi-var-cp.exp: check S2.S.public.i
+PASS: gdb.mi/mi-var-cp.exp: check S2.S.public.j
+PASS: gdb.mi/mi-var-cp.exp: delete S2
+PASS: gdb.mi/mi-var-cp.exp: run to mi-var-cp.cc:82 (set breakpoint)
+PASS: gdb.mi/mi-var-cp.exp: create varobj for rptr_s
+PASS: gdb.mi/mi-var-cp.exp: list public child of RPTR
+PASS: gdb.mi/mi-var-cp.exp: list children of reference to pointer
+PASS: gdb.mi/mi-var-cp.exp: check i member
+PASS: gdb.mi/mi-var-cp.exp: check j member
+PASS: gdb.mi/mi-var-cp.exp: delete RPTR
+PASS: gdb.mi/mi-var-cp.exp: run to mi-var-cp.cc:105 (set breakpoint)
+PASS: gdb.mi/mi-var-cp.exp: create varobj for s
+PASS: gdb.mi/mi-var-cp.exp: create varobj for s
+PASS: gdb.mi/mi-var-cp.exp: check attributes of S
+PASS: gdb.mi/mi-var-cp.exp: check attributes of R
+PASS: gdb.mi/mi-var-cp.exp: -var-update should not list structure varobjs
+PASS: gdb.mi/mi-var-cp.exp: run to mi-var-cp.cc:145 (set breakpoint)
+PASS: gdb.mi/mi-var-cp.exp: create varobj for ip
+PASS: gdb.mi/mi-var-cp.exp: list children of IP
+PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression IP.*ip
+PASS: gdb.mi/mi-var-cp.exp: create varobj for dp
+PASS: gdb.mi/mi-var-cp.exp: list children of DP
+PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression DP.Base1
+PASS: gdb.mi/mi-var-cp.exp: list children of DP.public
+PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression DP.public.i
+PASS: gdb.mi/mi-var-cp.exp: list children of DP.Base1
+PASS: gdb.mi/mi-var-cp.exp: list children of DP.Base1.public
+PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression DP.Base1.public.i
+PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression DP.public
+PASS: gdb.mi/mi-var-cp.exp: create varobj for d
+PASS: gdb.mi/mi-var-cp.exp: list children of D
+PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression D.Base1
+PASS: gdb.mi/mi-var-cp.exp: run to mi-var-cp.cc:192 (set breakpoint)
+PASS: gdb.mi/mi-var-cp.exp: create varobj for array
+PASS: gdb.mi/mi-var-cp.exp: list children of A
+PASS: gdb.mi/mi-var-cp.exp: -var-info-path-expression A.2
+Running ../../../master/gdb/testsuite/gdb.mi/mi-var-display.exp ...
+PASS: gdb.mi/mi-var-display.exp: break-insert operation
+PASS: gdb.mi/mi-var-display.exp: run to main
+PASS: gdb.mi/mi-var-display.exp: create local variable bar
+PASS: gdb.mi/mi-var-display.exp: info type variable bar
+PASS: gdb.mi/mi-var-display.exp: show format variable bar
+PASS: gdb.mi/mi-var-display.exp: eval variable bar
+PASS: gdb.mi/mi-var-display.exp: set format variable bar
+PASS: gdb.mi/mi-var-display.exp: eval variable bar with new format
+PASS: gdb.mi/mi-var-display.exp: assing to variable bar
+PASS: gdb.mi/mi-var-display.exp: set format variable bar
+PASS: gdb.mi/mi-var-display.exp: eval variable bar with new value
+PASS: gdb.mi/mi-var-display.exp: delete var bar
+PASS: gdb.mi/mi-var-display.exp: create local variable foo
+PASS: gdb.mi/mi-var-display.exp: info type variable foo
+PASS: gdb.mi/mi-var-display.exp: show format variable foo
+PASS: gdb.mi/mi-var-display.exp: eval variable foo
+PASS: gdb.mi/mi-var-display.exp: set format variable foo
+PASS: gdb.mi/mi-var-display.exp: show format variable foo
+PASS: gdb.mi/mi-var-display.exp: eval variable foo
+PASS: gdb.mi/mi-var-display.exp: assing to variable foo
+PASS: gdb.mi/mi-var-display.exp: set format variable foo
+PASS: gdb.mi/mi-var-display.exp: eval variable foo
+PASS: gdb.mi/mi-var-display.exp: eval variable foo in hex
+PASS: gdb.mi/mi-var-display.exp: show format variable foo after eval in hex
+PASS: gdb.mi/mi-var-display.exp: eval variable foo in octal
+PASS: gdb.mi/mi-var-display.exp: show format variable foo after eval in octal
+PASS: gdb.mi/mi-var-display.exp: eval variable foo in decimal
+PASS: gdb.mi/mi-var-display.exp: show format variable foo after eval in decimal
+PASS: gdb.mi/mi-var-display.exp: eval variable foo in natural
+PASS: gdb.mi/mi-var-display.exp: show format variable foo after eval in natural
+PASS: gdb.mi/mi-var-display.exp: eval variable foo in binary
+PASS: gdb.mi/mi-var-display.exp: show format variable foo after eval in binary
+PASS: gdb.mi/mi-var-display.exp: delete var foo
+PASS: gdb.mi/mi-var-display.exp: create local variable weird
+PASS: gdb.mi/mi-var-display.exp: get children local variable weird
+PASS: gdb.mi/mi-var-display.exp: set format variable weird.func_ptr
+PASS: gdb.mi/mi-var-display.exp: show format variable weird.func_ptr
+PASS: gdb.mi/mi-var-display.exp: set format variable weird.func_ptr_ptr
+PASS: gdb.mi/mi-var-display.exp: show format variable weird.func_ptr_ptr
+PASS: gdb.mi/mi-var-display.exp: set format variable weird
+PASS: gdb.mi/mi-var-display.exp: set format variable weird.integer
+PASS: gdb.mi/mi-var-display.exp: set format variable weird.character
+PASS: gdb.mi/mi-var-display.exp: set format variable weird.char_ptr
+PASS: gdb.mi/mi-var-display.exp: set format variable weird.long_int
+PASS: gdb.mi/mi-var-display.exp: set format variable weird.int_ptr_ptr
+PASS: gdb.mi/mi-var-display.exp: set format variable weird.long_array
+PASS: gdb.mi/mi-var-display.exp: set format variable weird.func_ptr
+PASS: gdb.mi/mi-var-display.exp: set format variable weird.func_ptr_struct
+PASS: gdb.mi/mi-var-display.exp: set format variable weird.func_ptr_ptr
+PASS: gdb.mi/mi-var-display.exp: set format variable weird.u1
+PASS: gdb.mi/mi-var-display.exp: set format variable weird.s2
+PASS: gdb.mi/mi-var-display.exp: delete var weird
+PASS: gdb.mi/mi-var-display.exp: break-insert operation 2
+PASS: gdb.mi/mi-var-display.exp: continue to do_special_tests
+PASS: gdb.mi/mi-var-display.exp: create local variable u
+PASS: gdb.mi/mi-var-display.exp: eval variable u
+PASS: gdb.mi/mi-var-display.exp: info type variable u
+PASS: gdb.mi/mi-var-display.exp: is u editable
+PASS: gdb.mi/mi-var-display.exp: get number of children of u
+PASS: gdb.mi/mi-var-display.exp: get children of u
+PASS: gdb.mi/mi-var-display.exp: create local variable anonu
+PASS: gdb.mi/mi-var-display.exp: eval variable anonu
+PASS: gdb.mi/mi-var-display.exp: info type variable anonu
+PASS: gdb.mi/mi-var-display.exp: is anonu editable
+PASS: gdb.mi/mi-var-display.exp: get number of children of anonu
+PASS: gdb.mi/mi-var-display.exp: get children of anonu
+PASS: gdb.mi/mi-var-display.exp: create local variable s
+PASS: gdb.mi/mi-var-display.exp: eval variable s
+PASS: gdb.mi/mi-var-display.exp: info type variable s
+PASS: gdb.mi/mi-var-display.exp: is s editable
+PASS: gdb.mi/mi-var-display.exp: get number of children of s
+PASS: gdb.mi/mi-var-display.exp: get children of s
+PASS: gdb.mi/mi-var-display.exp: create local variable anons
+PASS: gdb.mi/mi-var-display.exp: eval variable anons
+PASS: gdb.mi/mi-var-display.exp: info type variable anons
+PASS: gdb.mi/mi-var-display.exp: is anons editable
+PASS: gdb.mi/mi-var-display.exp: get number of children of anons
+PASS: gdb.mi/mi-var-display.exp: get children of anons
+PASS: gdb.mi/mi-var-display.exp: create local variable e
+XFAIL: gdb.mi/mi-var-display.exp: eval variable e
+PASS: gdb.mi/mi-var-display.exp: info type variable e
+PASS: gdb.mi/mi-var-display.exp: is e editable
+PASS: gdb.mi/mi-var-display.exp: get number of children of e
+PASS: gdb.mi/mi-var-display.exp: get children of e
+PASS: gdb.mi/mi-var-display.exp: create local variable anone
+PASS: gdb.mi/mi-var-display.exp: eval variable anone
+PASS: gdb.mi/mi-var-display.exp: create duplicate local variable anone
+PASS: gdb.mi/mi-var-display.exp: info type variable anone
+PASS: gdb.mi/mi-var-display.exp: is anone editable
+PASS: gdb.mi/mi-var-display.exp: get number of children of anone
+PASS: gdb.mi/mi-var-display.exp: get children of anone
+PASS: gdb.mi/mi-var-display.exp: print FP register
+PASS: gdb.mi/mi-var-display.exp: breakpoint at incr_a
+PASS: gdb.mi/mi-var-display.exp: mi runto incr_a
+PASS: gdb.mi/mi-var-display.exp: create local variable a1
+PASS: gdb.mi/mi-var-display.exp: create variable a2 in different scope
+Running ../../../master/gdb/testsuite/gdb.mi/mi-var-invalidate.exp ...
+PASS: gdb.mi/mi-var-invalidate.exp: create global variable
+PASS: gdb.mi/mi-var-invalidate.exp: breakpoint at do_locals_tests
+PASS: gdb.mi/mi-var-invalidate.exp: mi runto do_locals_tests
+PASS: gdb.mi/mi-var-invalidate.exp: create local variable linteger
+PASS: gdb.mi/mi-var-invalidate.exp: breakpoint at main
+PASS: gdb.mi/mi-var-invalidate.exp: mi runto main
+PASS: gdb.mi/mi-var-invalidate.exp: linteger not anymore in scope due to binary changes
+PASS: gdb.mi/mi-var-invalidate.exp: no type for invalid variable linteger (1)
+PASS: gdb.mi/mi-var-invalidate.exp: global_simple still alive
+PASS: gdb.mi/mi-var-invalidate.exp: type simpleton for valid variable global_simple
+PASS: gdb.mi/mi-var-invalidate.exp: linteger not valid anymore due to binary changes
+PASS: gdb.mi/mi-var-invalidate.exp: no type for invalid variable linteger (2)
+PASS: gdb.mi/mi-var-invalidate.exp: global_simple not anymore in scope due to binary changes
+PASS: gdb.mi/mi-var-invalidate.exp: no type for invalid variable global_simple
+Running ../../../master/gdb/testsuite/gdb.mi/mi-watch.exp ...
+PASS: gdb.mi/mi-watch.exp: hw watchpoints toggle (1)
+PASS: gdb.mi/mi-watch.exp: sw: breakpoint at callee4
+PASS: gdb.mi/mi-watch.exp: sw: mi runto callee4
+PASS: gdb.mi/mi-watch.exp: sw: break-watch operation
+PASS: gdb.mi/mi-watch.exp: sw: list of watchpoints
+PASS: gdb.mi/mi-watch.exp: sw: watchpoint trigger
+XPASS: gdb.mi/mi-watch.exp: sw: watchpoint trigger
+PASS: gdb.mi/mi-watch.exp: hw watchpoints toggle (2)
+PASS: gdb.mi/mi-watch.exp: hw: breakpoint at callee4
+PASS: gdb.mi/mi-watch.exp: hw: mi runto callee4
+PASS: gdb.mi/mi-watch.exp: hw: break-watch operation
+PASS: gdb.mi/mi-watch.exp: hw: list of watchpoints
+PASS: gdb.mi/mi-watch.exp: hw: watchpoint trigger
+PASS: gdb.mi/mi-watch.exp: hw: watchpoint trigger
+Running ../../../master/gdb/testsuite/gdb.mi/mi2-basics.exp ...
+PASS: gdb.mi/mi2-basics.exp: acceptance of MI operations
+PASS: gdb.mi/mi2-basics.exp: file-exec-and-symbols operation
+PASS: gdb.mi/mi2-basics.exp: file-exec-file operation
+PASS: gdb.mi/mi2-basics.exp: file-symbol-file operation
+PASS: gdb.mi/mi2-basics.exp: break-delete (all) operation
+PASS: gdb.mi/mi2-basics.exp: all breakpoints removed
+PASS: gdb.mi/mi2-basics.exp: environment-directory arg operation
+PASS: gdb.mi/mi2-basics.exp: environment-directory empty-string operation
+PASS: gdb.mi/mi2-basics.exp: environment-directory operation
+PASS: gdb.mi/mi2-basics.exp: environment-cd arg operation
+PASS: gdb.mi/mi2-basics.exp: environment-pwd operation
+PASS: gdb.mi/mi2-basics.exp: -environment-path
+PASS: gdb.mi/mi2-basics.exp: environment-path no-args operation
+PASS: gdb.mi/mi2-basics.exp: environment-path dir1 dir2 operation
+PASS: gdb.mi/mi2-basics.exp: environment-path -r dir operation
+PASS: gdb.mi/mi2-basics.exp: environment-path -r operation
+Running ../../../master/gdb/testsuite/gdb.mi/mi2-break.exp ...
+PASS: gdb.mi/mi2-break.exp: break-insert -t operation
+PASS: gdb.mi/mi2-break.exp: insert temp breakpoint at basics.c:callee2
+PASS: gdb.mi/mi2-break.exp: insert temp breakpoint at basics.c:$line_callee3_head
+PASS: gdb.mi/mi2-break.exp: insert temp breakpoint at "<fullfilename>":$line_callee4_head
+PASS: gdb.mi/mi2-break.exp: list of breakpoints
+PASS: gdb.mi/mi2-break.exp: delete temp breakpoints
+XFAIL: gdb.mi/mi2-break.exp: break-insert -r operation
+XFAIL: gdb.mi/mi2-break.exp: insert breakpoint with regexp callee2
+XFAIL: gdb.mi/mi2-break.exp: insert breakpoint with regexp callee
+XFAIL: gdb.mi/mi2-break.exp: insert breakpoint with regexp .*llee
+XFAIL: gdb.mi/mi2-break.exp: list of breakpoints
+PASS: gdb.mi/mi2-break.exp: delete temp breakpoints
+Running ../../../master/gdb/testsuite/gdb.mi/mi2-cli.exp ...
+PASS: gdb.mi/mi2-cli.exp: -interpreter-exec with no arguments
+PASS: gdb.mi/mi2-cli.exp: -interpreter-exec with one argument
+PASS: gdb.mi/mi2-cli.exp: -interpreter-exec with bogus interpreter
+PASS: gdb.mi/mi2-cli.exp: -interpreter-exec console bogus
+PASS: gdb.mi/mi2-cli.exp: -interpreter-exec console "file $binfile"
+PASS: gdb.mi/mi2-cli.exp: breakpoint at main
+PASS: gdb.mi/mi2-cli.exp: mi runto main
+PASS: gdb.mi/mi2-cli.exp: -interpreter-exec console "set args foobar"
+PASS: gdb.mi/mi2-cli.exp: -interpreter-exec console "show args"
+PASS: gdb.mi/mi2-cli.exp: -interpreter-exec console "break callee4"
+PASS: gdb.mi/mi2-cli.exp: -interpreter-exec console "info break"
+PASS: gdb.mi/mi2-cli.exp: -interpreter-exec console "set listsize 1"
+PASS: gdb.mi/mi2-cli.exp: -interpreter-exec console "list"
+PASS: gdb.mi/mi2-cli.exp: continue to callee4
+PASS: gdb.mi/mi2-cli.exp: -interpreter-exec console "delete 2"
+PASS: gdb.mi/mi2-cli.exp: -interpreter-exec console "up"
+PASS: gdb.mi/mi2-cli.exp: -interpreter-exec console "down"
+PASS: gdb.mi/mi2-cli.exp: -interpreter-exec console "frame 2"
+PASS: gdb.mi/mi2-cli.exp: -stack-select-frame 0
+PASS: gdb.mi/mi2-cli.exp: -break-insert -t basics.c:$line_main_hello
+PASS: gdb.mi/mi2-cli.exp: -exec-continue to line 66
+PASS: gdb.mi/mi2-cli.exp: -exec-next to line 68
+PASS: gdb.mi/mi2-cli.exp: -interpreter-exec console "list" at basics.c:$line_main_return
+PASS: gdb.mi/mi2-cli.exp: -interpreter-exec console "help set args"
+PASS: gdb.mi/mi2-cli.exp: -interpreter-exec console "set $pc=0x0"
+Running ../../../master/gdb/testsuite/gdb.mi/mi2-console.exp ...
+PASS: gdb.mi/mi2-console.exp: breakpoint at main
+PASS: gdb.mi/mi2-console.exp: mi runto main
+PASS: gdb.mi/mi2-console.exp: Started step over hello
+KFAIL: gdb.mi/mi2-console.exp: Hello message (PRMS: gdb/623)
+PASS: gdb.mi/mi2-console.exp: finished step over hello
+Running ../../../master/gdb/testsuite/gdb.mi/mi2-disassemble.exp ...
+PASS: gdb.mi/mi2-disassemble.exp: breakpoint at main
+PASS: gdb.mi/mi2-disassemble.exp: mi runto main
+PASS: gdb.mi/mi2-disassemble.exp: data-disassemble from pc to pc+12 assembly only
+PASS: gdb.mi/mi2-disassemble.exp: data-disassemble file & line, assembly only
+PASS: gdb.mi/mi2-disassemble.exp: data-disassemble from pc to pc+12 assembly with opcodes
+PASS: gdb.mi/mi2-disassemble.exp: data-disassemble file & line, assembly with opcodes
+PASS: gdb.mi/mi2-disassemble.exp: data-disassemble file, line assembly mixed
+PASS: gdb.mi/mi2-disassemble.exp: data-disassemble range assembly mixed
+PASS: gdb.mi/mi2-disassemble.exp: data-disassemble file, line assembly mixed with opcodes
+PASS: gdb.mi/mi2-disassemble.exp: data-disassemble range assembly mixed with opcodes
+PASS: gdb.mi/mi2-disassemble.exp: data-disassemble bogus filename
+PASS: gdb.mi/mi2-disassemble.exp: data-disassemble bogus address
+PASS: gdb.mi/mi2-disassemble.exp: data-disassemble mix different args
+PASS: gdb.mi/mi2-disassemble.exp: data-disassemble wrong mode arg
+PASS: gdb.mi/mi2-disassemble.exp: data-disassemble file, line, number assembly only
+PASS: gdb.mi/mi2-disassemble.exp: data-disassemble file, line, number (zero lines) assembly only
+PASS: gdb.mi/mi2-disassemble.exp: data-disassemble file, line, number (more than main lines) assembly only
+PASS: gdb.mi/mi2-disassemble.exp: data-disassemble file, line, number assembly mixed
+PASS: gdb.mi/mi2-disassemble.exp: data-disassemble file, line, number (zero lines) assembly mixed
+PASS: gdb.mi/mi2-disassemble.exp: data-disassemble file, line, number (more than main lines) assembly mixed
+Running ../../../master/gdb/testsuite/gdb.mi/mi2-eval.exp ...
+PASS: gdb.mi/mi2-eval.exp: breakpoint at callee4
+PASS: gdb.mi/mi2-eval.exp: mi runto callee4
+PASS: gdb.mi/mi2-eval.exp: next at callee4
+PASS: gdb.mi/mi2-eval.exp: eval A
+PASS: gdb.mi/mi2-eval.exp: eval &A
+PASS: gdb.mi/mi2-eval.exp: eval A+3
+PASS: gdb.mi/mi2-eval.exp: eval A + 3
+Running ../../../master/gdb/testsuite/gdb.mi/mi2-file.exp ...
+PASS: gdb.mi/mi2-file.exp: request path info of current source file (basics.c)
+Running ../../../master/gdb/testsuite/gdb.mi/mi2-hack-cli.exp ...
+PASS: gdb.mi/mi2-hack-cli.exp: show architecture
+PASS: gdb.mi/mi2-hack-cli.exp: 47show architecture
+Running ../../../master/gdb/testsuite/gdb.mi/mi2-pthreads.exp ...
+PASS: gdb.mi/mi2-pthreads.exp: successfully compiled posix threads test case
+PASS: gdb.mi/mi2-pthreads.exp: breakpoint at done_making_threads
+PASS: gdb.mi/mi2-pthreads.exp: mi runto done_making_threads
+PASS: gdb.mi/mi2-pthreads.exp: -thread_list_ids (in check_mi_thread_command_set)
+PASS: gdb.mi/mi2-pthreads.exp: finding threads in MI output (in check_mi_thread_command_set)
+PASS: gdb.mi/mi2-pthreads.exp: check_mi_thread_command_set: -thread-select
+PASS: gdb.mi/mi2-pthreads.exp: check_mi_thread_command_set: -thread-select 123456789
+PASS: gdb.mi/mi2-pthreads.exp: check_mi_thread_command_set: -thread-select 6
+PASS: gdb.mi/mi2-pthreads.exp: check_mi_thread_command_set: -thread-select 5
+PASS: gdb.mi/mi2-pthreads.exp: check_mi_thread_command_set: -thread-select 4
+PASS: gdb.mi/mi2-pthreads.exp: check_mi_thread_command_set: -thread-select 3
+PASS: gdb.mi/mi2-pthreads.exp: check_mi_thread_command_set: -thread-select 2
+PASS: gdb.mi/mi2-pthreads.exp: check_mi_thread_command_set: -thread-select 1
+Running ../../../master/gdb/testsuite/gdb.mi/mi2-read-memory.exp ...
+PASS: gdb.mi/mi2-read-memory.exp: breakpoint at main
+PASS: gdb.mi/mi2-read-memory.exp: mi runto main
+PASS: gdb.mi/mi2-read-memory.exp: next at main
+PASS: gdb.mi/mi2-read-memory.exp: no arguments
+PASS: gdb.mi/mi2-read-memory.exp: 3x2, one byte
+PASS: gdb.mi/mi2-read-memory.exp: 3x2, one byte offset by -6
+PASS: gdb.mi/mi2-read-memory.exp: expression in quotes
+PASS: gdb.mi/mi2-read-memory.exp: ascii and data
+PASS: gdb.mi/mi2-read-memory.exp: decimal
+PASS: gdb.mi/mi2-read-memory.exp: octal
+Running ../../../master/gdb/testsuite/gdb.mi/mi2-regs.exp ...
+Running ../../../master/gdb/testsuite/gdb.mi/mi2-return.exp ...
+PASS: gdb.mi/mi2-return.exp: breakpoint at callee4
+PASS: gdb.mi/mi2-return.exp: mi runto callee4
+PASS: gdb.mi/mi2-return.exp: delete all breakpoints
+PASS: gdb.mi/mi2-return.exp: return from callee4 now
+Running ../../../master/gdb/testsuite/gdb.mi/mi2-simplerun.exp ...
+PASS: gdb.mi/mi2-simplerun.exp: break-insert operation
+PASS: gdb.mi/mi2-simplerun.exp: insert breakpoint at basics.c:callee2
+PASS: gdb.mi/mi2-simplerun.exp: insert breakpoint at basics.c:$line_callee3_head
+PASS: gdb.mi/mi2-simplerun.exp: insert breakpoint at "<fullfilename>":$line_callee4_head
+PASS: gdb.mi/mi2-simplerun.exp: list of breakpoints
+PASS: gdb.mi/mi2-simplerun.exp: disabling of breakpoints
+PASS: gdb.mi/mi2-simplerun.exp: list of breakpoints, 16 disabled
+PASS: gdb.mi/mi2-simplerun.exp: run to main
+PASS: gdb.mi/mi2-simplerun.exp: next at main
+PASS: gdb.mi/mi2-simplerun.exp: step at main
+PASS: gdb.mi/mi2-simplerun.exp: step to callee4
+PASS: gdb.mi/mi2-simplerun.exp: exec-finish
+PASS: gdb.mi/mi2-simplerun.exp: continue to end
+Running ../../../master/gdb/testsuite/gdb.mi/mi2-stack.exp ...
+PASS: gdb.mi/mi2-stack.exp: breakpoint at callee4
+PASS: gdb.mi/mi2-stack.exp: mi runto callee4
+PASS: gdb.mi/mi2-stack.exp: stack frame listing
+PASS: gdb.mi/mi2-stack.exp: stack frame listing 1 1
+PASS: gdb.mi/mi2-stack.exp: stack frame listing 1 3
+PASS: gdb.mi/mi2-stack.exp: stack frame listing wrong
+PASS: gdb.mi/mi2-stack.exp: selected frame listing
+PASS: gdb.mi/mi2-stack.exp: stack frame listing 1 300
+PASS: gdb.mi/mi2-stack.exp: stack args listing 0
+PASS: gdb.mi/mi2-stack.exp: stack args listing 0 1 1
+PASS: gdb.mi/mi2-stack.exp: stack args listing 0 1 3
+PASS: gdb.mi/mi2-stack.exp: stack args listing 1
+PASS: gdb.mi/mi2-stack.exp: stack args listing 1 1 1
+PASS: gdb.mi/mi2-stack.exp: stack args listing 1 1 3
+PASS: gdb.mi/mi2-stack.exp: stack args listing wrong
+PASS: gdb.mi/mi2-stack.exp: stack args listing 1 1 300
+PASS: gdb.mi/mi2-stack.exp: stack locals listing of names
+PASS: gdb.mi/mi2-stack.exp: next's in callee4
+PASS: gdb.mi/mi2-stack.exp: stack locals listing of names and values
+PASS: gdb.mi/mi2-stack.exp: stack locals listing, simple types: names and values, complex type: names and types
+PASS: gdb.mi/mi2-stack.exp: stack locals listing wrong
+PASS: gdb.mi/mi2-stack.exp: stack select frame 1
+PASS: gdb.mi/mi2-stack.exp: stack locals listing for new frame
+PASS: gdb.mi/mi2-stack.exp: stack locals for same frame (level 1)
+PASS: gdb.mi/mi2-stack.exp: stack info-depth
+PASS: gdb.mi/mi2-stack.exp: stack info-depth 3
+PASS: gdb.mi/mi2-stack.exp: stack info-depth 99
+PASS: gdb.mi/mi2-stack.exp: stack info-depth wrong usage
+Running ../../../master/gdb/testsuite/gdb.mi/mi2-stepi.exp ...
+PASS: gdb.mi/mi2-stepi.exp: breakpoint at main
+PASS: gdb.mi/mi2-stepi.exp: mi runto main
+PASS: gdb.mi/mi2-stepi.exp: step-instruction at main
+PASS: gdb.mi/mi2-stepi.exp: step-instruction at main (line check)
+PASS: gdb.mi/mi2-stepi.exp: next-instruction at main
+PASS: gdb.mi/mi2-stepi.exp: next-instruction at main (line check)
+PASS: gdb.mi/mi2-stepi.exp: next-instruction at main 2
+PASS: gdb.mi/mi2-stepi.exp: next-instruction at main 2 (line check)
+Running ../../../master/gdb/testsuite/gdb.mi/mi2-syn-frame.exp ...
+PASS: gdb.mi/mi2-syn-frame.exp: breakpoint at main
+PASS: gdb.mi/mi2-syn-frame.exp: mi runto main
+PASS: gdb.mi/mi2-syn-frame.exp: insert breakpoint foo
+PASS: gdb.mi/mi2-syn-frame.exp: call inferior's function with a breakpoint set in it
+PASS: gdb.mi/mi2-syn-frame.exp: backtrace from inferior function stopped at bp, showing gdb dummy frame
+PASS: gdb.mi/mi2-syn-frame.exp: finished exec continue
+PASS: gdb.mi/mi2-syn-frame.exp: list stack frames
+PASS: gdb.mi/mi2-syn-frame.exp: insert breakpoint subroutine
+PASS: gdb.mi/mi2-syn-frame.exp: evaluate expression have_a_very_merry_interrupt
+PASS: gdb.mi/mi2-syn-frame.exp: list stack frames
+PASS: gdb.mi/mi2-syn-frame.exp: finished exec continue
+PASS: gdb.mi/mi2-syn-frame.exp: list stack frames
+PASS: gdb.mi/mi2-syn-frame.exp: call inferior function which raises exception
+PASS: gdb.mi/mi2-syn-frame.exp: backtrace from inferior function at exception
+Running ../../../master/gdb/testsuite/gdb.mi/mi2-until.exp ...
+PASS: gdb.mi/mi2-until.exp: break-insert operation
+PASS: gdb.mi/mi2-until.exp: run to main
+PASS: gdb.mi/mi2-until.exp: break-delete 1
+KFAIL: gdb.mi/mi2-until.exp: until after while loop (stopped at wrong place) (PRMS: gdb/2104)
+PASS: gdb.mi/mi2-until.exp: until line number
+PASS: gdb.mi/mi2-until.exp: until line number:file
+PASS: gdb.mi/mi2-until.exp: until after current function
+Running ../../../master/gdb/testsuite/gdb.mi/mi2-var-block.exp ...
+PASS: gdb.mi/mi2-var-block.exp: breakpoint at do_block_tests
+PASS: gdb.mi/mi2-var-block.exp: mi runto do_block_tests
+PASS: gdb.mi/mi2-var-block.exp: create local variable cb
+PASS: gdb.mi/mi2-var-block.exp: create local variable foo
+PASS: gdb.mi/mi2-var-block.exp: step at do_block_test
+PASS: gdb.mi/mi2-var-block.exp: delete var foo
+PASS: gdb.mi/mi2-var-block.exp: create local variable foo
+PASS: gdb.mi/mi2-var-block.exp: step at do_block_test
+PASS: gdb.mi/mi2-var-block.exp: update all vars: cb foo changed
+PASS: gdb.mi/mi2-var-block.exp: step at do_block_test
+PASS: gdb.mi/mi2-var-block.exp: create local variable inner_foo
+PASS: gdb.mi/mi2-var-block.exp: step at do_block_test
+PASS: gdb.mi/mi2-var-block.exp: create local variable foo2
+XFAIL: gdb.mi/mi2-var-block.exp: update inner_foo: should be out of scope: KNOWN PROBLEM
+XFAIL: gdb.mi/mi2-var-block.exp: evaluate inner_foo: should be out of scope: KNOWN PROBLEM
+PASS: gdb.mi/mi2-var-block.exp: update foo: did not change
+PASS: gdb.mi/mi2-var-block.exp: delete var inner_foo
+PASS: gdb.mi/mi2-var-block.exp: step at do_block_test
+XFAIL: gdb.mi/mi2-var-block.exp: update foo2: should be out of scope: KNOWN PROBLEM
+PASS: gdb.mi/mi2-var-block.exp: step at do_block_test
+XFAIL: gdb.mi/mi2-var-block.exp: update foo2 should be out of scope: KNOWN PROBLEM
+XFAIL: gdb.mi/mi2-var-block.exp: update foo should be out of scope: KNOWN PROBLEM
+PASS: gdb.mi/mi2-var-block.exp: update cb
+PASS: gdb.mi/mi2-var-block.exp: delete var foo
+PASS: gdb.mi/mi2-var-block.exp: delete var foo2
+PASS: gdb.mi/mi2-var-block.exp: delete var cb
+Running ../../../master/gdb/testsuite/gdb.mi/mi2-var-child.exp ...
+PASS: gdb.mi/mi2-var-child.exp: breakpoint at do_children_tests
+PASS: gdb.mi/mi2-var-child.exp: mi runto do_children_tests
+PASS: gdb.mi/mi2-var-child.exp: run to 220 (set breakpoint)
+PASS: gdb.mi/mi2-var-child.exp: create local variable struct_declarations
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.integer
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.integer
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.character
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.character
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.char_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.char_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_int
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_int
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.int_ptr_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.int_ptr_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.func_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.func_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.func_ptr_struct
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.func_ptr_struct
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.func_ptr_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.func_ptr_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.u1
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.u1
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.1
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.1
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.2
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.2
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.3
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.3
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.4
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.4
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.5
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.5
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.6
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.6
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.7
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.7
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.8
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.8
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.long_array.9
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.long_array.9
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.u1.a
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.u1.a
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.u1.b
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.u1.b
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.u1.c
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.u1.c
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.u1.d
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.u1.d
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.g
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.g
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.h
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.h
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.i
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.i
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s1
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.f
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.f
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s2
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s2
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s1.d
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.d
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s1.e
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.e
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s1.func
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.func
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s1.foo
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s1.foo
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s2.array_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s2.array_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.s2.u2.u1s2.func
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.s2.u2.u1s2.func
+PASS: gdb.mi/mi2-var-child.exp: get children of struct_declarations.int_ptr_ptr.*int_ptr_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of struct_declarations.int_ptr_ptr.*int_ptr_ptr
+PASS: gdb.mi/mi2-var-child.exp: step to line $line_dct_123
+PASS: gdb.mi/mi2-var-child.exp: create local variable weird
+PASS: gdb.mi/mi2-var-child.exp: get children of weird
+PASS: gdb.mi/mi2-var-child.exp: get number of children of weird
+PASS: gdb.mi/mi2-var-child.exp: get children of weird.long_array
+PASS: gdb.mi/mi2-var-child.exp: get number of children of weird.long_array
+PASS: gdb.mi/mi2-var-child.exp: get children of weird.int_ptr_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of weird.int_ptr_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of weird.int_ptr_ptr.*int_ptr_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of weird.int_ptr_ptr.*int_ptr_ptr
+PASS: gdb.mi/mi2-var-child.exp: create local variable weird->int_ptr_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of weird->int_ptr_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of weird->int_ptr_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of weird->int_ptr_ptr.*weird->int_ptr_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of weird->int_ptr_ptr.*weird->int_ptr_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr
+PASS: gdb.mi/mi2-var-child.exp: is weird editable
+PASS: gdb.mi/mi2-var-child.exp: is weird->int_ptr_ptr editable
+PASS: gdb.mi/mi2-var-child.exp: is weird.int_ptr_ptr.*int_ptr_ptr editable
+PASS: gdb.mi/mi2-var-child.exp: is weird.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr editable
+PASS: gdb.mi/mi2-var-child.exp: is weird.u1 editable
+PASS: gdb.mi/mi2-var-child.exp: is weird.s2 editable
+PASS: gdb.mi/mi2-var-child.exp: is struct_declarations.u1.a editable
+PASS: gdb.mi/mi2-var-child.exp: is struct_declarations.u1.b editable
+PASS: gdb.mi/mi2-var-child.exp: is struct_declarations.u1.c editable
+PASS: gdb.mi/mi2-var-child.exp: is struct_declarations.long_array editable
+PASS: gdb.mi/mi2-var-child.exp: is struct_declarations.long_array.0 editable
+PASS: gdb.mi/mi2-var-child.exp: is struct_declarations editable
+PASS: gdb.mi/mi2-var-child.exp: delete var weird
+PASS: gdb.mi/mi2-var-child.exp: update all vars. None changed
+PASS: gdb.mi/mi2-var-child.exp: step $line_dct_123 + 1
+PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.integer
+PASS: gdb.mi/mi2-var-child.exp: step $line_dct_123 + 4
+PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.char_ptr
+PASS: gdb.mi/mi2-var-child.exp: step $line_dct_123 + 5
+PASS: gdb.mi/mi2-var-child.exp: update all vars int_ptr_ptr and children changed
+PASS: gdb.mi/mi2-var-child.exp: step $line_dct_123 + 6
+PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.long_array.0 changed
+PASS: gdb.mi/mi2-var-child.exp: step $line_dct_123 + 7
+PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.long_array.1 changed
+PASS: gdb.mi/mi2-var-child.exp: step $line_dct_123 + 8
+PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.long_array.2 changed
+PASS: gdb.mi/mi2-var-child.exp: step $line_dct_nothing
+PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.long_array.3-9 changed
+PASS: gdb.mi/mi2-var-child.exp: step $line_dct_a0_0
+PASS: gdb.mi/mi2-var-child.exp: update all vars struct_declarations.func_ptr changed
+PASS: gdb.mi/mi2-var-child.exp: delete var struct_declarations
+PASS: gdb.mi/mi2-var-child.exp: delete var weird->int_ptr_ptr
+PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 1
+PASS: gdb.mi/mi2-var-child.exp: create local variable psnp->char_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of psnp->char_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->char_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr
+PASS: gdb.mi/mi2-var-child.exp: create local variable psnp->long_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of psnp->long_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->long_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr
+PASS: gdb.mi/mi2-var-child.exp: create local variable psnp->ptrs
+PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs
+PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs
+PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0
+PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0
+PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next
+PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0.next
+PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.char_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr
+PASS: gdb.mi/mi2-var-child.exp: get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr
+PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.next
+PASS: gdb.mi/mi2-var-child.exp: get children of psnp->ptrs.0.next.next.ptrs
+PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 2
+PASS: gdb.mi/mi2-var-child.exp: update all vars psnp->char_ptr (and 0.char_ptr) changed
+PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 3
+PASS: gdb.mi/mi2-var-child.exp: update all vars psnp->next->char_ptr (and 1.char_ptr) changed
+PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 4
+PASS: gdb.mi/mi2-var-child.exp: update all vars psnp->next->next->char_ptr (and 2.char_ptr) changed
+PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 5
+PASS: gdb.mi/mi2-var-child.exp: update all vars psnp->long_ptr (and 0.long_ptr) changed
+PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 6
+XFAIL: gdb.mi/mi2-var-child.exp: update all vars psnp->next->long_ptr (and 1.long_ptr) changed
+PASS: gdb.mi/mi2-var-child.exp: step $line_dct_snp0 + 7
+PASS: gdb.mi/mi2-var-child.exp: update all vars psnp->next->next->long_ptr (and 2.long_ptr) changed
+Running ../../../master/gdb/testsuite/gdb.mi/mi2-var-cmd.exp ...
+PASS: gdb.mi/mi2-var-cmd.exp: create global variable
+PASS: gdb.mi/mi2-var-cmd.exp: create non-existent variable
+PASS: gdb.mi/mi2-var-cmd.exp: create out of scope variable
+PASS: gdb.mi/mi2-var-cmd.exp: breakpoint at do_locals_tests
+PASS: gdb.mi/mi2-var-cmd.exp: mi runto do_locals_tests
+PASS: gdb.mi/mi2-var-cmd.exp: run to 131 (set breakpoint)
+PASS: gdb.mi/mi2-var-cmd.exp: create local variable linteger
+PASS: gdb.mi/mi2-var-cmd.exp: create local variable lpinteger
+PASS: gdb.mi/mi2-var-cmd.exp: create local variable lcharacter
+PASS: gdb.mi/mi2-var-cmd.exp: create local variable lpcharacter
+PASS: gdb.mi/mi2-var-cmd.exp: create local variable llong
+PASS: gdb.mi/mi2-var-cmd.exp: create local variable lplong
+PASS: gdb.mi/mi2-var-cmd.exp: create local variable lfloat
+PASS: gdb.mi/mi2-var-cmd.exp: create local variable lpfloat
+PASS: gdb.mi/mi2-var-cmd.exp: create local variable ldouble
+PASS: gdb.mi/mi2-var-cmd.exp: create local variable lpdouble
+PASS: gdb.mi/mi2-var-cmd.exp: create local variable lsimple
+PASS: gdb.mi/mi2-var-cmd.exp: create local variable lpsimple
+PASS: gdb.mi/mi2-var-cmd.exp: create local variable func
+PASS: gdb.mi/mi2-var-cmd.exp: create lsimple.character
+PASS: gdb.mi/mi2-var-cmd.exp: create lsimple->integer
+PASS: gdb.mi/mi2-var-cmd.exp: create lsimple.integer
+PASS: gdb.mi/mi2-var-cmd.exp: create int
+PASS: gdb.mi/mi2-var-cmd.exp: update all vars
+PASS: gdb.mi/mi2-var-cmd.exp: step at do_locals_test
+PASS: gdb.mi/mi2-var-cmd.exp: update all vars: linteger changed
+PASS: gdb.mi/mi2-var-cmd.exp: step at do_locals_tests (2)
+PASS: gdb.mi/mi2-var-cmd.exp: update all vars: lpinteger changed
+PASS: gdb.mi/mi2-var-cmd.exp: step at do_locals_tests (3)
+PASS: gdb.mi/mi2-var-cmd.exp: update all vars: lcharacter changed
+PASS: gdb.mi/mi2-var-cmd.exp: step at do_locals_tests (4)
+PASS: gdb.mi/mi2-var-cmd.exp: update all vars: lpcharacter changed
+PASS: gdb.mi/mi2-var-cmd.exp: step at do_locals_tests (5)
+PASS: gdb.mi/mi2-var-cmd.exp: update all vars: many changed
+PASS: gdb.mi/mi2-var-cmd.exp: step at do_locals_tests (6)
+PASS: gdb.mi/mi2-var-cmd.exp: update all vars: func and lpsimple changed
+PASS: gdb.mi/mi2-var-cmd.exp: step at do_locals_tests (7)
+PASS: gdb.mi/mi2-var-cmd.exp: update all vars: lsimple and others changed
+PASS: gdb.mi/mi2-var-cmd.exp: assign to global_simple
+PASS: gdb.mi/mi2-var-cmd.exp: assign to linteger
+PASS: gdb.mi/mi2-var-cmd.exp: update all vars: linteger changed after assign
+PASS: gdb.mi/mi2-var-cmd.exp: assign to linteger again, same value
+PASS: gdb.mi/mi2-var-cmd.exp: update all vars: linteger not changed after same assign
+PASS: gdb.mi/mi2-var-cmd.exp: eval linteger
+PASS: gdb.mi/mi2-var-cmd.exp: assign to lpinteger
+PASS: gdb.mi/mi2-var-cmd.exp: update all vars: lpinteger changed after assign
+PASS: gdb.mi/mi2-var-cmd.exp: update all vars: no changes on second update
+PASS: gdb.mi/mi2-var-cmd.exp: eval lpinteger
+PASS: gdb.mi/mi2-var-cmd.exp: assign to linteger
+PASS: gdb.mi/mi2-var-cmd.exp: assign to lpinteger
+PASS: gdb.mi/mi2-var-cmd.exp: assign to lcharacter
+PASS: gdb.mi/mi2-var-cmd.exp: eval lcharacter
+PASS: gdb.mi/mi2-var-cmd.exp: assign to llong
+PASS: gdb.mi/mi2-var-cmd.exp: eval llong
+PASS: gdb.mi/mi2-var-cmd.exp: assign to llong
+PASS: gdb.mi/mi2-var-cmd.exp: assign to lplong
+PASS: gdb.mi/mi2-var-cmd.exp: eval lplong
+PASS: gdb.mi/mi2-var-cmd.exp: assign to lplong
+PASS: gdb.mi/mi2-var-cmd.exp: assign to lfloat
+PASS: gdb.mi/mi2-var-cmd.exp: eval lfloat
+PASS: gdb.mi/mi2-var-cmd.exp: assign to lfloat
+PASS: gdb.mi/mi2-var-cmd.exp: assign to lpfloat
+PASS: gdb.mi/mi2-var-cmd.exp: assign to ldouble
+PASS: gdb.mi/mi2-var-cmd.exp: assign to func
+PASS: gdb.mi/mi2-var-cmd.exp: assign to lsimple.character
+PASS: gdb.mi/mi2-var-cmd.exp: assign to lsimple->integer
+PASS: gdb.mi/mi2-var-cmd.exp: assign to lsimple.integer
+PASS: gdb.mi/mi2-var-cmd.exp: breakpoint at subroutine1
+PASS: gdb.mi/mi2-var-cmd.exp: mi runto subroutine1
+PASS: gdb.mi/mi2-var-cmd.exp: create i
+PASS: gdb.mi/mi2-var-cmd.exp: create l
+PASS: gdb.mi/mi2-var-cmd.exp: create linteger
+PASS: gdb.mi/mi2-var-cmd.exp: step at subroutine1
+XFAIL: gdb.mi/mi2-var-cmd.exp: update all vars: changed FIXME
+PASS: gdb.mi/mi2-var-cmd.exp: step at subroutine1 (2)
+PASS: gdb.mi/mi2-var-cmd.exp: update all vars: i changed
+PASS: gdb.mi/mi2-var-cmd.exp: step at subroutine1 (3)
+PASS: gdb.mi/mi2-var-cmd.exp: update all vars: llong changed
+PASS: gdb.mi/mi2-var-cmd.exp: next out of subroutine1
+PASS: gdb.mi/mi2-var-cmd.exp: update all vars: all now out of scope
+PASS: gdb.mi/mi2-var-cmd.exp: delete var
+PASS: gdb.mi/mi2-var-cmd.exp: delete var linteger
+PASS: gdb.mi/mi2-var-cmd.exp: delete var lpinteger
+PASS: gdb.mi/mi2-var-cmd.exp: delete var lcharacter
+PASS: gdb.mi/mi2-var-cmd.exp: delete var lpcharacter
+PASS: gdb.mi/mi2-var-cmd.exp: delete var llong
+PASS: gdb.mi/mi2-var-cmd.exp: delete var lplong
+PASS: gdb.mi/mi2-var-cmd.exp: delete var lfloat
+PASS: gdb.mi/mi2-var-cmd.exp: delete var lpfloat
+PASS: gdb.mi/mi2-var-cmd.exp: delete var ldouble
+PASS: gdb.mi/mi2-var-cmd.exp: delete var lpdouble
+PASS: gdb.mi/mi2-var-cmd.exp: delete var lsimple
+PASS: gdb.mi/mi2-var-cmd.exp: delete var lpsimple
+PASS: gdb.mi/mi2-var-cmd.exp: delete var func
+PASS: gdb.mi/mi2-var-cmd.exp: delete var lsimple.character
+PASS: gdb.mi/mi2-var-cmd.exp: delete var lsimple->integer
+PASS: gdb.mi/mi2-var-cmd.exp: delete var lsimple.integer
+PASS: gdb.mi/mi2-var-cmd.exp: delete var i
+PASS: gdb.mi/mi2-var-cmd.exp: delete var l
+PASS: gdb.mi/mi2-var-cmd.exp: breakpoint at do_special_tests
+PASS: gdb.mi/mi2-var-cmd.exp: mi runto do_special_tests
+PASS: gdb.mi/mi2-var-cmd.exp: create selected_a
+PASS: gdb.mi/mi2-var-cmd.exp: breakpoint at incr_a
+PASS: gdb.mi/mi2-var-cmd.exp: mi runto incr_a
+PASS: gdb.mi/mi2-var-cmd.exp: update selected_a in incr_a
+PASS: gdb.mi/mi2-var-cmd.exp: step a line in incr_a
+PASS: gdb.mi/mi2-var-cmd.exp: return from incr_a to do_special_tests
+PASS: gdb.mi/mi2-var-cmd.exp: update selected_a in do_special_tests
+PASS: gdb.mi/mi2-var-cmd.exp: floating varobj invalidation
+Running ../../../master/gdb/testsuite/gdb.mi/mi2-var-display.exp ...
+PASS: gdb.mi/mi2-var-display.exp: break-insert operation
+PASS: gdb.mi/mi2-var-display.exp: run to main
+PASS: gdb.mi/mi2-var-display.exp: create local variable bar
+PASS: gdb.mi/mi2-var-display.exp: info type variable bar
+PASS: gdb.mi/mi2-var-display.exp: show format variable bar
+PASS: gdb.mi/mi2-var-display.exp: eval variable bar
+PASS: gdb.mi/mi2-var-display.exp: set format variable bar
+PASS: gdb.mi/mi2-var-display.exp: eval variable bar with new format
+PASS: gdb.mi/mi2-var-display.exp: assing to variable bar
+PASS: gdb.mi/mi2-var-display.exp: set format variable bar
+PASS: gdb.mi/mi2-var-display.exp: eval variable bar with new value
+PASS: gdb.mi/mi2-var-display.exp: delete var bar
+PASS: gdb.mi/mi2-var-display.exp: create local variable foo
+PASS: gdb.mi/mi2-var-display.exp: info type variable foo
+PASS: gdb.mi/mi2-var-display.exp: show format variable foo
+PASS: gdb.mi/mi2-var-display.exp: eval variable foo
+PASS: gdb.mi/mi2-var-display.exp: set format variable foo
+PASS: gdb.mi/mi2-var-display.exp: show format variable foo
+PASS: gdb.mi/mi2-var-display.exp: eval variable foo
+PASS: gdb.mi/mi2-var-display.exp: assing to variable foo
+PASS: gdb.mi/mi2-var-display.exp: set format variable foo
+PASS: gdb.mi/mi2-var-display.exp: eval variable foo
+PASS: gdb.mi/mi2-var-display.exp: eval variable foo in hex
+PASS: gdb.mi/mi2-var-display.exp: show format variable foo after eval in hex
+PASS: gdb.mi/mi2-var-display.exp: eval variable foo in octal
+PASS: gdb.mi/mi2-var-display.exp: show format variable foo after eval in octal
+PASS: gdb.mi/mi2-var-display.exp: eval variable foo in decimal
+PASS: gdb.mi/mi2-var-display.exp: show format variable foo after eval in decimal
+PASS: gdb.mi/mi2-var-display.exp: eval variable foo in natural
+PASS: gdb.mi/mi2-var-display.exp: show format variable foo after eval in natural
+PASS: gdb.mi/mi2-var-display.exp: eval variable foo in binary
+PASS: gdb.mi/mi2-var-display.exp: show format variable foo after eval in binary
+PASS: gdb.mi/mi2-var-display.exp: delete var foo
+PASS: gdb.mi/mi2-var-display.exp: create local variable weird
+PASS: gdb.mi/mi2-var-display.exp: get children local variable weird
+PASS: gdb.mi/mi2-var-display.exp: set format variable weird.func_ptr
+PASS: gdb.mi/mi2-var-display.exp: show format variable weird.func_ptr
+PASS: gdb.mi/mi2-var-display.exp: set format variable weird.func_ptr_ptr
+PASS: gdb.mi/mi2-var-display.exp: show format variable weird.func_ptr_ptr
+PASS: gdb.mi/mi2-var-display.exp: set format variable weird
+PASS: gdb.mi/mi2-var-display.exp: set format variable weird.integer
+PASS: gdb.mi/mi2-var-display.exp: set format variable weird.character
+PASS: gdb.mi/mi2-var-display.exp: set format variable weird.char_ptr
+PASS: gdb.mi/mi2-var-display.exp: set format variable weird.long_int
+PASS: gdb.mi/mi2-var-display.exp: set format variable weird.int_ptr_ptr
+PASS: gdb.mi/mi2-var-display.exp: set format variable weird.long_array
+PASS: gdb.mi/mi2-var-display.exp: set format variable weird.func_ptr
+PASS: gdb.mi/mi2-var-display.exp: set format variable weird.func_ptr_struct
+PASS: gdb.mi/mi2-var-display.exp: set format variable weird.func_ptr_ptr
+PASS: gdb.mi/mi2-var-display.exp: set format variable weird.u1
+PASS: gdb.mi/mi2-var-display.exp: set format variable weird.s2
+PASS: gdb.mi/mi2-var-display.exp: delete var weird
+PASS: gdb.mi/mi2-var-display.exp: break-insert operation 2
+PASS: gdb.mi/mi2-var-display.exp: continue to do_special_tests
+PASS: gdb.mi/mi2-var-display.exp: create local variable u
+PASS: gdb.mi/mi2-var-display.exp: eval variable u
+PASS: gdb.mi/mi2-var-display.exp: info type variable u
+PASS: gdb.mi/mi2-var-display.exp: is u editable
+PASS: gdb.mi/mi2-var-display.exp: get number of children of u
+PASS: gdb.mi/mi2-var-display.exp: get children of u
+PASS: gdb.mi/mi2-var-display.exp: create local variable anonu
+PASS: gdb.mi/mi2-var-display.exp: eval variable anonu
+PASS: gdb.mi/mi2-var-display.exp: info type variable anonu
+PASS: gdb.mi/mi2-var-display.exp: is anonu editable
+PASS: gdb.mi/mi2-var-display.exp: get number of children of anonu
+PASS: gdb.mi/mi2-var-display.exp: get children of anonu
+PASS: gdb.mi/mi2-var-display.exp: create local variable s
+PASS: gdb.mi/mi2-var-display.exp: eval variable s
+PASS: gdb.mi/mi2-var-display.exp: info type variable s
+PASS: gdb.mi/mi2-var-display.exp: is s editable
+PASS: gdb.mi/mi2-var-display.exp: get number of children of s
+PASS: gdb.mi/mi2-var-display.exp: get children of s
+PASS: gdb.mi/mi2-var-display.exp: create local variable anons
+PASS: gdb.mi/mi2-var-display.exp: eval variable anons
+PASS: gdb.mi/mi2-var-display.exp: info type variable anons
+PASS: gdb.mi/mi2-var-display.exp: is anons editable
+PASS: gdb.mi/mi2-var-display.exp: get number of children of anons
+PASS: gdb.mi/mi2-var-display.exp: get children of anons
+PASS: gdb.mi/mi2-var-display.exp: create local variable e
+XFAIL: gdb.mi/mi2-var-display.exp: eval variable e
+PASS: gdb.mi/mi2-var-display.exp: info type variable e
+PASS: gdb.mi/mi2-var-display.exp: is e editable
+PASS: gdb.mi/mi2-var-display.exp: get number of children of e
+PASS: gdb.mi/mi2-var-display.exp: get children of e
+PASS: gdb.mi/mi2-var-display.exp: create local variable anone
+PASS: gdb.mi/mi2-var-display.exp: eval variable anone
+PASS: gdb.mi/mi2-var-display.exp: create duplicate local variable anone
+PASS: gdb.mi/mi2-var-display.exp: info type variable anone
+PASS: gdb.mi/mi2-var-display.exp: is anone editable
+PASS: gdb.mi/mi2-var-display.exp: get number of children of anone
+PASS: gdb.mi/mi2-var-display.exp: get children of anone
+PASS: gdb.mi/mi2-var-display.exp: print FP register
+PASS: gdb.mi/mi2-var-display.exp: breakpoint at incr_a
+PASS: gdb.mi/mi2-var-display.exp: mi runto incr_a
+PASS: gdb.mi/mi2-var-display.exp: create local variable a1
+PASS: gdb.mi/mi2-var-display.exp: create variable a2 in different scope
+Running ../../../master/gdb/testsuite/gdb.mi/mi2-watch.exp ...
+PASS: gdb.mi/mi2-watch.exp: hw watchpoints toggle (1)
+PASS: gdb.mi/mi2-watch.exp: sw: breakpoint at callee4
+PASS: gdb.mi/mi2-watch.exp: sw: mi runto callee4
+PASS: gdb.mi/mi2-watch.exp: sw: break-watch operation
+PASS: gdb.mi/mi2-watch.exp: sw: list of watchpoints
+PASS: gdb.mi/mi2-watch.exp: sw: watchpoint trigger
+XPASS: gdb.mi/mi2-watch.exp: sw: watchpoint trigger
+PASS: gdb.mi/mi2-watch.exp: hw watchpoints toggle (2)
+PASS: gdb.mi/mi2-watch.exp: hw: breakpoint at callee4
+PASS: gdb.mi/mi2-watch.exp: hw: mi runto callee4
+PASS: gdb.mi/mi2-watch.exp: hw: break-watch operation
+PASS: gdb.mi/mi2-watch.exp: hw: list of watchpoints
+PASS: gdb.mi/mi2-watch.exp: hw: watchpoint trigger
+PASS: gdb.mi/mi2-watch.exp: hw: watchpoint trigger
+Running ../../../master/gdb/testsuite/gdb.modula2/unbounded-array.exp ...
+PASS: gdb.modula2/unbounded-array.exp: switch to modula-2
+PASS: gdb.modula2/unbounded-array.exp: print the last legal element of array a
+PASS: gdb.modula2/unbounded-array.exp: print unbounded array contents
+PASS: gdb.modula2/unbounded-array.exp: print the 1st element of array a
+PASS: gdb.modula2/unbounded-array.exp: print the 2nd element of array a
+PASS: gdb.modula2/unbounded-array.exp: print the 3rd element of array a
+PASS: gdb.modula2/unbounded-array.exp: print the 4th element of array a
+PASS: gdb.modula2/unbounded-array.exp: print the 5th element of array a
+Running ../../../master/gdb/testsuite/gdb.multi/base.exp ...
+PASS: gdb.multi/base.exp: add empty inferior 2
+PASS: gdb.multi/base.exp: switch to inferior 2
+PASS: gdb.multi/base.exp: load hangout file in inferior 2
+PASS: gdb.multi/base.exp: add inferior 3 with -exec goodbye
+PASS: gdb.multi/base.exp: info inferiors
+PASS: gdb.multi/base.exp: info inferior 2 3
+PASS: gdb.multi/base.exp: info inferior 1-2
+PASS: gdb.multi/base.exp: switch to inferior 1
+PASS: gdb.multi/base.exp: 'info functions commonfun' in inferior 1
+PASS: gdb.multi/base.exp: switch to inferior 3
+PASS: gdb.multi/base.exp: 'info functions commonfun' in inferior 3
+PASS: gdb.multi/base.exp: switch back to inferior 1
+PASS: gdb.multi/base.exp: set listsize 1
+PASS: gdb.multi/base.exp: list commonfun in hello
+PASS: gdb.multi/base.exp: print hglob
+PASS: gdb.multi/base.exp: print glob (hello)
+PASS: gdb.multi/base.exp: switch to inferior 3 to print globals
+PASS: gdb.multi/base.exp: print gglob
+PASS: gdb.multi/base.exp: print glob (goodbye)
+PASS: gdb.multi/base.exp: list commonfun in goodbye
+PASS: gdb.multi/base.exp: switch to inferior 1 to run it
+PASS: gdb.multi/base.exp: break hello
+PASS: gdb.multi/base.exp: continue
+PASS: gdb.multi/base.exp: remove-inferiors 2-3
+PASS: gdb.multi/base.exp: check remove-inferiors
+Running ../../../master/gdb/testsuite/gdb.multi/bkpt-multi-exec.exp ...
+PASS: gdb.multi/bkpt-multi-exec.exp: continue
+PASS: gdb.multi/bkpt-multi-exec.exp: add inferior 2 with -exec crashme
+PASS: gdb.multi/bkpt-multi-exec.exp: inferior 2
+PASS: gdb.multi/bkpt-multi-exec.exp: break crashme.c:9
+PASS: gdb.multi/bkpt-multi-exec.exp: inferior 1
+PASS: gdb.multi/bkpt-multi-exec.exp: run
+Running ../../../master/gdb/testsuite/gdb.objc/basicclass.exp ...
+UNSUPPORTED: gdb.objc/basicclass.exp: Couldn't compile ../../../master/gdb/testsuite/gdb.objc/basicclass.m: unrecognized error
+Running ../../../master/gdb/testsuite/gdb.objc/nondebug.exp ...
+UNSUPPORTED: gdb.objc/nondebug.exp: Couldn't compile ../../../master/gdb/testsuite/gdb.objc/nondebug.m: unrecognized error
+Running ../../../master/gdb/testsuite/gdb.objc/objcdecode.exp ...
+UNSUPPORTED: gdb.objc/objcdecode.exp: Couldn't compile ../../../master/gdb/testsuite/gdb.objc/objcdecode.m: unrecognized error
+Running ../../../master/gdb/testsuite/gdb.objc/print.exp ...
+PASS: gdb.objc/print.exp: set language objective-c
+PASS: gdb.objc/print.exp: set language to "objective-c"
+PASS: gdb.objc/print.exp: check fp + text
+PASS: gdb.objc/print.exp: p 1.
+PASS: gdb.objc/print.exp: p 1.5
+KFAIL: gdb.objc/print.exp: p 1.f (PRMS: gdb/11925)
+KFAIL: gdb.objc/print.exp: p 1.5f (PRMS: gdb/11925)
+KFAIL: gdb.objc/print.exp: p 1.l (PRMS: gdb/11925)
+KFAIL: gdb.objc/print.exp: p 1.5l (PRMS: gdb/11925)
+PASS: gdb.objc/print.exp: p 0x1.1
+PASS: gdb.objc/print.exp: reject p 1.1x
+PASS: gdb.objc/print.exp: reject p 1.1ff
+PASS: gdb.objc/print.exp: reject p 1.1ll
+Running ../../../master/gdb/testsuite/gdb.opencl/callfuncs.exp ...
+Running ../../../master/gdb/testsuite/gdb.opencl/convs_casts.exp ...
+Running ../../../master/gdb/testsuite/gdb.opencl/datatypes.exp ...
+Running ../../../master/gdb/testsuite/gdb.opencl/operators.exp ...
+Running ../../../master/gdb/testsuite/gdb.opencl/vec_comps.exp ...
+Running ../../../master/gdb/testsuite/gdb.opt/clobbered-registers-O2.exp ...
+PASS: gdb.opt/clobbered-registers-O2.exp: Backtracing
+PASS: gdb.opt/clobbered-registers-O2.exp: print operand0
+PASS: gdb.opt/clobbered-registers-O2.exp: print operand1
+Running ../../../master/gdb/testsuite/gdb.opt/inline-bt.exp ...
+PASS: gdb.opt/inline-bt.exp: continue to bar (1)
+PASS: gdb.opt/inline-bt.exp: backtrace from bar (1)
+PASS: gdb.opt/inline-bt.exp: bar not inlined
+PASS: gdb.opt/inline-bt.exp: continue to bar (2)
+PASS: gdb.opt/inline-bt.exp: backtrace from bar (2)
+PASS: gdb.opt/inline-bt.exp: up from bar (2)
+PASS: gdb.opt/inline-bt.exp: func1 inlined (2)
+PASS: gdb.opt/inline-bt.exp: continue to bar (3)
+PASS: gdb.opt/inline-bt.exp: backtrace from bar (3)
+PASS: gdb.opt/inline-bt.exp: up from bar (3)
+PASS: gdb.opt/inline-bt.exp: func1 inlined (3)
+PASS: gdb.opt/inline-bt.exp: up from func1 (3)
+PASS: gdb.opt/inline-bt.exp: func2 inlined (3)
+Running ../../../master/gdb/testsuite/gdb.opt/inline-cmds.exp ...
+PASS: gdb.opt/inline-cmds.exp: set listsize 1
+PASS: gdb.opt/inline-cmds.exp: continue to bar (1)
+PASS: gdb.opt/inline-cmds.exp: backtrace from bar (1)
+PASS: gdb.opt/inline-cmds.exp: up from bar (1)
+PASS: gdb.opt/inline-cmds.exp: func1 inlined (1)
+PASS: gdb.opt/inline-cmds.exp: continue to bar (2)
+PASS: gdb.opt/inline-cmds.exp: backtrace from bar (2)
+PASS: gdb.opt/inline-cmds.exp: up from bar (2)
+PASS: gdb.opt/inline-cmds.exp: func1 inlined (2)
+PASS: gdb.opt/inline-cmds.exp: up from func1 (2)
+PASS: gdb.opt/inline-cmds.exp: func2 inlined (2)
+PASS: gdb.opt/inline-cmds.exp: continue to marker
+PASS: gdb.opt/inline-cmds.exp: backtrace from marker
+PASS: gdb.opt/inline-cmds.exp: marker not inlined
+PASS: gdb.opt/inline-cmds.exp: next over inlined functions
+PASS: gdb.opt/inline-cmds.exp: next past inlined func1
+PASS: gdb.opt/inline-cmds.exp: print x before func1
+PASS: gdb.opt/inline-cmds.exp: backtrace does not include func1
+PASS: gdb.opt/inline-cmds.exp: stepped over call to func1
+PASS: gdb.opt/inline-cmds.exp: step into func1
+PASS: gdb.opt/inline-cmds.exp: finish from func1
+PASS: gdb.opt/inline-cmds.exp: continue to breakpoint: consecutive func1
+PASS: gdb.opt/inline-cmds.exp: next to first func1
+KFAIL: gdb.opt/inline-cmds.exp: next to second func1 (PRMS: gdb/NNNN)
+PASS: gdb.opt/inline-cmds.exp: continue to breakpoint: func1 then func3
+PASS: gdb.opt/inline-cmds.exp: next to func1 before func3
+PASS: gdb.opt/inline-cmds.exp: next to func3
+PASS: gdb.opt/inline-cmds.exp: continue to breakpoint: finish into func1
+PASS: gdb.opt/inline-cmds.exp: next to finish marker
+PASS: gdb.opt/inline-cmds.exp: step into finish marker
+PASS: gdb.opt/inline-cmds.exp: finish from marker to func1
+PASS: gdb.opt/inline-cmds.exp: step into func1 for finish
+PASS: gdb.opt/inline-cmds.exp: finish from func1 to func3
+PASS: gdb.opt/inline-cmds.exp: continue to breakpoint: before the outer_inline call
+PASS: gdb.opt/inline-cmds.exp: reach 1 the outer_inline call
+PASS: gdb.opt/inline-cmds.exp: reach outer_inline2
+PASS: gdb.opt/inline-cmds.exp: backtrace at main of outer_inline
+PASS: gdb.opt/inline-cmds.exp: enter outer_inline2
+PASS: gdb.opt/inline-cmds.exp: backtrace at outer_inline2
+PASS: gdb.opt/inline-cmds.exp: enter outer_inline1 from outer_inline2
+XFAIL: gdb.opt/inline-cmds.exp: backtrace at outer_inline1
+PASS: gdb.opt/inline-cmds.exp: step to call of noinline
+PASS: gdb.opt/inline-cmds.exp: enter noinline from outer_inline1
+PASS: gdb.opt/inline-cmds.exp: backtrace at noinline from outer_inline1
+PASS: gdb.opt/inline-cmds.exp: enter inlined_fn from noinline
+PASS: gdb.opt/inline-cmds.exp: backtrace at inlined_fn from noinline
+PASS: gdb.opt/inline-cmds.exp: inlined_fn from noinline inlined
+PASS: gdb.opt/inline-cmds.exp: up to noinline
+PASS: gdb.opt/inline-cmds.exp: noinline from outer_inline1 not inlined
+PASS: gdb.opt/inline-cmds.exp: up to outer_inline1
+PASS: gdb.opt/inline-cmds.exp: outer_inline1 inlined
+PASS: gdb.opt/inline-cmds.exp: up to outer_inline2
+PASS: gdb.opt/inline-cmds.exp: outer_inline2 inlined
+PASS: gdb.opt/inline-cmds.exp: up from outer_inline2
+PASS: gdb.opt/inline-cmds.exp: main not inlined
+Running ../../../master/gdb/testsuite/gdb.opt/inline-locals.exp ...
+PASS: gdb.opt/inline-locals.exp: continue to bar (1)
+PASS: gdb.opt/inline-locals.exp: continue to bar (2)
+PASS: gdb.opt/inline-locals.exp: backtrace from bar (2)
+PASS: gdb.opt/inline-locals.exp: up from bar (2)
+PASS: gdb.opt/inline-locals.exp: func1 inlined (2)
+PASS: gdb.opt/inline-locals.exp: info locals above bar (2)
+PASS: gdb.opt/inline-locals.exp: info args above bar (2)
+PASS: gdb.opt/inline-locals.exp: print local (2)
+PASS: gdb.opt/inline-locals.exp: print out of scope local
+PASS: gdb.opt/inline-locals.exp: continue to bar (3)
+PASS: gdb.opt/inline-locals.exp: backtrace from bar (3)
+PASS: gdb.opt/inline-locals.exp: up from bar (3)
+PASS: gdb.opt/inline-locals.exp: func1 inlined (3)
+PASS: gdb.opt/inline-locals.exp: info locals above bar (3)
+PASS: gdb.opt/inline-locals.exp: info args above bar (3)
+PASS: gdb.opt/inline-locals.exp: print local (3)
+Running ../../../master/gdb/testsuite/gdb.pascal/floats.exp ...
+UNSUPPORTED: gdb.pascal/floats.exp: No pascal compiler found
+Running ../../../master/gdb/testsuite/gdb.pascal/gdb11492.exp ...
+UNSUPPORTED: gdb.pascal/gdb11492.exp: No pascal compiler found
+Running ../../../master/gdb/testsuite/gdb.pascal/hello.exp ...
+UNSUPPORTED: gdb.pascal/hello.exp: No pascal compiler found
+Running ../../../master/gdb/testsuite/gdb.pascal/integers.exp ...
+UNSUPPORTED: gdb.pascal/integers.exp: No pascal compiler found
+Running ../../../master/gdb/testsuite/gdb.pascal/print.exp ...
+PASS: gdb.pascal/print.exp: set language pascal
+PASS: gdb.pascal/print.exp: set language to "pascal"
+PASS: gdb.pascal/print.exp: check fp + text
+PASS: gdb.pascal/print.exp: p 1.
+PASS: gdb.pascal/print.exp: p 1.5
+PASS: gdb.pascal/print.exp: p 1.f
+PASS: gdb.pascal/print.exp: p 1.5f
+PASS: gdb.pascal/print.exp: p 1.l
+PASS: gdb.pascal/print.exp: p 1.5l
+PASS: gdb.pascal/print.exp: p 0x1.1
+PASS: gdb.pascal/print.exp: reject p 1.1x
+PASS: gdb.pascal/print.exp: reject p 1.1ff
+PASS: gdb.pascal/print.exp: reject p 1.1ll
+Running ../../../master/gdb/testsuite/gdb.pascal/types.exp ...
+PASS: gdb.pascal/types.exp: set language pascal
+PASS: gdb.pascal/types.exp: set language to "pascal"
+PASS: gdb.pascal/types.exp: pt 123
+PASS: gdb.pascal/types.exp: pt TRUE
+PASS: gdb.pascal/types.exp: pt FALSE
+PASS: gdb.pascal/types.exp: pt 'a'
+KFAIL: gdb.pascal/types.exp: pt 'a simple string' (PRMS: gdb/2326)
+PASS: gdb.pascal/types.exp: pt .44
+PASS: gdb.pascal/types.exp: pt 44.0
+PASS: gdb.pascal/types.exp: pt 10e20
+PASS: gdb.pascal/types.exp: pt 10E20
+Running ../../../master/gdb/testsuite/gdb.python/lib-types.exp ...
+PASS: gdb.python/lib-types.exp: python import gdb.types
+PASS: gdb.python/lib-types.exp: python const_class1_obj = gdb.parse_and_eval ('const_class1_obj')
+PASS: gdb.python/lib-types.exp: python basic_type_const_class1_obj = gdb.types.get_basic_type (const_class1_obj.type)
+PASS: gdb.python/lib-types.exp: python print str (const_class1_obj.type)
+PASS: gdb.python/lib-types.exp: const stripping
+PASS: gdb.python/lib-types.exp: python volatile_class1_obj = gdb.parse_and_eval ('volatile_class1_obj')
+PASS: gdb.python/lib-types.exp: python basic_type_volatile_class1_obj = gdb.types.get_basic_type (volatile_class1_obj.type)
+PASS: gdb.python/lib-types.exp: python print str (volatile_class1_obj.type)
+PASS: gdb.python/lib-types.exp: volatile stripping
+PASS: gdb.python/lib-types.exp: python const_volatile_class1_obj = gdb.parse_and_eval ('const_volatile_class1_obj')
+PASS: gdb.python/lib-types.exp: python basic_type_const_volatile_class1_obj = gdb.types.get_basic_type (const_volatile_class1_obj.type)
+PASS: gdb.python/lib-types.exp: python print str (const_volatile_class1_obj.type)
+PASS: gdb.python/lib-types.exp: volatile+const stripping
+PASS: gdb.python/lib-types.exp: python typedef_class1_obj = gdb.parse_and_eval ('typedef_class1_obj')
+PASS: gdb.python/lib-types.exp: python basic_type_typedef_class1_obj = gdb.types.get_basic_type (typedef_class1_obj.type)
+PASS: gdb.python/lib-types.exp: python print str (typedef_class1_obj.type)
+PASS: gdb.python/lib-types.exp: typedef stripping
+PASS: gdb.python/lib-types.exp: python class1_ref_obj = gdb.parse_and_eval ('class1_ref_obj')
+PASS: gdb.python/lib-types.exp: python basic_type_class1_ref_obj = gdb.types.get_basic_type (class1_ref_obj.type)
+PASS: gdb.python/lib-types.exp: python print str (class1_ref_obj.type)
+PASS: gdb.python/lib-types.exp: reference stripping
+PASS: gdb.python/lib-types.exp: python typedef_const_typedef_class1_obj = gdb.parse_and_eval ('typedef_const_typedef_class1_obj')
+PASS: gdb.python/lib-types.exp: python basic_type_typedef_const_typedef_class1_obj = gdb.types.get_basic_type (typedef_const_typedef_class1_obj.type)
+PASS: gdb.python/lib-types.exp: python print str (typedef_class1_obj.type)
+PASS: gdb.python/lib-types.exp: nested typedef stripping
+PASS: gdb.python/lib-types.exp: python typedef_const_typedef_class1_ref_obj = gdb.parse_and_eval ('typedef_const_typedef_class1_ref_obj')
+PASS: gdb.python/lib-types.exp: python basic_type_typedef_const_typedef_class1_ref_obj = gdb.types.get_basic_type (typedef_const_typedef_class1_ref_obj.type)
+PASS: gdb.python/lib-types.exp: python print str (typedef_const_typedef_class1_ref_obj.type)
+PASS: gdb.python/lib-types.exp: nested typedef/ref stripping
+PASS: gdb.python/lib-types.exp: python class1_obj = gdb.parse_and_eval ('class1_obj')
+PASS: gdb.python/lib-types.exp: python print gdb.types.has_field (class1_obj.type, 'x')
+PASS: gdb.python/lib-types.exp: python print gdb.types.has_field (class1_obj.type, 'nope')
+PASS: gdb.python/lib-types.exp: python subclass1_obj = gdb.parse_and_eval ('subclass1_obj')
+PASS: gdb.python/lib-types.exp: python print gdb.types.has_field (subclass1_obj.type, 'x')
+PASS: gdb.python/lib-types.exp: python enum1_obj = gdb.parse_and_eval ('enum1_obj')
+PASS: gdb.python/lib-types.exp: python enum1_dict = gdb.types.make_enum_dict (enum1_obj.type)
+PASS: gdb.python/lib-types.exp: python enum1_list = enum1_dict.items ()
+PASS: gdb.python/lib-types.exp: python enum1_list.sort ()
+PASS: gdb.python/lib-types.exp: python print enum1_list
+Running ../../../master/gdb/testsuite/gdb.python/py-block.exp ...
+PASS: gdb.python/py-block.exp: continue to breakpoint: Block break here.
+PASS: gdb.python/py-block.exp: Check block not None
+PASS: gdb.python/py-block.exp: First anonymous block
+PASS: gdb.python/py-block.exp: Check start not None
+PASS: gdb.python/py-block.exp: Check end not None
+PASS: gdb.python/py-block.exp: Get superblock
+PASS: gdb.python/py-block.exp: Second anonymous block
+PASS: gdb.python/py-block.exp: Get superblock 2
+PASS: gdb.python/py-block.exp: Print superblock 2 function
+PASS: gdb.python/py-block.exp: up
+PASS: gdb.python/py-block.exp: Check Frame 2's block not None
+PASS: gdb.python/py-block.exp: main block
+PASS: gdb.python/py-block.exp: Check block validity
+PASS: gdb.python/py-block.exp: Check block validity
+PASS: gdb.python/py-block.exp: Check block validity
+PASS: gdb.python/py-block.exp: Check block validity
+Running ../../../master/gdb/testsuite/gdb.python/py-breakpoint.exp ...
+PASS: gdb.python/py-breakpoint.exp: Check obj exists
+PASS: gdb.python/py-breakpoint.exp: Check breakpoint location
+PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply.
+PASS: gdb.python/py-breakpoint.exp: Check for two breakpoints
+PASS: gdb.python/py-breakpoint.exp: Check obj exists
+PASS: gdb.python/py-breakpoint.exp: Check breakpoint location
+PASS: gdb.python/py-breakpoint.exp: Check obj exists
+PASS: gdb.python/py-breakpoint.exp: Check breakpoint location
+PASS: gdb.python/py-breakpoint.exp: Check breakpoint hit count
+PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply.
+PASS: gdb.python/py-breakpoint.exp: Check breakpoint hit count
+PASS: gdb.python/py-breakpoint.exp: Check expected variable result after 6 iterations
+PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at add.
+PASS: gdb.python/py-breakpoint.exp: Check breakpoint enabled.
+PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at add.
+PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply.
+PASS: gdb.python/py-breakpoint.exp: Check breakpoint thread
+PASS: gdb.python/py-breakpoint.exp: Check breakpoint type
+PASS: gdb.python/py-breakpoint.exp: Check breakpoint number
+PASS: gdb.python/py-breakpoint.exp: Check breakpoint number
+PASS: gdb.python/py-breakpoint.exp: Check breakpoint number
+PASS: gdb.python/py-breakpoint.exp: Number of breakpoints before delete
+PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply.
+PASS: gdb.python/py-breakpoint.exp: Check breakpoint invalidated
+PASS: gdb.python/py-breakpoint.exp: Number of breakpoints after delete
+PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at end.
+PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply.
+PASS: gdb.python/py-breakpoint.exp: Test conditional has been set
+PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply.
+PASS: gdb.python/py-breakpoint.exp: Test conditional breakpoint stopped after five iterations
+PASS: gdb.python/py-breakpoint.exp: Test conditional read
+PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply.
+PASS: gdb.python/py-breakpoint.exp: Test breakpoint stopped after six iterations
+PASS: gdb.python/py-breakpoint.exp: commands $bpnum
+PASS: gdb.python/py-breakpoint.exp: print "Command for breakpoint has been executed."
+PASS: gdb.python/py-breakpoint.exp: print result
+PASS: gdb.python/py-breakpoint.exp: end
+PASS: gdb.python/py-breakpoint.exp: python print blist[len(blist)-1].commands
+PASS: gdb.python/py-breakpoint.exp: Check invisible bp obj exists
+PASS: gdb.python/py-breakpoint.exp: Check breakpoint location
+PASS: gdb.python/py-breakpoint.exp: Check breakpoint visibility
+PASS: gdb.python/py-breakpoint.exp: Check info breakpoints shows visible breakpoints
+PASS: gdb.python/py-breakpoint.exp: Check invisible bp obj exists
+PASS: gdb.python/py-breakpoint.exp: Check breakpoint location
+PASS: gdb.python/py-breakpoint.exp: Check breakpoint visibility
+PASS: gdb.python/py-breakpoint.exp: Check info breakpoints does not show invisible breakpoints
+PASS: gdb.python/py-breakpoint.exp: Check maint info breakpoints shows invisible breakpoints
+PASS: gdb.python/py-breakpoint.exp: Test watchpoint write
+PASS: gdb.python/py-breakpoint.exp: Check info breakpoints does not show invisible breakpoints
+PASS: gdb.python/py-breakpoint.exp: Check maint info breakpoints shows invisible breakpoints
+PASS: gdb.python/py-breakpoint.exp: Test watchpoint write
+PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - python
+PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - class bp_eval (gdb.Breakpoint):
+PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - inf_i = 0
+PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - count = 0
+PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - def stop (self):
+PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - self.count = self.count + 1
+PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - self.inf_i = gdb.parse_and_eval("i")
+PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - if self.inf_i == 3:
+PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - return True
+PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - return False
+PASS: gdb.python/py-breakpoint.exp: Sub-class a breakpoint - end
+PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - python
+PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - class bp_also_eval (gdb.Breakpoint):
+PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - count = 0
+PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - def stop (self):
+PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - self.count = self.count + 1
+PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - if self.count == 9:
+PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - return True
+PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - return False
+PASS: gdb.python/py-breakpoint.exp: Sub-class a second breakpoint - end
+PASS: gdb.python/py-breakpoint.exp: Sub-class a third breakpoint - python
+PASS: gdb.python/py-breakpoint.exp: Sub-class a third breakpoint - class basic (gdb.Breakpoint):
+PASS: gdb.python/py-breakpoint.exp: Sub-class a third breakpoint - count = 0
+PASS: gdb.python/py-breakpoint.exp: Sub-class a third breakpoint - end
+PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply.
+PASS: gdb.python/py-breakpoint.exp: Check inferior value matches python accounting
+PASS: gdb.python/py-breakpoint.exp: Check python accounting matches inferior
+PASS: gdb.python/py-breakpoint.exp: Check non firing same-location breakpoint eval function was also called at each stop.
+PASS: gdb.python/py-breakpoint.exp: Check non firing same-location breakpoint eval function was also called at each stop.
+PASS: gdb.python/py-breakpoint.exp: Check you cannot add a CLI condition to a Python breakpoint that
+PASS: gdb.python/py-breakpoint.exp: Construct an eval function - python
+PASS: gdb.python/py-breakpoint.exp: Construct an eval function - def stop_func ():
+PASS: gdb.python/py-breakpoint.exp: Construct an eval function - return True
+PASS: gdb.python/py-breakpoint.exp: Construct an eval function - end
+PASS: gdb.python/py-breakpoint.exp: Assign stop function to a breakpoint that has a condition
+PASS: gdb.python/py-breakpoint.exp: Test that evaluate function has not been yet executed (ie count = 0)
+PASS: gdb.python/py-breakpoint.exp: continue to breakpoint: Break at multiply.
+PASS: gdb.python/py-breakpoint.exp: Test that evaluate function is run when location also has normal bp
+PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - python
+PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - class wp_eval (gdb.Breakpoint):
+PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - def stop (self):
+PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - self.result = gdb.parse_and_eval("result")
+PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - if self.result == 788:
+PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - return True
+PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - return False
+PASS: gdb.python/py-breakpoint.exp: Sub-class a watchpoint - end
+PASS: gdb.python/py-breakpoint.exp: Test watchpoint write
+PASS: gdb.python/py-breakpoint.exp: Check that this unrelated breakpoints eval function was never called.
+Running ../../../master/gdb/testsuite/gdb.python/py-cmd.exp ...
+PASS: gdb.python/py-cmd.exp: input simple command - python
+PASS: gdb.python/py-cmd.exp: input simple command - class test_cmd (gdb.Command):
+PASS: gdb.python/py-cmd.exp: input simple command - def __init__ (self):
+PASS: gdb.python/py-cmd.exp: input simple command - super (test_cmd, self).__init__ ("test_cmd", gdb.COMMAND_OBSCURE)
+PASS: gdb.python/py-cmd.exp: input simple command - def invoke (self, arg, from_tty):
+PASS: gdb.python/py-cmd.exp: input simple command - print "test_cmd output, arg = %s" % arg
+PASS: gdb.python/py-cmd.exp: input simple command - test_cmd ()
+PASS: gdb.python/py-cmd.exp: input simple command - end
+PASS: gdb.python/py-cmd.exp: call simple command
+PASS: gdb.python/py-cmd.exp: input prefix command - python
+PASS: gdb.python/py-cmd.exp: input prefix command - class prefix_cmd (gdb.Command):
+PASS: gdb.python/py-cmd.exp: input prefix command - def __init__ (self):
+PASS: gdb.python/py-cmd.exp: input prefix command - super (prefix_cmd, self).__init__ ("prefix_cmd", gdb.COMMAND_OBSCURE, gdb.COMPLETE_NONE, True)
+PASS: gdb.python/py-cmd.exp: input prefix command - def invoke (self, arg, from_tty):
+PASS: gdb.python/py-cmd.exp: input prefix command - print "prefix_cmd output, arg = %s" % arg
+PASS: gdb.python/py-cmd.exp: input prefix command - prefix_cmd ()
+PASS: gdb.python/py-cmd.exp: input prefix command - end
+PASS: gdb.python/py-cmd.exp: call prefix command
+PASS: gdb.python/py-cmd.exp: input subcommand - python
+PASS: gdb.python/py-cmd.exp: input subcommand - class subcmd (gdb.Command):
+PASS: gdb.python/py-cmd.exp: input subcommand - def __init__ (self):
+PASS: gdb.python/py-cmd.exp: input subcommand - super (subcmd, self).__init__ ("prefix_cmd subcmd", gdb.COMMAND_OBSCURE)
+PASS: gdb.python/py-cmd.exp: input subcommand - def invoke (self, arg, from_tty):
+PASS: gdb.python/py-cmd.exp: input subcommand - print "subcmd output, arg = %s" % arg
+PASS: gdb.python/py-cmd.exp: input subcommand - subcmd ()
+PASS: gdb.python/py-cmd.exp: input subcommand - end
+PASS: gdb.python/py-cmd.exp: call subcmd
+PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - python
+PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - class prefix_cmd2 (gdb.Command):
+PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - def __init__ (self):
+PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - super (prefix_cmd2, self).__init__ ("prefix_cmd2", gdb.COMMAND_OBSCURE, prefix = True, completer_class = gdb.COMPLETE_FILENAME)
+PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - def invoke (self, arg, from_tty):
+PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - print "prefix_cmd2 output, arg = %s" % arg
+PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - prefix_cmd2 ()
+PASS: gdb.python/py-cmd.exp: input prefix command, keyword arguments - end
+PASS: gdb.python/py-cmd.exp: call prefix command, keyword arguments
+PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - python
+PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - class subcmd (gdb.Command):
+PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - def __init__ (self):
+PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - super (subcmd, self).__init__ ("prefix_cmd2 subcmd", gdb.COMMAND_OBSCURE)
+PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - def invoke (self, arg, from_tty):
+PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - print "subcmd output, arg = %s" % arg
+PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - subcmd ()
+PASS: gdb.python/py-cmd.exp: input subcommand under prefix_cmd2 - end
+PASS: gdb.python/py-cmd.exp: call subcmd under prefix_cmd2
+PASS: gdb.python/py-cmd.exp: input new subcommand - python
+PASS: gdb.python/py-cmd.exp: input new subcommand - class newsubcmd (gdb.Command):
+PASS: gdb.python/py-cmd.exp: input new subcommand - def __init__ (self):
+PASS: gdb.python/py-cmd.exp: input new subcommand - super (newsubcmd, self).__init__ ("info newsubcmd", gdb.COMMAND_OBSCURE)
+PASS: gdb.python/py-cmd.exp: input new subcommand - def invoke (self, arg, from_tty):
+PASS: gdb.python/py-cmd.exp: input new subcommand - print "newsubcmd output, arg = %s" % arg
+PASS: gdb.python/py-cmd.exp: input new subcommand - newsubcmd ()
+PASS: gdb.python/py-cmd.exp: input new subcommand - end
+PASS: gdb.python/py-cmd.exp: call newsubcmd
+PASS: gdb.python/py-cmd.exp: input command to throw error - python
+PASS: gdb.python/py-cmd.exp: input command to throw error - class test_error_cmd (gdb.Command):
+PASS: gdb.python/py-cmd.exp: input command to throw error - def __init__ (self):
+PASS: gdb.python/py-cmd.exp: input command to throw error - super (test_error_cmd, self).__init__ ("test_error_cmd", gdb.COMMAND_OBSCURE)
+PASS: gdb.python/py-cmd.exp: input command to throw error - def invoke (self, arg, from_tty):
+PASS: gdb.python/py-cmd.exp: input command to throw error - raise gdb.GdbError ('you lose!')
+PASS: gdb.python/py-cmd.exp: input command to throw error - test_error_cmd ()
+PASS: gdb.python/py-cmd.exp: input command to throw error - end
+PASS: gdb.python/py-cmd.exp: call error command
+PASS: gdb.python/py-cmd.exp: string_to_argv ("1 2 3")
+PASS: gdb.python/py-cmd.exp: string_to_argv ("'1 2' 3")
+PASS: gdb.python/py-cmd.exp: string_to_argv ('"1 2" 3')
+PASS: gdb.python/py-cmd.exp: string_to_argv ('1\ 2 3')
+Running ../../../master/gdb/testsuite/gdb.python/py-error.exp ...
+PASS: gdb.python/py-error.exp: set host-charset IBM1047
+PASS: gdb.python/py-error.exp: main reached
+PASS: gdb.python/py-error.exp: no delayed error
+Running ../../../master/gdb/testsuite/gdb.python/py-events.exp ...
+PASS: gdb.python/py-events.exp: Test_Events
+PASS: gdb.python/py-events.exp: continue
+PASS: gdb.python/py-events.exp: continue
+Running ../../../master/gdb/testsuite/gdb.python/py-evthreads.exp ...
+PASS: gdb.python/py-evthreads.exp: successfully compiled posix threads test case
+PASS: gdb.python/py-evthreads.exp: Test_Events
+PASS: gdb.python/py-evthreads.exp: set non-stop on
+PASS: gdb.python/py-evthreads.exp: set target-async on
+PASS: gdb.python/py-evthreads.exp: reached breakpoint 1
+PASS: gdb.python/py-evthreads.exp: reached breakpoint 2
+PASS: gdb.python/py-evthreads.exp: reached breakpoint 3
+PASS: gdb.python/py-evthreads.exp: continue thread 1
+PASS: gdb.python/py-evthreads.exp: thread 2
+PASS: gdb.python/py-evthreads.exp: continue thread 2
+PASS: gdb.python/py-evthreads.exp: thread 3 was signalled
+Running ../../../master/gdb/testsuite/gdb.python/py-frame-inline.exp ...
+PASS: gdb.python/py-frame-inline.exp: continue to breakpoint: Block break here.
+PASS: gdb.python/py-frame-inline.exp: info frame
+PASS: gdb.python/py-frame-inline.exp: up
+PASS: gdb.python/py-frame-inline.exp: python print gdb.selected_frame().read_var('l')
+Running ../../../master/gdb/testsuite/gdb.python/py-frame.exp ...
+PASS: gdb.python/py-frame.exp: continue to breakpoint: Block break here.
+PASS: gdb.python/py-frame.exp: test i
+PASS: gdb.python/py-frame.exp: test f
+PASS: gdb.python/py-frame.exp: test b
+PASS: gdb.python/py-frame.exp: test i = 1.1
+PASS: gdb.python/py-frame.exp: test double i
+PASS: gdb.python/py-frame.exp: test f = 2.2
+PASS: gdb.python/py-frame.exp: test double f
+PASS: gdb.python/py-frame.exp: test i = 99
+PASS: gdb.python/py-frame.exp: test int i
+PASS: gdb.python/py-frame.exp: continue to breakpoint: breakpoint at f2
+PASS: gdb.python/py-frame.exp: selected frame -vs- newest frame
+PASS: gdb.python/py-frame.exp: newest frame -vs- newest frame
+PASS: gdb.python/py-frame.exp: test equality comparison (false)
+PASS: gdb.python/py-frame.exp: test equality comparison (true)
+PASS: gdb.python/py-frame.exp: test inequality comparison (true)
+PASS: gdb.python/py-frame.exp: test inequality comparison (false)
+PASS: gdb.python/py-frame.exp: test Frame.is_valid
+PASS: gdb.python/py-frame.exp: test Frame.name
+PASS: gdb.python/py-frame.exp: test Frame.type
+PASS: gdb.python/py-frame.exp: test Frame.type
+PASS: gdb.python/py-frame.exp: test gdb.frame_stop_reason_string
+PASS: gdb.python/py-frame.exp: test Frame.pc
+PASS: gdb.python/py-frame.exp: test Frame.older
+PASS: gdb.python/py-frame.exp: test Frame.newer
+PASS: gdb.python/py-frame.exp: test Frame.read_var - error
+PASS: gdb.python/py-frame.exp: test Frame.read_var - success
+PASS: gdb.python/py-frame.exp: test gdb.selected_frame
+Running ../../../master/gdb/testsuite/gdb.python/py-function.exp ...
+PASS: gdb.python/py-function.exp: input convenience function - python
+PASS: gdb.python/py-function.exp: input convenience function - class test_func (gdb.Function):
+PASS: gdb.python/py-function.exp: input convenience function - def __init__ (self):
+PASS: gdb.python/py-function.exp: input convenience function - super (test_func, self).__init__ ("test_func")
+PASS: gdb.python/py-function.exp: input convenience function - def invoke (self, arg):
+PASS: gdb.python/py-function.exp: input convenience function - return "test_func output, arg = %s" % arg.string ()
+PASS: gdb.python/py-function.exp: input convenience function - test_func ()
+PASS: gdb.python/py-function.exp: input convenience function - end
+PASS: gdb.python/py-function.exp: call function
+PASS: gdb.python/py-function.exp: input value-returning convenience function - python
+PASS: gdb.python/py-function.exp: input value-returning convenience function - class Double (gdb.Function):
+PASS: gdb.python/py-function.exp: input value-returning convenience function - def __init__ (self):
+PASS: gdb.python/py-function.exp: input value-returning convenience function - super (Double, self).__init__ ("double")
+PASS: gdb.python/py-function.exp: input value-returning convenience function - def invoke (self, n):
+PASS: gdb.python/py-function.exp: input value-returning convenience function - return n*2
+PASS: gdb.python/py-function.exp: input value-returning convenience function - Double ()
+PASS: gdb.python/py-function.exp: input value-returning convenience function - end
+PASS: gdb.python/py-function.exp: call value-returning function
+PASS: gdb.python/py-function.exp: input int-returning function - python
+PASS: gdb.python/py-function.exp: input int-returning function - class Yes(gdb.Function):
+PASS: gdb.python/py-function.exp: input int-returning function - def __init__(self):
+PASS: gdb.python/py-function.exp: input int-returning function - gdb.Function.__init__(self, 'yes')
+PASS: gdb.python/py-function.exp: input int-returning function - def invoke(self):
+PASS: gdb.python/py-function.exp: input int-returning function - return 1
+PASS: gdb.python/py-function.exp: input int-returning function - Yes ()
+PASS: gdb.python/py-function.exp: input int-returning function - end
+PASS: gdb.python/py-function.exp: call yes with &&
+PASS: gdb.python/py-function.exp: call yes with ||
+PASS: gdb.python/py-function.exp: Test GDBError - python
+PASS: gdb.python/py-function.exp: Test GDBError - class GDBError(gdb.Function):
+PASS: gdb.python/py-function.exp: Test GDBError - def __init__(self):
+PASS: gdb.python/py-function.exp: Test GDBError - gdb.Function.__init__(self, 'gdberror')
+PASS: gdb.python/py-function.exp: Test GDBError - def invoke(self):
+PASS: gdb.python/py-function.exp: Test GDBError - raise gdb.GdbError("This is a GdbError")
+PASS: gdb.python/py-function.exp: Test GDBError - GDBError ()
+PASS: gdb.python/py-function.exp: Test GDBError - end
+PASS: gdb.python/py-function.exp: Test GdbError. There should not be a stack trace
+PASS: gdb.python/py-function.exp: Test Normal Error - python
+PASS: gdb.python/py-function.exp: Test Normal Error - class NormalError(gdb.Function):
+PASS: gdb.python/py-function.exp: Test Normal Error - def __init__(self):
+PASS: gdb.python/py-function.exp: Test Normal Error - gdb.Function.__init__(self, 'normalerror')
+PASS: gdb.python/py-function.exp: Test Normal Error - def invoke(self):
+PASS: gdb.python/py-function.exp: Test Normal Error - raise RuntimeError("This is a Normal Error")
+PASS: gdb.python/py-function.exp: Test Normal Error - NormalError ()
+PASS: gdb.python/py-function.exp: Test Normal Error - end
+PASS: gdb.python/py-function.exp: Test a Runtime error. There should be a stack trace.
+PASS: gdb.python/py-function.exp: input command-calling function - python
+PASS: gdb.python/py-function.exp: input command-calling function - class CallCommand(gdb.Function):
+PASS: gdb.python/py-function.exp: input command-calling function - def __init__(self):
+PASS: gdb.python/py-function.exp: input command-calling function - gdb.Function.__init__(self, 'call_command')
+PASS: gdb.python/py-function.exp: input command-calling function - def invoke(self):
+PASS: gdb.python/py-function.exp: input command-calling function - return gdb.execute('print 1', to_string=True)
+PASS: gdb.python/py-function.exp: input command-calling function - CallCommand ()
+PASS: gdb.python/py-function.exp: input command-calling function - end
+PASS: gdb.python/py-function.exp: Setting a value from a function which executes a command.
+PASS: gdb.python/py-function.exp: Setting a value from a function which executes a command, again.
+Running ../../../master/gdb/testsuite/gdb.python/py-inferior.exp ...
+PASS: gdb.python/py-inferior.exp: get inferiors list
+PASS: gdb.python/py-inferior.exp: verify inferiors list
+PASS: gdb.python/py-inferior.exp: test equality comparison (true)
+PASS: gdb.python/py-inferior.exp: test Inferior.num
+PASS: gdb.python/py-inferior.exp: test Inferior.pid
+PASS: gdb.python/py-inferior.exp: test Inferior.was_attached
+PASS: gdb.python/py-inferior.exp: test Inferior.threads
+PASS: gdb.python/py-inferior.exp: read str contents
+PASS: gdb.python/py-inferior.exp: write str
+PASS: gdb.python/py-inferior.exp: ensure str was changed in the inferior
+PASS: gdb.python/py-inferior.exp: py start_addr = search_buf.address
+PASS: gdb.python/py-inferior.exp: py length = search_buf.type.sizeof
+PASS: gdb.python/py-inferior.exp: find string pattern
+PASS: gdb.python/py-inferior.exp: pattern not found at end of range
+PASS: gdb.python/py-inferior.exp: pattern found at end of range
+PASS: gdb.python/py-inferior.exp: py from struct import *
+PASS: gdb.python/py-inferior.exp: set int16_search_buf[10] = 0x1234
+PASS: gdb.python/py-inferior.exp: py search_buf = gdb.selected_frame ().read_var ('int16_search_buf')
+PASS: gdb.python/py-inferior.exp: py start_addr = search_buf.address
+PASS: gdb.python/py-inferior.exp: py length = search_buf.type.sizeof
+PASS: gdb.python/py-inferior.exp: py pattern = pack('<H',0x1234)
+PASS: gdb.python/py-inferior.exp: find 16-bit pattern, with value pattern
+PASS: gdb.python/py-inferior.exp: set int32_search_buf[10] = 0x12345678
+PASS: gdb.python/py-inferior.exp: py search_buf = gdb.selected_frame ().read_var ('int32_search_buf')
+PASS: gdb.python/py-inferior.exp: py start_addr = search_buf.address
+PASS: gdb.python/py-inferior.exp: py length = search_buf.type.sizeof
+PASS: gdb.python/py-inferior.exp: py pattern = pack('<I',0x12345678)
+PASS: gdb.python/py-inferior.exp: find 32-bit pattern, with python pattern
+PASS: gdb.python/py-inferior.exp: set int64_search_buf[10] = 0xfedcba9876543210LL
+PASS: gdb.python/py-inferior.exp: py search_buf = gdb.selected_frame ().read_var ('int64_search_buf')
+PASS: gdb.python/py-inferior.exp: py start_addr = search_buf.address
+PASS: gdb.python/py-inferior.exp: py length = search_buf.type.sizeof
+PASS: gdb.python/py-inferior.exp: py pattern = pack('<Q', 0xfedcba9876543210)
+PASS: gdb.python/py-inferior.exp: find 64-bit pattern, with value pattern
+PASS: gdb.python/py-inferior.exp: set *(int8_t*) &search_buf[10] = 0x62
+PASS: gdb.python/py-inferior.exp: set *(int16_t*) &search_buf[11] = 0x6363
+PASS: gdb.python/py-inferior.exp: set *(int32_t*) &search_buf[13] = 0x64646464
+PASS: gdb.python/py-inferior.exp: py search_buf = gdb.selected_frame ().read_var ('search_buf')
+PASS: gdb.python/py-inferior.exp: py start_addr = search_buf[0].address
+PASS: gdb.python/py-inferior.exp: py pattern1 = pack('B', 0x62)
+PASS: gdb.python/py-inferior.exp: py pattern2 = pack('<H', 0x6363)
+PASS: gdb.python/py-inferior.exp: py pattern3 = pack('<I', 0x64646464)
+PASS: gdb.python/py-inferior.exp: find mixed-sized pattern
+PASS: gdb.python/py-inferior.exp: find mixed-sized pattern
+PASS: gdb.python/py-inferior.exp: find mixed-sized pattern
+PASS: gdb.python/py-inferior.exp: set *(int32_t*) &search_buf[0*16000+100] = 0x12345678
+PASS: gdb.python/py-inferior.exp: set *(int32_t*) &search_buf[1*16000+100] = 0x12345678
+PASS: gdb.python/py-inferior.exp: py start_addr = gdb.selected_frame ().read_var ('search_buf')
+PASS: gdb.python/py-inferior.exp: py end_addr = start_addr + gdb.selected_frame ().read_var ('search_buf_size')
+PASS: gdb.python/py-inferior.exp: py pattern = pack('<I', 0x12345678)
+PASS: gdb.python/py-inferior.exp: py first = gdb.inferiors()[0].search_memory (start_addr,end_addr - start_addr, pattern)
+PASS: gdb.python/py-inferior.exp: search spanning large range 1st result
+PASS: gdb.python/py-inferior.exp: py start_addr = first + 1
+PASS: gdb.python/py-inferior.exp: py second = gdb.inferiors()[0].search_memory (start_addr, end_addr - start_addr, pattern)
+PASS: gdb.python/py-inferior.exp: search spanning large range 2nd result
+PASS: gdb.python/py-inferior.exp: py start_addr = second + 1
+PASS: gdb.python/py-inferior.exp: py third = gdb.inferiors()[0].search_memory (start_addr, end_addr - start_addr, pattern)
+PASS: gdb.python/py-inferior.exp: search spanning large range 3rd result
+PASS: gdb.python/py-inferior.exp: set *(int32_t*) &search_buf[16000-1] = 0xfdb97531
+PASS: gdb.python/py-inferior.exp: py pattern = pack('<I', 0xfdb97531)
+PASS: gdb.python/py-inferior.exp: py start_addr = gdb.selected_frame ().read_var ('search_buf')
+PASS: gdb.python/py-inferior.exp: find pattern straddling chunk boundary
+PASS: gdb.python/py-inferior.exp: get initial list
+PASS: gdb.python/py-inferior.exp: Get inferior list length
+PASS: gdb.python/py-inferior.exp: Check inferior validity
+PASS: gdb.python/py-inferior.exp: add empty inferior 2
+PASS: gdb.python/py-inferior.exp: get new list
+PASS: gdb.python/py-inferior.exp: Get inferior list length
+PASS: gdb.python/py-inferior.exp: Check inferior validity
+PASS: gdb.python/py-inferior.exp: Check inferior validity
+PASS: gdb.python/py-inferior.exp: remove-inferiors 2
+PASS: gdb.python/py-inferior.exp: Check inferior validity
+PASS: gdb.python/py-inferior.exp: Check inferior validity
+Running ../../../master/gdb/testsuite/gdb.python/py-infthread.exp ...
+PASS: gdb.python/py-infthread.exp: test gdb.selected_thread
+PASS: gdb.python/py-infthread.exp: verify InferiorThread object
+PASS: gdb.python/py-infthread.exp: test Inferior.num
+PASS: gdb.python/py-infthread.exp: test InferiorThread.ptid
+PASS: gdb.python/py-infthread.exp: get supplied name of current thread
+PASS: gdb.python/py-infthread.exp: set name of current thread
+PASS: gdb.python/py-infthread.exp: check name of current thread
+PASS: gdb.python/py-infthread.exp: reset name of current thread
+PASS: gdb.python/py-infthread.exp: check name of current thread again
+PASS: gdb.python/py-infthread.exp: test InferiorThread.is_stopped
+PASS: gdb.python/py-infthread.exp: test InferiorThread.is_running
+PASS: gdb.python/py-infthread.exp: test InferiorThread.is_exited
+PASS: gdb.python/py-infthread.exp: test InferiorThread.is_valid
+PASS: gdb.python/py-infthread.exp: kill inferior 1
+PASS: gdb.python/py-infthread.exp: test InferiorThread.is_valid
+Running ../../../master/gdb/testsuite/gdb.python/py-mi.exp ...
+PASS: gdb.python/py-mi.exp: breakpoint at main
+PASS: gdb.python/py-mi.exp: mi runto main
+PASS: gdb.python/py-mi.exp: run to 283 (set breakpoint)
+PASS: gdb.python/py-mi.exp: create container varobj, no pretty-printing
+PASS: gdb.python/py-mi.exp: examine container children=0, no pretty-printing
+PASS: gdb.python/py-mi.exp: delete varobj
+PASS: gdb.python/py-mi.exp: create nscont varobj, no pretty-printing
+PASS: gdb.python/py-mi.exp: examine nscont children=0, no pretty-printing
+PASS: gdb.python/py-mi.exp: delete varobj
+PASS: gdb.python/py-mi.exp: create string_1 varobj
+PASS: gdb.python/py-mi.exp: create estring varobj
+PASS: gdb.python/py-mi.exp: assign string_1 from string_2
+PASS: gdb.python/py-mi.exp: update string varobj after assignment
+PASS: gdb.python/py-mi.exp: create container varobj
+PASS: gdb.python/py-mi.exp: examine container children=0
+PASS: gdb.python/py-mi.exp: next over update 1
+PASS: gdb.python/py-mi.exp: varobj update 1
+PASS: gdb.python/py-mi.exp: next over update 2
+PASS: gdb.python/py-mi.exp: varobj update 2
+PASS: gdb.python/py-mi.exp: clear visualizer
+PASS: gdb.python/py-mi.exp: varobj update after clearing
+PASS: gdb.python/py-mi.exp: choose default visualizer
+PASS: gdb.python/py-mi.exp: varobj update after choosing default
+PASS: gdb.python/py-mi.exp: choose visualizer using expression
+PASS: gdb.python/py-mi.exp: varobj update after choosing via expression
+PASS: gdb.python/py-mi.exp: list varobj children after selecting child range
+PASS: gdb.python/py-mi.exp: list varobj children after resetting child range
+PASS: gdb.python/py-mi.exp: next over update 3
+PASS: gdb.python/py-mi.exp: set update range
+PASS: gdb.python/py-mi.exp: list children after setting update range
+PASS: gdb.python/py-mi.exp: list selected children after setting range
+PASS: gdb.python/py-mi.exp: list children after listing selected range
+PASS: gdb.python/py-mi.exp: next over update 4
+PASS: gdb.python/py-mi.exp: update after next with restricted range
+PASS: gdb.python/py-mi.exp: set update range with non-zero start
+PASS: gdb.python/py-mi.exp: update varobj with change outside selected range
+PASS: gdb.python/py-mi.exp: next over update 5
+PASS: gdb.python/py-mi.exp: create second container varobj
+PASS: gdb.python/py-mi.exp: update varobj, no children requested
+PASS: gdb.python/py-mi.exp: next over update 6
+PASS: gdb.python/py-mi.exp: update varobj 2, no children requested
+PASS: gdb.python/py-mi.exp: run to 127 (set breakpoint)
+PASS: gdb.python/py-mi.exp: create outer varobj
+PASS: gdb.python/py-mi.exp: list children of outer
+PASS: gdb.python/py-mi.exp: list children of outer.s
+PASS: gdb.python/py-mi.exp: next over outer update
+PASS: gdb.python/py-mi.exp: update after updating element of outer
+PASS: gdb.python/py-mi.exp: run to 206 (set breakpoint)
+PASS: gdb.python/py-mi.exp: update after type change
+PASS: gdb.python/py-mi.exp: run to 304 (set breakpoint)
+PASS: gdb.python/py-mi.exp: create nstype varobj
+PASS: gdb.python/py-mi.exp: list children after setting update range
+PASS: gdb.python/py-mi.exp: clear visualizer
+PASS: gdb.python/py-mi.exp: varobj update after clearing
+PASS: gdb.python/py-mi.exp: choose default visualizer
+PASS: gdb.python/py-mi.exp: create nstype2 varobj
+PASS: gdb.python/py-mi.exp: list children after setting exception flag
+PASS: gdb.python/py-mi.exp: breakpoint at main
+PASS: gdb.python/py-mi.exp: mi runto main
+PASS: gdb.python/py-mi.exp: run to 304 (set breakpoint)
+PASS: gdb.python/py-mi.exp: create fake varobj
+PASS: gdb.python/py-mi.exp: list children of fake
+PASS: gdb.python/py-mi.exp: list children fake.private
+PASS: gdb.python/py-mi.exp: Install visualizer on a cplus_fake_child
+Running ../../../master/gdb/testsuite/gdb.python/py-objfile-script.exp ...
+PASS: gdb.python/py-objfile-script.exp: info auto-load-scripts
+PASS: gdb.python/py-objfile-script.exp: b 38
+PASS: gdb.python/py-objfile-script.exp: continue
+PASS: gdb.python/py-objfile-script.exp: print ss
+Running ../../../master/gdb/testsuite/gdb.python/py-objfile.exp ...
+PASS: gdb.python/py-objfile.exp: Find a symbol in objfile
+PASS: gdb.python/py-objfile.exp: Get backing object file
+PASS: gdb.python/py-objfile.exp: Get objfile validity
+PASS: gdb.python/py-objfile.exp: Get objfile validity
+PASS: gdb.python/py-objfile.exp: Get objfile validity after unload
+Running ../../../master/gdb/testsuite/gdb.python/py-parameter.exp ...
+PASS: gdb.python/py-parameter.exp: python print gdb.parameter ('directories')
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - python
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - class TestParam (gdb.Parameter):
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - """When enabled, test param does something useful. When disabled, does nothing."""
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - show_doc = "Show the state of the boolean test-param"
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - set_doc = "Set the state of the boolean test-param"
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - def get_show_string (self, pvalue):
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - return "The state of the Test Parameter is " + pvalue
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - def get_set_string (self):
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - val = "on"
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - if (self.value == False):
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - val = "off"
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - return "Test Parameter has been set to " + val
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - def __init__ (self, name):
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - super (TestParam, self).__init__ (name, gdb.COMMAND_DATA, gdb.PARAM_BOOLEAN)
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - self.value = True
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - test_param = TestParam ('print test-param')
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - end
+PASS: gdb.python/py-parameter.exp: Test parameter value
+PASS: gdb.python/py-parameter.exp: Show parameter on
+PASS: gdb.python/py-parameter.exp: Turn off parameter
+PASS: gdb.python/py-parameter.exp: Show parameter off
+PASS: gdb.python/py-parameter.exp: Test parameter value
+PASS: gdb.python/py-parameter.exp: Test show help
+PASS: gdb.python/py-parameter.exp: Test set help
+PASS: gdb.python/py-parameter.exp: Test general help
+PASS: gdb.python/py-parameter.exp: enum gdb parameter - python
+PASS: gdb.python/py-parameter.exp: enum gdb parameter - class TestEnumParam (gdb.Parameter):
+PASS: gdb.python/py-parameter.exp: enum gdb parameter - """When set, test param does something useful. When disabled, does nothing."""
+PASS: gdb.python/py-parameter.exp: enum gdb parameter - show_doc = "Show the state of the enum"
+PASS: gdb.python/py-parameter.exp: enum gdb parameter - set_doc = "Set the state of the enum"
+PASS: gdb.python/py-parameter.exp: enum gdb parameter - def get_show_string (self, pvalue):
+PASS: gdb.python/py-parameter.exp: enum gdb parameter - return "The state of the enum is " + pvalue
+PASS: gdb.python/py-parameter.exp: enum gdb parameter - def get_set_string (self):
+PASS: gdb.python/py-parameter.exp: enum gdb parameter - return "The state of the enum has been set to " + self.value
+PASS: gdb.python/py-parameter.exp: enum gdb parameter - def __init__ (self, name):
+PASS: gdb.python/py-parameter.exp: enum gdb parameter - super (TestEnumParam, self).__init__ (name, gdb.COMMAND_DATA, gdb.PARAM_ENUM, ["one", "two"])
+PASS: gdb.python/py-parameter.exp: enum gdb parameter - self.value = "one"
+PASS: gdb.python/py-parameter.exp: enum gdb parameter - test_enum_param = TestEnumParam ('print test-enum-param')
+PASS: gdb.python/py-parameter.exp: enum gdb parameter - end
+PASS: gdb.python/py-parameter.exp: Test enum parameter value
+PASS: gdb.python/py-parameter.exp: Show parameter is initial value
+PASS: gdb.python/py-parameter.exp: Set enum to two
+PASS: gdb.python/py-parameter.exp: Show parameter is new value
+PASS: gdb.python/py-parameter.exp: Test enum parameter value
+PASS: gdb.python/py-parameter.exp: Set invalid enum parameter
+PASS: gdb.python/py-parameter.exp: file gdb parameter - python
+PASS: gdb.python/py-parameter.exp: file gdb parameter - class TestFileParam (gdb.Parameter):
+PASS: gdb.python/py-parameter.exp: file gdb parameter - """When set, test param does something useful. When disabled, does nothing."""
+PASS: gdb.python/py-parameter.exp: file gdb parameter - show_doc = "Show the name of the file"
+PASS: gdb.python/py-parameter.exp: file gdb parameter - set_doc = "Set the name of the file"
+PASS: gdb.python/py-parameter.exp: file gdb parameter - def get_show_string (self, pvalue):
+PASS: gdb.python/py-parameter.exp: file gdb parameter - return "The name of the file is " + pvalue
+PASS: gdb.python/py-parameter.exp: file gdb parameter - def get_set_string (self):
+PASS: gdb.python/py-parameter.exp: file gdb parameter - return "The name of the file has been changed to " + self.value
+PASS: gdb.python/py-parameter.exp: file gdb parameter - def __init__ (self, name):
+PASS: gdb.python/py-parameter.exp: file gdb parameter - super (TestFileParam, self).__init__ (name, gdb.COMMAND_FILES, gdb.PARAM_FILENAME)
+PASS: gdb.python/py-parameter.exp: file gdb parameter - self.value = "foo.txt"
+PASS: gdb.python/py-parameter.exp: file gdb parameter - test_file_param = TestFileParam ('test-file-param')
+PASS: gdb.python/py-parameter.exp: file gdb parameter - end
+PASS: gdb.python/py-parameter.exp: Test file parameter value
+PASS: gdb.python/py-parameter.exp: Show initial file value
+PASS: gdb.python/py-parameter.exp: Set new file parameter
+PASS: gdb.python/py-parameter.exp: Show new file value
+PASS: gdb.python/py-parameter.exp: Test new file parameter value
+PASS: gdb.python/py-parameter.exp: set test-file-param
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - python
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - class TestUndocParam (gdb.Parameter):
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - def get_show_string (self, pvalue):
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - return "The state of the Test Parameter is " + pvalue
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - def get_set_string (self):
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - val = "on"
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - if (self.value == False):
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - val = "off"
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - return "Test Parameter has been set to " + val
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - def __init__ (self, name):
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - super (TestUndocParam, self).__init__ (name, gdb.COMMAND_DATA, gdb.PARAM_BOOLEAN)
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - self.value = True
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - test_undoc_param = TestUndocParam ('print test-undoc-param')
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - end
+PASS: gdb.python/py-parameter.exp: Show parameter on
+PASS: gdb.python/py-parameter.exp: Turn off parameter
+PASS: gdb.python/py-parameter.exp: Show parameter off
+PASS: gdb.python/py-parameter.exp: Test parameter value
+PASS: gdb.python/py-parameter.exp: Test show help
+PASS: gdb.python/py-parameter.exp: Test set help
+PASS: gdb.python/py-parameter.exp: Test general help
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - python
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - class TestNodocParam (gdb.Parameter):
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - def __init__ (self, name):
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - super (TestNodocParam, self).__init__ (name, gdb.COMMAND_DATA, gdb.PARAM_BOOLEAN)
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - self.value = True
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - test_nodoc_param = TestNodocParam ('print test-nodoc-param')
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - end
+PASS: gdb.python/py-parameter.exp: Show parameter on
+PASS: gdb.python/py-parameter.exp: Turn off parameter
+PASS: gdb.python/py-parameter.exp: Show parameter off
+PASS: gdb.python/py-parameter.exp: Test parameter value
+PASS: gdb.python/py-parameter.exp: Test show help
+PASS: gdb.python/py-parameter.exp: Test set help
+PASS: gdb.python/py-parameter.exp: Test general help
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - python
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - class TestParam (gdb.Parameter):
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - """When enabled, test param does something useful. When disabled, does nothing."""
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - show_doc = "State of the Test Parameter"
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - set_doc = "Set the state of the Test Parameter"
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - def __init__ (self, name):
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - super (TestParam, self).__init__ (name, gdb.COMMAND_DATA, gdb.PARAM_BOOLEAN)
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - self.value = True
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - test_param = TestParam ('print test-param')
+PASS: gdb.python/py-parameter.exp: Simple gdb booleanparameter - end
+PASS: gdb.python/py-parameter.exp: Test parameter value
+PASS: gdb.python/py-parameter.exp: Show parameter on
+PASS: gdb.python/py-parameter.exp: Turn off parameter
+PASS: gdb.python/py-parameter.exp: Show parameter off
+PASS: gdb.python/py-parameter.exp: Test parameter value
+PASS: gdb.python/py-parameter.exp: Test show help
+PASS: gdb.python/py-parameter.exp: Test set help
+PASS: gdb.python/py-parameter.exp: Test general help
+Running ../../../master/gdb/testsuite/gdb.python/py-pp-maint.exp ...
+PASS: gdb.python/py-pp-maint.exp: b 67
+PASS: gdb.python/py-pp-maint.exp: continue
+PASS: gdb.python/py-pp-maint.exp: info pretty-printer
+PASS: gdb.python/py-pp-maint.exp: info pretty-printer global .*function
+PASS: gdb.python/py-pp-maint.exp: info pretty-printer .* pp-test
+PASS: gdb.python/py-pp-maint.exp: print flt enabled #1
+PASS: gdb.python/py-pp-maint.exp: print ss enabled #1
+PASS: gdb.python/py-pp-maint.exp: disable pretty-printer
+PASS: gdb.python/py-pp-maint.exp: enable pretty-printer
+PASS: gdb.python/py-pp-maint.exp: disable pretty-printer global
+PASS: gdb.python/py-pp-maint.exp: enable pretty-printer
+PASS: gdb.python/py-pp-maint.exp: disable pretty-printer global lookup_function_lookup_test
+PASS: gdb.python/py-pp-maint.exp: disable pretty-printer global pp-test;.*
+PASS: gdb.python/py-pp-maint.exp: info pretty-printer global .*function
+PASS: gdb.python/py-pp-maint.exp: info pretty-printer .* pp-test
+PASS: gdb.python/py-pp-maint.exp: print flt disabled
+PASS: gdb.python/py-pp-maint.exp: print ss disabled
+PASS: gdb.python/py-pp-maint.exp: enable pretty-printer global lookup_function_lookup_test
+PASS: gdb.python/py-pp-maint.exp: enable pretty-printer global pp-test
+PASS: gdb.python/py-pp-maint.exp: enable pretty-printer global pp-test;.*ss.*
+PASS: gdb.python/py-pp-maint.exp: enable pretty-printer global pp-test;.*s.*
+PASS: gdb.python/py-pp-maint.exp: info pretty-printer
+PASS: gdb.python/py-pp-maint.exp: print flt re-enabled
+PASS: gdb.python/py-pp-maint.exp: print ss re-enabled
+Running ../../../master/gdb/testsuite/gdb.python/py-prettyprint.exp ...
+PASS: gdb.python/py-prettyprint.exp: set print pretty on
+PASS: gdb.python/py-prettyprint.exp: b 304
+PASS: gdb.python/py-prettyprint.exp: continue
+PASS: gdb.python/py-prettyprint.exp: python execfile ('py-prettyprint.py')
+PASS: gdb.python/py-prettyprint.exp: print ss
+PASS: gdb.python/py-prettyprint.exp: print ssa[1]
+PASS: gdb.python/py-prettyprint.exp: print ssa
+PASS: gdb.python/py-prettyprint.exp: print arraystruct
+PASS: gdb.python/py-prettyprint.exp: print ns2
+PASS: gdb.python/py-prettyprint.exp: print x
+PASS: gdb.python/py-prettyprint.exp: print cstring
+PASS: gdb.python/py-prettyprint.exp: print estring
+PASS: gdb.python/py-prettyprint.exp: python pp_ls_encoding = 'UTF-8'
+PASS: gdb.python/py-prettyprint.exp: print estring2
+PASS: gdb.python/py-prettyprint.exp: print hint_error
+PASS: gdb.python/py-prettyprint.exp: print c
+PASS: gdb.python/py-prettyprint.exp: print nstype
+PASS: gdb.python/py-prettyprint.exp: set print pretty off
+PASS: gdb.python/py-prettyprint.exp: print nstype on one line
+PASS: gdb.python/py-prettyprint.exp: continue until exit
+PASS: gdb.python/py-prettyprint.exp: set print pretty on
+PASS: gdb.python/py-prettyprint.exp: b 304
+PASS: gdb.python/py-prettyprint.exp: continue
+PASS: gdb.python/py-prettyprint.exp: python execfile ('py-prettyprint.py')
+PASS: gdb.python/py-prettyprint.exp: print ss
+PASS: gdb.python/py-prettyprint.exp: print ssa[1]
+PASS: gdb.python/py-prettyprint.exp: print ssa
+PASS: gdb.python/py-prettyprint.exp: print arraystruct
+PASS: gdb.python/py-prettyprint.exp: print cps
+PASS: gdb.python/py-prettyprint.exp: print cpss
+PASS: gdb.python/py-prettyprint.exp: print cpssa[0]
+PASS: gdb.python/py-prettyprint.exp: print cpssa[1]
+PASS: gdb.python/py-prettyprint.exp: print cpssa
+PASS: gdb.python/py-prettyprint.exp: print sss
+PASS: gdb.python/py-prettyprint.exp: print ref
+PASS: gdb.python/py-prettyprint.exp: print derived
+PASS: gdb.python/py-prettyprint.exp: print ns
+PASS: gdb.python/py-prettyprint.exp:
+PASS: gdb.python/py-prettyprint.exp: print ns
+PASS: gdb.python/py-prettyprint.exp:
+PASS: gdb.python/py-prettyprint.exp: print ns
+PASS: gdb.python/py-prettyprint.exp:
+PASS: gdb.python/py-prettyprint.exp: print ns2
+PASS: gdb.python/py-prettyprint.exp: print x
+PASS: gdb.python/py-prettyprint.exp: print cstring
+PASS: gdb.python/py-prettyprint.exp: print estring
+PASS: gdb.python/py-prettyprint.exp: python pp_ls_encoding = 'UTF-8'
+PASS: gdb.python/py-prettyprint.exp: print estring2
+PASS: gdb.python/py-prettyprint.exp: print hint_error
+PASS: gdb.python/py-prettyprint.exp: print c
+PASS: gdb.python/py-prettyprint.exp: print nstype
+PASS: gdb.python/py-prettyprint.exp: set print pretty off
+PASS: gdb.python/py-prettyprint.exp: print nstype on one line
+PASS: gdb.python/py-prettyprint.exp: continue until exit
+PASS: gdb.python/py-prettyprint.exp: b 304
+PASS: gdb.python/py-prettyprint.exp: continue
+PASS: gdb.python/py-prettyprint.exp: python execfile ('py-prettyprint.py')
+PASS: gdb.python/py-prettyprint.exp: print ss enabled #1
+PASS: gdb.python/py-prettyprint.exp: python disable_lookup_function ()
+PASS: gdb.python/py-prettyprint.exp: print ss disabled
+PASS: gdb.python/py-prettyprint.exp: python enable_lookup_function ()
+PASS: gdb.python/py-prettyprint.exp: print ss enabled #2
+Running ../../../master/gdb/testsuite/gdb.python/py-progspace.exp ...
+PASS: gdb.python/py-progspace.exp: current progspace filename (None)
+PASS: gdb.python/py-progspace.exp: python print gdb.progspaces()
+PASS: gdb.python/py-progspace.exp: current progspace filename (py-progspace)
+Running ../../../master/gdb/testsuite/gdb.python/py-section-script.exp ...
+PASS: gdb.python/py-section-script.exp: info auto-load-scripts
+PASS: gdb.python/py-section-script.exp: info auto-load-scripts py-section-script
+PASS: gdb.python/py-section-script.exp: info auto-load-scripts no-script-matches-this
+PASS: gdb.python/py-section-script.exp: b 51
+PASS: gdb.python/py-section-script.exp: continue
+PASS: gdb.python/py-section-script.exp: print ss
+Running ../../../master/gdb/testsuite/gdb.python/py-shared.exp ...
+PASS: gdb.python/py-shared.exp: func1 address
+PASS: gdb.python/py-shared.exp: Aquire func1 address
+PASS: gdb.python/py-shared.exp: test func1 solib location
+PASS: gdb.python/py-shared.exp: main address
+PASS: gdb.python/py-shared.exp: Aquire main address
+PASS: gdb.python/py-shared.exp: test main solib location
+Running ../../../master/gdb/testsuite/gdb.python/py-symbol.exp ...
+PASS: gdb.python/py-symbol.exp: Lookup main
+PASS: gdb.python/py-symbol.exp: Test main_func.is_function
+PASS: gdb.python/py-symbol.exp: Test lookup_global_symbol("junk")
+PASS: gdb.python/py-symbol.exp: continue to breakpoint: Block break here.
+PASS: gdb.python/py-symbol.exp: Test arg.is_variable
+PASS: gdb.python/py-symbol.exp: Test arg.is_constant
+PASS: gdb.python/py-symbol.exp: Test arg.is_argument
+PASS: gdb.python/py-symbol.exp: Test arg.is_function
+PASS: gdb.python/py-symbol.exp: Test func.is_variable
+PASS: gdb.python/py-symbol.exp: Test func.is_constant
+PASS: gdb.python/py-symbol.exp: Test func.is_argument
+PASS: gdb.python/py-symbol.exp: Test func.is_function
+PASS: gdb.python/py-symbol.exp: Test func.name
+PASS: gdb.python/py-symbol.exp: Test func.print_name
+PASS: gdb.python/py-symbol.exp: Test func.linkage_name
+PASS: gdb.python/py-symbol.exp: Test func.addr_class
+PASS: gdb.python/py-symbol.exp: continue to breakpoint: Break at end.
+PASS: gdb.python/py-symbol.exp: Test a.is_variable
+PASS: gdb.python/py-symbol.exp: Test a.is_constant
+PASS: gdb.python/py-symbol.exp: Test a.is_argument
+PASS: gdb.python/py-symbol.exp: Test a.is_function
+PASS: gdb.python/py-symbol.exp: Test a.addr_class
+PASS: gdb.python/py-symbol.exp: Test t.is_variable
+PASS: gdb.python/py-symbol.exp: Test t.is_constant
+PASS: gdb.python/py-symbol.exp: Test t.is_argument
+PASS: gdb.python/py-symbol.exp: Test t.is_function
+PASS: gdb.python/py-symbol.exp: Test t.addr_class
+PASS: gdb.python/py-symbol.exp: Get symtab
+PASS: gdb.python/py-symbol.exp: continue to breakpoint: Break in class.
+PASS: gdb.python/py-symbol.exp: Test func.is_variable
+PASS: gdb.python/py-symbol.exp: Test func.is_constant
+PASS: gdb.python/py-symbol.exp: Test func.is_argument
+PASS: gdb.python/py-symbol.exp: Test func.is_function
+PASS: gdb.python/py-symbol.exp: Test func.name
+PASS: gdb.python/py-symbol.exp: Test func.print_name
+PASS: gdb.python/py-symbol.exp: Test func.linkage_name
+PASS: gdb.python/py-symbol.exp: Test func.addr_class
+PASS: gdb.python/py-symbol.exp: continue to breakpoint: Break at end.
+PASS: gdb.python/py-symbol.exp: Test symbol validity
+PASS: gdb.python/py-symbol.exp: Test symbol validity
+Running ../../../master/gdb/testsuite/gdb.python/py-symtab.exp ...
+PASS: gdb.python/py-symtab.exp: continue to breakpoint: Block break here.
+PASS: gdb.python/py-symtab.exp: Test symtab
+PASS: gdb.python/py-symtab.exp: Test sal.pc
+PASS: gdb.python/py-symtab.exp: Test sal.line
+PASS: gdb.python/py-symtab.exp: Test sal.is_valid
+PASS: gdb.python/py-symtab.exp: Test symtab.filename
+PASS: gdb.python/py-symtab.exp: Test symtab.objfile
+PASS: gdb.python/py-symtab.exp: Test symtab.fullname
+PASS: gdb.python/py-symtab.exp: Test symtab.is_valid()
+PASS: gdb.python/py-symtab.exp: Test sal.is_valid
+PASS: gdb.python/py-symtab.exp: Test symtab.is_valid()
+Running ../../../master/gdb/testsuite/gdb.python/py-template.exp ...
+PASS: gdb.python/py-template.exp: print foo
+PASS: gdb.python/py-template.exp: python foo = gdb.history(0)
+PASS: gdb.python/py-template.exp: const int
+PASS: gdb.python/py-template.exp: print foo
+PASS: gdb.python/py-template.exp: python foo = gdb.history(0)
+PASS: gdb.python/py-template.exp: volatile int
+PASS: gdb.python/py-template.exp: print foo
+PASS: gdb.python/py-template.exp: python foo = gdb.history(0)
+PASS: gdb.python/py-template.exp: const int &
+PASS: gdb.python/py-template.exp: print foo
+PASS: gdb.python/py-template.exp: python foo = gdb.history(0)
+PASS: gdb.python/py-template.exp: volatile int &
+PASS: gdb.python/py-template.exp: print foo
+PASS: gdb.python/py-template.exp: python foo = gdb.history(0)
+PASS: gdb.python/py-template.exp: volatile int * const
+PASS: gdb.python/py-template.exp: print foo
+PASS: gdb.python/py-template.exp: python foo = gdb.history(0)
+PASS: gdb.python/py-template.exp: volatile int * const *
+PASS: gdb.python/py-template.exp: print foo
+PASS: gdb.python/py-template.exp: python foo = gdb.history(0)
+PASS: gdb.python/py-template.exp: const int * volatile
+PASS: gdb.python/py-template.exp: print foo
+PASS: gdb.python/py-template.exp: python foo = gdb.history(0)
+PASS: gdb.python/py-template.exp: const int * volatile * const * volatile *
+Running ../../../master/gdb/testsuite/gdb.python/py-type.exp ...
+PASS: gdb.python/py-type.exp: continue to breakpoint: break to inspect struct and array.
+PASS: gdb.python/py-type.exp: print value
+PASS: gdb.python/py-type.exp: get value from history
+PASS: gdb.python/py-type.exp: get fields
+PASS: gdb.python/py-type.exp: Check number of fields
+PASS: gdb.python/py-type.exp: Check structure field a name
+PASS: gdb.python/py-type.exp: Check structure field b name
+PASS: gdb.python/py-type.exp: print value
+PASS: gdb.python/py-type.exp: get value from history
+PASS: gdb.python/py-type.exp: python fields = ar.type.fields()
+PASS: gdb.python/py-type.exp: Check the number of fields
+PASS: gdb.python/py-type.exp: Check array field type
+PASS: gdb.python/py-type.exp: cast to array with one argument
+PASS: gdb.python/py-type.exp: cast to array with two arguments
+PASS: gdb.python/py-type.exp: python print ar[0].type == ar[0].type
+PASS: gdb.python/py-type.exp: continue to breakpoint: break to inspect struct and array.
+PASS: gdb.python/py-type.exp: print value
+PASS: gdb.python/py-type.exp: get value from history
+PASS: gdb.python/py-type.exp: get fields
+PASS: gdb.python/py-type.exp: Check number of fields
+PASS: gdb.python/py-type.exp: Check class field c name
+PASS: gdb.python/py-type.exp: Check class field d name
+PASS: gdb.python/py-type.exp: python print c.type == gdb.parse_and_eval('d').type
+PASS: gdb.python/py-type.exp: python print c.type == gdb.parse_and_eval('d').type.fields()[0].type
+PASS: gdb.python/py-type.exp: print value
+PASS: gdb.python/py-type.exp: get value from history
+PASS: gdb.python/py-type.exp: get fields
+PASS: gdb.python/py-type.exp: Check number of fields
+PASS: gdb.python/py-type.exp: Check structure field a name
+PASS: gdb.python/py-type.exp: Check structure field b name
+PASS: gdb.python/py-type.exp: print value
+PASS: gdb.python/py-type.exp: get value from history
+PASS: gdb.python/py-type.exp: python fields = ar.type.fields()
+PASS: gdb.python/py-type.exp: Check the number of fields
+PASS: gdb.python/py-type.exp: Check array field type
+PASS: gdb.python/py-type.exp: cast to array with one argument
+PASS: gdb.python/py-type.exp: cast to array with two arguments
+PASS: gdb.python/py-type.exp: python print ar[0].type == ar[0].type
+PASS: gdb.python/py-type.exp: print value
+PASS: gdb.python/py-type.exp: get value from history
+PASS: gdb.python/py-type.exp: get value from history
+PASS: gdb.python/py-type.exp: Check the number of fields
+PASS: gdb.python/py-type.exp: Check base class
+PASS: gdb.python/py-type.exp: Check base class
+PASS: gdb.python/py-type.exp: print value
+PASS: gdb.python/py-type.exp: get value from history
+PASS: gdb.python/py-type.exp: Check correct tuple length
+PASS: gdb.python/py-type.exp: Check low range
+PASS: gdb.python/py-type.exp: Check high range
+PASS: gdb.python/py-type.exp: print value
+PASS: gdb.python/py-type.exp: get value from history
+PASS: gdb.python/py-type.exp: get fields
+PASS: gdb.python/py-type.exp: Check range type low bound
+PASS: gdb.python/py-type.exp: Check range type high bound
+PASS: gdb.python/py-type.exp: print value
+PASS: gdb.python/py-type.exp: get value from history
+PASS: gdb.python/py-type.exp: Check range for non ranged type.
+PASS: gdb.python/py-type.exp: get type of temvar
+PASS: gdb.python/py-type.exp: python print ttype.template_argument(0)
+PASS: gdb.python/py-type.exp: python print isinstance(ttype.template_argument(0), gdb.Type)
+PASS: gdb.python/py-type.exp: python print ttype.template_argument(1)
+PASS: gdb.python/py-type.exp: python print isinstance(ttype.template_argument(1), gdb.Value)
+KFAIL: gdb.python/py-type.exp: python print ttype.template_argument(2) (PRMS: gcc/41736)
+Running ../../../master/gdb/testsuite/gdb.python/py-value.exp ...
+PASS: gdb.python/py-value.exp: create boolean value
+PASS: gdb.python/py-value.exp: create integer value
+PASS: gdb.python/py-value.exp: create long value
+PASS: gdb.python/py-value.exp: create double value
+PASS: gdb.python/py-value.exp: create 8-bit string value
+PASS: gdb.python/py-value.exp: print 8-bit string
+PASS: gdb.python/py-value.exp: verify type of 8-bit string
+PASS: gdb.python/py-value.exp: create unicode value
+PASS: gdb.python/py-value.exp: print Unicode string
+PASS: gdb.python/py-value.exp: verify type of unicode string
+PASS: gdb.python/py-value.exp: Test address attribute in non-addressable value
+PASS: gdb.python/py-value.exp: add two integer values
+PASS: gdb.python/py-value.exp: verify type of integer add result
+PASS: gdb.python/py-value.exp: add two double values
+PASS: gdb.python/py-value.exp: subtract two integer values
+PASS: gdb.python/py-value.exp: subtract two double values
+PASS: gdb.python/py-value.exp: multiply two integer values
+PASS: gdb.python/py-value.exp: multiply two double values
+PASS: gdb.python/py-value.exp: divide two integer values
+PASS: gdb.python/py-value.exp: divide two double values
+PASS: gdb.python/py-value.exp: take remainder of two integer values
+PASS: gdb.python/py-value.exp: integer value raised to the power of another integer value
+PASS: gdb.python/py-value.exp: double value raised to the power of integer value
+PASS: gdb.python/py-value.exp: negated integer value
+PASS: gdb.python/py-value.exp: positive integer value
+PASS: gdb.python/py-value.exp: negated double value
+PASS: gdb.python/py-value.exp: positive double value
+PASS: gdb.python/py-value.exp: absolute of integer value
+PASS: gdb.python/py-value.exp: absolute of double value
+PASS: gdb.python/py-value.exp: subtract integer value from python integer
+PASS: gdb.python/py-value.exp: verify type of mixed integer subtraction result
+PASS: gdb.python/py-value.exp: add double value with python float
+PASS: gdb.python/py-value.exp: subtract python integer from integer value
+PASS: gdb.python/py-value.exp: add python float with double value
+PASS: gdb.python/py-value.exp: print evalue
+PASS: gdb.python/py-value.exp: python evalue = gdb.history (0)
+PASS: gdb.python/py-value.exp: python print int (evalue)
+PASS: gdb.python/py-value.exp: add pointer value with python integer
+PASS: gdb.python/py-value.exp: subtract python integer from pointer value
+PASS: gdb.python/py-value.exp: subtract two pointer values
+PASS: gdb.python/py-value.exp: catch error in python type conversion
+PASS: gdb.python/py-value.exp: catch throw of GDB error
+PASS: gdb.python/py-value.exp: define function to test booleans - python
+PASS: gdb.python/py-value.exp: define function to test booleans - def test_bool (val):
+PASS: gdb.python/py-value.exp: define function to test booleans - if val:
+PASS: gdb.python/py-value.exp: define function to test booleans - print 'yay'
+PASS: gdb.python/py-value.exp: define function to test booleans - else:
+PASS: gdb.python/py-value.exp: define function to test booleans - print 'nay'
+PASS: gdb.python/py-value.exp: define function to test booleans - end
+PASS: gdb.python/py-value.exp: check evaluation of true boolean value in expression
+PASS: gdb.python/py-value.exp: check evaluation of false boolean value in expression
+PASS: gdb.python/py-value.exp: check evaluation of true integer value in expression
+PASS: gdb.python/py-value.exp: check evaluation of false integer value in expression
+PASS: gdb.python/py-value.exp: check evaluation of true integer value in expression
+PASS: gdb.python/py-value.exp: check evaluation of false integer value in expression
+PASS: gdb.python/py-value.exp: less than, equal
+PASS: gdb.python/py-value.exp: less than, less
+PASS: gdb.python/py-value.exp: less than, greater
+PASS: gdb.python/py-value.exp: less than, None
+PASS: gdb.python/py-value.exp: less or equal, equal
+PASS: gdb.python/py-value.exp: less or equal, less
+PASS: gdb.python/py-value.exp: less or equal, greater
+PASS: gdb.python/py-value.exp: less or equal, None
+PASS: gdb.python/py-value.exp: equality of gdb.Values
+PASS: gdb.python/py-value.exp: inequality of gdb.Values
+PASS: gdb.python/py-value.exp: equality of gdb.Value with Python value
+PASS: gdb.python/py-value.exp: inequality of gdb.Value with Python value
+PASS: gdb.python/py-value.exp: inequality of gdb.Value with None
+PASS: gdb.python/py-value.exp: inequality, false
+PASS: gdb.python/py-value.exp: inequality, true
+PASS: gdb.python/py-value.exp: inequality, None
+PASS: gdb.python/py-value.exp: greater than, equal
+PASS: gdb.python/py-value.exp: greater than, less
+PASS: gdb.python/py-value.exp: greater than, greater
+PASS: gdb.python/py-value.exp: greater than, None
+PASS: gdb.python/py-value.exp: greater or equal, equal
+PASS: gdb.python/py-value.exp: greater or equal, less
+PASS: gdb.python/py-value.exp: greater or equal, greater
+PASS: gdb.python/py-value.exp: greater or equal, None
+PASS: gdb.python/py-value.exp: py-value in file.filename
+PASS: gdb.python/py-value.exp: python print gdb.objfiles()[0].pretty_printers
+PASS: gdb.python/py-value.exp: python gdb.objfiles()[0].pretty_printers = 0
+PASS: gdb.python/py-value.exp: parse_and_eval constant test
+PASS: gdb.python/py-value.exp: parse_and_eval simple expression test
+PASS: gdb.python/py-value.exp: parse_and_eval type test
+PASS: gdb.python/py-value.exp: Simple Python value dictionary - python
+PASS: gdb.python/py-value.exp: Simple Python value dictionary - one = gdb.Value(1)
+PASS: gdb.python/py-value.exp: Simple Python value dictionary - two = gdb.Value(2)
+PASS: gdb.python/py-value.exp: Simple Python value dictionary - three = gdb.Value(3)
+PASS: gdb.python/py-value.exp: Simple Python value dictionary - vdict = {one:"one str",two:"two str",three:"three str"}
+PASS: gdb.python/py-value.exp: Simple Python value dictionary - end
+PASS: gdb.python/py-value.exp: Test dictionary hash
+PASS: gdb.python/py-value.exp: Test dictionary hash
+PASS: gdb.python/py-value.exp: Test dictionary hash
+PASS: gdb.python/py-value.exp: Test inbuilt hash
+PASS: gdb.python/py-value.exp: continue to breakpoint: break to inspect struct and union
+PASS: gdb.python/py-value.exp: get value from history
+PASS: gdb.python/py-value.exp: access element inside struct using 8-bit string name
+PASS: gdb.python/py-value.exp: access element inside struct using unicode name
+PASS: gdb.python/py-value.exp: dereference value
+PASS: gdb.python/py-value.exp: verify dereferenced value
+PASS: gdb.python/py-value.exp: Test is_optimized_out attribute
+PASS: gdb.python/py-value.exp: Test address attribute
+PASS: gdb.python/py-value.exp: python print gdb.parse_and_eval('*(int*)0')
+PASS: gdb.python/py-value.exp: print st
+PASS: gdb.python/py-value.exp: get value from history
+PASS: gdb.python/py-value.exp: Test string with no length
+PASS: gdb.python/py-value.exp: Test string (length = -1) is all of the string
+PASS: gdb.python/py-value.exp: python print st.string (length = 6)
+PASS: gdb.python/py-value.exp: Test string (length = 0) is empty
+PASS: gdb.python/py-value.exp: Test length is 0
+PASS: gdb.python/py-value.exp: print nullst
+PASS: gdb.python/py-value.exp: get value from history
+PASS: gdb.python/py-value.exp: Test string to first null
+PASS: gdb.python/py-value.exp: get string beyond null
+PASS: gdb.python/py-value.exp: python print repr(nullst)
+PASS: gdb.python/py-value.exp: p/x fp1
+PASS: gdb.python/py-value.exp: get value from history
+PASS: gdb.python/py-value.exp: python fp1 = fp1.dereference()
+PASS: gdb.python/py-value.exp: python result = fp1()
+PASS: gdb.python/py-value.exp: python print result
+PASS: gdb.python/py-value.exp: p/x fp2
+PASS: gdb.python/py-value.exp: get value from history
+PASS: gdb.python/py-value.exp: python fp2 = fp2.dereference()
+PASS: gdb.python/py-value.exp: python result2 = fp2(10,20)
+PASS: gdb.python/py-value.exp: python print result2
+PASS: gdb.python/py-value.exp: p i
+PASS: gdb.python/py-value.exp: get value from history
+PASS: gdb.python/py-value.exp: python result3 = i()
+PASS: gdb.python/py-value.exp: p/x fp2
+PASS: gdb.python/py-value.exp: get value from history
+PASS: gdb.python/py-value.exp: python fp3 = fp3.dereference()
+PASS: gdb.python/py-value.exp: python result2 = fp3(10)
+PASS: gdb.python/py-value.exp: print sptr
+PASS: gdb.python/py-value.exp: Get value from history
+PASS: gdb.python/py-value.exp: Aquire lazy string
+PASS: gdb.python/py-value.exp: Test type name equality
+PASS: gdb.python/py-value.exp: Test type name equality
+PASS: gdb.python/py-value.exp: print sn
+PASS: gdb.python/py-value.exp: Get value from history
+PASS: gdb.python/py-value.exp: Test lazy string
+PASS: gdb.python/py-value.exp: Succesfully create a lazy string
+PASS: gdb.python/py-value.exp: Test lazy string length
+PASS: gdb.python/py-value.exp: Test lazy string address
+PASS: gdb.python/py-value.exp: create PTR type
+PASS: gdb.python/py-value.exp: kill the inferior
+PASS: gdb.python/py-value.exp: Discard the symbols
+PASS: gdb.python/py-value.exp: cast arg0 to PTR
+PASS: gdb.python/py-value.exp: delete PTR type
+PASS: gdb.python/py-value.exp: print value's type
+PASS: gdb.python/py-value.exp: continue to breakpoint: break to inspect pointer by reference
+PASS: gdb.python/py-value.exp: Obtain address
+PASS: gdb.python/py-value.exp: Obtains value from GDB
+PASS: gdb.python/py-value.exp: Check pointer passed as reference
+PASS: gdb.python/py-value.exp: python print bool(gdb.parse_and_eval('base').dynamic_cast(gdb.lookup_type('Derived').pointer()))
+PASS: gdb.python/py-value.exp: python print gdb.parse_and_eval('base').dynamic_type
+PASS: gdb.python/py-value.exp: python print gdb.parse_and_eval('5').dynamic_type
+PASS: gdb.python/py-value.exp: continue to breakpoint: break to inspect struct and union
+PASS: gdb.python/py-value.exp: Create a value for subscript test
+PASS: gdb.python/py-value.exp: Create a value for subscript test
+PASS: gdb.python/py-value.exp: Baseline print of a Python value
+PASS: gdb.python/py-value.exp: Attempt to access an integer with a subscript
+PASS: gdb.python/py-value.exp: Baseline print of a Python value
+PASS: gdb.python/py-value.exp: Attempt to access a string with a subscript
+PASS: gdb.python/py-value.exp: Build pointer to array
+PASS: gdb.python/py-value.exp:
+PASS: gdb.python/py-value.exp: Access array via pointer with int subscript
+PASS: gdb.python/py-value.exp: Access array via pointer with value subscript
+PASS: gdb.python/py-value.exp: Attempt to access an integer with a subscript
+PASS: gdb.python/py-value.exp: Build array
+PASS: gdb.python/py-value.exp:
+PASS: gdb.python/py-value.exp: Test multiple subscript
+PASS: gdb.python/py-value.exp: continue to breakpoint: break to inspect struct and union
+PASS: gdb.python/py-value.exp: Create a value for subscript test
+PASS: gdb.python/py-value.exp: Create a value for subscript test
+PASS: gdb.python/py-value.exp: Baseline print of a Python value
+PASS: gdb.python/py-value.exp: Attempt to access an integer with a subscript
+PASS: gdb.python/py-value.exp: Baseline print of a Python value
+PASS: gdb.python/py-value.exp: Attempt to access a string with a subscript
+PASS: gdb.python/py-value.exp: Build pointer to array
+PASS: gdb.python/py-value.exp:
+PASS: gdb.python/py-value.exp: Access array via pointer with int subscript
+PASS: gdb.python/py-value.exp: Access array via pointer with value subscript
+PASS: gdb.python/py-value.exp: Attempt to access an integer with a subscript
+PASS: gdb.python/py-value.exp: Build array
+PASS: gdb.python/py-value.exp:
+PASS: gdb.python/py-value.exp: Test multiple subscript
+Running ../../../master/gdb/testsuite/gdb.python/python.exp ...
+PASS: gdb.python/python.exp: multi-line python command - python
+PASS: gdb.python/python.exp: multi-line python command - print 23
+PASS: gdb.python/python.exp: multi-line python command - end
+PASS: gdb.python/python.exp: show python command - define zzq
+PASS: gdb.python/python.exp: show python command - python
+PASS: gdb.python/python.exp: show python command - print 23
+PASS: gdb.python/python.exp: show python command - end
+PASS: gdb.python/python.exp: show python command - end
+PASS: gdb.python/python.exp: show python command - show user zzq
+PASS: gdb.python/python.exp: indented multi-line python command - python
+PASS: gdb.python/python.exp: indented multi-line python command - def foo ():
+PASS: gdb.python/python.exp: indented multi-line python command - print 'hello, world!'
+PASS: gdb.python/python.exp: indented multi-line python command - foo ()
+PASS: gdb.python/python.exp: indented multi-line python command - end
+PASS: gdb.python/python.exp: source ../../../master/gdb/testsuite/gdb.python/source2.py
+PASS: gdb.python/python.exp: python print gdb.current_objfile()
+PASS: gdb.python/python.exp: python print gdb.objfiles()
+PASS: gdb.python/python.exp: pythonX.Y/lib-dynload/*.so
+PASS: gdb.python/python.exp: python x = gdb.execute('printf "%d", 23', to_string = True)
+PASS: gdb.python/python.exp: python print x
+PASS: gdb.python/python.exp: post event insertion - python
+PASS: gdb.python/python.exp: post event insertion - someVal = 0
+PASS: gdb.python/python.exp: post event insertion - class Foo(object):
+PASS: gdb.python/python.exp: post event insertion - def __call__(self):
+PASS: gdb.python/python.exp: post event insertion - global someVal
+PASS: gdb.python/python.exp: post event insertion - someVal += 1
+PASS: gdb.python/python.exp: post event insertion - gdb.post_event(Foo())
+PASS: gdb.python/python.exp: post event insertion - end
+PASS: gdb.python/python.exp: test post event execution
+PASS: gdb.python/python.exp: Test non callable class
+PASS: gdb.python/python.exp: show height
+PASS: gdb.python/python.exp: set height 10
+PASS: gdb.python/python.exp: verify pagination beforehand
+PASS: gdb.python/python.exp: verify pagination beforehand: q
+PASS: gdb.python/python.exp: gdb.execute does not page
+PASS: gdb.python/python.exp: verify pagination afterwards
+PASS: gdb.python/python.exp: verify pagination afterwards: q
+PASS: gdb.python/python.exp: set height 0
+PASS: gdb.python/python.exp: collect help from uiout
+PASS: gdb.python/python.exp: verify help to uiout
+PASS: gdb.python/python.exp: Attempt to aquire thread with no inferior
+PASS: gdb.python/python.exp: Ensure that no threads are returned
+PASS: gdb.python/python.exp: test decode_line no source named main
+PASS: gdb.python/python.exp: test decode_line current location
+PASS: gdb.python/python.exp: Test decode_line current location
+PASS: gdb.python/python.exp: Test decode_line expression parse
+PASS: gdb.python/python.exp: Test decode_line current location
+PASS: gdb.python/python.exp: Test decode_line current locationn filename
+PASS: gdb.python/python.exp: Test decode_line current location line number
+PASS: gdb.python/python.exp: test decode_line python.c:26
+PASS: gdb.python/python.exp: Test decode_line python.c:26 length
+PASS: gdb.python/python.exp: Test decode_line expression parse
+PASS: gdb.python/python.exp: Test decode_line python.c:26 length
+PASS: gdb.python/python.exp: Test decode_line python.c:26 filename
+PASS: gdb.python/python.exp: Test decode_line python.c:26 line number
+PASS: gdb.python/python.exp: test decode_line randomfunc
+PASS: gdb.python/python.exp: test decode_line func1()
+PASS: gdb.python/python.exp: Test decode_line func1 length
+PASS: gdb.python/python.exp: Test decode_line func1 length
+PASS: gdb.python/python.exp: Test decode_line func1 filename
+PASS: gdb.python/python.exp: Test decode_line func1 line number
+PASS: gdb.python/python.exp: Test stderr location
+PASS: gdb.python/python.exp: Test stdout location
+PASS: gdb.python/python.exp: Test default write
+PASS: gdb.python/python.exp: Test stderr write
+PASS: gdb.python/python.exp: Test stdout write
+PASS: gdb.python/python.exp: Test stdlog write
+Running ../../../master/gdb/testsuite/gdb.reverse/break-precsave.exp ...
+Running ../../../master/gdb/testsuite/gdb.reverse/break-reverse.exp ...
+Running ../../../master/gdb/testsuite/gdb.reverse/consecutive-precsave.exp ...
+Running ../../../master/gdb/testsuite/gdb.reverse/consecutive-reverse.exp ...
+Running ../../../master/gdb/testsuite/gdb.reverse/finish-precsave.exp ...
+Running ../../../master/gdb/testsuite/gdb.reverse/finish-reverse-bkpt.exp ...
+Running ../../../master/gdb/testsuite/gdb.reverse/finish-reverse.exp ...
+Running ../../../master/gdb/testsuite/gdb.reverse/i386-precsave.exp ...
+Running ../../../master/gdb/testsuite/gdb.reverse/i386-reverse.exp ...
+Running ../../../master/gdb/testsuite/gdb.reverse/i386-sse-reverse.exp ...
+Running ../../../master/gdb/testsuite/gdb.reverse/i387-env-reverse.exp ...
+PASS: gdb.reverse/i387-env-reverse.exp: Turn on process record
+PASS: gdb.reverse/i387-env-reverse.exp: record to end of main
+PASS: gdb.reverse/i387-env-reverse.exp: set reverse direction
+PASS: gdb.reverse/i387-env-reverse.exp: rewind to beginning of main
+PASS: gdb.reverse/i387-env-reverse.exp: set forward direction
+PASS: gdb.reverse/i387-env-reverse.exp: begin testing fpu env
+PASS: gdb.reverse/i387-env-reverse.exp: save FPU env in memory
+PASS: gdb.reverse/i387-env-reverse.exp: restore FPU env
+PASS: gdb.reverse/i387-env-reverse.exp: store status word in EAX
+PASS: gdb.reverse/i387-env-reverse.exp: push st0
+PASS: gdb.reverse/i387-env-reverse.exp: verify eax == 0x8040000
+PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0
+PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0xffff
+PASS: gdb.reverse/i387-env-reverse.exp: push st0
+PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x3800
+PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0x3fff
+PASS: gdb.reverse/i387-env-reverse.exp: push st0
+PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x3000
+PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0xfff
+PASS: gdb.reverse/i387-env-reverse.exp: push st0
+PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x2800
+PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0x3ff
+PASS: gdb.reverse/i387-env-reverse.exp: push st0
+PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x2000
+PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0xff
+PASS: gdb.reverse/i387-env-reverse.exp: push st0
+PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x1800
+PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0x3f
+PASS: gdb.reverse/i387-env-reverse.exp: push st0
+PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x1000
+PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0xf
+PASS: gdb.reverse/i387-env-reverse.exp: push st0
+PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x800
+PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0x7
+PASS: gdb.reverse/i387-env-reverse.exp: push st0
+PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x1000
+PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0xf
+PASS: gdb.reverse/i387-env-reverse.exp: push st0
+PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x1800
+PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0x3f
+PASS: gdb.reverse/i387-env-reverse.exp: push st0
+PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x2000
+PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0xff
+PASS: gdb.reverse/i387-env-reverse.exp: push st0
+PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x2800
+PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0x3ff
+PASS: gdb.reverse/i387-env-reverse.exp: push st0
+PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x3000
+PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0xfff
+PASS: gdb.reverse/i387-env-reverse.exp: push st0
+PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0x3800
+PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0x3fff
+PASS: gdb.reverse/i387-env-reverse.exp: push st0
+PASS: gdb.reverse/i387-env-reverse.exp: verify fstat == 0
+PASS: gdb.reverse/i387-env-reverse.exp: verify ftag == 0xffff
+Running ../../../master/gdb/testsuite/gdb.reverse/i387-stack-reverse.exp ...
+PASS: gdb.reverse/i387-stack-reverse.exp: Turn on process record
+PASS: gdb.reverse/i387-stack-reverse.exp: record to end of main
+PASS: gdb.reverse/i387-stack-reverse.exp: set reverse direction
+PASS: gdb.reverse/i387-stack-reverse.exp: rewind to beginning of main
+PASS: gdb.reverse/i387-stack-reverse.exp: set forward direction
+PASS: gdb.reverse/i387-stack-reverse.exp: begin test st0
+PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 1
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 1
+PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 3.3219280948*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 3.321928094*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 1
+PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 1.4426950406*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 1.442695040*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 3.3219280948*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st2 == 1
+PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 3.14159265*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 3.14159265*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 1.4426950*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st2 == 3.3219280*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st3 == 1
+PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 0.301029*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 0.301029*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 3.14159265*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st2 == 1.44269506*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st3 == 3.3219280948*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st4 == 1
+PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 0.69314*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 0.69314*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 0.301029*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st2 == 3.14159265*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st3 == 1.442695040*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st4 == 3.3219280948*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st5 == 1
+PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 0
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 0
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 0.69314*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st2 == 0.301029*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st3 == 3.14159265*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st4 == 1.442695040*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st5 == 3.32192809*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st6 == 1
+PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 0
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 1
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 0
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st2 == 0.69314*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st3 == 0.301029*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st4 == 3.14159265*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st5 == 1.44269504*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st6 == 3.3219280948*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st7 == 1
+PASS: gdb.reverse/i387-stack-reverse.exp: undo registers, st0-st7
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 0
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 0.69314*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st2 == 0.301029*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st3 == 3.14159265*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st4 == 1.442695040*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st5 == 3.3219280948*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st6 == 1
+PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 0.69314*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 0.69314*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 0.301029*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st2 == 3.14159265*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st3 == 1.442695040*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st4 == 3.3219280948*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st5 == 1
+PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 0.301029*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 0.301029*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 3.14159265*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st2 == 1.442695040*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st3 == 3.3219280948*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st4 == 1
+PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 3.14159265*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 3.14159265*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 1.442695040*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st2 == 3.3219280948*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st3 == 1
+PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 1.44269504088*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 1.442695040*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 3.3219280948*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st2 == 1
+PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 3.3219280948*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 3.3219280948*
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st1 == 1
+PASS: gdb.reverse/i387-stack-reverse.exp: push st0 == 1
+PASS: gdb.reverse/i387-stack-reverse.exp: verify st0 == 1
+Running ../../../master/gdb/testsuite/gdb.reverse/machinestate-precsave.exp ...
+Running ../../../master/gdb/testsuite/gdb.reverse/machinestate.exp ...
+Running ../../../master/gdb/testsuite/gdb.reverse/next-reverse-bkpt-over-sr.exp ...
+Running ../../../master/gdb/testsuite/gdb.reverse/sigall-precsave.exp ...
+Running ../../../master/gdb/testsuite/gdb.reverse/sigall-reverse.exp ...
+Running ../../../master/gdb/testsuite/gdb.reverse/solib-precsave.exp ...
+Running ../../../master/gdb/testsuite/gdb.reverse/solib-reverse.exp ...
+Running ../../../master/gdb/testsuite/gdb.reverse/step-precsave.exp ...
+Running ../../../master/gdb/testsuite/gdb.reverse/step-reverse.exp ...
+Running ../../../master/gdb/testsuite/gdb.reverse/until-precsave.exp ...
+Running ../../../master/gdb/testsuite/gdb.reverse/until-reverse.exp ...
+Running ../../../master/gdb/testsuite/gdb.reverse/watch-precsave.exp ...
+Running ../../../master/gdb/testsuite/gdb.reverse/watch-reverse.exp ...
+Running ../../../master/gdb/testsuite/gdb.server/ext-attach.exp ...
+PASS: gdb.server/ext-attach.exp: set remote exec-file
+PASS: gdb.server/ext-attach.exp: attach to remote program 1
+PASS: gdb.server/ext-attach.exp: backtrace 1
+PASS: gdb.server/ext-attach.exp: detach
+PASS: gdb.server/ext-attach.exp: backtrace with no program
+PASS: gdb.server/ext-attach.exp: attach to remote program 2
+PASS: gdb.server/ext-attach.exp: backtrace 2
+PASS: gdb.server/ext-attach.exp: kill
+PASS: gdb.server/ext-attach.exp: monitor exit
+Running ../../../master/gdb/testsuite/gdb.server/ext-run.exp ...
+PASS: gdb.server/ext-run.exp: set remote exec-file
+PASS: gdb.server/ext-run.exp: continue to main
+PASS: gdb.server/ext-run.exp: get process list
+PASS: gdb.server/ext-run.exp: kill
+PASS: gdb.server/ext-run.exp: load new file without any gdbserver inferior
+PASS: gdb.server/ext-run.exp: monitor exit
+Running ../../../master/gdb/testsuite/gdb.server/file-transfer.exp ...
+PASS: gdb.server/file-transfer.exp: put binary file
+PASS: gdb.server/file-transfer.exp: get binary file
+PASS: gdb.server/file-transfer.exp: compare intermediate binary file
+PASS: gdb.server/file-transfer.exp: compare binary file
+PASS: gdb.server/file-transfer.exp: deleted binary file
+PASS: gdb.server/file-transfer.exp: verified deleted binary file
+PASS: gdb.server/file-transfer.exp: put text file
+PASS: gdb.server/file-transfer.exp: get text file
+PASS: gdb.server/file-transfer.exp: compare intermediate text file
+PASS: gdb.server/file-transfer.exp: compare text file
+PASS: gdb.server/file-transfer.exp: deleted text file
+PASS: gdb.server/file-transfer.exp: verified deleted text file
+Running ../../../master/gdb/testsuite/gdb.server/server-mon.exp ...
+PASS: gdb.server/server-mon.exp: monitor help
+PASS: gdb.server/server-mon.exp: monitor
+PASS: gdb.server/server-mon.exp: monitor set debug 1
+PASS: gdb.server/server-mon.exp: monitor set debug 0
+PASS: gdb.server/server-mon.exp: monitor set remote-debug 1
+PASS: gdb.server/server-mon.exp: monitor set remote-debug 0
+Running ../../../master/gdb/testsuite/gdb.server/server-run.exp ...
+PASS: gdb.server/server-run.exp: loaded dynamic linker
+PASS: gdb.server/server-run.exp: continue to main
+Running ../../../master/gdb/testsuite/gdb.stabs/exclfwd.exp ...
+PASS: gdb.stabs/exclfwd.exp: ptype v1
+PASS: gdb.stabs/exclfwd.exp: ptype v2
+PASS: gdb.stabs/exclfwd.exp: ptype v3
+Running ../../../master/gdb/testsuite/gdb.stabs/gdb11479.exp ...
+PASS: gdb.stabs/gdb11479.exp: Set breakpoints forced_stabs
+PASS: gdb.stabs/gdb11479.exp: Stop at first breakpoint forced_stabs
+PASS: gdb.stabs/gdb11479.exp: Inspect t in test2 forced_stabs
+PASS: gdb.stabs/gdb11479.exp: sizeof (e) in test2 forced_stabs
+PASS: gdb.stabs/gdb11479.exp: Stop at first breakpoint forced_stabs
+PASS: gdb.stabs/gdb11479.exp: Inspect t in test forced_stabs
+PASS: gdb.stabs/gdb11479.exp: sizeof (e) in test forced_stabs
+PASS: gdb.stabs/gdb11479.exp: Set breakpoints natural_debug_format
+PASS: gdb.stabs/gdb11479.exp: Stop at first breakpoint natural_debug_format
+PASS: gdb.stabs/gdb11479.exp: Inspect t in test2 natural_debug_format
+PASS: gdb.stabs/gdb11479.exp: sizeof (e) in test2 natural_debug_format
+PASS: gdb.stabs/gdb11479.exp: Stop at first breakpoint natural_debug_format
+PASS: gdb.stabs/gdb11479.exp: Inspect t in test natural_debug_format
+PASS: gdb.stabs/gdb11479.exp: sizeof (e) in test natural_debug_format
+Running ../../../master/gdb/testsuite/gdb.stabs/weird.exp ...
+PASS: gdb.stabs/weird.exp: weirdx.o read without error
+PASS: gdb.stabs/weird.exp: stabs found
+PASS: gdb.stabs/weird.exp: variable var0 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (var0)
+PASS: gdb.stabs/weird.exp: variable var1 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (var1)
+PASS: gdb.stabs/weird.exp: variable var2 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (var2)
+PASS: gdb.stabs/weird.exp: variable var3 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (var3)
+PASS: gdb.stabs/weird.exp: variable attr32 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr32)
+PASS: gdb.stabs/weird.exp: variable attr33 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr33)
+PASS: gdb.stabs/weird.exp: variable attr35 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr35)
+PASS: gdb.stabs/weird.exp: variable attr36 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr36)
+PASS: gdb.stabs/weird.exp: variable attr37 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr37)
+PASS: gdb.stabs/weird.exp: variable attr38 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr38)
+PASS: gdb.stabs/weird.exp: variable attr39 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr39)
+PASS: gdb.stabs/weird.exp: variable attr41 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr41)
+PASS: gdb.stabs/weird.exp: variable attr42 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr42)
+PASS: gdb.stabs/weird.exp: variable attr43 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr43)
+PASS: gdb.stabs/weird.exp: variable attr44 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr44)
+PASS: gdb.stabs/weird.exp: variable attr46 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr46)
+PASS: gdb.stabs/weird.exp: variable attr47 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr47)
+PASS: gdb.stabs/weird.exp: variable attr58 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr58)
+PASS: gdb.stabs/weird.exp: variable attr59 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr59)
+PASS: gdb.stabs/weird.exp: variable attr60 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr60)
+PASS: gdb.stabs/weird.exp: variable attr61 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr61)
+PASS: gdb.stabs/weird.exp: variable attr62 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr62)
+PASS: gdb.stabs/weird.exp: variable attr63 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr63)
+PASS: gdb.stabs/weird.exp: variable attr64 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr64)
+PASS: gdb.stabs/weird.exp: variable attr65 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr65)
+PASS: gdb.stabs/weird.exp: variable attr66 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr66)
+PASS: gdb.stabs/weird.exp: variable attr67 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr67)
+PASS: gdb.stabs/weird.exp: variable attr68 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr68)
+PASS: gdb.stabs/weird.exp: variable attr69 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr69)
+PASS: gdb.stabs/weird.exp: variable attr70 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr70)
+PASS: gdb.stabs/weird.exp: variable attr71 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr71)
+PASS: gdb.stabs/weird.exp: variable attr72 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr72)
+PASS: gdb.stabs/weird.exp: variable attr73 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr73)
+PASS: gdb.stabs/weird.exp: variable attr74 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr74)
+PASS: gdb.stabs/weird.exp: variable attr75 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr75)
+PASS: gdb.stabs/weird.exp: variable attr76 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr76)
+PASS: gdb.stabs/weird.exp: variable attr77 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr77)
+PASS: gdb.stabs/weird.exp: variable attr78 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr78)
+PASS: gdb.stabs/weird.exp: variable attr79 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr79)
+PASS: gdb.stabs/weird.exp: variable attr80 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr80)
+PASS: gdb.stabs/weird.exp: variable attr81 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr81)
+PASS: gdb.stabs/weird.exp: variable attr82 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr82)
+PASS: gdb.stabs/weird.exp: variable attr83 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr83)
+PASS: gdb.stabs/weird.exp: variable attr84 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr84)
+PASS: gdb.stabs/weird.exp: variable attr85 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr85)
+PASS: gdb.stabs/weird.exp: variable attr86 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr86)
+PASS: gdb.stabs/weird.exp: variable attr87 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr87)
+PASS: gdb.stabs/weird.exp: variable attr88 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr88)
+PASS: gdb.stabs/weird.exp: variable attr89 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr89)
+PASS: gdb.stabs/weird.exp: variable attr90 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr90)
+PASS: gdb.stabs/weird.exp: variable attr91 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr91)
+PASS: gdb.stabs/weird.exp: variable attr92 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr92)
+PASS: gdb.stabs/weird.exp: variable attr93 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr93)
+PASS: gdb.stabs/weird.exp: variable attr94 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr94)
+PASS: gdb.stabs/weird.exp: variable attr95 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr95)
+PASS: gdb.stabs/weird.exp: variable attr96 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr96)
+PASS: gdb.stabs/weird.exp: variable attr97 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr97)
+PASS: gdb.stabs/weird.exp: variable attr98 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr98)
+PASS: gdb.stabs/weird.exp: variable attr99 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr99)
+PASS: gdb.stabs/weird.exp: variable attr100 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr100)
+PASS: gdb.stabs/weird.exp: variable attr101 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr101)
+PASS: gdb.stabs/weird.exp: variable attr102 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr102)
+PASS: gdb.stabs/weird.exp: variable attr103 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr103)
+PASS: gdb.stabs/weird.exp: variable attr104 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr104)
+PASS: gdb.stabs/weird.exp: variable attr105 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr105)
+PASS: gdb.stabs/weird.exp: variable attr106 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr106)
+PASS: gdb.stabs/weird.exp: variable attr107 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr107)
+PASS: gdb.stabs/weird.exp: variable attr108 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr108)
+PASS: gdb.stabs/weird.exp: variable attr109 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr109)
+PASS: gdb.stabs/weird.exp: variable attr110 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr110)
+PASS: gdb.stabs/weird.exp: variable attr111 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr111)
+PASS: gdb.stabs/weird.exp: variable attr112 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr112)
+PASS: gdb.stabs/weird.exp: variable attr113 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr113)
+PASS: gdb.stabs/weird.exp: variable attr114 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr114)
+PASS: gdb.stabs/weird.exp: variable attr115 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr115)
+PASS: gdb.stabs/weird.exp: variable attr116 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr116)
+PASS: gdb.stabs/weird.exp: variable attr117 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr117)
+PASS: gdb.stabs/weird.exp: variable attr118 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr118)
+PASS: gdb.stabs/weird.exp: variable attr119 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr119)
+PASS: gdb.stabs/weird.exp: variable attr120 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr120)
+PASS: gdb.stabs/weird.exp: variable attr121 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr121)
+PASS: gdb.stabs/weird.exp: variable attr122 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr122)
+PASS: gdb.stabs/weird.exp: variable attr123 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr123)
+PASS: gdb.stabs/weird.exp: variable attr124 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr124)
+PASS: gdb.stabs/weird.exp: variable attr125 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr125)
+PASS: gdb.stabs/weird.exp: variable attr126 printed properly
+PASS: gdb.stabs/weird.exp: print sizeof (attr126)
+PASS: gdb.stabs/weird.exp: 'e' constant on non-enum type
+PASS: gdb.stabs/weird.exp: whatis const69
+PASS: gdb.stabs/weird.exp: 'e' constant with embedded type
+PASS: gdb.stabs/weird.exp: char constant
+PASS: gdb.stabs/weird.exp: String constant 1
+PASS: gdb.stabs/weird.exp: String constant 2
+PASS: gdb.stabs/weird.exp: String constant 3
+PASS: gdb.stabs/weird.exp: String constant 4
+PASS: gdb.stabs/weird.exp: p bad_neg0
+PASS: gdb.stabs/weird.exp: ptype on inttype
+PASS: gdb.stabs/weird.exp: unrecognized floating point type
+PASS: gdb.stabs/weird.exp: print very big integer
+PASS: gdb.stabs/weird.exp: whatis consth
+PASS: gdb.stabs/weird.exp: whatis consth2
+XFAIL: gdb.stabs/weird.exp: print struct constant
+PASS: gdb.stabs/weird.exp: print bad_type0
+PASS: gdb.stabs/weird.exp: print bad_type1
+XFAIL: gdb.stabs/weird.exp: array0 with strange index
+XFAIL: gdb.stabs/weird.exp: array1 with strange index
+PASS: gdb.stabs/weird.exp: whatis one_var (known failure in gdb 4.10)
+PASS: gdb.stabs/weird.exp: whatis one_var test 2
+PASS: gdb.stabs/weird.exp: whatis two_var (known failure in gdb 4.10)
+PASS: gdb.stabs/weird.exp: whatis two_var test 2
+XFAIL: gdb.stabs/weird.exp: whatis pointer_to_int_var
+XFAIL: gdb.stabs/weird.exp: whatis intp_var
+PASS: gdb.stabs/weird.exp: p common0var0
+XFAIL: gdb.stabs/weird.exp: p common0var1
+XFAIL: gdb.stabs/weird.exp: p common0var2
+Running ../../../master/gdb/testsuite/gdb.threads/attach-into-signal.exp ...
+PASS: gdb.threads/attach-into-signal.exp: nonthreaded: attach (pass 1), pending signal catch
+PASS: gdb.threads/attach-into-signal.exp: nonthreaded: attach (pass 2), pending signal catch
+PASS: gdb.threads/attach-into-signal.exp: successfully compiled posix threads test case
+PASS: gdb.threads/attach-into-signal.exp: threaded: attach (pass 1), pending signal catch
+PASS: gdb.threads/attach-into-signal.exp: threaded: attach (pass 2), pending signal catch
+Running ../../../master/gdb/testsuite/gdb.threads/attach-stopped.exp ...
+PASS: gdb.threads/attach-stopped.exp: nonthreaded: attach2 to stopped, after setting file
+PASS: gdb.threads/attach-stopped.exp: nonthreaded: attach2 to stopped bt
+PASS: gdb.threads/attach-stopped.exp: continue (nonthreaded: attach2 continue)
+PASS: gdb.threads/attach-stopped.exp: nonthreaded: attach2 stop interrupt
+PASS: gdb.threads/attach-stopped.exp: nonthreaded: attach2, exit leaves process sleeping
+PASS: gdb.threads/attach-stopped.exp: successfully compiled posix threads test case
+PASS: gdb.threads/attach-stopped.exp: threaded: attach2 to stopped, after setting file
+PASS: gdb.threads/attach-stopped.exp: threaded: attach2 to stopped bt
+PASS: gdb.threads/attach-stopped.exp: continue (threaded: attach2 continue)
+PASS: gdb.threads/attach-stopped.exp: threaded: attach2 stop interrupt
+PASS: gdb.threads/attach-stopped.exp: threaded: attach2, exit leaves process sleeping
+Running ../../../master/gdb/testsuite/gdb.threads/attachstop-mt.exp ...
+PASS: gdb.threads/attachstop-mt.exp: successfully compiled posix threads test case
+PASS: gdb.threads/attachstop-mt.exp: attach0, initial sanity check of the sleeping state
+PASS: gdb.threads/attachstop-mt.exp: attach0 to sleeping
+PASS: gdb.threads/attachstop-mt.exp: attach0 to sleeping gcore invocation
+PASS: gdb.threads/attachstop-mt.exp: attach0 to sleeping switch thread
+PASS: gdb.threads/attachstop-mt.exp: attach0 to sleeping bt
+PASS: gdb.threads/attachstop-mt.exp: attach1, post-gdb sanity check of the sleeping state - Red Hat BZ 197584
+PASS: gdb.threads/attachstop-mt.exp: attach2, initial sanity check of the stopped state
+PASS: gdb.threads/attachstop-mt.exp: set file, before attach3 to stopped process (re-read)
+PASS: gdb.threads/attachstop-mt.exp: attach3 to stopped, after setting file
+PASS: gdb.threads/attachstop-mt.exp: attach3 to stopped switch thread
+PASS: gdb.threads/attachstop-mt.exp: attach3 to stopped bt
+PASS: gdb.threads/attachstop-mt.exp: attach4 to stopped, after setting file
+PASS: gdb.threads/attachstop-mt.exp: attach4 to stopped switch thread
+PASS: gdb.threads/attachstop-mt.exp: attach4 to stopped bt
+PASS: gdb.threads/attachstop-mt.exp: continue (attach4 continue)
+PASS: gdb.threads/attachstop-mt.exp: attach4 stop by interrupt
+PASS: gdb.threads/attachstop-mt.exp: attach4, exit leaves process sleeping
+Running ../../../master/gdb/testsuite/gdb.threads/bp_in_thread.exp ...
+PASS: gdb.threads/bp_in_thread.exp: successfully compiled posix threads test case
+PASS: gdb.threads/bp_in_thread.exp: breakpoint on noreturn
+PASS: gdb.threads/bp_in_thread.exp: run to noreturn
+Running ../../../master/gdb/testsuite/gdb.threads/corethreads.exp ...
+PASS: gdb.threads/corethreads.exp: successfully compiled posix threads test case
+PASS: gdb.threads/corethreads.exp: load core
+PASS: gdb.threads/corethreads.exp: sanity check we see the core file
+PASS: gdb.threads/corethreads.exp: print pthread_t of thread0
+PASS: gdb.threads/corethreads.exp: print pthread_t of thread1
+PASS: gdb.threads/corethreads.exp: thread0 found
+PASS: gdb.threads/corethreads.exp: thread1 found
+PASS: gdb.threads/corethreads.exp: no other thread found
+Running ../../../master/gdb/testsuite/gdb.threads/current-lwp-dead.exp ...
+PASS: gdb.threads/current-lwp-dead.exp: continue to breakpoint: fn_return
+Running ../../../master/gdb/testsuite/gdb.threads/execl.exp ...
+PASS: gdb.threads/execl.exp: successfully compiled posix threads test case
+PASS: gdb.threads/execl.exp: set breakpoint at execl
+PASS: gdb.threads/execl.exp: continue to exec
+PASS: gdb.threads/execl.exp: info threads before exec
+PASS: gdb.threads/execl.exp: continue across exec
+PASS: gdb.threads/execl.exp: info threads after exec
+PASS: gdb.threads/execl.exp: info threads after exec
+PASS: gdb.threads/execl.exp: continue until exit
+Running ../../../master/gdb/testsuite/gdb.threads/fork-child-threads.exp ...
+PASS: gdb.threads/fork-child-threads.exp: successfully compiled posix threads test case
+PASS: gdb.threads/fork-child-threads.exp: set follow-fork-mode child
+PASS: gdb.threads/fork-child-threads.exp: next over fork
+PASS: gdb.threads/fork-child-threads.exp: get to the spawned thread
+PASS: gdb.threads/fork-child-threads.exp: two threads found
+Running ../../../master/gdb/testsuite/gdb.threads/fork-thread-pending.exp ...
+PASS: gdb.threads/fork-thread-pending.exp: successfully compiled posix threads test case
+PASS: gdb.threads/fork-thread-pending.exp: 1, set follow-fork-mode child
+PASS: gdb.threads/fork-thread-pending.exp: 1, insert fork catchpoint
+PASS: gdb.threads/fork-thread-pending.exp: 1, get to the fork event
+PASS: gdb.threads/fork-thread-pending.exp: 1, multiple threads found
+PASS: gdb.threads/fork-thread-pending.exp: 1, switched away from event thread
+PASS: gdb.threads/fork-thread-pending.exp: 1, refused to resume
+PASS: gdb.threads/fork-thread-pending.exp: 1, followed to the child, found one thread
+PASS: gdb.threads/fork-thread-pending.exp: 1, get to the spawned thread in fork child
+PASS: gdb.threads/fork-thread-pending.exp: 1, followed to the child, found two threads
+PASS: gdb.threads/fork-thread-pending.exp: 2, set follow-fork-mode child
+PASS: gdb.threads/fork-thread-pending.exp: 2, insert fork catchpoint
+PASS: gdb.threads/fork-thread-pending.exp: 2, get to the fork event
+PASS: gdb.threads/fork-thread-pending.exp: 2, multiple threads found
+PASS: gdb.threads/fork-thread-pending.exp: 2, get to the spawned thread in fork child
+PASS: gdb.threads/fork-thread-pending.exp: 2, followed to the child, found two threads
+Running ../../../master/gdb/testsuite/gdb.threads/gcore-thread.exp ...
+PASS: gdb.threads/gcore-thread.exp: successfully compiled posix threads test case
+PASS: gdb.threads/gcore-thread.exp: successfully compiled posix threads test case
+PASS: gdb.threads/gcore-thread.exp: help gcore
+PASS: gdb.threads/gcore-thread.exp: thread 1 is running
+PASS: gdb.threads/gcore-thread.exp: thread 2 is running
+PASS: gdb.threads/gcore-thread.exp: save a corefile
+PASS: gdb.threads/gcore-thread.exp: clear __stack_user.next
+PASS: gdb.threads/gcore-thread.exp: clear stack_used.next
+PASS: gdb.threads/gcore-thread.exp: save a zeroed-threads corefile
+PASS: gdb.threads/gcore-thread.exp: re-load generated corefile
+PASS: gdb.threads/gcore-thread.exp: corefile contains at least two threads
+PASS: gdb.threads/gcore-thread.exp: a corefile thread is executing thread2
+PASS: gdb.threads/gcore-thread.exp: thread2 is current thread in corefile
+PASS: gdb.threads/gcore-thread.exp: re-load generated corefile
+PASS: gdb.threads/gcore-thread.exp: zeroed-threads cannot be listed
+Running ../../../master/gdb/testsuite/gdb.threads/hand-call-in-threads.exp ...
+PASS: gdb.threads/hand-call-in-threads.exp: successfully compiled posix threads test case
+PASS: gdb.threads/hand-call-in-threads.exp: breakpoint on all_threads_running
+PASS: gdb.threads/hand-call-in-threads.exp: breakpoint on hand_call
+PASS: gdb.threads/hand-call-in-threads.exp: run to all_threads_running
+PASS: gdb.threads/hand-call-in-threads.exp: enable scheduler locking
+PASS: gdb.threads/hand-call-in-threads.exp: show scheduler locking on
+PASS: gdb.threads/hand-call-in-threads.exp: prepare to make hand call, thread 1
+PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 1
+PASS: gdb.threads/hand-call-in-threads.exp: prepare to make hand call, thread 2
+PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 2
+PASS: gdb.threads/hand-call-in-threads.exp: prepare to make hand call, thread 3
+PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 3
+PASS: gdb.threads/hand-call-in-threads.exp: prepare to make hand call, thread 4
+PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 4
+PASS: gdb.threads/hand-call-in-threads.exp: prepare to make hand call, thread 5
+PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 5
+PASS: gdb.threads/hand-call-in-threads.exp: set confirm off
+PASS: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 1
+PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 1
+PASS: gdb.threads/hand-call-in-threads.exp: setting frame, thread 1
+PASS: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 1
+PASS: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 2
+PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 2
+PASS: gdb.threads/hand-call-in-threads.exp: setting frame, thread 2
+PASS: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 2
+PASS: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 3
+PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 3
+PASS: gdb.threads/hand-call-in-threads.exp: setting frame, thread 3
+PASS: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 3
+PASS: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 4
+PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 4
+PASS: gdb.threads/hand-call-in-threads.exp: setting frame, thread 4
+PASS: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 4
+PASS: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 5
+PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 5
+PASS: gdb.threads/hand-call-in-threads.exp: setting frame, thread 5
+PASS: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 5
+PASS: gdb.threads/hand-call-in-threads.exp: all dummies popped
+PASS: gdb.threads/hand-call-in-threads.exp: disable scheduler locking
+PASS: gdb.threads/hand-call-in-threads.exp: show scheduler locking off
+Running ../../../master/gdb/testsuite/gdb.threads/ia64-sigill.exp ...
+PASS: gdb.threads/ia64-sigill.exp: successfully compiled posix threads test case
+PASS: gdb.threads/ia64-sigill.exp: info addr label
+PASS: gdb.threads/ia64-sigill.exp: set $sigill_bpnum=$bpnum
+PASS: gdb.threads/ia64-sigill.exp: set debug infrun 1
+PASS: gdb.threads/ia64-sigill.exp: continue
+PASS: gdb.threads/ia64-sigill.exp: delete $sigill_bpnum
+PASS: gdb.threads/ia64-sigill.exp: continue for the pending signal
+Running ../../../master/gdb/testsuite/gdb.threads/interrupted-hand-call.exp ...
+PASS: gdb.threads/interrupted-hand-call.exp: successfully compiled posix threads test case
+PASS: gdb.threads/interrupted-hand-call.exp: breakpoint on all_threads_running
+PASS: gdb.threads/interrupted-hand-call.exp: run to all_threads_running
+PASS: gdb.threads/interrupted-hand-call.exp: hand-call interrupted by signal in another thread
+PASS: gdb.threads/interrupted-hand-call.exp: dummy stack frame present
+PASS: gdb.threads/interrupted-hand-call.exp: finish hand-call
+PASS: gdb.threads/interrupted-hand-call.exp: dummy frame popped
+PASS: gdb.threads/interrupted-hand-call.exp: continue until exit
+Running ../../../master/gdb/testsuite/gdb.threads/killed.exp ...
+PASS: gdb.threads/killed.exp: successfully compiled posix threads test case
+PASS: gdb.threads/killed.exp: run program to completion
+PASS: gdb.threads/killed.exp: GDB exits after multi-threaded program exits messily
+Running ../../../master/gdb/testsuite/gdb.threads/leader-exit.exp ...
+PASS: gdb.threads/leader-exit.exp: successfully compiled posix threads test case
+PASS: gdb.threads/leader-exit.exp: continue to breakpoint: break-here
+PASS: gdb.threads/leader-exit.exp: Single thread has been left
+Running ../../../master/gdb/testsuite/gdb.threads/linux-dp.exp ...
+PASS: gdb.threads/linux-dp.exp: successfully compiled posix threads test case
+PASS: gdb.threads/linux-dp.exp: set print sevenbit-strings
+PASS: gdb.threads/linux-dp.exp: info threads 1
+PASS: gdb.threads/linux-dp.exp: continue to breakpoint: about to create philosopher: 0
+PASS: gdb.threads/linux-dp.exp: create philosopher: 0
+PASS: gdb.threads/linux-dp.exp: info threads after: 0
+PASS: gdb.threads/linux-dp.exp: continue to breakpoint: about to create philosopher: 1
+PASS: gdb.threads/linux-dp.exp: create philosopher: 1
+PASS: gdb.threads/linux-dp.exp: info threads after: 1
+PASS: gdb.threads/linux-dp.exp: continue to breakpoint: about to create philosopher: 2
+PASS: gdb.threads/linux-dp.exp: create philosopher: 2
+PASS: gdb.threads/linux-dp.exp: info threads after: 2
+PASS: gdb.threads/linux-dp.exp: continue to breakpoint: about to create philosopher: 3
+PASS: gdb.threads/linux-dp.exp: create philosopher: 3
+PASS: gdb.threads/linux-dp.exp: info threads after: 3
+PASS: gdb.threads/linux-dp.exp: continue to breakpoint: about to create philosopher: 4
+PASS: gdb.threads/linux-dp.exp: create philosopher: 4
+PASS: gdb.threads/linux-dp.exp: info threads after: 4
+PASS: gdb.threads/linux-dp.exp: continue to breakpoint: main thread's sleep
+PASS: gdb.threads/linux-dp.exp: info threads 2
+PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print
+PASS: gdb.threads/linux-dp.exp: first thread-specific breakpoint hit
+PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 0
+PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 1
+PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 2
+PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 3
+PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 4
+PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 5
+PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 6
+PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 7
+PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 8
+PASS: gdb.threads/linux-dp.exp: continue to breakpoint: thread 5's print, pass: 9
+PASS: gdb.threads/linux-dp.exp: thread-specific breakpoint is thread-specific
+PASS: gdb.threads/linux-dp.exp: selected thread: 1
+PASS: gdb.threads/linux-dp.exp: main is distinct: 1
+PASS: gdb.threads/linux-dp.exp: selected thread: 2
+PASS: gdb.threads/linux-dp.exp: philosopher is distinct: 2
+PASS: gdb.threads/linux-dp.exp: selected thread: 3
+PASS: gdb.threads/linux-dp.exp: philosopher is distinct: 3
+PASS: gdb.threads/linux-dp.exp: selected thread: 4
+PASS: gdb.threads/linux-dp.exp: philosopher is distinct: 4
+PASS: gdb.threads/linux-dp.exp: selected thread: 5
+PASS: gdb.threads/linux-dp.exp: philosopher is distinct: 5
+PASS: gdb.threads/linux-dp.exp: selected thread: 6
+PASS: gdb.threads/linux-dp.exp: philosopher is distinct: 6
+PASS: gdb.threads/linux-dp.exp: found an interesting thread
+PASS: gdb.threads/linux-dp.exp: manager thread found (not found) when expected
+Running ../../../master/gdb/testsuite/gdb.threads/local-watch-wrong-thread.exp ...
+PASS: gdb.threads/local-watch-wrong-thread.exp: successfully compiled posix threads test case
+PASS: gdb.threads/local-watch-wrong-thread.exp: breakpoint on thread_function0
+PASS: gdb.threads/local-watch-wrong-thread.exp: continue to thread_function0
+PASS: gdb.threads/local-watch-wrong-thread.exp: set local watchpoint on *myp
+PASS: gdb.threads/local-watch-wrong-thread.exp: local watchpoint triggers
+PASS: gdb.threads/local-watch-wrong-thread.exp: set local watchpoint on *myp, with false conditional
+PASS: gdb.threads/local-watch-wrong-thread.exp: breakpoint on the other thread
+PASS: gdb.threads/local-watch-wrong-thread.exp: the other thread stopped on breakpoint
+PASS: gdb.threads/local-watch-wrong-thread.exp: local watchpoint is still in breakpoint list
+PASS: gdb.threads/local-watch-wrong-thread.exp: let local watchpoint trigger
+PASS: gdb.threads/local-watch-wrong-thread.exp: local watchpoint still triggers
+PASS: gdb.threads/local-watch-wrong-thread.exp: let thread_function0 return
+PASS: gdb.threads/local-watch-wrong-thread.exp: breakpoint on thread_function0's caller
+PASS: gdb.threads/local-watch-wrong-thread.exp: local watchpoint automatically deleted
+Running ../../../master/gdb/testsuite/gdb.threads/manythreads.exp ...
+PASS: gdb.threads/manythreads.exp: successfully compiled posix threads test case
+PASS: gdb.threads/manythreads.exp: set print sevenbit-strings
+PASS: gdb.threads/manythreads.exp: shell stty intr '^C'
+PASS: gdb.threads/manythreads.exp: first continue
+PASS: gdb.threads/manythreads.exp: stop threads 1
+PASS: gdb.threads/manythreads.exp: info threads
+PASS: gdb.threads/manythreads.exp: give a name to the thread
+PASS: gdb.threads/manythreads.exp: check thread name
+PASS: gdb.threads/manythreads.exp: second continue
+PASS: gdb.threads/manythreads.exp: check for duplicate SIGINT
+PASS: gdb.threads/manythreads.exp: stop threads 2
+PASS: gdb.threads/manythreads.exp: GDB exits after stopping multithreaded program
+Running ../../../master/gdb/testsuite/gdb.threads/multi-create.exp ...
+PASS: gdb.threads/multi-create.exp: successfully compiled posix threads test case
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 0
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 1
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 2
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 3
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 4
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 5
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 6
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 7
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 8
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 9
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 10
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 11
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 12
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 13
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 14
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 15
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 16
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 17
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 18
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 19
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 20
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 21
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 22
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 23
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 24
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 25
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 26
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 27
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 28
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 29
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 30
+PASS: gdb.threads/multi-create.exp: continue to breakpoint 31
+Running ../../../master/gdb/testsuite/gdb.threads/pending-step.exp ...
+PASS: gdb.threads/pending-step.exp: successfully compiled posix threads test case
+PASS: gdb.threads/pending-step.exp: continue to breakpoint: continue to first breakpoint hit
+PASS: gdb.threads/pending-step.exp: next in multiple threads with breakpoints
+Running ../../../master/gdb/testsuite/gdb.threads/print-threads.exp ...
+PASS: gdb.threads/print-threads.exp: successfully compiled posix threads test case
+PASS: gdb.threads/print-threads.exp: set print sevenbit-strings
+PASS: gdb.threads/print-threads.exp: set width 0
+PASS: gdb.threads/print-threads.exp: shell stty intr '^C'
+PASS: gdb.threads/print-threads.exp: break thread_function
+PASS: gdb.threads/print-threads.exp: set var slow = 0
+PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 1 (fast)
+PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 2 (fast)
+PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 3 (fast)
+PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 4 (fast)
+PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 5 (fast)
+PASS: gdb.threads/print-threads.exp: program exited normally
+PASS: gdb.threads/print-threads.exp: all threads ran once (fast)
+PASS: gdb.threads/print-threads.exp: break thread_function (2)
+PASS: gdb.threads/print-threads.exp: set var slow = 1
+PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 1 (slow)
+PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 2 (slow)
+PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 3 (slow)
+PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 4 (slow)
+PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 5 (slow)
+PASS: gdb.threads/print-threads.exp: program exited normally
+PASS: gdb.threads/print-threads.exp: all threads ran once (slow)
+PASS: gdb.threads/print-threads.exp: break thread_function (3)
+PASS: gdb.threads/print-threads.exp: set var slow = 1 (2)
+PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 1 (slow with kill breakpoint)
+PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 2 (slow with kill breakpoint)
+PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 3 (slow with kill breakpoint)
+PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 4 (slow with kill breakpoint)
+PASS: gdb.threads/print-threads.exp: Hit thread_function breakpoint, 5 (slow with kill breakpoint)
+PASS: gdb.threads/print-threads.exp: program exited normally
+PASS: gdb.threads/print-threads.exp: all threads ran once (slow with kill breakpoint)
+Running ../../../master/gdb/testsuite/gdb.threads/pthread_cond_wait.exp ...
+PASS: gdb.threads/pthread_cond_wait.exp: successfully compiled posix threads test case
+PASS: gdb.threads/pthread_cond_wait.exp: breakpoint on break_me
+PASS: gdb.threads/pthread_cond_wait.exp: run to break_me
+PASS: gdb.threads/pthread_cond_wait.exp: backtrace in blocked thread
+Running ../../../master/gdb/testsuite/gdb.threads/pthreads.exp ...
+PASS: gdb.threads/pthreads.exp: successfully compiled posix threads test case
+PASS: gdb.threads/pthreads.exp: set print sevenbit-strings
+PASS: gdb.threads/pthreads.exp: set width 0
+PASS: gdb.threads/pthreads.exp: shell stty intr '^C'
+PASS: gdb.threads/pthreads.exp: info threads
+PASS: gdb.threads/pthreads.exp: break thread1
+PASS: gdb.threads/pthreads.exp: Continue to creation of first thread
+PASS: gdb.threads/pthreads.exp: disable
+PASS: gdb.threads/pthreads.exp: break thread2
+PASS: gdb.threads/pthreads.exp: Continue to creation of second thread
+PASS: gdb.threads/pthreads.exp: set var common_routine::hits=0
+PASS: gdb.threads/pthreads.exp: set var common_routine::from_thread1=0
+PASS: gdb.threads/pthreads.exp: set var common_routine::from_thread2=0
+PASS: gdb.threads/pthreads.exp: set var common_routine::from_main=0
+PASS: gdb.threads/pthreads.exp: set var common_routine::full_coverage=0
+PASS: gdb.threads/pthreads.exp: disable
+PASS: gdb.threads/pthreads.exp: tbreak common_routine if hits >= 15
+PASS: gdb.threads/pthreads.exp: stopped before calling common_routine 15 times
+PASS: gdb.threads/pthreads.exp: All threads running after startup
+PASS: gdb.threads/pthreads.exp: Continue with all threads running
+PASS: gdb.threads/pthreads.exp: Stopped with a ^C
+PASS: gdb.threads/pthreads.exp: bt
+PASS: gdb.threads/pthreads.exp: set var common_routine::hits=0
+PASS: gdb.threads/pthreads.exp: set var common_routine::from_thread1=0
+PASS: gdb.threads/pthreads.exp: set var common_routine::from_thread2=0
+PASS: gdb.threads/pthreads.exp: set var common_routine::from_main=0
+PASS: gdb.threads/pthreads.exp: set var common_routine::full_coverage=0
+PASS: gdb.threads/pthreads.exp: disable
+PASS: gdb.threads/pthreads.exp: tbreak common_routine if hits >= 15
+PASS: gdb.threads/pthreads.exp: stopped before calling common_routine 15 times
+PASS: gdb.threads/pthreads.exp: All threads running after continuing from ^C stop
+PASS: gdb.threads/pthreads.exp: check backtrace from main thread
+PASS: gdb.threads/pthreads.exp: check backtrace from thread 1
+PASS: gdb.threads/pthreads.exp: check backtrace from thread 2
+PASS: gdb.threads/pthreads.exp: apply backtrace command to all three threads
+PASS: gdb.threads/pthreads.exp: set break at common_routine in thread 2
+PASS: gdb.threads/pthreads.exp: continue to bkpt at common_routine in thread 2
+PASS: gdb.threads/pthreads.exp: backtrace from thread 2 bkpt in common_routine
+Running ../../../master/gdb/testsuite/gdb.threads/schedlock.exp ...
+PASS: gdb.threads/schedlock.exp: successfully compiled posix threads test case
+PASS: gdb.threads/schedlock.exp: shell stty intr '^C'
+PASS: gdb.threads/schedlock.exp: set print sevenbit-strings
+PASS: gdb.threads/schedlock.exp: set width 0
+PASS: gdb.threads/schedlock.exp: scheduler locking set to none
+PASS: gdb.threads/schedlock.exp: continue to breakpoint: all threads started
+PASS: gdb.threads/schedlock.exp: listed args (1)
+PASS: gdb.threads/schedlock.exp: continue (initial)
+PASS: gdb.threads/schedlock.exp: stop all threads (initial)
+PASS: gdb.threads/schedlock.exp: continue to breakpoint: return to loop (initial)
+PASS: gdb.threads/schedlock.exp: listed args (2)
+PASS: gdb.threads/schedlock.exp: all threads alive
+PASS: gdb.threads/schedlock.exp: find current thread (1)
+PASS: gdb.threads/schedlock.exp: set scheduler-locking off
+PASS: gdb.threads/schedlock.exp: step to increment (unlocked 0)
+PASS: gdb.threads/schedlock.exp: step to increment (unlocked 1)
+PASS: gdb.threads/schedlock.exp: step to increment (unlocked 2)
+PASS: gdb.threads/schedlock.exp: step to increment (unlocked 3)
+PASS: gdb.threads/schedlock.exp: step to increment (unlocked 4)
+PASS: gdb.threads/schedlock.exp: step to increment (unlocked 5)
+PASS: gdb.threads/schedlock.exp: step to increment (unlocked 6)
+PASS: gdb.threads/schedlock.exp: step to increment (unlocked 7)
+PASS: gdb.threads/schedlock.exp: step to increment (unlocked 8)
+PASS: gdb.threads/schedlock.exp: step to increment (unlocked 9)
+PASS: gdb.threads/schedlock.exp: find current thread (2)
+PASS: gdb.threads/schedlock.exp: step without lock does not change thread
+PASS: gdb.threads/schedlock.exp: listed args (3)
+PASS: gdb.threads/schedlock.exp: current thread stepped
+PASS: gdb.threads/schedlock.exp: other threads ran - unlocked
+PASS: gdb.threads/schedlock.exp: set scheduler-locking on
+PASS: gdb.threads/schedlock.exp: continue (with lock)
+PASS: gdb.threads/schedlock.exp: stop all threads (with lock)
+PASS: gdb.threads/schedlock.exp: continue to breakpoint: return to loop (with lock)
+PASS: gdb.threads/schedlock.exp: find current thread (3)
+PASS: gdb.threads/schedlock.exp: continue with lock does not change thread
+PASS: gdb.threads/schedlock.exp: listed args (4)
+PASS: gdb.threads/schedlock.exp: current thread ran
+PASS: gdb.threads/schedlock.exp: other threads didn't run - locked
+PASS: gdb.threads/schedlock.exp: step to increment (locked 0)
+PASS: gdb.threads/schedlock.exp: step to increment (locked 1)
+PASS: gdb.threads/schedlock.exp: step to increment (locked 2)
+PASS: gdb.threads/schedlock.exp: step to increment (locked 3)
+PASS: gdb.threads/schedlock.exp: step to increment (locked 4)
+PASS: gdb.threads/schedlock.exp: step to increment (locked 5)
+PASS: gdb.threads/schedlock.exp: step to increment (locked 6)
+PASS: gdb.threads/schedlock.exp: step to increment (locked 7)
+PASS: gdb.threads/schedlock.exp: step to increment (locked 8)
+PASS: gdb.threads/schedlock.exp: step to increment (locked 9)
+PASS: gdb.threads/schedlock.exp: find current thread (2)
+PASS: gdb.threads/schedlock.exp: step with lock does not change thread
+PASS: gdb.threads/schedlock.exp: listed args (5)
+PASS: gdb.threads/schedlock.exp: current thread stepped locked
+PASS: gdb.threads/schedlock.exp: other threads didn't run - step locked
+Running ../../../master/gdb/testsuite/gdb.threads/sigthread.exp ...
+PASS: gdb.threads/sigthread.exp: successfully compiled posix threads test case
+PASS: gdb.threads/sigthread.exp: handle SIGUSR1 nostop noprint pass
+PASS: gdb.threads/sigthread.exp: handle SIGUSR2 nostop noprint pass
+PASS: gdb.threads/sigthread.exp: continue
+PASS: gdb.threads/sigthread.exp: stop with control-c
+Running ../../../master/gdb/testsuite/gdb.threads/staticthreads.exp ...
+PASS: gdb.threads/staticthreads.exp: successfully compiled posix threads test case
+PASS: gdb.threads/staticthreads.exp: set print sevenbit-strings
+PASS: gdb.threads/staticthreads.exp: break sem_post
+PASS: gdb.threads/staticthreads.exp: Continue to main's call of sem_post
+PASS: gdb.threads/staticthreads.exp: rerun to main
+PASS: gdb.threads/staticthreads.exp: handle SIG32 nostop noprint pass
+PASS: gdb.threads/staticthreads.exp: handle SIG32 helps
+PASS: gdb.threads/staticthreads.exp: info threads
+PASS: gdb.threads/staticthreads.exp: GDB exits with static thread program
+Running ../../../master/gdb/testsuite/gdb.threads/step.exp ...
+Running ../../../master/gdb/testsuite/gdb.threads/step2.exp ...
+Running ../../../master/gdb/testsuite/gdb.threads/switch-threads.exp ...
+PASS: gdb.threads/switch-threads.exp: successfully compiled posix threads test case
+PASS: gdb.threads/switch-threads.exp: continue to breakpoint: continue to thread_func
+PASS: gdb.threads/switch-threads.exp: next
+Running ../../../master/gdb/testsuite/gdb.threads/thread-execl.exp ...
+PASS: gdb.threads/thread-execl.exp: successfully compiled posix threads test case
+PASS: gdb.threads/thread-execl.exp: continue to thread start
+PASS: gdb.threads/thread-execl.exp: get to main in new image
+Running ../../../master/gdb/testsuite/gdb.threads/thread-find.exp ...
+PASS: gdb.threads/thread-find.exp: successfully compiled posix threads test case
+PASS: gdb.threads/thread-find.exp: set print sevenbit-strings
+PASS: gdb.threads/thread-find.exp: continue to breakpoint: main thread's sleep
+PASS: gdb.threads/thread-find.exp: name thread 1
+PASS: gdb.threads/thread-find.exp: name thread 2
+PASS: gdb.threads/thread-find.exp: name thread 3
+PASS: gdb.threads/thread-find.exp: name thread 4
+PASS: gdb.threads/thread-find.exp: name thread 5
+PASS: gdb.threads/thread-find.exp: name thread 6
+PASS: gdb.threads/thread-find.exp: collect thread id
+PASS: gdb.threads/thread-find.exp: got thread ids
+PASS: gdb.threads/thread-find.exp: collect process id
+PASS: gdb.threads/thread-find.exp: collect lwp id
+PASS: gdb.threads/thread-find.exp: got lwp ids
+PASS: gdb.threads/thread-find.exp: find thread name 6
+PASS: gdb.threads/thread-find.exp: find thread name 5
+PASS: gdb.threads/thread-find.exp: find thread name 4
+PASS: gdb.threads/thread-find.exp: find thread name 3
+PASS: gdb.threads/thread-find.exp: find thread name 2
+PASS: gdb.threads/thread-find.exp: find thread name 1
+PASS: gdb.threads/thread-find.exp: find thread id 6
+PASS: gdb.threads/thread-find.exp: find thread id 5
+PASS: gdb.threads/thread-find.exp: find thread id 4
+PASS: gdb.threads/thread-find.exp: find thread id 3
+PASS: gdb.threads/thread-find.exp: find thread id 2
+PASS: gdb.threads/thread-find.exp: find thread id 1
+PASS: gdb.threads/thread-find.exp: find lwp id 6
+PASS: gdb.threads/thread-find.exp: find lwp id 5
+PASS: gdb.threads/thread-find.exp: find lwp id 4
+PASS: gdb.threads/thread-find.exp: find lwp id 3
+PASS: gdb.threads/thread-find.exp: find lwp id 2
+PASS: gdb.threads/thread-find.exp: find lwp id 1
+PASS: gdb.threads/thread-find.exp: no thread
+PASS: gdb.threads/thread-find.exp: test regular exp
+PASS: gdb.threads/thread-find.exp: info threads 2 4 6
+PASS: gdb.threads/thread-find.exp: info threads 3-5
+PASS: gdb.threads/thread-find.exp: test inverted range
+PASS: gdb.threads/thread-find.exp: info threads 3-3
+PASS: gdb.threads/thread-find.exp: info thread foo
+PASS: gdb.threads/thread-find.exp: info thread foo -1
+Running ../../../master/gdb/testsuite/gdb.threads/thread-specific.exp ...
+PASS: gdb.threads/thread-specific.exp: successfully compiled posix threads test case
+PASS: gdb.threads/thread-specific.exp: set print sevenbit-strings
+PASS: gdb.threads/thread-specific.exp: set width 0
+PASS: gdb.threads/thread-specific.exp: thread var when not running
+PASS: gdb.threads/thread-specific.exp: continue to breakpoint: all threads started
+PASS: gdb.threads/thread-specific.exp: get threads list
+PASS: gdb.threads/thread-specific.exp: thread var in main
+PASS: gdb.threads/thread-specific.exp: breakpoint 59 main thread
+PASS: gdb.threads/thread-specific.exp: continue to thread-specific breakpoint
+PASS: gdb.threads/thread-specific.exp: found breakpoint for thread number
+PASS: gdb.threads/thread-specific.exp: thread var at break
+Running ../../../master/gdb/testsuite/gdb.threads/thread-unwindonsignal.exp ...
+PASS: gdb.threads/thread-unwindonsignal.exp: successfully compiled posix threads test case
+PASS: gdb.threads/thread-unwindonsignal.exp: breakpoint on all_threads_running
+PASS: gdb.threads/thread-unwindonsignal.exp: run to all_threads_running
+PASS: gdb.threads/thread-unwindonsignal.exp: setting unwindonsignal
+PASS: gdb.threads/thread-unwindonsignal.exp: showing unwindonsignal
+PASS: gdb.threads/thread-unwindonsignal.exp: hand-call interrupted by signal in another thread
+PASS: gdb.threads/thread-unwindonsignal.exp: dummy stack frame present
+PASS: gdb.threads/thread-unwindonsignal.exp: wrong thread not unwound
+PASS: gdb.threads/thread-unwindonsignal.exp: finish hand-call
+PASS: gdb.threads/thread-unwindonsignal.exp: dummy frame popped
+PASS: gdb.threads/thread-unwindonsignal.exp: continue until exit
+Running ../../../master/gdb/testsuite/gdb.threads/thread_check.exp ...
+PASS: gdb.threads/thread_check.exp: successfully compiled posix threads test case
+PASS: gdb.threads/thread_check.exp: breakpoint at tf
+PASS: gdb.threads/thread_check.exp: continue to tf
+PASS: gdb.threads/thread_check.exp: backtrace from thread function
+Running ../../../master/gdb/testsuite/gdb.threads/thread_events.exp ...
+PASS: gdb.threads/thread_events.exp: successfully compiled posix threads test case
+PASS: gdb.threads/thread_events.exp: set print thread-events off
+PASS: gdb.threads/thread_events.exp: breakpoint at threadfunc with messages disabled
+PASS: gdb.threads/thread_events.exp: breakpoint at after_join_func with messages disabled
+PASS: gdb.threads/thread_events.exp: continue to threadfunc with messages disabled
+PASS: gdb.threads/thread_events.exp: continue to after_join_func with messages disabled
+PASS: gdb.threads/thread_events.exp: set print thread-events on
+PASS: gdb.threads/thread_events.exp: breakpoint at threadfunc with messages enabled
+PASS: gdb.threads/thread_events.exp: breakpoint at after_join_func with messages enabled
+PASS: gdb.threads/thread_events.exp: continue to threadfunc with messages enabled
+PASS: gdb.threads/thread_events.exp: continue to after_join_func with messages enabled
+Running ../../../master/gdb/testsuite/gdb.threads/threadapply.exp ...
+PASS: gdb.threads/threadapply.exp: successfully compiled posix threads test case
+PASS: gdb.threads/threadapply.exp: b 63
+PASS: gdb.threads/threadapply.exp: continue
+PASS: gdb.threads/threadapply.exp: macro details
+PASS: gdb.threads/threadapply.exp: defining macro
+PASS: gdb.threads/threadapply.exp: set backtrace limit 3
+PASS: gdb.threads/threadapply.exp: thread apply all backthread
+PASS: gdb.threads/threadapply.exp: step to the thread_function
+PASS: gdb.threads/threadapply.exp: go up in the stack frame
+PASS: gdb.threads/threadapply.exp: run a simple print command on all threads
+PASS: gdb.threads/threadapply.exp: go down and check selected frame
+Running ../../../master/gdb/testsuite/gdb.threads/threxit-hop-specific.exp ...
+PASS: gdb.threads/threxit-hop-specific.exp: successfully compiled posix threads test case
+PASS: gdb.threads/threxit-hop-specific.exp: continue to thread start
+PASS: gdb.threads/threxit-hop-specific.exp: set thread specific breakpoint
+PASS: gdb.threads/threxit-hop-specific.exp: get past the thread specific breakpoint
+Running ../../../master/gdb/testsuite/gdb.threads/tls-nodebug.exp ...
+PASS: gdb.threads/tls-nodebug.exp: successfully compiled posix threads test case
+PASS: gdb.threads/tls-nodebug.exp: thread local storage
+Running ../../../master/gdb/testsuite/gdb.threads/tls-shared.exp ...
+PASS: gdb.threads/tls-shared.exp: successfully compiled posix threads test case
+PASS: gdb.threads/tls-shared.exp: successfully compiled posix threads test case
+PASS: gdb.threads/tls-shared.exp: successfully compiled posix threads test case
+PASS: gdb.threads/tls-shared.exp: print thread local storage variable
+PASS: gdb.threads/tls-shared.exp: ptype of thread local storage variable
+PASS: gdb.threads/tls-shared.exp: print storage info for thread local storage variable
+PASS: gdb.threads/tls-shared.exp: break at and of main
+PASS: gdb.threads/tls-shared.exp: continue to break
+PASS: gdb.threads/tls-shared.exp: print result
+Running ../../../master/gdb/testsuite/gdb.threads/tls.exp ...
+PASS: gdb.threads/tls.exp: successfully compiled posix threads test case
+PASS: gdb.threads/tls.exp: set breakpoint at all threads
+PASS: gdb.threads/tls.exp: set breakpoint at synch point
+PASS: gdb.threads/tls.exp: set breakpoint at exit
+PASS: gdb.threads/tls.exp: continue to first thread: get to thread
+PASS: gdb.threads/tls.exp: at least one th in spin while stopped at first th
+PASS: gdb.threads/tls.exp: first thread print me
+PASS: gdb.threads/tls.exp: first thread local storage
+PASS: gdb.threads/tls.exp: first another thread local storage
+PASS: gdb.threads/tls.exp: first info address a_thread_local
+PASS: gdb.threads/tls.exp: first info address another_thread_local
+PASS: gdb.threads/tls.exp: continue to second thread
+PASS: gdb.threads/tls.exp: at least one th in spin while stopped at second th
+PASS: gdb.threads/tls.exp: second thread print me
+PASS: gdb.threads/tls.exp: second thread local storage
+PASS: gdb.threads/tls.exp: second another thread local storage
+PASS: gdb.threads/tls.exp: second info address a_thread_local
+PASS: gdb.threads/tls.exp: second info address another_thread_local
+PASS: gdb.threads/tls.exp: continue to third thread
+PASS: gdb.threads/tls.exp: at least one th in spin while stopped at third th
+PASS: gdb.threads/tls.exp: third thread print me
+PASS: gdb.threads/tls.exp: third thread local storage
+PASS: gdb.threads/tls.exp: third another thread local storage
+PASS: gdb.threads/tls.exp: third info address a_thread_local
+PASS: gdb.threads/tls.exp: third info address another_thread_local
+PASS: gdb.threads/tls.exp: continue to synch point
+PASS: gdb.threads/tls.exp: get number of threads
+PASS: gdb.threads/tls.exp: selected thread: 1
+PASS: gdb.threads/tls.exp: backtrace of thread number 1 not relevant
+PASS: gdb.threads/tls.exp: selected thread: 2
+PASS: gdb.threads/tls.exp: backtrace of thread number 2 in spin
+PASS: gdb.threads/tls.exp: selected thread: 3
+PASS: gdb.threads/tls.exp: backtrace of thread number 3 in spin
+PASS: gdb.threads/tls.exp: selected thread: 4
+PASS: gdb.threads/tls.exp: backtrace of thread number 4 in spin
+PASS: gdb.threads/tls.exp: selected thread: 4
+PASS: gdb.threads/tls.exp: thread 4 up
+PASS: gdb.threads/tls.exp: 4 thread print me
+PASS: gdb.threads/tls.exp: 4 thread local storage
+PASS: gdb.threads/tls.exp: 4 another thread local storage
+PASS: gdb.threads/tls.exp: 4 info address a_thread_local
+PASS: gdb.threads/tls.exp: 4 info address another_thread_local
+PASS: gdb.threads/tls.exp: selected thread: 2
+PASS: gdb.threads/tls.exp: thread 2 up
+PASS: gdb.threads/tls.exp: 2 thread print me
+PASS: gdb.threads/tls.exp: 2 thread local storage
+PASS: gdb.threads/tls.exp: 2 another thread local storage
+PASS: gdb.threads/tls.exp: 2 info address a_thread_local
+PASS: gdb.threads/tls.exp: 2 info address another_thread_local
+PASS: gdb.threads/tls.exp: selected thread: 3
+PASS: gdb.threads/tls.exp: thread 3 up
+PASS: gdb.threads/tls.exp: 3 thread print me
+PASS: gdb.threads/tls.exp: 3 thread local storage
+PASS: gdb.threads/tls.exp: 3 another thread local storage
+PASS: gdb.threads/tls.exp: 3 info address a_thread_local
+PASS: gdb.threads/tls.exp: 3 info address another_thread_local
+PASS: gdb.threads/tls.exp: threads exited
+PASS: gdb.threads/tls.exp: Expect only base thread at end
+PASS: gdb.threads/tls.exp: info address a_global
+PASS: gdb.threads/tls.exp: info address me
+PASS: gdb.threads/tls.exp: p a_thread_local
+PASS: gdb.threads/tls.exp: p file2_thread_local
+PASS: gdb.threads/tls.exp: info address file2_thread_local
+PASS: gdb.threads/tls.exp: p a_thread_local second time
+PASS: gdb.threads/tls.exp: info address a_thread_local
+Running ../../../master/gdb/testsuite/gdb.threads/watchthreads-reorder.exp ...
+PASS: gdb.threads/watchthreads-reorder.exp: successfully compiled posix threads test case
+PASS: gdb.threads/watchthreads-reorder.exp: reorder0: set can-use-hw-watchpoints 1
+PASS: gdb.threads/watchthreads-reorder.exp: reorder0: rwatch thread1_rwatch
+PASS: gdb.threads/watchthreads-reorder.exp: reorder0: rwatch thread2_rwatch
+PASS: gdb.threads/watchthreads-reorder.exp: reorder0: continue a
+PASS: gdb.threads/watchthreads-reorder.exp: reorder0: continue b
+PASS: gdb.threads/watchthreads-reorder.exp: reorder0: set debug infrun 1
+PASS: gdb.threads/watchthreads-reorder.exp: reorder0: continue to breakpoint: break-at-exit
+PASS: gdb.threads/watchthreads-reorder.exp: reorder1: set can-use-hw-watchpoints 1
+PASS: gdb.threads/watchthreads-reorder.exp: reorder1: rwatch thread1_rwatch
+PASS: gdb.threads/watchthreads-reorder.exp: reorder1: rwatch thread2_rwatch
+PASS: gdb.threads/watchthreads-reorder.exp: reorder1: continue a
+PASS: gdb.threads/watchthreads-reorder.exp: reorder1: rwatch unused1_rwatch
+PASS: gdb.threads/watchthreads-reorder.exp: reorder1: rwatch unused2_rwatch
+PASS: gdb.threads/watchthreads-reorder.exp: reorder1: continue b
+PASS: gdb.threads/watchthreads-reorder.exp: reorder1: set debug infrun 1
+PASS: gdb.threads/watchthreads-reorder.exp: reorder1: continue to breakpoint: break-at-exit
+Running ../../../master/gdb/testsuite/gdb.threads/watchthreads.exp ...
+PASS: gdb.threads/watchthreads.exp: successfully compiled posix threads test case
+PASS: gdb.threads/watchthreads.exp: watch args[0]
+PASS: gdb.threads/watchthreads.exp: watch args[1]
+PASS: gdb.threads/watchthreads.exp: disable first watchpoint at 10
+PASS: gdb.threads/watchthreads.exp: threaded watch loop
+PASS: gdb.threads/watchthreads.exp: first watchpoint on args[0] hit
+PASS: gdb.threads/watchthreads.exp: first watchpoint on args[1] hit
+PASS: gdb.threads/watchthreads.exp: watchpoint on args[0] hit in thread
+PASS: gdb.threads/watchthreads.exp: watchpoint on args[1] hit in thread
+PASS: gdb.threads/watchthreads.exp: combination of threaded watchpoints = 30
+Running ../../../master/gdb/testsuite/gdb.threads/watchthreads2.exp ...
+PASS: gdb.threads/watchthreads2.exp: successfully compiled posix threads test case
+PASS: gdb.threads/watchthreads2.exp: breakpoint on thread_started
+PASS: gdb.threads/watchthreads2.exp: all threads started
+PASS: gdb.threads/watchthreads2.exp: watch x
+PASS: gdb.threads/watchthreads2.exp: set var test_ready = 1
+PASS: gdb.threads/watchthreads2.exp: all threads incremented x
+Running ../../../master/gdb/testsuite/gdb.trace/actions.exp ...
+PASS: gdb.trace/actions.exp: 5.1a: set three tracepoints, no actions
+PASS: gdb.trace/actions.exp: 5.1b: set actions for first tracepoint
+PASS: gdb.trace/actions.exp: 5.1c: verify actions set for first tracepoint
+PASS: gdb.trace/actions.exp: 5.1d: set actions for second tracepoint
+PASS: gdb.trace/actions.exp: 5.1e: verify actions set for second tracepoint
+PASS: gdb.trace/actions.exp: 5.2a: set actions for last (default) tracepoint
+PASS: gdb.trace/actions.exp: 5.1e: verify actions set for second tracepoint
+PASS: gdb.trace/actions.exp: 5.3a: reset actions for first tracepoint
+PASS: gdb.trace/actions.exp: 5.3b: verify actions set for first tracepoint
+PASS: gdb.trace/actions.exp: 5.4: 'end' command out of context
+PASS: gdb.trace/actions.exp: 5.5a: set empty actions for first tracepoint
+PASS: gdb.trace/actions.exp: 5.5c: verify NO actions for first tracepoint
+PASS: gdb.trace/actions.exp: 5.6: actions for invalid tracepoint number
+PASS: gdb.trace/actions.exp: 5.7: invalid action
+PASS: gdb.trace/actions.exp: 5.8a: help actions
+PASS: gdb.trace/actions.exp: 5.8b: help collect
+PASS: gdb.trace/actions.exp: 5.8c: help while-stepping
+PASS: gdb.trace/actions.exp: 5.8d: help end
+PASS: gdb.trace/actions.exp: 5.9a: set default-collect
+PASS: gdb.trace/actions.exp: 5.9b: show default-collect
+PASS: gdb.trace/actions.exp: 5.9c: set default-collect
+PASS: gdb.trace/actions.exp: Create a trace state variable
+PASS: gdb.trace/actions.exp: 5.10a: set teval action for first tracepoint
+PASS: gdb.trace/actions.exp: 5.10a: set teval action for second tracepoint
+PASS: gdb.trace/actions.exp: 5.10a: verify teval actions set for two tracepoints
+Running ../../../master/gdb/testsuite/gdb.trace/ax.exp ...
+PASS: gdb.trace/ax.exp: maint agent 12
+PASS: gdb.trace/ax.exp: maint agent gdb_char_test
+PASS: gdb.trace/ax.exp: maint agent gdb_arr_test[12]
+PASS: gdb.trace/ax.exp: maint agent gdb_arr_test[gdb_short_test]
+PASS: gdb.trace/ax.exp: maint agent gdb_struct1_test
+PASS: gdb.trace/ax.exp: maint agent gdb_struct1_test.s
+PASS: gdb.trace/ax.exp: maint agent gdb_struct1_test.arr[gdb_struct1_test.c]
+PASS: gdb.trace/ax.exp: maint agent gdb_structp_test
+PASS: gdb.trace/ax.exp: maint agent gdb_structp_test->l
+PASS: gdb.trace/ax.exp: maint agent gdb_structp_test->bfield
+PASS: gdb.trace/ax.exp: maint agent gdb_long_test + gdb_short_test
+PASS: gdb.trace/ax.exp: maint agent gdb_long_test - gdb_short_test
+PASS: gdb.trace/ax.exp: maint agent gdb_long_test * gdb_short_test
+PASS: gdb.trace/ax.exp: maint agent gdb_long_test / gdb_short_test
+PASS: gdb.trace/ax.exp: maint agent gdb_structp_test + 1
+PASS: gdb.trace/ax.exp: maint agent gdb_long_test == gdb_short_test
+PASS: gdb.trace/ax.exp: maint agent gdb_long_test != gdb_short_test
+PASS: gdb.trace/ax.exp: maint agent gdb_long_test < gdb_short_test
+PASS: gdb.trace/ax.exp: maint agent gdb_long_test <= gdb_short_test
+PASS: gdb.trace/ax.exp: maint agent gdb_long_test > gdb_short_test
+PASS: gdb.trace/ax.exp: maint agent gdb_long_test >= gdb_short_test
+PASS: gdb.trace/ax.exp: maint agent &gdb_long_test == &gdb_short_test
+PASS: gdb.trace/ax.exp: maint agent &gdb_long_test < &gdb_short_test
+PASS: gdb.trace/ax.exp: maint agent-eval 12
+PASS: gdb.trace/ax.exp: maint agent-eval gdb_char_test
+PASS: gdb.trace/ax.exp: maint agent-eval gdb_arr_test[12]
+PASS: gdb.trace/ax.exp: maint agent-eval gdb_arr_test[gdb_short_test]
+PASS: gdb.trace/ax.exp: maint agent-eval gdb_struct1_test
+PASS: gdb.trace/ax.exp: maint agent-eval gdb_struct1_test.s
+PASS: gdb.trace/ax.exp: maint agent-eval gdb_struct1_test.arr[gdb_struct1_test.c]
+PASS: gdb.trace/ax.exp: maint agent-eval gdb_structp_test
+PASS: gdb.trace/ax.exp: maint agent-eval gdb_structp_test->l
+PASS: gdb.trace/ax.exp: maint agent-eval gdb_structp_test->bfield
+PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test + gdb_short_test
+PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test - gdb_short_test
+PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test * gdb_short_test
+PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test / gdb_short_test
+PASS: gdb.trace/ax.exp: maint agent-eval gdb_structp_test + 1
+PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test == gdb_short_test
+PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test != gdb_short_test
+PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test < gdb_short_test
+PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test <= gdb_short_test
+PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test > gdb_short_test
+PASS: gdb.trace/ax.exp: maint agent-eval gdb_long_test >= gdb_short_test
+PASS: gdb.trace/ax.exp: maint agent-eval &gdb_long_test == &gdb_short_test
+PASS: gdb.trace/ax.exp: maint agent-eval &gdb_long_test < &gdb_short_test
+Running ../../../master/gdb/testsuite/gdb.trace/backtrace.exp ...
+PASS: gdb.trace/backtrace.exp: Current target does not support trace
+Running ../../../master/gdb/testsuite/gdb.trace/circ.exp ...
+PASS: gdb.trace/circ.exp: set circular-trace-buffer on
+PASS: gdb.trace/circ.exp: show circular-trace-buffer (on)
+PASS: gdb.trace/circ.exp: set circular-trace-buffer off
+PASS: gdb.trace/circ.exp: show circular-trace-buffer (off)
+PASS: gdb.trace/circ.exp: Current target does not support trace
+Running ../../../master/gdb/testsuite/gdb.trace/collection.exp ...
+PASS: gdb.trace/collection.exp: Current target does not support trace
+Running ../../../master/gdb/testsuite/gdb.trace/deltrace.exp ...
+PASS: gdb.trace/deltrace.exp: set tracepoint 1
+PASS: gdb.trace/deltrace.exp: set tracepoint 2
+PASS: gdb.trace/deltrace.exp: set tracepoint 3
+PASS: gdb.trace/deltrace.exp: 3.1a: set three tracepoints
+PASS: gdb.trace/deltrace.exp: 3.1b: delete all tracepoints
+PASS: gdb.trace/deltrace.exp: 3.2a: set three tracepoints
+PASS: gdb.trace/deltrace.exp: 3.2b: delete first tracepoint
+PASS: gdb.trace/deltrace.exp: 3.2c: verify delete first tracepoint
+PASS: gdb.trace/deltrace.exp: 3.2d: delete second tracepoint
+PASS: gdb.trace/deltrace.exp: 3.2e: verify delete second tracepoint
+PASS: gdb.trace/deltrace.exp: 3.2f: delete third tracepoint
+PASS: gdb.trace/deltrace.exp: 3.2g: verify delete third tracepoint
+PASS: gdb.trace/deltrace.exp: 3.3a: set three tracepoints
+PASS: gdb.trace/deltrace.exp: 3.3b: delete three tracepoints
+PASS: gdb.trace/deltrace.exp: 3.3c: verify delete three tracepoints
+PASS: gdb.trace/deltrace.exp: 3.4: delete invalid tracepoint number
+PASS: gdb.trace/deltrace.exp: 3.5: delete tracepoint number zero
+PASS: gdb.trace/deltrace.exp: 3.6: help delete tracepoints
+Running ../../../master/gdb/testsuite/gdb.trace/infotrace.exp ...
+PASS: gdb.trace/infotrace.exp: 2.1: info tracepoints (all)
+PASS: gdb.trace/infotrace.exp: 2.2a: info tracepoint 1 (gdb_c_test)
+PASS: gdb.trace/infotrace.exp: 2.2b: info tracepoint 2 (gdb_asm_test)
+PASS: gdb.trace/infotrace.exp: 2.3: info tracepoint (invalid tracepoint number)
+PASS: gdb.trace/infotrace.exp: 2.4: info trace rejects multiple tracepoint numbers
+PASS: gdb.trace/infotrace.exp: 2.5: help info tracepoints
+Running ../../../master/gdb/testsuite/gdb.trace/packetlen.exp ...
+PASS: gdb.trace/packetlen.exp: Current target does not support trace
+Running ../../../master/gdb/testsuite/gdb.trace/passc-dyn.exp ...
+PASS: gdb.trace/passc-dyn.exp: Current target does not support trace
+Running ../../../master/gdb/testsuite/gdb.trace/passcount.exp ...
+PASS: gdb.trace/passcount.exp: 4.1a: set three tracepoints, passcounts all zero
+PASS: gdb.trace/passcount.exp: 4.1b: set 1st tracepoint's passcount to two
+PASS: gdb.trace/passcount.exp: 4.1c: verify 1st tracepoint's passcount set to two
+PASS: gdb.trace/passcount.exp: 4.1d: set 2nd tracepoint's passcount to four
+PASS: gdb.trace/passcount.exp: 4.1c: verify 2nd tracepoint's passcount set to four
+PASS: gdb.trace/passcount.exp: 4.2b: set last (default) tp's passcount to six
+PASS: gdb.trace/passcount.exp: 4.2b: verify last (default) tp's passcount set to six
+PASS: gdb.trace/passcount.exp: 4.4a: reset last (default) tp's passcount to seven
+PASS: gdb.trace/passcount.exp: 4.4a: verify reset last (default) tp's passcount to seven
+PASS: gdb.trace/passcount.exp: 4.4b: reset second tracepoint's passcount to five
+PASS: gdb.trace/passcount.exp: 4.4c: verify reset second tracepoint's passcount to five
+PASS: gdb.trace/passcount.exp: 4.20a: set all three passcounts to three
+PASS: gdb.trace/passcount.exp: 4.20a: set all three passcounts to three
+PASS: gdb.trace/passcount.exp: 4.20a: reset all three passcounts to four
+PASS: gdb.trace/passcount.exp: 4.20b: reset all three passcounts to four
+PASS: gdb.trace/passcount.exp: 4.6: set passcount to zero
+PASS: gdb.trace/passcount.exp: 4.6: set passcount to zero
+PASS: gdb.trace/passcount.exp: 4.7: set passcount to large number (32767)
+PASS: gdb.trace/passcount.exp: 4.7: set passcount to large number (32767)
+PASS: gdb.trace/passcount.exp: 4.8: invalid tracepoint number in passcount
+PASS: gdb.trace/passcount.exp: 4.9: help passcount
+Running ../../../master/gdb/testsuite/gdb.trace/report.exp ...
+PASS: gdb.trace/report.exp: Current target does not support trace
+Running ../../../master/gdb/testsuite/gdb.trace/save-trace.exp ...
+PASS: gdb.trace/save-trace.exp: 10.x: set passcount for tracepoint 1
+PASS: gdb.trace/save-trace.exp: 10.x: set condition for tracepoint 1
+PASS: gdb.trace/save-trace.exp: 10.x: set actions for tracepoint 1
+PASS: gdb.trace/save-trace.exp: 10.x: set passcount for tracepoint 2
+PASS: gdb.trace/save-trace.exp: 10.x: set condition for tracepoint 2
+PASS: gdb.trace/save-trace.exp: 10.x: set actions for tracepoint 2
+PASS: gdb.trace/save-trace.exp: 10.x: set passcount for tracepoint 3
+PASS: gdb.trace/save-trace.exp: 10.x: set condition for tracepoint 3
+PASS: gdb.trace/save-trace.exp: 10.x: set actions for tracepoint 3
+PASS: gdb.trace/save-trace.exp: 10.x: set passcount for tracepoint 4
+PASS: gdb.trace/save-trace.exp: 10.x: set condition for tracepoint 4
+PASS: gdb.trace/save-trace.exp: 10.x: set actions for tracepoint 4
+PASS: gdb.trace/save-trace.exp: 10.x: set passcount for tracepoint 5
+PASS: gdb.trace/save-trace.exp: 10.x: set condition for tracepoint 5
+PASS: gdb.trace/save-trace.exp: 10.x: set actions for tracepoint 5
+PASS: gdb.trace/save-trace.exp: 10.x: set passcount for tracepoint 6
+PASS: gdb.trace/save-trace.exp: 10.x: set condition for tracepoint 6
+PASS: gdb.trace/save-trace.exp: 10.x: set actions for tracepoint 6
+PASS: gdb.trace/save-trace.exp: 10: set default-collect
+PASS: gdb.trace/save-trace.exp: 10.x: verify trace setup
+PASS: gdb.trace/save-trace.exp: 10: show default-collect
+PASS: gdb.trace/save-trace.exp: 10.1: save tracepoint definitions
+PASS: gdb.trace/save-trace.exp: 10.2: clear default-collect
+PASS: gdb.trace/save-trace.exp: 10.2: delete tracepoints
+PASS: gdb.trace/save-trace.exp: 10.2: read back saved tracepoints
+PASS: gdb.trace/save-trace.exp: 10.2: verify recovered tracepoints
+PASS: gdb.trace/save-trace.exp: 10: show default-collect
+PASS: gdb.trace/save-trace.exp: 10.3: save tracepoint definitions, full path
+PASS: gdb.trace/save-trace.exp: 10.3: clear default-collect
+PASS: gdb.trace/save-trace.exp: 10.3: delete tracepoints
+PASS: gdb.trace/save-trace.exp: 10.4: read saved tracepoints, full path
+PASS: gdb.trace/save-trace.exp: 10.3: verify recovered tracepoints, full path
+PASS: gdb.trace/save-trace.exp: 10: show default-collect
+PASS: gdb.trace/save-trace.exp: 10.7: help save-tracepoints
+Running ../../../master/gdb/testsuite/gdb.trace/tfile.exp ...
+PASS: gdb.trace/tfile.exp: target tfile
+PASS: gdb.trace/tfile.exp: info tracepoints on trace file
+PASS: gdb.trace/tfile.exp: tfind 0 on trace file
+PASS: gdb.trace/tfile.exp: print testglob on trace file
+PASS: gdb.trace/tfile.exp: print testglob2 on trace file
+PASS: gdb.trace/tfile.exp: print constglob on trace file
+PASS: gdb.trace/tfile.exp: tfind does not find a second frame in trace file
+PASS: gdb.trace/tfile.exp: tstatus on trace file
+PASS: gdb.trace/tfile.exp: leave tfind mode
+PASS: gdb.trace/tfile.exp: no stack if no traceframe selected
+PASS: gdb.trace/tfile.exp: no registers if no traceframe selected
+PASS: gdb.trace/tfile.exp: target tfile
+PASS: gdb.trace/tfile.exp: tstatus on error trace file
+PASS: gdb.trace/tfile.exp: interpreter-exec mi "-target-select tfile basic.tf"
+Running ../../../master/gdb/testsuite/gdb.trace/tfind.exp ...
+PASS: gdb.trace/tfind.exp: Current target does not support trace
+Running ../../../master/gdb/testsuite/gdb.trace/tracecmd.exp ...
+PASS: gdb.trace/tracecmd.exp: 1.0: help tracepoints
+PASS: gdb.trace/tracecmd.exp: 1.1a: set tracepoint at sourceline
+PASS: gdb.trace/tracecmd.exp: 1.1b: trace sourcefile:line
+PASS: gdb.trace/tracecmd.exp: 1.2a: trace invalid line in sourcefile
+PASS: gdb.trace/tracecmd.exp: 1.2b: reject invalid line in srcfile
+PASS: gdb.trace/tracecmd.exp: set breakpoint pending off
+PASS: gdb.trace/tracecmd.exp: 1.3a: trace invalid source file
+PASS: gdb.trace/tracecmd.exp: 1.3b: reject invalid srcfile
+PASS: gdb.trace/tracecmd.exp: 1.4a: trace function by name
+PASS: gdb.trace/tracecmd.exp: 1.4b: trace function by name
+PASS: gdb.trace/tracecmd.exp: 1.5a: trace invalid function
+PASS: gdb.trace/tracecmd.exp: 1.5b: reject invalid srcfile
+PASS: gdb.trace/tracecmd.exp: 1.6a: trace at specific address
+PASS: gdb.trace/tracecmd.exp: 1.6b: verify trace at specific address
+PASS: gdb.trace/tracecmd.exp: 1.7a: trace at function label (before prologue)
+PASS: gdb.trace/tracecmd.exp: 1.7b: verify trace at specific address
+PASS: gdb.trace/tracecmd.exp: 1.9: trace <no arguments>
+PASS: gdb.trace/tracecmd.exp: 1.11a: conditional tracepoint
+PASS: gdb.trace/tracecmd.exp: 1.11b: verify conditional tracepoint
+PASS: gdb.trace/tracecmd.exp: 1.14: help trace
+PASS: gdb.trace/tracecmd.exp: Declined to set a fast tracepoint
+Running ../../../master/gdb/testsuite/gdb.trace/tsv.exp ...
+PASS: gdb.trace/tsv.exp: Create a trace state variable
+PASS: gdb.trace/tsv.exp: Create a trace state variable with initial value
+PASS: gdb.trace/tsv.exp: Change initial value of a trace state variable
+PASS: gdb.trace/tsv.exp: Create a trace state variable with expression
+PASS: gdb.trace/tsv.exp: Init trace state variable to a 64-bit value
+PASS: gdb.trace/tsv.exp: tvariable syntax error, bad name
+PASS: gdb.trace/tsv.exp: tvariable syntax error, not an assignment
+PASS: gdb.trace/tsv.exp: List tvariables
+PASS: gdb.trace/tsv.exp: Print a trace state variable before run
+PASS: gdb.trace/tsv.exp: delete trace state variable
+PASS: gdb.trace/tsv.exp: List tvariables after deletion
+PASS: gdb.trace/tsv.exp: Delete all trace state variables
+PASS: gdb.trace/tsv.exp: List tvariables after deleting all
+PASS: gdb.trace/tsv.exp: Current target does not support trace
+Running ../../../master/gdb/testsuite/gdb.trace/unavailable.exp ...
+PASS: gdb.trace/unavailable.exp: Current target does not support trace
+Running ../../../master/gdb/testsuite/gdb.trace/while-dyn.exp ...
+PASS: gdb.trace/while-dyn.exp: Current target does not support trace
+Running ../../../master/gdb/testsuite/gdb.trace/while-stepping.exp ...
+PASS: gdb.trace/while-stepping.exp: 5.12: set a tracepoint, stepcount is zero
+PASS: gdb.trace/while-stepping.exp: 5.12: set stepcount to 12
+PASS: gdb.trace/while-stepping.exp: 5.12: info trace shows "while-stepping"
+PASS: gdb.trace/while-stepping.exp: 5.14: while-stepping null stepcount
+PASS: gdb.trace/while-stepping.exp: 5.15: while-stepping rejects zero stepcount
+PASS: gdb.trace/while-stepping.exp: 5.16: step without collecting anything
+PASS: gdb.trace/while-stepping.exp: 5.16: confirm actions, step without collecting anything
+Running ../../../master/gdb/testsuite/gdb.xml/tdesc-arch.exp ...
+PASS: gdb.xml/tdesc-arch.exp: read valid architectures
+PASS: gdb.xml/tdesc-arch.exp: read default architecture
+PASS: gdb.xml/tdesc-arch.exp: set tdesc filename tdesc-arch.xml (first architecture)
+PASS: gdb.xml/tdesc-arch.exp: show architecture (first architecture)
+KFAIL: gdb.xml/tdesc-arch.exp: set tdesc filename tdesc-arch.xml (second architecture) (PRMS: gdb/2225)
+PASS: gdb.xml/tdesc-arch.exp: show architecture (second architecture)
+PASS: gdb.xml/tdesc-arch.exp: set tdesc filename tdesc-arch.xml (invalid architecture)
+PASS: gdb.xml/tdesc-arch.exp: show architecture (invalid architecture)
+Running ../../../master/gdb/testsuite/gdb.xml/tdesc-errors.exp ...
+PASS: gdb.xml/tdesc-errors.exp: set tdesc filename gdb.xml/tdesc-bogus.xml
+PASS: gdb.xml/tdesc-errors.exp: set tdesc filename gdb.xml/tdesc-unknown.xml
+Running ../../../master/gdb/testsuite/gdb.xml/tdesc-regs.exp ...
+PASS: gdb.xml/tdesc-regs.exp: set tdesc file single-reg.xml
+PASS: gdb.xml/tdesc-regs.exp: set tdesc filename regs.xml - from extra-regs.xml
+PASS: gdb.xml/tdesc-regs.exp: ptype $extrareg
+PASS: gdb.xml/tdesc-regs.exp: ptype $uintreg
+PASS: gdb.xml/tdesc-regs.exp: ptype $vecreg
+PASS: gdb.xml/tdesc-regs.exp: ptype $unionreg
+PASS: gdb.xml/tdesc-regs.exp: ptype $unionreg.v4
+PASS: gdb.xml/tdesc-regs.exp: ptype $structreg
+PASS: gdb.xml/tdesc-regs.exp: ptype $structreg.v4
+PASS: gdb.xml/tdesc-regs.exp: ptype $bitfields
+PASS: gdb.xml/tdesc-regs.exp: set tdesc filename regs.xml - from core-only.xml
+PASS: gdb.xml/tdesc-regs.exp: ptype $extrareg
+Running ../../../master/gdb/testsuite/gdb.xml/tdesc-xinclude.exp ...
+PASS: gdb.xml/tdesc-xinclude.exp: set tdesc filename gdb.xml/includes.xml
+PASS: gdb.xml/tdesc-xinclude.exp: set tdesc filename gdb.xml/bad-include.xml
+PASS: gdb.xml/tdesc-xinclude.exp: set tdesc filename gdb.xml/loop.xml
+
+ === gdb Summary ===
+
+# of expected passes 17595
+# of unexpected failures 11
+# of unexpected successes 3
+# of expected failures 73
+# of untested testcases 12
+# of unsupported tests 69
+[...]/hurd/master.build/gdb/testsuite/../../gdb/gdb version 7.3.50.20110704-cvs -nw -nx -data-directory [...]/hurd/master.build/gdb/testsuite/../data-directory
+
diff --git a/open_issues/gdb_catch_syscall.mdwn b/open_issues/gdb_catch_syscall.mdwn
new file mode 100644
index 00000000..366c88f5
--- /dev/null
+++ b/open_issues/gdb_catch_syscall.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[meta title="GDB: catch syscall"]]
+
+ (gdb) catch syscall
+ The feature 'catch syscall' is not supported on this architeture yet.
+
+[[!tag open_issue_gdb]]
+
+Perhaps can ``marry'' that one with [[hurd/debugging/rpctrace]]?
diff --git a/open_issues/gdb_gcore.mdwn b/open_issues/gdb_gcore.mdwn
new file mode 100644
index 00000000..69211ac0
--- /dev/null
+++ b/open_issues/gdb_gcore.mdwn
@@ -0,0 +1,26 @@
+[[!meta copyright="Copyright © 2009, 2011 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]]."]]"""]]
+
+[[!meta title="GDB: gcore"]]
+
+[[!tag open_issue_gdb]]
+
+GDB's `gcore` command doesn't work / needs to be implemented / ported in GDB:
+
+ tschwinge@flubber:~ $ gcore 8371
+ [New Thread 8371.1]
+ [New Thread 8371.2]
+ [New Thread 8371.3]
+ /media/data/home/tschwinge/core.cA0ICY:2: Error in sourced command file:
+ Undefined command: "gcore". Try "help".
+ gcore: failed to create core.8371
+
+If someone is working in this area, they may want to port
+<http://code.google.com/p/google-coredumper/>, too.
diff --git a/open_issues/gdb_non-stop_mode.mdwn b/open_issues/gdb_non-stop_mode.mdwn
new file mode 100644
index 00000000..418b144c
--- /dev/null
+++ b/open_issues/gdb_non-stop_mode.mdwn
@@ -0,0 +1,25 @@
+[[!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]]."]]"""]]
+
+[[!meta title="GDB's non-stop mode"]]
+
+[[!tag open_issue_gdb]]
+
+GNU GDB's `gnu-nat.c` doesn't support *non-stop* mode.
+
+Also, from <http://lists.gnu.org/archive/html/bug-hurd/2008-10/msg00045.html>,
+GNU GDB's Pedro Alves:
+
+> I also notice that when going through the shell in non-stop mode, it would be
+> more correct to resume all threads --- we don't want non-stop and its
+> scheduler-locking to apply to the shell. Basically, non-stop should be off
+> if there are pending execs. This was an existing issue, and doesn't affect
+> linux today, so I'll just ignore that for now, as it needs more tweaking to
+> fix.
diff --git a/open_issues/gdb_noninvasive_mode_new_threads.mdwn b/open_issues/gdb_noninvasive_mode_new_threads.mdwn
new file mode 100644
index 00000000..9b3992f4
--- /dev/null
+++ b/open_issues/gdb_noninvasive_mode_new_threads.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2011 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_gdb]]
+
+Debugging a translator. `gdb binary`. `set noninvasive on`. `attach [PID]`.
+Translator does some work. GDB doesn't notice new threads. `detach`. `attach
+[PID]` -- now new threads are visible.
diff --git a/open_issues/gdb_pending_execs.mdwn b/open_issues/gdb_pending_execs.mdwn
new file mode 100644
index 00000000..bb0f8419
--- /dev/null
+++ b/open_issues/gdb_pending_execs.mdwn
@@ -0,0 +1,27 @@
+[[!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]]."]]"""]]
+
+[[!meta title="GDB: pending_execs"]]
+
+[[!tag open_issue_gdb]]
+
+<http://lists.gnu.org/archive/html/bug-hurd/2008-10/msg00045.html>:
+
+GNU GDB's Ulrich Weigand:
+
+> Hmm. It would appear that "set exec-wrapper" is currently broken with
+> the gnu-nat.c target, right?
+
+GNU GDB's Pedro Alves:
+
+>> Yeah, it appears so. Don't know if it's possible to get rid of the local
+>> pending execs handling in gnu-nat.c. An alternative would be to make
+>> pending_execs a property of inferior.h:`struct inferior' instead of of
+>> gnu-nat.c:`struct inf'.
diff --git a/open_issues/gdb_qemu_debugging_gnumach.mdwn b/open_issues/gdb_qemu_debugging_gnumach.mdwn
new file mode 100644
index 00000000..d3105f50
--- /dev/null
+++ b/open_issues/gdb_qemu_debugging_gnumach.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 2010 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_gdb open_issue_gnumach]]
+
+\#hurd, freenode, June (?) 2010
+
+ <jkoenig> is there a way to get gdb to map addresses as required when debugging mach with qemu ?
+ <jkoenig> I can examine the data if I manually map the addresses th 0xc0000000 but maybe there's an easier way...
+ <youpi> jkoenig: I haven't found a way
+ <youpi> I'm mostly using the internal kdb
+
diff --git a/open_issues/gdb_signal_thread_bt.mdwn b/open_issues/gdb_signal_thread_bt.mdwn
new file mode 100644
index 00000000..74065922
--- /dev/null
+++ b/open_issues/gdb_signal_thread_bt.mdwn
@@ -0,0 +1,31 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="GDB: bt on the signal thread"]]
+
+[[!tag open_issue_gdb]]
+
+ (gdb) r
+ Starting program: /media/data/home/tschwinge/tmp/h
+ [New Thread 26731.15]
+
+ Breakpoint 1, 0x08048236 in main ()
+ (gdb) info threads
+ 5 Thread 26731.15 0x080a97fc in mach_msg_trap ()
+ * 4 Thread 26731.14 0x08048236 in main ()
+ (gdb) thread 5
+ [Switching to thread 5 (Thread 26731.15)]#0 0x080a97fc in mach_msg_trap ()
+ (gdb) bt
+ #0 0x080a97fc in mach_msg_trap ()
+ #1 0x080a272e in mach_msg ()
+ #2 0x080a9934 in mach_msg_server_timeout ()
+ #3 0x080a99ff in mach_msg_server ()
+ #4 0x080a327e in _hurd_msgport_receive ()
+ Cannot access memory at address 0x1012000
diff --git a/open_issues/gdb_thread_ids.mdwn b/open_issues/gdb_thread_ids.mdwn
new file mode 100644
index 00000000..c04a10ee
--- /dev/null
+++ b/open_issues/gdb_thread_ids.mdwn
@@ -0,0 +1,31 @@
+[[!meta copyright="Copyright © 2008, 2009, 2010, 2011 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]]."]]"""]]
+
+[[!meta title="GDB: thread ids"]]
+
+[[!tag open_issue_gdb]]
+
+GNU GDB's Pedro Alves:
+
+> One thing [I asked
+> myself](http://lists.gnu.org/archive/html/bug-hurd/2008-10/msg00045.html)
+> was, if gnu-nat.c couldn't be using the port's id as thread ids instead of a
+> locally auto-generated number. Maybe the thread id of the main thread would
+> be preserved across execs this way
+
+
+Also see [[thread numbering of ps and GDB]].
+
+---
+
+`attach` to a multi-threaded process. See threads 1 to 5. `detach`. `attach`
+again -- thread numbers continue where they stopped last time: now they're
+threads 6 to 10.
diff --git a/open_issues/git-core-2.mdwn b/open_issues/git-core-2.mdwn
new file mode 100644
index 00000000..2d8ad96b
--- /dev/null
+++ b/open_issues/git-core-2.mdwn
@@ -0,0 +1,190 @@
+[[!meta copyright="Copyright © 2008, 2009, 2010, 2011 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]]."]]"""]]
+
+[[!meta title="Hiccups of Git"]]
+
+[[!tag open_issue_porting]]
+
+[[!toc]]
+
+
+# Log
+
+December, 2008.
+
+On the otherwise-idle flubber:
+
+ $ git clone git://sources.redhat.com/git/glibc.git
+ Initialized empty Git repository in /media/data/home/tschwinge/tmp/glibc/glibc/.git/
+ remote: Generating pack...
+ remote: Done counting 380933 objects.
+ remote: Deltifying 380933 objects...
+ remote: 100% (380933/380933) done
+ remote: Total 380933 (delta 294166), reused 380686 (delta 294002)
+ Receiving objects: 100% (380933/380933), 70.31 MiB | 27 KiB/s, done.
+ Resolving deltas: 100% (294166/294166), done.
+ error: git-checkout-index: unable to create file iconvdata/ibm1122.c (Interrupted system call)
+ error: git-checkout-index: unable to create file localedata/charmaps/IBM862 (Interrupted system call)
+ Checking out files: 100% (10676/10676), done.
+ $ git status
+ # On branch master
+ # Changed but not updated:
+ # (use "git add <file>..." to update what will be committed)
+ #
+ # modified: iconvdata/ibm1122.c
+ # modified: localedata/charmaps/IBM862
+ #
+ no changes added to commit (use "git add" and/or "git commit -a")
+ $ ls -l iconvdata/ibm1122.c localedata/charmaps/IBM862
+ -rw-r--r-- 1 tschwinge tschwinge 0 2008-12-15 15:49 iconvdata/ibm1122.c
+ -rw-r--r-- 1 tschwinge tschwinge 0 2008-12-15 15:49 localedata/charmaps/IBM862
+
+So these files are indeed of zero-length in the checked-out tree. Is this
+Git's fault or something else's?
+
+Fixing this situation is easy enough:
+
+ $ git checkout -- iconvdata/ibm1122.c localedata/charmaps/IBM862
+ $ git status
+ # On branch master
+ nothing to commit (working directory clean)
+
+Still seen on 2010-03-16.
+
+---
+
+A very similar issue, seen on 2010-11-17. The working tree had a lot of
+differences to HEAD.
+
+ tschwinge@grubber:~/tmp/gcc/hurd $ git reset --hard HEAD
+ error: unable to unlink old 'gcc/config/darwin.h' (Interrupted system call)
+ Checking out files: 100% (1149/1149), done.
+ fatal: Could not reset index file to revision 'HEAD'.
+ tschwinge@grubber:~/tmp/gcc/hurd $ git reset --hard HEAD
+ error: unable to unlink old 'gcc/config/iq2000/iq2000.md' (Interrupted system call)
+ error: git checkout-index: unable to create file gcc/config/lm32/lm32.c (File exists)
+ Checking out files: 100% (1149/1149), done.
+ fatal: Could not reset index file to revision 'HEAD'.
+ tschwinge@grubber:~/tmp/gcc/hurd $ ls -l gcc/config/iq2000/iq2000.md gcc/config/lm32/lm32.c
+ ls: cannot access gcc/config/iq2000/iq2000.md: No such file or directory
+ -rw-r--r-- 1 tschwinge tschwinge 32159 Nov 17 19:09 gcc/config/lm32/lm32.c
+ tschwinge@grubber:~/tmp/gcc/hurd $ git reset --hard HEAD
+ error: git checkout-index: unable to create file gcc/fortran/expr.c (Interrupted system call)
+ Checking out files: 100% (1149/1149), done.
+ fatal: Could not reset index file to revision 'HEAD'.
+ tschwinge@grubber:~/tmp/gcc/hurd $ git reset --hard HEAD
+ error: git checkout-index: unable to create file gcc/config/sol2.h (Interrupted system call)
+ Checking out files: 100% (1149/1149), done.
+ fatal: Could not reset index file to revision 'HEAD'.
+ tschwinge@grubber:~/tmp/gcc/hurd $ git reset --hard HEAD
+ error: unable to unlink old 'gcc/config/i386/i386.c' (Interrupted system call)
+ Checking out files: 100% (1149/1149), done.
+ fatal: Could not reset index file to revision 'HEAD'.
+ tschwinge@grubber:~/tmp/gcc/hurd $ git reset --hard HEAD
+ Checking out files: 100% (1149/1149), done.
+ HEAD is now at fe3e43c Merge commit 'refs/top-bases/hurd/master' into hurd/master
+
+---
+
+2010-12-22, grubber:
+
+ $ git remote update
+ Fetching savannah
+ remote: Counting objects: 582331, done.
+ remote: Compressing objects: 100% (124133/124133), done.
+ remote: Total 582331 (delta 460856), reused 578352 (delta 457598)
+ Receiving objects: 100% (582331/582331), 525.15 MiB | 204 KiB/s, done.
+ fatal: cannot pread pack file: Interrupted system call
+ fatal: index-pack failed
+ error: Could not fetch savannah
+
+---
+
+2011-06-10, coulomb.SCHWINGE, checking out [[binutils]]' master branch,
+starting from an empty working directory (after an external `git push`):
+
+ $ git checkout -f
+ fatal: cannot create directory at 'gas/testsuite/gas/bfin': Interrupted system call
+ $ git checkout -f
+ error: unable to create file gas/testsuite/gas/i386/ilp32/x86-64-sse4_1-intel.d (File exists)
+ warning: unable to unlink gas/testsuite/gas/m68k-coff: Operation not permitted
+ fatal: cannot create directory at 'gas/testsuite/gas/m68k-coff': Operation not permitted
+ $ git checkout -f
+ error: unable to create file gas/testsuite/gas/h8300/h8300.exp (File exists)
+ error: unable to create file gas/testsuite/gas/i386/x86-64-addr32-intel.d (File exists)
+ error: unable to create file gas/testsuite/gas/ia64/secname.d (File exists)
+ error: unable to create file gas/testsuite/gas/m68k/pr11676.s (File exists)
+ Checking out files: 100% (12315/12315), done.
+ $ git status
+ # On branch master
+ # Changes not staged for commit:
+ # (use "git add <file>..." to update what will be committed)
+ # (use "git checkout -- <file>..." to discard changes in working directory)
+ #
+ # modified: gas/testsuite/gas/h8300/h8300.exp
+ # modified: gas/testsuite/gas/i386/x86-64-addr32-intel.d
+ # modified: gas/testsuite/gas/ia64/secname.d
+ # modified: gas/testsuite/gas/m68k/pr11676.s
+ #
+ no changes added to commit (use "git add" and/or "git commit -a")
+ $ rm gas/testsuite/gas/h8300/h8300.exp gas/testsuite/gas/i386/x86-64-addr32-intel.d gas/testsuite/gas/ia64/secname.d gas/testsuite/gas/m68k/pr11676.s
+ $ git checkout -f
+ $ git status
+ # On branch master
+ nothing to commit (working directory clean)
+
+
+# Analysis
+
+2011-06-13
+
+Running `git checkout -f` under GDB:
+
+ error: git checkout-index: unable to create file gas/testsuite/gas/cris/string-1.s (File exists)
+ error: git checkout-index: unable to create file gas/testsuite/gas/i386/x86-64-sse-check.d (File exists)
+ error: git checkout-index: unable to create file gas/testsuite/gas/i386/x86-64-sse4_1.d (File exists)
+ error: git checkout-index: unable to create file gas/testsuite/gas/ppc/astest.d (File exists)
+ error: git checkout-index: unable to create file gas/testsuite/gas/tic6x/reloc-bad-4.s (File exists)
+ warning: unable to unlink include/cgen: Operation not permitted
+ fatal: cannot create directory at 'include/cgen': Operation not permitted
+
+Again:
+
+ error: git checkout-index: unable to create file gas/config/te-vxworks.h (File exists)
+ error: git checkout-index: unable to create file gas/testsuite/gas/cris/string-1.s (File exists)
+ error: git checkout-index: unable to create file gas/testsuite/gas/d10v/warning-019.s (File exists)
+ error: git checkout-index: unable to create file gas/testsuite/gas/i860/dual03.s (File exists)
+ error: git checkout-index: unable to create file ld/testsuite/ld-mmix/sec-7a.s (File exists)
+ warning: unable to unlink ld/testsuite/ld-powerpc: Operation not permitted
+ fatal: cannot create directory at 'ld/testsuite/ld-powerpc': Operation not permitted
+
+And: [[git_duplicated_content]].
+
+All these (very likely) have the same root cause: `SA_RESTART` restarting too
+much.
+
+With `git checkout`, Git uses in progress.c a SIGALRM handler (`SA_RESTART`;
+invoked every second via `setitimer(ITIMER_REAL)`) to display status messages:
+*x % already checked out*.
+
+To avoid the status update signals every second, in
+`[git]/progress.c:start_progress_delay` we can just return `NULL` (manually in
+GDB, for example), then both the *error: git checkout-index* and the
+[[duplicated content|git_duplicated_content]] issues go away.
+
+I'm guessing that when returning from a `SA_RESTART` signal handler, too much
+of the \`\`syscall''s is being restarted. For example, if a file has already
+been created, the restarted creation attempt would fail: *File exists*. If
+data has been written, it might get written again (duplication issue). Then,
+there are cases where `unlink` apparently returns EINTR, which is not kosher
+either. Etc.
+
+Do we have problems with `SA_RESTART` vs. the atomicity of our syscall-alikes?
diff --git a/open_issues/git_duplicated_content.mdwn b/open_issues/git_duplicated_content.mdwn
new file mode 100644
index 00000000..cbc171a7
--- /dev/null
+++ b/open_issues/git_duplicated_content.mdwn
@@ -0,0 +1,131 @@
+[[!meta copyright="Copyright © 2011 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]]
+
+ $ git-new-workdir ~/tmp/binutils/git /media/hd1s1/tmp/master master
+ error: unable to create file gas/testsuite/gas/arm/attr-mfpu-vfpv3-d16.d (Interrupted system call)
+ Checking out files: 100% (12315/12315), done.
+ Already on 'master'
+ $ cd /media/hd1s1/tmp/master
+ $ git status
+ # On branch master
+ # Changes not staged for commit:
+ # (use "git add <file>..." to update what will be committed)
+ # (use "git checkout -- <file>..." to discard changes in working directory)
+ #
+ # modified: gas/testsuite/gas/arm/attr-mfpu-vfpv3-d16.d
+ #
+ no changes added to commit (use "git add" and/or "git commit -a")
+ $ git checkout -f
+ $ git status
+ # On branch master
+ nothing to commit (working directory clean)
+
+([[Git issue|git-core-2]] is known.)
+
+ $ git-new-workdir ~/tmp/binutils/git /media/hd1s2/tmp/master master
+ error: unable to create file bfd/elf32-dlx.c (Interrupted system call)
+ error: unable to create file bfd/sunos.c (Interrupted system call)
+ error: unable to create file gas/testsuite/gas/arm/attr-mfpu-vfpv3-d16.d (Interrupted system call)
+ error: unable to create file gas/testsuite/gas/mmix/regx-op.d (Interrupted system call)
+ error: unable to create file gas/testsuite/gas/tic6x/reloc-bad-4.s (Interrupted system call)
+ error: unable to create file gold/testsuite/script_test_2.t (Interrupted system call)
+ error: unable to create file ld/testsuite/ld-mmix/loc7m.d (Interrupted system call)
+ error: unable to create file ld/testsuite/ld-powerpc/tlsexe.g (Interrupted system call)
+ Checking out files: 100% (12315/12315), done.
+ Already on 'master'
+ $ cd /media/hd1s2/tmp/master
+ $ git status
+ # On branch master
+ # Changes not staged for commit:
+ # (use "git add <file>..." to update what will be committed)
+ # (use "git checkout -- <file>..." to discard changes in working directory)
+ #
+ # modified: bfd/elf32-dlx.c
+ # modified: bfd/sunos.c
+ # modified: gas/testsuite/gas/arm/attr-mfpu-vfpv3-d16.d
+ # modified: gas/testsuite/gas/mmix/regx-op.d
+ # modified: gas/testsuite/gas/tic6x/reloc-bad-4.s
+ # modified: gold/testsuite/script_test_2.t
+ # modified: ld/testsuite/ld-mmix/loc7m.d
+ # modified: ld/testsuite/ld-powerpc/tlsexe.g
+ #
+ no changes added to commit (use "git add" and/or "git commit -a")
+ $ git checkout -f
+ $ git status
+ # On branch master
+ nothing to commit (working directory clean)
+
+Now you'd expect these directories to have identical content, but:
+
+ $ diff -x .git -ru /media/hd1s{1,2}/tmp/master/ > /tmp/diff
+ $ ls -l /tmp/diff
+ -rw-r--r-- 1 thomas thomas 613677 10. Jun 19:12 /tmp/diff
+ $ grep '^[^ @+-]' < /tmp/diff
+ diff -x .git -ru /media/hd1s1/tmp/master//ld/configure /media/hd1s2/tmp/master//ld/configure
+
+(Note that this isn't a file that Git had issues with.)
+
+Try again:
+
+ $ diff -x .git -ru /media/hd1s{1,2}/tmp/master/ > /tmp/diff_
+ $ ls -l /tmp/diff*
+ -rw-r--r-- 1 thomas thomas 613677 10. Jun 19:12 /tmp/diff
+ -rw-r--r-- 1 thomas thomas 613677 10. Jun 19:17 /tmp/diff_
+ $ cmp /tmp/diff{,_}; echo $?
+ 0
+
+At least it's consistent. Force a reload:
+
+ # settrans -ag /media/hd1s1
+ # settrans -ag /media/hd1s2
+
+Try again:
+
+ $ diff -x .git -ru /media/hd1s{1,2}/tmp/master/ > /tmp/diff__
+ $ ls -l /tmp/diff*
+ -rw-r--r-- 1 thomas thomas 613677 10. Jun 19:12 /tmp/diff
+ -rw-r--r-- 1 thomas thomas 613677 10. Jun 19:17 /tmp/diff_
+ -rw-r--r-- 1 thomas thomas 613677 10. Jun 19:30 /tmp/diff__
+ $ cmp /tmp/diff{,__}; echo $?
+ 0
+
+Consistent; thus very likely corrupt on-disk.
+
+After a few tries, the pattern generally is that for the files where there are
+differences, once the file regularely ends, its content appears once more.
+That is, the files' content appears once (regularely), and then the same again.
+
+Some more copying:
+
+ $ (cd /media/hd1s1/tmp/ && cp -a master master_)
+ $ (cd /media/hd1s2/tmp/ && cp -a master master_)
+ $ diff -x .git -ru /media/hd1s1/tmp/master{,_}/ > /tmp/diff1
+ $ diff -x .git -ru /media/hd1s2/tmp/master{,_}/ > /tmp/diff2
+ $ ls -l /tmp/diff{1,2}
+ -rw-r--r-- 1 thomas thomas 0 10. Jun 19:46 /tmp/diff1
+ -rw-r--r-- 1 thomas thomas 0 10. Jun 19:46 /tmp/diff2
+
+No further difference.
+
+---
+
+ $ git-new-workdir git master master
+ $ diff -x .git -ur tar_master/ master/ > master.diff
+
+ $ rm -rf ar_master* && (cd git/ && git archive master) | (mkdir ar_master && cd ar_master/ && tar -x) && diff -x .git -ru tar_master/ ar_master/ > ar_master.diff; ls -l ar_master.diff
+ $ (cd git/ && git archive master) | md5sum
+
+---
+
+2011-06-13
+
+-> [[git-core-2]]
diff --git a/open_issues/git_nfs_mmap.mdwn b/open_issues/git_nfs_mmap.mdwn
new file mode 100644
index 00000000..b7e86491
--- /dev/null
+++ b/open_issues/git_nfs_mmap.mdwn
@@ -0,0 +1,48 @@
+[[!meta copyright="Copyright © 2011 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_hurd open_issue_porting]]
+
+ $ git-new-workdir /media/kepler-data/home/thomas/tmp/source/binutils/git master master
+ fatal: Out of memory? mmap failed: No such device
+ $ echo $?
+ 128
+ $ showtrans /media/kepler-data
+ /hurd/nfs kepler.schwinge.homeip.net:/media/data
+
+With `sh -x`:
+
+ [...]
+ + ln -s /media/kepler-data/home/thomas/tmp/source/binutils/git/.git/remotes master/.git/remotes
+ + ln -s /media/kepler-data/home/thomas/tmp/source/binutils/git/.git/rr-cache master/.git/rr-cache
+ + ln -s /media/kepler-data/home/thomas/tmp/source/binutils/git/.git/svn master/.git/svn
+ + cd master
+ + cp /media/kepler-data/home/thomas/tmp/source/binutils/git/.git/HEAD .git/HEAD
+ + git checkout -f master
+ fatal: Out of memory? mmap failed: No such device
+
+As one can easily guess (and confirm with [[hurd/debugging/rpctrace]]), `git`
+tries to [[glibc/mmap]] a file via the [[hurd/translator/nfs]] translator, this
+fails, and it isn't prepared to cope with that:
+
+ [...]
+ 88->dir_lookup (".git/objects/pack/pack-37ca560e7877fa0cc6e5ddcd556aa73e5a3e3f40.idx" 2049 0) = 0 3 "/media/kepler-data/home/thomas/tmp/source/binutils/git/.git/objects/pack/pack-37" (null)
+ 62->dir_lookup ("media/kepler-data/home/thomas/tmp/source/binutils/git/.git/objects/pack/pack-37c" 2049 0) = 0 1 "/home/thomas/tmp/source/binutils/git/.git/objects/pack/pack-37ca560e7877fa0cc6e5" 61
+ 61->dir_lookup ("home/thomas/tmp/source/binutils/git/.git/objects/pack/pack-37ca560e7877fa0cc6e5d" 2049 0) = 0 1 "" 84
+ task3741-> 3206 (pn{ 33}) = 0
+ 84->term_getctty () = 0xfffffed1 ((ipc/mig) bad request message ID)
+ 84->io_stat_request () = 0 {1 704 0 36308992 0 0 -1 33060 1 1000 1000 4712 0 1307711395 0 1307657003 0 1307657003 0 4096 16 0 1000 0 0 100663296 1836017780 29537 0 0 0 0}
+ 84->io_map_request () = 0x4000002d (Operation not supported)
+ 84->io_map_request () = 0x4000002d (Operation not supported)
+ 76->io_write_request ("fatal: Out of memory? mmap failed: No such device
+ " -1) = 0 50
+ 64->proc_mark_exit_request (32768 0) = 0
+ task3741-> 2008 () = 0
+ Child 3741 exited with 128
diff --git a/open_issues/glibc.mdwn b/open_issues/glibc.mdwn
new file mode 100644
index 00000000..0130aceb
--- /dev/null
+++ b/open_issues/glibc.mdwn
@@ -0,0 +1,568 @@
+[[!meta copyright="Copyright © 2007, 2008, 2010, 2011 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_glibc]]
+
+Here's what's to be done for maintaining glibc.
+
+[[!toc levels=2]]
+
+
+# [[General information|/glibc]]
+
+
+# [[Sources|source_repositories/glibc]]
+
+
+# [[Debian]] Cheat Sheet
+
+
+# Configuration
+
+Last reviewed up to the [[Git mirror's 16292eddd77f66002e2104848e75a0fb4d316692
+(2011-08-04) sources|source_repositories/glibc]].
+
+ * t/dup3
+
+ [[tschwinge]] is not convinced that
+ 22542dcc89805af8d9bd9209129259d2737372b5 (and then also
+ ff3f3a789ba08b656dbaa3901091b6410bb883f8) are correct.
+
+ * 94b7cc3711b0b74c1d3ae18b9a2e019e51a8e0bf -- dup3 changes; relevant for
+ `t/dup3`: hidden def. ed690b2f24bbc4d9c541fc81a7c67e6dc5678a96 -- why
+ not for dup3, too? Because it is a syscall (that is always inlined)?
+
+ * t/init-first.c
+
+ Have to revert 53b56b1101fc9bb4f295f23f54e7e19f8da8da16 to keep it working
+ with GCC 4.4. Figure out what's going on. Also see [[glibc_init_first]].
+
+ * t/tls
+
+ * Discuss d2431f633e6139a62e1575ec18830f7e81160cf0 with Samuel.
+
+ * `TLS_INIT_TP_EXPENSIVE` is unused; Hurd def. can be removed.
+
+ * t/verify.h
+
+ People didn't like this too much.
+
+ Other examples:
+
+ * 11988f8f9656042c3dfd9002ac85dff33173b9bd -- `static_assert`
+
+ * [[toolchain/cross-gnu]], without `--disable-multi-arch`
+
+ i686-pc-gnu-gcc ../sysdeps/i386/i686/multiarch/strcmp.S -c [...]
+ ../sysdeps/i386/i686/multiarch/../strcmp.S: Assembler messages:
+ ../sysdeps/i386/i686/multiarch/../strcmp.S:31: Error: symbol `strcmp' is already defined
+ make[2]: *** [/media/boole-data/thomas/tmp/gnu-0/src/glibc.obj/string/strcmp.o] Error 1
+ make[2]: Leaving directory `/media/boole-data/thomas/tmp/gnu-0/src/glibc/string'
+
+ Might simply be a missing patch(es) from master.
+
+ * --build=X
+
+ `long double` test: due to `cross_compiling = maybe` wants to execute a
+ file, which fails. Thus `--build=X` has to be set.
+
+ * Check what all these are:
+
+ running configure fragment for sysdeps/mach/hurd
+ checking Hurd header version... ok
+ running configure fragment for sysdeps/mach
+ checking for i586-pc-gnu-mig... i586-pc-gnu-mig
+ checking for mach/mach_types.h... yes
+ checking for mach/mach_types.defs... yes
+ checking for task_t in mach/mach_types.h... task_t
+ checking for thread_t in mach/mach_types.h... thread_t
+ checking for creation_time in task_basic_info... yes
+ checking for mach/mach.defs... yes
+ checking for mach/mach4.defs... yes
+ checking for mach/clock.defs... no
+ checking for mach/clock_priv.defs... no
+ checking for mach/host_priv.defs... no
+ checking for mach/host_security.defs... no
+ checking for mach/ledger.defs... no
+ checking for mach/lock_set.defs... no
+ checking for mach/processor.defs... no
+ checking for mach/processor_set.defs... no
+ checking for mach/task.defs... no
+ checking for mach/thread_act.defs... no
+ checking for mach/vm_map.defs... no
+ checking for mach/memory_object.defs... yes
+ checking for mach/memory_object_default.defs... yes
+ checking for mach/default_pager.defs... yes
+ checking for mach/i386/mach_i386.defs... yes
+ checking for egrep... grep -E
+ checking for host_page_size in mach_host.defs... no
+ checking for mach/machine/ndr_def.h... no
+ checking for machine/ndr_def.h... no
+ checking for i386_io_perm_modify in mach_i386.defs... yes
+ checking for i386_set_gdt in mach_i386.defs... yes
+ checking whether i586-pc-gnu-mig supports the retcode keyword... yes
+
+ * `elf/stackguard-macros.h`
+
+ * Verify 77c84aeb81808c3109665949448dba59965c391e against
+ `~/shared/glibc/make_TAGS.patch`.
+
+ * `HP_SMALL_TIMING_AVAIL` not defined anywhere.
+
+ * Unify `CPUCLOCK_WHICH` stuff in `clock_*` files.
+
+ * Not all tests are re-run in a `make -k tests; make tests-clean; make -k
+ tests` cycle.
+
+ * `CPUCLOCK_WHICH`, `t/cpuclock`
+
+ /media/boole-data/thomas/tmp/gnu-0/src/glibc.obj/rt/librt_pic.a(clock_settime.os): In function `clock_settime':
+ /media/boole-data/thomas/tmp/gnu-0/src/glibc/rt/../sysdeps/unix/clock_settime.c:113: undefined reference to `CPUCLOCK_WHICH'
+ /media/boole-data/thomas/tmp/gnu-0/src/glibc/rt/../sysdeps/unix/clock_settime.c:114: undefined reference to `CPUCLOCK_WHICH'
+ collect2: error: ld returned 1 exit status
+ make[2]: *** [/media/boole-data/thomas/tmp/gnu-0/src/glibc.obj/rt/librt.so] Error 1
+ make[2]: Leaving directory `/media/boole-data/thomas/tmp/gnu-0/src/glibc/rt'
+ make[1]: *** [rt/others] Error 2
+ make[1]: Leaving directory `/media/boole-data/thomas/tmp/gnu-0/src/glibc'
+ make: *** [all] Error 2
+
+ * Missing interfaces, amongst many more.
+
+ Many more are missing, some of which have been announced in `NEWS`, others
+ typically haven't (like new flags to existing functions). Typically,
+ porters will notice missing functionaly. But in case you're looking for
+ something to work on, here's a list.
+
+ `AT_EMPTY_PATH`, `CLOCK_BOOTTIME`, `CLOCK_BOOTTIME_ALARM`,
+ `CLOCK_REALTIME_ALARM`, `O_PATH`,
+ `PTRACE_*` (for example, cbff0d9689c4d68578b6a4f0a17807232506ea27),
+ `RLIMIT_RTTIME`, `SEEK_DATA` (`unistd.h`), `SEEK_HOLE` (`unistd.h`)
+ `clock_adjtime`, `fallocate`, `fallocate64`, `getcontext` (and
+ `setcontext`), `name_to_handle_at`, `open_by_handle_at`, `sendmmsg`,
+ `setns`, `sync_file_range`
+
+ * `syncfs`
+
+ We should be easily able to implement that one.
+
+ * `futimesat`, `readlinkat`, `renameat`
+
+ If we have all of 'em (check Linux kernel), `#define __ASSUME_ATFCTS`.
+
+ * `bits/stat.h [__USE_ATFILE]`: `UTIME_NOW`, `UTIME_OMIT`
+
+ * `io/fcntl.h [__USE_ATFILE]`
+
+ Do we support `AT_FDCWD` et al.?
+
+ * `MAP_POPULATE` (`mmap`, `sys/mman.h`)
+
+ Is only advisory, so can worked around with `#define 0`.
+
+ * Building with GCC 4.5, 4.6, trunk will cause different kinds of faults.
+
+ * Create `t/cleanup_kernel-features.h`.
+
+ * Add tests from Linux kernel commit messages for `t/dup3` et al.
+
+ * In `sysdeps/unix/sysv/linux/Makefile`, there are a bunch of
+ `-DHAVE_SENDFILE` -- but we do have `sendfile`, too.
+
+ * `/usr/include/pthread.h` overwrite issue
+
+ `make`, after editing `nss/nss_db/db-initgroups.c`:
+
+ [...]
+ make[2]: Leaving directory `/media/erich/home/thomas/tmp/glibc/tschwinge/Roger_Whittaker/resolv'
+ make subdir=nss -C nss ..=../ others
+ make[2]: Entering directory `/media/erich/home/thomas/tmp/glibc/tschwinge/Roger_Whittaker/nss'
+ /usr/bin/install -c -m 644 ../include/pthread.h /usr/include/pthread.h
+ /usr/bin/install: cannot remove `/usr/include/pthread.h': Permission denied
+ make[2]: *** [/usr/include/pthread.h] Error 1
+ make[2]: Leaving directory `/media/erich/home/thomas/tmp/glibc/tschwinge/Roger_Whittaker/nss'
+ make[1]: *** [nss/others] Error 2
+ make[1]: Leaving directory `/media/erich/home/thomas/tmp/glibc/tschwinge/Roger_Whittaker'
+ make: *** [all] Error 2
+
+ See `id:"871uv99c59.fsf@kepler.schwinge.homeip.net"`. Passing
+ `install_root=/INVALID` to `make`/`make check` is a cheap cure.
+
+ * Verify baseline changes, if we need any follow-up changes:
+
+ * a11ec63713ea3903c482dc907a108be404191a02
+ * 7e2b0c8562b35155820f87b5ff02a8b6850344cc
+ * 8c0677fe5d91b7269364ca08fa08ed09e4c2d8c9
+ * 5a2a1d75043138e696222ced4560de2fb90b8024
+ * 5ae958d74180e2572d198bd7872c86f391de6da7
+ * 5b08ac571ff8e94fe96511a532f0d20997de5f52
+ * 3d04ff3a5d3ce3616837e1d15e03b6e1b360cf26
+ * b2ef2c014b9c66995a3eb4f310ae7c5c510279bf
+ * 63c4ed22b5048c8701d8806026c23cc95f0df756
+ * ac2b484c02b01307ab6bbe5d45ddbf16d64edf8c
+ * e35fcef8b739ed24e083ff8a3078ac14e101cf67
+ * 6fb8cbcb58a29fff73eb2101b34caa19a7f88eba
+ * 8a492a675e566dc1e666df0a86cbf541442cb179
+ * 5dbc3b6cc0b759bf4b22d851ccb9cbf3e3cbc6ef
+ * c86434ccb576a3ce35b5a74f72b9f03bd45b522a
+ * d22e4cc9397ed41534c9422d0b0ffef8c77bfa53
+ * 15bac72bac03faeb3b725b1d208c62160f0c3ad7
+ * c08fb0d7bba4015078406b28d3906ccc5fda9d5a
+ * 10b3bedcb03386cc280113f552479793e4bac35f
+ * 754f7da38b0904b4b989d3500cc8dd5be625cf6a
+ * 3cdaa6adb113a088fdfb87aa6d7747557eccc58d
+ * 962dba7828cf251a9025ccb43bc6effa30379b72
+ * 3162f12e58c3a848db883916843b332b9f8c9d39
+ * 1c06ba3100847da6bd1f2e011dc24fa8debd9615
+ * 84b9230c404aed4fd3a7bb3d045ca367043dde8c
+ * 090555538d4347a52807ba9f08cf20ed13206afe
+ * 817328eea788c746131cf151b64fd250200da333
+ * c3758feebf7c8786231465da664743c6f0ec79cc
+ * 1ac7a2c7b448c851eb8976fcc290a906a4075203
+ * c21cc9bcb38a87ff638d1099ca871d94a2192b31
+ * 6484ba5ef092b62b7d2112c0d976dbd6d1a40fde
+ * b8b4863d78bf26b39918fc753b03ed98ef262903
+ * b76b818e6fe2061e778b3a9bbe63c554c3f9b3c1
+ * 8e9f92e9d5d7737afdacf79b76d98c4c42980508 -- `_dl_map_object` in
+ `sysdeps/mach/hurd/dl-sysdep.c`
+ * 0e516e0e14f2f9783a21cd1727bc53776341f857
+ * a1fb5e3ebe9d38b5ae6c5bfbfaa04882d52355bc
+ * cf7c9078a5acdbb435498ace92cd81009637a971
+ * db753e2cfb2051ebf20dc089f87c5b1297cc2cff
+ * 4a531bb0b3b582cb693de9f76d2d97d970f9a5d5 -- looks good.
+ * 5bd6dc5c2c68fe98691db9b40f87d9b68ea9565b
+ * 451f001b50870604e1f2daef12f04f9f460d3997 +
+ a85b5cb4d4a5fc56e2b38638d270bf2daa67eb6c -- BZ10484. `nptl/Versions
+ [libc] (GLIBC_PRIVATE): Export __libc_alloca_cutoff`. We don't even
+ define it yet. Also see
+ [[glibc___libc_alloca_cutoff_should_be_lowered]].
+ * 1086d70d916fd0eb969b3d89ff88abd35f6a5c34
+ * cfa28e560ef69372b9e15e9a2d924a0fbcfc7bca
+ * 8cf8ce1702c354a8266e3cfa6ab54c2467d1873f
+ * 68dc949774cb651d53541df4abdc60327f7e096b
+ * 70181fddf1467996bea393d13294ffe76b8a0853
+ * a77e8cbc394ab098aa1fc3f0a6645a38348d21ca
+ * 32465c3ea007065acd8ca8199f130cdf4068130d
+ * 18ba70a559c52719fd94a713cc380514d9d19125
+ * 620a05296fe3380b7441ba7720e8b25c48a8c28c
+ * [low] e6c61494125126d2ba77e5d99f83887a2ed49783 -- `Fix memory leak in
+ TLS of loaded objects.` Do we need to replicate `nptl/allocatestack.c`
+ hunk?
+ * 6e04cbbe79f5965809fdbf1f28d7ae8b4af74d31 +
+ 1bfbe0d335d3fc44a492648b974a0db19975f6d8 -- `Fix
+ pathconf(_PC_BUF_SIZE).`
+ * 28377d1bf58625172a1734b92e835591d4d23a18 -- `Optimize fdopendir a bit.`
+ * 7fb90fb89bbdf273ab7ab96517fe1b156cd7aee1 +
+ 6fb2dde3f1aa3a1419cb6c2dfa53dd1d506722a4 -- `Fix Linux getcwd for long
+ paths`
+ * [low] [[!taglink open_issue_libpthread]]
+ 5bdcc10322c488f53557440acf71623d8b313ab5 -- return `EAGAIN` instead of
+ `ENOMEM`.
+ * f574184a0e4b6ed69a5d9a3234543fba6d2a7367 -- `Fix sched_setscheduler
+ call in spawn implementation`
+ * 3b85df27870a47ed1db84e948e37a5a50a178a92 +
+ f50ef8f1efdd1f2b040acbb8324604f168e8832a -- sysconf
+ * 68a3f91fcad464c4737c1eaed4ae0bf539801fb2 -- `Fix reporting of invalid
+ timeouts in emulated pselect`
+ * ea389b12b3b65c4a7fa91fa76f8c99867eb37865 -- `strndup -> __strndup`;
+ strndupa?
+ * 7e4afad5bcf49e03c3b987399c6a8f66a9018660 -- `Nicer output for negative
+ error numbers in strerror_r`. Change needed for
+ `sysdeps/mach/_strerror.c`?
+ * 7ea72f99966a65a56aedba817ee2413ff9b1f23c +
+ adcd5c15d2a37794d021104160b425ff61f88219 -- `Always fill output buffer
+ in XPG strerror function`. Change needed for
+ `sysdeps/mach/xpg-strerror.c`?
+ * a91710475294c66d0005bdaae0919d36ef8ce3d2 -- sotruss. Does it work?
+ * b1ebd700c5295a449f8d114740f0d1fb6e6b2eb5 +
+ 80e2212d8e59933a1641f029ebd360526ff0e074 +
+ 4997db742946d08be4378cf91221f558f928bc73 -- `Don't document si_code
+ used for raise()`. Also for `bits/siginfo.h`?
+ * 11988f8f9656042c3dfd9002ac85dff33173b9bd -- pldd, Does it work?
+ Probably not: needs `/proc/[PID]/auxv`, `/proc/[PID]/exe`,
+ `/proc/[PID]/mem` ([[!tag open_issue_hurd]],
+ [[hurd/translator/procfs]]).
+ * 78a7eee7fab0802addf500c481335ed6e9899bda +
+ 62bede1313c3a1fa477a092006d64436de6821b1 +
+ 113ddea44742d006d7a910a0707106c7defcfd9b -- `.ctors/.dtors`. Watch
+ what happens. `AC_TRY_LINK` vs. cross compiling/bootstrapping? Native
+ build: `checking whether to use .ctors/.dtors header and
+ trailer... no`; results in `#define NO_CTORS_DTORS_SECTIONS 1`: OK (as
+ before).
+ * 9113ea1f3f29b3aee710efc829e85a9772bcb836 -- `--experimental-malloc`.
+ Watch what happens.
+ * 4e34ac6a1e256f40ab0d8eeed37aa1ea83440e76 -- `-defsym=_begin=0`. Watch
+ what happens. Native build: apparently OK.
+ * f781ef4015504e8a1da649c266584976238aa079 (`--with-default-link`) +
+ 1b74661a6b93a892ecb1c717dedeedba5c2a976c +
+ fd5e21c75d8e9221d766f4bc922a237265514ec2. Watch what happens. Native
+ build: `use-default-link = no`.
+ * de283087c74f720cf8a7171972e72b5fa2b45e79 (`Handle Lustre filesystem`),
+ 4e5f31c847982997c856f03bbc35134e9fd0f61f (`Handle ext4 in
+ {,f}pathconf`). What about stuff like that for us?
+ * d30cf5bb00bfb286ff14d931fb69f5b53724bcdc (`Find readelf with
+ AC_CHECK_TOOL`). Aren't there more in other configure.in and Makefile
+ files?
+ * 574920b446870648623a85e00dd8f3ca9f482c0e (`Rewrite -z relro configure
+ check`) + defe906180bad4e356bb55b60b10abd41b7ee3a1 +
+ 9fa2c03227e159050e9dc4ec1e315e5909901580. Watch what happens. Native
+ build: OK, `yes` (as before).
+ * 5c55070081c27168d27145afdf6a92cd56c9abb3 (`linker
+ --print-output-format`). Watch what happens. Native build: OK,
+ `elf32-i386`.
+ * 7a03a9c8c4b37b88ac5e82b557d974f3161ddaf9 (`Add read barriers in
+ cancellation initialization`). Is this needed in other places, too?
+
+
+# Build
+
+Here's a log of a glibc build run; this is from our [[Git repository's
+946cceff76422cedd8ca2f50bced0a672e64a9a9 (2011-09-22; 2011-08-04)
+sources|source_repositories/glibc]], run on coulomb.SCHWINGE.
+
+ $ export LC_ALL=C
+ $ ../Roger_Whittaker/configure AUTOCONF=: --without-cvs --prefix=/usr --disable-profile --disable-multi-arch --build=i486-gnu --host=i486-gnu CC=gcc-4.4 CXX=g++-4.4 2>&1 | tee log_build
+ [...]
+ $ make install_root=/INVALID 2>&1 | tee log_build_
+ [...]
+
+This takes up around 400 MiB and needs roughly 120 min on coulomb.SCHWINGE.
+
+<!--
+ $ (make install_root=/INVALID && touch .go-check) 2>&1 | tee log_build_ && test -f .go-check && make -k install_root=/INVALID check 2>&1 | tee log_check
+ $ find ./ -name \*.o -o -name \*.os -o -name \*.oS | while read f; do ~/tmp/gcc/git/contrib/compare-debug --preserve ../Roger_Whittaker.build-gcc-4.4-486.O/"$f" "$f"; done 2>&1 | less
+ $ while read f; do (readelf -a "$f" && objdump -xDrtw "$f") > N && (cd ../Roger_Whittaker.build-gcc-4.4-486.O/ && readelf -a "$f" && objdump -xDrtw "$f") > O && diff -u O N | less; done
+ $ find ./ -name \*.o -o -name \*.os -o -name \*.oS | while read f; do readelf -h "$f" | grep OS/ABI | (read a b && [ x"$b" != x'UNIX - System V' ] && echo "### $f: $b"); done
+
+-->
+
+
+## Analysis
+
+TODO.
+
+
+# Install
+
+TODO.
+
+<!--
+ $ make install 2>&1 | tee log_install
+ [...]
+
+This takes up around 50 MiB, and needs roughly 1 min on kepler.SCHWINGE and 3
+min on coulomb.SCHWINGE.
+-->
+
+
+## Analysis
+
+TODO.
+
+<!--
+ $ diff -wu <(ssh kepler.SCHWINGE 'cd tmp/source/gdb/ && cat hurd/master.build/log_install | sed -e "s%\(/media/data\)\?${PWD}%[...]%g"' | sed -f open_issues/gdb/log_install-linux.sed) <(ssh coulomb.SCHWINGE 'cd tmp/gdb/ && cat hurd/master.build/log_install | sed "s%\(/media/erich\)\?${PWD}%[...]%g"' | sed -f open_issues/gdb/log_install-hurd.sed) > open_issues/gdb/log_install.diff
+
+[[log_install.diff]].
+
+ * `libtool: finish`: `ldconfig` is not run for the Hurd.
+
+-->
+
+
+# Testsuite
+
+ $ make -k install_root=/INVALID check 2>&1 | tee log_check
+ [...]
+
+This needs roughly 50 min on coulomb.SCHWINGE.
+
+<!--
+ $ ssh kepler.SCHWINGE 'cd tmp/source/gdb/ && sed < hurd/master.build/gdb/testsuite/gdb.sum -e "s%\(/media/data\)\?${PWD}%[...]%g"' > open_issues/gdb/sum_linux
+ $ ssh coulomb.SCHWINGE 'cd tmp/gdb/ && sed < hurd/master.build/gdb/testsuite/gdb.sum -e "s%\(/media/erich\)\?${PWD}%[...]%g"' > open_issues/gdb/sum_hurd
+
+Comparing the results files, [[sum_linux]] to [[sum_hurd]]:
+
+ $ diff -u -F ^Running open_issues/gdb/sum_linux open_issues/gdb/sum_hurd > open_issues/gdb/sum.diff
+
+[[open_issues/gdb/sum.diff]].
+-->
+
+
+## Analysis
+
+There is quite a baseline of failures.
+
+### Additional Failures Compared to Debian
+
+ $ bash ~/tmp/glibc/debian/eglibc-2.13/debian/testsuite-checking/convertlog.sh log_check > log_check.filtered
+ $ bash ~/tmp/glibc/debian/eglibc-2.13/debian/testsuite-checking/compare.sh ~/tmp/glibc/debian/eglibc-2.13/debian/testsuite-checking/expected-results-i486-gnu-libc log_check.filtered
+
+ * `bug-atexit3.out`, `debug/tst-chk4`, `debug/tst-lfschk4`,
+ `debug/tst-lfschk5`, `debug/tst-lfschk6`, `debug/tst-chk5`,
+ `debug/tst-chk6`
+
+ dlopen failed: libstdc++.so.6: cannot open shared object file: No such file or directory
+
+ * `io/ftwtest`, `posix/globtest`, `iconvdata/iconv-test`, `intl/tst-gettext`,
+ `malloc/tst-mtrace`, `elf/tst-pathopt`, `iconvdata/tst-tables`,
+ `grp/tst_fgetgrent`, `dlfcn/tststatic`, `dlfcn/tststatic2`,
+ `posix/wordexp-tst`, `localedata/bug-setlocale1.out`
+
+ /home/thomas/tmp/glibc/tschwinge/Roger_Whittaker.build-gcc-4.4-486.O/io/ftwtest: error while loading shared libraries: libmachuser.so.1: cannot open shared object file: No such file or directory
+
+ Should be using the build-directory one anyway!
+
+ * `math/test-idouble`, `math/test-ifloat`, `math/test-ildoubl`,
+ `math/test-ldouble`
+
+ SIGSEGV.
+
+ * `rt/tst-aio10`, `rt/tst-aio9`
+
+ /home/thomas/tmp/glibc/tschwinge/Roger_Whittaker.build-gcc-4.4-486.O/rt/tst-aio10.o: In function `do_test':
+ tst-aio10.c:(.text+0x1b): undefined reference to `pthread_self'
+ tst-aio10.c:(.text+0x78): undefined reference to `pthread_barrier_init'
+ tst-aio10.c:(.text+0xf7): undefined reference to `pthread_create'
+ tst-aio10.c:(.text+0x10b): undefined reference to `pthread_barrier_wait'
+ /home/thomas/tmp/glibc/tschwinge/Roger_Whittaker.build-gcc-4.4-486.O/rt/tst-aio10.o: In function `tf':
+ tst-aio10.c:(.text+0x5ae): undefined reference to `pthread_barrier_wait'
+ tst-aio10.c:(.text+0x5ef): undefined reference to `pthread_kill'
+ collect2: ld returned 1 exit status
+ make[2]: *** [/home/thomas/tmp/glibc/tschwinge/Roger_Whittaker.build-gcc-4.4-486.O/rt/tst-aio10] Error 1
+
+ * `rt-tst-aio2`, `rt-tst-aio3`, `rt/tst-mqueue3`, `rt/tst-mqueue6`,
+ `rt/tst-mqueue8`, `elf/tst-thrlock`, `rt/tst-timer3`,
+ `nss//libnss_test1.so`
+
+ Compilation: missing `pthread_attr_init`, `pthread_barrier_init`,
+ `pthread_create`, etc.
+
+ * `elf/tst-audit1`, `elf/tst-audit2`
+
+ SIGKILL.
+
+ * `inet/tst-ether_line`
+
+ tst-ether_line.c:19: error: 'ETH_ALEN' undeclared (first use in this function)
+
+ * `posix/tst-getconf`
+
+ /bin/sh -e tst-getconf.sh /home/thomas/tmp/glibc/tschwinge/Roger_Whittaker.build-gcc-4.4-486.O/ /home/thomas/tmp/glibc/tschwinge/Roger_Whittaker.build-gcc-4.4-486.O/elf/ ld.so.1
+ make[2]: *** [/home/thomas/tmp/glibc/tschwinge/Roger_Whittaker.build-gcc-4.4-486.O/posix/tst-getconf.out] Error 127
+
+ * `time/tst-mktime2`
+
+ tst-mktime2.c:132: error: 'INT_MAX' undeclared (first use in this function)
+
+ * `io/tst-readlinkat`
+
+ /media/erich/home/thomas/tmp/glibc/tschwinge/Roger_Whittaker/io/tst-readlinkat.c:109: warning: warning: readlinkat is not implemented and will always fail
+
+ * `gmon/tst-sprofil`
+
+ Floating point exception
+
+ * `posix/tst-sysconf`
+
+ tst-sysconf.c:32: error: '_POSIX_PRIORITIZED_IO' undeclared here (not in a function)
+ tst-sysconf.c:33: error: '_POSIX_PRIORITY_SCHEDULING' undeclared here (not in a function)
+ tst-sysconf.c:43: error: '_POSIX_SPIN_LOCKS' undeclared here (not in a function)
+ tst-sysconf.c:45: error: '_POSIX_SYNCHRONIZED_IO' undeclared here (not in a function)
+
+ * `posix/bug-regex31-mem`, `posix/tst-fnmatch-mem`
+
+ *output* files: some memory not freed.
+
+ * `string/test-strnlen`
+
+ /media/erich/home/thomas/tmp/glibc/tschwinge/Roger_Whittaker/string/test-strnlen.c:87: undefined reference to `MIN'
+
+ * `stdlib/bug-getcontext.out`
+
+ getcontext failed, errno: 1073741902.
+
+ Is not implemented; see above.
+
+ * `elf/tst-unique3lib.so`, `elf/tst-unique3lib2.so`, `elf/tst-unique4lib.so`
+
+ /home/thomas/tmp/glibc/tschwinge/Roger_Whittaker.build-gcc-4.4-486/elf/tst-unique3lib.os:(.data.DW.ref.__gxx_personality_v0[DW.ref.__gxx_personality_v0]+0x0): undefined reference to `__gxx_personality_v0'
+
+ * `stdio-common/tst-rndseek.out`
+
+ Timeout.
+
+
+## OLD
+
+`configure --without-cvs --prefix= --disable-profile --build=i486-gnu
+--host=i486-gnu`
+
+`make -k check` changes from 538603af899057a9ef9583cc447804ec602a45e5 to
+c9fd33ef070def49c078c94f8d9bc9f8a8e267f7.
+
+Configured with `--prefix=/usr` instead of `--prefix=`.
+
+Resolved failures:
+
+ * localedata/tst_mblen.out
+ * localedata/tst_mbrlen.out
+ * localedata/tst_mbrtowc.out
+ * localedata/tst_mbsrtowcs.out
+ * localedata/tst_mbstowcs.out
+ * localedata/tst_mbtowc.out
+ * localedata/tst_swscanf.out
+ * localedata/tst_wcrtomb.out
+ * localedata/tst_wcsrtombs.out
+ * localedata/tst_wcstombs.out
+ * localedata/tst_wctob.out
+ * localedata/tst_wctomb.out
+ * localedata/bug-iconv-trans.out
+ * localedata/tst-wctype.out
+ * math/test-float.out
+ * math/test-double.out
+ * posix/tst-vfork3-mem
+ * io/tst-mkdirat.out
+
+New:
+
+ * A lot of `error while loading shared libraries: libmachuser.so.1: cannot
+ open shared object file: No such file or directory`. Is it perhaps picking
+ that library up from `$prefix/lib/`?
+
+ New failures; likely due to that:
+
+ * iconvdata/iconv-test.out
+ * iconvdata/tst-tables.out
+ * malloc/tst-mtrace.out
+ * grp/tst_fgetgrent.out
+ * posix/globtest.out
+ * posix/wordexp-tst.out
+ * io/ftwtest.out
+ * elf/tst-pathopt.out
+
+ Changed failures; likely due to that:
+
+ * debug/tst-chk4.out / debug/tst-chk5.out
+
+ -error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
+ +error while loading shared libraries: libpthread-stubs.so.0: cannot open shared object file: No such file or directory
+
+---
+
+Changes to b367d4f996512af6841c3cefdb943cb0a826a6a1: nothing interesting.
+
+---
+
+Changes to b85c54a1f7e5241c1ef99dfeaecbd1bf4117564f: nothing interesting.
+
+New failures:
+
+ * posix/bug-glob3.out (SEGFAULT; but also on Linux)
+ * wctype/bug-wctypeh.o (compile error; but also on Linux)
diff --git a/open_issues/glibc/debian.mdwn b/open_issues/glibc/debian.mdwn
new file mode 100644
index 00000000..ce6ba9d2
--- /dev/null
+++ b/open_issues/glibc/debian.mdwn
@@ -0,0 +1,46 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+
+# Open Issues
+
+`threads = yes` is set in `debian/sysdeps/linux.mk` and
+`debian/sysdeps/kfreebsd.mk`, `debian/sysdeps/hurd.mk` set to `no`. But this
+is only read in `debian/rules` for deciding some `nscd` package issue?
+
+`debian/sysdeps/hurd.mk`'s `libc_extra_install` for `ld.so`: check with GCC
+configuration.
+
+Could add a toggle to `$(stamp)build_%` in `debian/rules.d/build.mk` to skip
+locale stuff.
+
+`--disable-compatible-utmp`?
+
+
+# Building
+
+Run `debian/rules patch` to apply patches (instead of having it done during the
+build). Then you can edit files manually.
+
+Several passes: `libc`, `i686`, `xen`; `EGLIBC_PASSES='libc i686'`, etc.
+
+If building with `EGLIBC_PASSES=libc` (more specifically, without `xen`), the
+`libc0.3-dev_extra_pkg_install` rule in `debian/sysdeps/hurd-i386.mk` will
+fail. (Same for `libc6-dev_extra_pkg_install` in `debian/sysdeps/i386.mk`, for
+example.) Why is this special handling only done for `xen`, but not for
+`i686`?
+
+Do `export LC_ALL=C` before building, otherwise the testsuite/make error
+messages will be different from those stored in the
+`debian/testsuite-checking/expected-results-*` files.
+
+Run `debian/rules build-arch DEB_BUILD_OPTIONS=parallel=2 [EGLIBC_PASSES=...]`.
+Can stop with `C-c` during locale stuff or testsuite if only interested in the
+build tree.
diff --git a/open_issues/glibc___libc_alloca_cutoff_should_be_lowered.mdwn b/open_issues/glibc___libc_alloca_cutoff_should_be_lowered.mdwn
new file mode 100644
index 00000000..6d1b4bea
--- /dev/null
+++ b/open_issues/glibc___libc_alloca_cutoff_should_be_lowered.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="glibc: __libc_alloca_cutoff should be lowered"]]
+
+[[!tag open_issue_hurd open_issue_glibc]]
+
+Ognyan Kulev, *[LIBC] \_\_libc\_alloca\_cutoff should be lowered*, bug-hurd,
+2003-06-12, <http://lists.gnu.org/archive/html/bug-hurd/2003-06/msg00050.html>
+
+Replace second link (mail.gnu.org) with
+<http://lists.gnu.org/archive/html/bug-hurd/2002-09/msg00143.html>.
diff --git a/open_issues/glibc_init_first.mdwn b/open_issues/glibc_init_first.mdwn
new file mode 100644
index 00000000..774b7828
--- /dev/null
+++ b/open_issues/glibc_init_first.mdwn
@@ -0,0 +1,78 @@
+[[!meta copyright="Copyright © 2011 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_glibc]]
+
+IRC, freenode, #hurd, 2011-07-22
+
+ [additional init-first.c patch]
+ < tschwinge> civodul: The only thing I wonder about: Roland also once had
+ done similar changes, which I then found they didn'T work with GCC 4.1,
+ and backed them out in 08f53ee9d265ffdc7e0affd6acf346cceeb65559 and fixed
+ the issue differently in d8d27e633a7860b37fd2e3142822b640a066cc0f (and
+ e17cef66140d4c97710ea88bd8d12612799e1e0f). Have you reviewed this?
+ < tschwinge> That's in the Savannah glibc repository.
+ < tschwinge> And this has been in 2007, four years ago. I don't remember
+ all the details.
+ < tschwinge> And here is quite a good summary of this stuff, from
+ init-first.c:
+ < tschwinge> /* XXX This is all a crock and I am not happy with it.
+ < tschwinge> This poorly-named function is called by static-start.S,
+ < civodul> braunr: thanks; i must admit it took me a while to figure it out
+ ;-)
+ < tschwinge> which should not exist at all. */
+ < tschwinge> civodul: I can imagine... :-/
+ < civodul> tschwinge: re Roland's changes, that's weird; i plan to try to
+ reinstate his change and see if it works
+ < civodul> now, i won't test with GCC 4.1...
+ < tschwinge> Yeah...
+ < tschwinge> I'm happy if it works with 4.4 onwards.
+ < tschwinge> civodul: And it's safe (in GCC terms) to write to ``* ((void
+ **) __builtin_frame_address (0) + 1)'', and similar?
+ < tschwinge> Or should we be coding this few stuff in assembly?
+ < civodul> tschwinge: well, we should add a compile-time assertion for
+ __builtin_return_address (0) == *((void**)__builtin_frame_address (0) +
+ 1)
+ < civodul> (i think GCC can figure it out at compile-time)
+ < civodul> but on IA32 it should always be true
+ < civodul> what's the name of glibc's compile-time assert macro already?
+ < tschwinge> I wonder whether that might interfere with some of GCC's
+ optimizations?
+ < civodul> what?
+ < tschwinge> Well, it seems unclean for me to be modifying a function's
+ return address from within C code.
+ < tschwinge> civodul: I added a verify.h in the t/verify.h branch. But
+ people didn't really like it too much. They rather wanted to directly
+ inline the array[(cond)?1:-1] code.
+ < civodul> ok
+ < civodul> i remember a debate about Gnulib's verify.h
+ < civodul> i thought something comparable had landed eventually
+ < tschwinge> civodul: Oh, maybe I missed it.
+ < tschwinge> civodul: In init-first.c:init, what about the usage of
+ data[-1] in the else path (not using cthreads) -- is that good as-is?
+ < civodul> tschwinge: oooh, it probably needs to fixed too
+ < civodul> but i haven't reached that point yet ;-)
+ * civodul tries to cross-bootstrap GNU from scratch
+ < tschwinge> civodul: I'd be happy to learn what was wrong with Roland's
+ original idea of fixing this. Or perhaps this was a GCC 4.1 bug? Or
+ perhaps GCC was inlining to much, and then got confused with frames and
+ return addresses?
+ < civodul> tschwinge: Roland's change looks good to me, so it could have
+ been a GCC bug
+ < civodul> tschwinge: OK to commit the patch to t/init-first.c (with both
+ data[-1] replaced)?
+ < tschwinge> civodul: OK, if you are confident that it works with GCC 4.4
+ onwards. If yes, please add your changelog snippet to .topmsg, and also
+ add a not that Roland's original code may in fact have been fine, and we
+ may have hit a compiler bug.
+ < civodul> tschwinge: OK, will do
+ < civodul> tschwinge: though regarding Roland's change, i'd prefer to
+ actually test and see
+ < tschwinge> civodul: Thanks!
diff --git a/open_issues/glibc_ioctls.mdwn b/open_issues/glibc_ioctls.mdwn
new file mode 100644
index 00000000..14329d0f
--- /dev/null
+++ b/open_issues/glibc_ioctls.mdwn
@@ -0,0 +1,72 @@
+[[!meta copyright="Copyright © 2010 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_glibc]]
+
+IRC, unknown channel, unknown date.
+
+ <pinotree> d'oh, broken defines for ioctl()!
+ <pinotree> http://paste.debian.net/45021/ ← any idea about this? looks like something fishy with the SIO* defines
+ <pinotree> tschwinge: ↑ know anything about this?
+ <pinotree> #define _IOT_arpreq _IOT_SIMPLE (struct arpreq) ← looks like it is missing for bits/ioctls.h
+ <pinotree> eglibc patch submitted-ioctl-unsigned-size_t.diff should be pimped a bit
+
+ <pinotree> youpi: while trying to compile ossp-uuid (needed by pgsql 8.4, needed by various other stuff), i found a bug in a hurd libc header
+ <youpi> that's possible
+ <pinotree> it has a ioctrl() using an id with a value having type 'struct arpreq'
+ <youpi> ah, that's not a bug then
+ <youpi> see the ioctl section of the porting page of the wiki
+ <pinotree> due to the sort of "mangling" done in bits/ioctrls.h, there should be an helper macro for the size of the struct arpreq
+ <pinotree> +#define _IOT_arpreq _IOT_SIMPLE (struct arpreq) ← adding this before any header was enough
+ * pinotree looks
+ <youpi> it's not to be done so simply
+ <youpi> see the page :)
+ <youpi> I'm afraid _IOT_arpreq can't be properly defined
+ * pinotree is not finding it...
+ <pinotree> the closest i see is http://lists.gnu.org/archive/html/bug-hurd/2006-03/msg00025.html
+ <youpi> that's it yes
+ <youpi> I mean, that's the kind of thing
+ <youpi> but not the wiki page, let me look
+ <youpi> http://www.gnu.org/software/hurd/hurd/porting/guidelines.html
+ <pinotree> i also saw a glib patch adding few types like that (char, short, int)
+ <youpi> yes that's the same kind of thing
+ <pinotree> i see
+ <youpi> setting it to _IOT_SIMPLE(struct arpreq) would probably work with 32bit gnumach and 32bit userland, but may not with e.g. 64bit gnumach and 32bit userland and such
+ <pinotree> hmmm, sockaddr,sockaddr,int,sockaddr,char[16]
+ <pinotree> so basically it would support at most 3 elements in a passed struct?
+ <pinotree> s/elements/fields/
+ <youpi> 3 kinds of fields
+ <youpi> as you provide a count
+ <pinotree> youpi: so basically: #define _IOT_arpreq _IOT (_IOTS (struct sockaddr), 3, _IOTS (int), 1, _IOTS (char), 16) ?
+ <pinotree> ie the order of the fields in the struct does not matter, it seems?
+ <youpi> the order of the fields does matter
+ <youpi> as this encodes how mig will read the struct to send them
+ <pinotree> uhm
+ <youpi> also, _IOTS(struct sockaddr) won't work
+ <pinotree> yeah i should define it too
+ <youpi> no, it even needs to be replaced by its content
+ <pinotree> ah
+ <pinotree> it is possible to compose the _IOTS()?
+ <pinotree> (to build structs with more than 3 kind of fields)
+ <youpi> no
+ <pinotree> d'oh
+ <youpi> that's a hard shortcoming of the whole ioctl encoding
+ * pinotree scratches his head
+ <youpi> there's no way but redefining ioctl(), really
+ <youpi> it was a funny trick to encode it this way, but unrealistic
+ <pinotree> i see, yes
+ <youpi> not to mention ioctls which contain pointers, which just can not be passed to mig
+ <pinotree> indeed
+ <youpi> actually it's not mach's ioctl issue
+ <youpi> as mach doesn't know ioctl
+ <youpi> but the hurd ioctl interface
+ <pinotree> right
+ <youpi> which might end up in mach, other processes, other machines, etc.
+ * pinotree s/Mach/Hurd/ :)
diff --git a/open_issues/glibc_libpthread_robust_mutexes.mdwn b/open_issues/glibc_libpthread_robust_mutexes.mdwn
new file mode 100644
index 00000000..a92c984d
--- /dev/null
+++ b/open_issues/glibc_libpthread_robust_mutexes.mdwn
@@ -0,0 +1,54 @@
+[[!meta copyright="Copyright © 2010 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_glibc open_issue_libpthread]]
+
+libpthread: glibc 44e2ad5ab8c21dbfed3e384ba2ed31d7a8fc4744
+998e5fc14595229101561d76282036839e5b66ab -- The robust mutex functions are in
+POSIX 2008.
+
+---
+
+IRC, #hurd, unknown date.
+
+ <youpi> neal: bad news: you remember the PTHREAD_RECURSIVE_MUTEX_INITIALIZER that points to a global __pthread_recursive_mutexattr?
+ <youpi> that doesn't work
+ <youpi> because some libraries like libstdc++ do not link against libpthread, while still using pthread_mutex_lock/unlock (counting on them being provided by either libc or libpthread-stubs)
+ <CIA-1> sthibaul-guest * r626 pkg-hurd/hurd/trunk/debian/ (changelog patches/series):
+ <CIA-1> * debian/patches/libpthread_rwlock_initializer.patch: Disable patch for now:
+ <CIA-1> our initializer does not work when the application does not link against
+ <CIA-1> libpthread.
+
+ <CIA-1> sthibaul-guest * r629 pkg-hurd/hurd/trunk/debian/ (changelog patches/series): do not disable adding PTHREAD_RWLOCK_INITIALIZER, that's not the one that poses problems
+ <CIA-1> sthibaul-guest * r630 pkg-hurd/hurd/trunk/debian/ (3 files in 2 dirs):
+ <CIA-1> * debian/patches/libpthread_no_recursive_mutex_initializer.patch: New patch
+ <CIA-1> to drop undefined references to __pthread_recursive_mutexattr.
+
+ <youpi> I'm thinking about how to fix the PTHREAD_RECURSIVE_MUTEX_INITIALIZER
+ <youpi> instead of a pointer to a static attribute variable, which posed problem
+ <youpi> could we perhaps consider that page 0 is never mapped
+ <youpi> and thus not only pointer 0 but also 1 2, etc. are invalid
+ <neal> I think that is a good solution
+ <youpi> and use them as special values
+ <neal> alternatively, we could assume that -PAGESIZE is never valid
+ <youpi> that makes us test it in all pthread_mutex_* functions, but it's not so bad
+ <neal> I'm not sure which is better
+ <youpi> why isn't it?
+ <neal> because the kernel is mapped there normally
+ <youpi> the kernel could be elsewhere
+ <neal> true
+ <youpi> in a 64bit adressing space for instance
+ <neal> I think your solution is a good one
+ <youpi> ok
+
+ <CIA-1> sthibault * r633 pkg-hurd/hurd/trunk/debian/ (3 files in 2 dirs):
+ <CIA-1> * debian/patches/libpthread_recursive_mutex_initializer.patch: New patch
+ <CIA-1> to fix the recursive mutex initializers usage in libraries not linking
+ <CIA-1> against libpthread.
diff --git a/open_issues/glibc_madvise_vs_static_linking.mdwn b/open_issues/glibc_madvise_vs_static_linking.mdwn
new file mode 100644
index 00000000..6238bc77
--- /dev/null
+++ b/open_issues/glibc_madvise_vs_static_linking.mdwn
@@ -0,0 +1,26 @@
+[[!meta copyright="Copyright © 2010, 2011 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_glibc]]
+
+ $ echo 'int main() {}' | gcc -o /dev/null -static -x c -
+ /usr/lib/gcc/i486-gnu/4.4.5/../../../libcrt.a(malloc.o): In function `_int_free':
+ (.text+0xdc3): warning: warning: madvise is not implemented and will always fail
+
+This is correct, but it does confuse GNU Autoconf, for example, which then
+thinks that static linking is not supported and sets a flag accordingly, which
+luckly no / not many packages use.
+
+*This call does not influence the semantics of the application (except in the
+case of MADV_DONTNEED), but may influence its performance. The kernel is free
+to ignore the advice.* (`man madvise`), so we may simply want to turn it into a
+no-op in glibc, avoiding the link-time warning.
+
+2011-07: This is what Samuel has done for Debian glibc.
diff --git a/open_issues/glibc_ptrace.mdwn b/open_issues/glibc_ptrace.mdwn
new file mode 100644
index 00000000..b4c529d7
--- /dev/null
+++ b/open_issues/glibc_ptrace.mdwn
@@ -0,0 +1,47 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="glibc: ptrace"]]
+
+[[!tag open_issue_glibc]]
+
+`ptrace` has some issues (`sysdeps/mach/hurd/ptrace.c`).
+
+ * Our implementation (and the generic one in `misc/ptrace.c`) differ
+ from the Linux one (`sysdeps/unix/sysv/linux/ptrace.c`)
+ w.r.t. handling of...
+
+ * the third argument: `int data` vs. `void *data`;
+
+ * `void *addr2` -- Linux doesn't have this, but we provide some
+ additional functionalty using this;
+
+ * function declaration: Linux has **`long`** `int ptrace (enum
+ __ptrace_request __request, ...)` **`__THROW`**, we have `int ptrace
+ (enum __ptrace_request __request, ...)`;
+
+ * interface do differ, e.g., Linux' `PTRACE_GETREGS` uses `void
+ *data`, we use `void *addr` for returning the struct, and in
+ Linux this is a `struct user_regs_struct` from `linux/user.h`,
+ and for us it is a `struct i386_thread_state` from
+ `mach/i386/thread_status.h`;
+
+ * Linux probides some functionality that we don't provide, e.g.,
+ `PTRACE_SINGLESTEP`.
+
+ * Some parts are wrongly implemented, e.g., `PTRACE_GETREGS` and
+ `PTRACE_SETREGS` both do the same thing.
+
+ * `return` values are wrong, e.g., `return EOPNOTSUPP` should instead
+ set `errno = EOPNOTSUPP` and `return -1` in a few places (but not
+ with the three `PTRACE_PEEK*` requests.
+
+Also consider the `sysdeps/generic/sys/ptrace.h` and
+`sysdeps/unix/sysv/linux/sys/ptrace.h` files.
diff --git a/open_issues/glibc_tls_segment_tcbhead_t_dtv_offset.mdwn b/open_issues/glibc_tls_segment_tcbhead_t_dtv_offset.mdwn
new file mode 100644
index 00000000..47f104c6
--- /dev/null
+++ b/open_issues/glibc_tls_segment_tcbhead_t_dtv_offset.mdwn
@@ -0,0 +1,28 @@
+[[!meta copyright="Copyright © 2010 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_glibc]]
+
+IRC, unknown channel, unknown date.
+
+ <youpi> you can hardcode DTV_OFFSET as 4 for now
+ <youpi> it's the offset of the dtv field in the tcbhead_t structure from hurd/libpthread
+ <tschwinge> youpi: May very well be that I'm misunderstanding something, but wouldn't it rather be the offset of tcb in __pthread + the offset of dtv in tcbhead_t (which indeed is 4)?
+ <youpi> what you don't know is that DTV_OFFSET is not relative to __pthread, but to the tls segment
+ <tschwinge> Oh, aha. Thanks.
+ <youpi> and drepper abused the fact that in nptl __pthread appears at the start of the tls segment
+
+kFreeBSD, glibc:
+
+ ++#if 0
+ + DTV_OFFSET offsetof(struct pthread, header.dtv)
+ ++#else
+ ++DTV_OFFSET offsetof(struct _pthread_descr_struct, p_header.data.dtvp)
+ ++#endif
diff --git a/open_issues/glusterfs.mdwn b/open_issues/glusterfs.mdwn
new file mode 100644
index 00000000..68518938
--- /dev/null
+++ b/open_issues/glusterfs.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+IRC, unknown channel, unknown date.
+
+ <antrik> "GlusterFS is one of the most sophisticated file system in terms of features and extensibility. It
+ <antrik> borrows a powerful concept called Translators from GNU Hurd kernel."
+ <antrik> seems to be more similar to libstore than actual translators, though
diff --git a/open_issues/gnat.mdwn b/open_issues/gnat.mdwn
new file mode 100644
index 00000000..30e38317
--- /dev/null
+++ b/open_issues/gnat.mdwn
@@ -0,0 +1,44 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta title="Enable Ada programming (GCC: GNAT)"]]
+
+[[!tag open_issue_gcc]]
+
+Make the Ada programming language available on GNU/Hurd in its [[GCC]] GNAT
+implementation, and enable Hurd-specific features.
+
+There is a [[!FF_project 259]][[!tag bounty]] on this task.
+
+---
+
+
+# Part I
+
+First, make the language functional, have its test suite pass without errors.
+
+
+## Original [[community/GSoC]] Task Description
+
+[[!inline pages=community/gsoc/project_ideas/gnat feeds=no]]
+
+---
+
+
+# Part II
+
+Next, Hurd-specific features can be added. Add an interface to the
+language/environment for being able to do [[RPC]] calls, in order to program
+[[hurd/translator]]s natively in Ada.
+
+
+## Original [[community/GSoC]] Task Description
+
+[[!inline pages=community/gsoc/project_ideas/language_bindings feeds=no]]
diff --git a/open_issues/gnumach_console_timestamp.mdwn b/open_issues/gnumach_console_timestamp.mdwn
new file mode 100644
index 00000000..52b574d5
--- /dev/null
+++ b/open_issues/gnumach_console_timestamp.mdwn
@@ -0,0 +1,29 @@
+[[!meta copyright="Copyright © 2011 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_gnumach]]
+
+There is a [[!FF_project 267]][[!tag bounty]] on this task.
+
+IRC, freenode, #hurd, 2011-02-17
+
+ <azeem> task 39011c10 deallocating an invalid port 349, most probably a
+ bug.
+ <azeem> kernel: Page fault (14), code=6
+ <azeem> Stopped at 0x28b9c7: orb %bh,0(%ecx,%edi,2)
+ <azeem> db>
+ [...]
+ <antrik> tschwinge: I doubt the deallocating warning is related to the
+ later fault
+ <tschwinge> antrik: YOu may be right.
+ <tschwinge> Perhaps it'd be a good idea to add some sort of timestamp to
+ Mach messages.
+ <tschwinge> Like in Linux' dmesg.
+ <tschwinge> Or just RDTSC (internal processor counter).
diff --git a/open_issues/gnumach_constants.mdwn b/open_issues/gnumach_constants.mdwn
new file mode 100644
index 00000000..16c8cf41
--- /dev/null
+++ b/open_issues/gnumach_constants.mdwn
@@ -0,0 +1,32 @@
+[[!meta copyright="Copyright © 2011 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_gnumach]]
+
+At compile-time, GNU Mach is parameterized with several constants. These might
+need some tuning. Debian has some patches.
+
+
+# IRC, freenode, #hurd, 2011-06-09
+
+ <braunr> youpi: in ipc/ipc_hash.c, there is code which computes the size of
+ the global (space, port)->entry hash table
+ <braunr> youpi: you may be interested in tuning this one too
+ <youpi> I know
+ <braunr> ok
+ <youpi> the current value is not so bad
+ <youpi> it's big enough for buildds to run fine
+ <braunr> 256 if i'm right
+ <braunr> well
+ <braunr> it won't fail
+ <youpi> we're limited by the 4000 object limitation anyway
+ <braunr> since it's a chained hash table
+ <braunr> but increasing it may help performances a bit
+ <braunr> and it certainly can't hurt much
diff --git a/open_issues/gnumach_general_protection_trap_gdb_vm_read.mdwn b/open_issues/gnumach_general_protection_trap_gdb_vm_read.mdwn
new file mode 100644
index 00000000..2df74301
--- /dev/null
+++ b/open_issues/gnumach_general_protection_trap_gdb_vm_read.mdwn
@@ -0,0 +1,142 @@
+[[!meta copyright="Copyright © 2010 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_gnumach]]
+
+IRC, unknown channel, unknown date.
+
+ <antrik> youpi: I have found an interesting Mach problem, but I'm a bit scared of debugging it...
+ <antrik> (it is related to VM stuff)
+ <antrik> I have a memory region that is mapped by the iopl device (it's an mmio region -- graphics memory to be precise)
+ <antrik> when gdb tries to read that region with vm_read() (for a "print" command), it triggers a general protection trap...
+ <youpi> antrik: does the general protection trap kill the whole kernel or just gdb?
+ <antrik> kernel
+ <antrik> kernel: General protection trap (13), code=0
+ <antrik> pmap_copy_page(41000000,49f2000,1,0,1)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../i386/i386/phys.c:62
+ <antrik> vm_object_copy_slowly(209c1c54,41000000,1000,1,20994908)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../vm/vm_object.c:1150
+ <antrik> vm_object_copy_strategically(209c1c54,41000000,1000,20994908,2099490c)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../vm/vm_object.c:1669
+ <antrik> vm_map_copyin(209ba6e4,2c000,1000,0,25394ec8)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../vm/vm_map.c:3297
+ <antrik> vm_read(209ba6e4,2c000,1000,208d303c,25394f00)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../vm/vm_user.c:228
+ <antrik> _Xvm_read(2095cfe4,208d3010,0,1fff3e48,2095cfd4)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/kern/mach.server.c:1164
+ <antrik> ipc_kobject_server(2095cfd4,2095cfe4,28,127ca0,0)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../kern/ipc_kobject.c:201
+ <antrik> mach_msg_trap(1024440,3,28,30,2c)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../ipc/mach_msg.c:1367
+ <antrik> Bad frame pointer: 0x102441c
+ <antrik> BTW, is it useful at all to write down the paramenters as well?...
+ <antrik> argments I mean
+ <youpi> in the trace you mean?
+ <antrik> yes
+ <youpi> apparently the problem here is that the call to vm_fault_page() didn't perform its task
+ <youpi> which address is faulty?
+ <antrik> not sure what you mean
+ <youpi> ah shit the gpf wouldn't tell you
+ <youpi> does examine 49f2000 work?
+ <youpi> oh, wait, 4100000, that can't work
+ <youpi> +0
+ <youpi> which physical address is your mmio at?
+ <antrik> haven't tried it... but I can provoke the fault again if it helps :-)
+ <youpi> we have the 1GB limitation issue
+ <antrik> oh... lemme check
+ <youpi> no need to, I think the problem is that
+ <youpi> the iopl driver should check that it's not above phys_last_addr
+ <antrik> it's only vm_read() that fails, though...
+ <antrik> the actual program I debugged in gdb works perfectly fine
+ <youpi> yes, but that's because it's accessing the memory in a different way
+ <youpi> in the case of direct reads it just uses the page table
+ <youpi> in the case of vm_read() it uses kernel's projection
+ <youpi> but in that case it's not in the kernel projection
+ <antrik> phys = 1090519040
+ <youpi> that's it, it's beyond 1GB
+ <youpi> there's not much to do except changing mach's adressing organization
+ <antrik> yeah, that's the 0x41000000
+ <antrik> hm... I guess we could make the vm_read() bail out instead of crashing?...
+ <youpi> yes
+ <youpi> but there are a lot of places like this
+ <antrik> still, it's not exactly fun when trying to debug a program and the kernel crashes :-)
+ <youpi> right :)
+ <antrik> I could try to add the check... if you tell me where it belongs ;-)
+ <youpi> antrik: it's not just one place, that's the problem
+ <youpi> it's all the places that call pmap_zero_page, pmap_copy_page, copy_to_phys or copy_from_phys
+ <youpi> and since we do want to let the iopl device create such kind of page, in principle we have to cope with them all
+ <youpi> pmap_zero_page should be ok, though
+ <youpi> the rest isn't
+ <antrik> is that tricky, or just a matter of doing it in all places?
+
+ <antrik> hm... now it crashed in "normal" usage as well...
+ <antrik> hm... a page fault trap for a change...
+ <antrik> hm... now gdb tried to vm_read() something that is mapped to physical address 0x0...
+ <antrik> so I guess I fucked something up in the mapping code
+ <antrik> is it expected that such a vm_read() causes a kernel page fault, though?...
+ <antrik> youpi: ^
+ <youpi> nope
+ <youpi> in principle the check for validity of the page is done earlier
+ <youpi> physical address 0x0 makes sense, though
+ <antrik> OK, here is the trace:
+ <antrik> Kernel page fault (14), code=0 at address 0x0
+ <antrik> pmap_copy_page(0,6e54000,1,0,1)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../i386/i386/phys.c:62
+ <antrik> vm_object_copy_slowly(20a067b0,0,1000,1,0acacec)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../vm/vm_object.c:1150
+ <antrik> vm_object_copy_strategically(20a067b0,0,1000,20acacec,20acacf0)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../vm/vm_object.c:1669
+ <antrik> vm_map_copyin(20a0f1c4,120d000,1000,0,253cdec8)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../vm/vm_map.c:3297
+ <antrik> vm_read(20a0f1c4,120d000,1000,20a5703c,253cdf00)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../vm/vm_user.c:228
+ <antrik> _Xvm_read(20a52c80,20a57010,253cdf40,20ae33cc,20a52c70)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/kern/mach.server.c:1164
+ <antrik> ipc_kobject_server(20a52c70,20a52c80,28,20873074,20873070)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../kern/ipc_kobject.c:201
+ <antrik> mach_msg_trap(10247d0,3,28,30,2f)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../ipc/mach_msg.c:1367
+ <antrik> Bad frame pointer: 0x10247ac
+ <antrik> seems to be exactly the same, except for the different arguments...
+ <antrik> hm... interesting... it *does* write something to the framebuffer, before it crashes...
+ <antrik> (which unfortunately makes it a bit hard to read the panic message... ;-) )
+ <LarstiQ> heh :)
+ <antrik> wait, it must write to something else than the frame buffer as well, or else the debugger should just paint over the crap...
+ <antrik> or perhaps it crashes so hard that the debugger doesn't even work? ;-)
+ <antrik> hm... I guess the first thing I should actually do is finding out what's up with e2fsck... this make testing crashes kinda annoying :-(
+ <antrik> oh, "interesting"... I ran it on one of my other hurd partitions, and it complained about an endless number of files... (perhaps all)
+ <antrik> however, the value for the normal files was different than for the passive translator nodes
+ <antrik> it doesn't happen only on crashes; it seems that all passive translators that are still in use at time of shutdown (or crash) have the offending bit set in the inode
+ <antrik> ouch... seems it doesn't write into the framebuffer after all, but rather scribbles all over the first 4 MiB of memory -- which includes also the VGA window, before it goes on killing the kernel...
+ <youpi> which iopl driver are you using ?
+ <antrik> ?
+ <youpi> the one from the debian patch?
+ <youpi> upstream, gnumach doesn't have an iopl device any more
+ <antrik> I guess so... standard Debian stuff here
+ <antrik> oh. how does X map the memory, then?
+ <youpi> X does yes
+ <antrik> ?
+ <youpi> X uses the iopl() device to access the video memory, yes
+ <youpi> I don't know if that was what you were asking for, but that's what I meant by my answer :)
+ <antrik> yeah, I know how it does *currently* do it -- I stole the code from there :-)
+ <antrik> my question is, how is X supposed to get at the framebuffer, when there is no iopl device anymore?
+ <youpi> ah, I hadn't noticed the "how" word
+ <youpi> in Debian there is
+ <LarstiQ> !debian → !x?
+ <youpi> the clean "access device memory" interface is yet to be done
+ <antrik> err... that sounds like Xorg philosophy
+ <youpi> what, to wait for a nice interface ?
+ <antrik> "let's kill the old stuff, fuck regressions... maybe someone will figure out how to do it with the new stuff at some point. if not, not our problem"
+ <youpi> that's also a GNU philosophy
+ <youpi> ah, that one
+ <antrik> anyone know how device_map() is supposed to behave? the documentation isn't really clear...
+ <antrik> my understanding was then when an offset is specified, then the resulting object will be relative to that object; i.e. the offset of a later vm_map() on this object is applied on top of the object's internal offset...
+ <antrik> but that doesn't seem to be how it works for the iopl device, if I read the xf86 code correctly...
+ <antrik> yeah, the offset parameter seems a nop when doing device_map() on the iopl device
diff --git a/open_issues/gnumach_kernel_threads.mdwn b/open_issues/gnumach_kernel_threads.mdwn
new file mode 100644
index 00000000..9591986b
--- /dev/null
+++ b/open_issues/gnumach_kernel_threads.mdwn
@@ -0,0 +1,23 @@
+[[!meta copyright="Copyright © 2011 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_gnumach]]
+
+IRC, freenode, #hurd, 2011-07-13
+
+ <braunr> jkoenig: why does gnumach appear as "root=device:hd0s1" in ps ?
+ <jkoenig> braunr, it's the closest we can do to its command line
+ <braunr> doesn't it deserve something special like kernel threads in linux
+ ?
+ <braunr> so that it's actually clear that it's a special task/process
+ <jkoenig> you mean something like [mach root=device:hd0s1] ?
+ <braunr> something like that yes
+ <braunr> also, it would be nice if gnumach threads could actually be seen,
+ i don't remember if the mach interface allows it though
diff --git a/open_issues/gnumach_memory_management.mdwn b/open_issues/gnumach_memory_management.mdwn
new file mode 100644
index 00000000..fb3d6895
--- /dev/null
+++ b/open_issues/gnumach_memory_management.mdwn
@@ -0,0 +1,1779 @@
+[[!meta copyright="Copyright © 2011 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_gnumach]]
+
+There is a [[!FF_project 266]][[!tag bounty]] on this task.
+
+[[!toc]]
+
+
+# IRC, freenode, #hurd, 2011-04-12
+
+ <antrik> braunr: do you think the allocator you wrote for x15 could be used
+ for gnumach? and would you be willing to mentor this? :-)
+ <braunr> antrik: to be willing to isn't my current problem
+ <braunr> antrik: and yes, I think my allocator can be used
+ <braunr> it's a slab allocator after all, it only requires reap() and
+ grow()
+ <braunr> or mmap()/munmap() whatever you want to call it
+ <braunr> a backend
+ <braunr> antrik: although i've been having other ideas recently
+ <braunr> that would have more impact on our usage patterns I think
+ <antrik> mcsim: have you investigated how the zone allocator works and how
+ it's hooked into the system yet?
+ <braunr> mcsim: now let me give you a link
+ <braunr> mcsim:
+ http://git.sceen.net/rbraun/libbraunr.git/?a=blob;f=mem.c;h=330436e799f322949bfd9e2fedf0475660309946;hb=HEAD
+ <braunr> mcsim: this is an implementation of the slab allocator i've been
+ working on recently
+ <braunr> mcsim: i haven't made it public because i reworked the per
+ processor layer, and this part isn't complete yet
+ <braunr> mcsim: you could use it as a reference for your project
+ <mcsim> braunr: ok
+ <braunr> it used to be close to the 2001 vmem paper
+ <braunr> but after many tests, fragmentation and accounting issues have
+ been found
+ <braunr> so i rewrote it to be closer to the linux implementation (cache
+ filling/draining in bukl transfers)
+ <braunr> bulk*
+ <braunr> they actually use the word draining in linux too :)
+ <mcsim> antrik: not complete yet.
+ <antrik> braunr: oh, it's unfinished? that's unfortunate...
+ <braunr> antrik: only the per processor part
+ <braunr> antrik: so it doesn't matter much for gnumach
+ <braunr> and it's not difficult to set up
+ <antrik> mcsim: hm, OK... but do you think you will have a fairly good
+ understanding in the next couple of days?...
+ <antrik> I'm asking because I'd really like to see a proposal a bit more
+ specific than "I'll look into things..."
+ <antrik> i.e. you should have an idea which things you will actually have
+ to change to hook up a new allocator etc.
+ <antrik> braunr: OK. will the interface remain unchanged, so it could be
+ easily replaced with an improved implementation later?
+ <braunr> the zone allocator in gnumach is a badly written bare object
+ allocator actually, there aren't many things to understand about it
+ <braunr> antrik: yes
+ <antrik> great :-)
+ <braunr> and the per processor part should be very close to the phys
+ allocator sitting next to it
+ <braunr> (with the slight difference that, as per cpu caches have variable
+ sizes, they are allocated on the free path rather than on the allocation
+ path)
+ <braunr> this is a nice trick in the vmem paper i've kept in mind
+ <braunr> and the interface also allows to set a "source" for caches
+ <antrik> ah, good point... do you think we should replace the physmem
+ allocator too? and if so, do it in one step, or one piece at a time?...
+ <braunr> no
+ <braunr> too many drivers currently depend on the physical allocator and
+ the pmap module as they are
+ <braunr> remember linux 2.0 drivers need a direct virtual to physical
+ mapping
+ <braunr> (especially true for dma mappings)
+ <antrik> OK
+ <braunr> the nice thing about having a configurable memory source is that
+ <antrik> whot do you mean by "allocated on the free path"?
+ <braunr> even if most caches will use the standard vm_kmem module as their
+ backend
+ <braunr> there is one exception in the vm_map module, allowing us to get
+ rid of either a static limit, or specific allocation code
+ <braunr> antrik: well, when you allocate a page, the allocator will lookup
+ one in a per cpu cache
+ <braunr> if it's empty, it fills the cache
+ <braunr> (called pools in my implementations)
+ <braunr> it then retries
+ <braunr> the problem in the slab allocator is that per cpu caches have
+ variable sizes
+ <braunr> so per cpu pools are allocated from their own pools
+ <braunr> (remember the magazine_xx caches in the output i showed you, this
+ is the same thing)
+ <braunr> but if you allocate them at allocation time, you could end up in
+ an infinite loop
+ <braunr> so, in the slab allocator, when a per cpu cache is empty, you just
+ fall back to the slab layer
+ <braunr> on the free path, when a per cpu cache doesn't exist, you allocate
+ it from its own cache
+ <braunr> this way you can't have an infinite loop
+ <mcsim> antrik: I'll try, but I have exams now.
+ <mcsim> As I understand amount of elements which could be allocated we
+ determine by zone initialization. And at this time memory for zone is
+ reserved. I'm going to change this. And make something similar to kmalloc
+ and vmalloc (support for pages consecutive physically and virtually). And
+ pages in zones consecutive always physically.
+ <mcsim> Am I right?
+ <braunr> mcsim: don't try to do that
+ <mcsim> why?
+ <braunr> mcsim: we just need a slab allocator with an interface close to
+ the zone allocator
+ <antrik> mcsim: IIRC the size of the complete zalloc map is fixed; but not
+ the number of elements per zone
+ <braunr> we don't need two allocators like kmalloc and vmalloc
+ <braunr> actually we just need vmalloc
+ <braunr> IIRC the limits are only present because the original developers
+ wanted to track leaks
+ <braunr> they assumed zones would be large enough, which isn't true any
+ more today
+ <braunr> but i didn't see any true reservation
+ <braunr> antrik: i'm not sure i was clear enough about the "allocation of
+ cpu caches on the free path"
+ <braunr> antrik: for a better explanation, read the vmem paper ;)
+ <antrik> braunr: you mean there is no fundamental reason why the zone map
+ has a limited maximal size; and it was only put in to catch cases where
+ something eats up all memory with kernel object creation?...
+ <antrik> braunr: I think I got it now :-)
+ <braunr> antrik: i'm pretty certin of it yes
+ <antrik> I don't see though how it is related to what we were talking
+ about...
+ <braunr> 10:55 < braunr> and the per processor part should be very close to
+ the phys allocator sitting next to it
+ <braunr> the phys allocator doesn't have to use this trick
+ <braunr> because pages have a fixed size, so per cpu caches all have the
+ same size too
+ <braunr> and the number of "caches", that is, physical segments, is limited
+ and known at compile time
+ <braunr> so having them statically allocated is possible
+ <antrik> I see
+ <braunr> it would actually be very difficult to have a phys allocator
+ requiring dynamic allocation when the dynamic allocator isn't yet ready
+ <antrik> hehe :-)
+ <mcsim> total size of all zone allocations is limited to 12 MB. And is "was
+ only put in to catch cases where something eats up all memory with kernel
+ object creation?"
+ <braunr> mcsim: ah right, there could be a kernel submap backing all the
+ zones
+ <braunr> but this can be increased too
+ <braunr> submaps are kind of evil :/
+ <antrik> mcsim: I think it's actually 32 MiB or something like that in the
+ Debian version...
+ <antrik> braunr: I'm not sure I ever fully understood what the zalloc map
+ is... I looked through the code once, and I think I got a rough
+ understading, but I was still pretty uncertain about some bits. and I
+ don't remember the details anyways :-)
+ <braunr> antrik: IIRC, it's a kernel submap
+ <braunr> it's named kmem_map in x15
+ <antrik> don't know what a submap is
+ <braunr> submaps are vm_map objects
+ <braunr> in a top vm_map, there are vm_map_entries
+ <braunr> these entries usually point to vm_objects
+ <braunr> (for the page cache)
+ <braunr> but they can point to other maps too
+ <braunr> the goal is to reduce fragmentation by isolating allocations
+ <braunr> this also helps reducing contention
+ <braunr> for exemple, on BSD, there is a submap for mbufs, so that the
+ network code doesn't interfere too much with other kernel allocations
+ <braunr> antrik: they are similar to spans in vmem, but vmem has an elegant
+ importing mechanism which eliminates the static limit problem
+ <antrik> so memory is not directly allocated from the physical allocator,
+ but instead from another map which in turn contains physical memory, or
+ something like that?...
+ <braunr> no, this is entirely virtual
+ <braunr> submaps are almost exclusively used for the kernel_map
+ <antrik> you are using a lot of identifies here, but I don't remember (or
+ never knew) what most of them mean :-(
+ <braunr> sorry :)
+ <braunr> the kernel map is the vm_map used to represent the ~1 GiB of
+ virtual memory the kernel has (on i386)
+ <braunr> vm_map objects are simple virtual space maps
+ <braunr> they contain what you see in linux when doing /proc/self/maps
+ <braunr> cat /proc/self/maps
+ <braunr> (linux uses entirely different names but it's roughly the same
+ structure)
+ <braunr> each line is a vm_map_entry
+ <braunr> (well, there aren't submaps in linux though)
+ <braunr> the pmap tool on netbsd is able to show the kernel map with its
+ submaps, but i don't have any image around
+ <mcsim> braunr: is limit for zones is feature and shouldn't be changed?
+ <braunr> mcsim: i think we shouldn't have fixed limits for zones
+ <braunr> mcsim: this should be part of the debugging facilities in the slab
+ allocator
+ <braunr> is this fixed limit really a major problem ?
+ <braunr> i mean, don't focus on that too much, there are other issues
+ requiring more attention
+ <antrik> braunr: at 12 MiB, it used to be, causing a lot of zalloc
+ panics. after increasing, I don't think it's much of a problem anymore...
+ <antrik> but as memory sizes grow, it might become one again
+ <antrik> that's the problem with a fixed size...
+ <braunr> yes, that's the issue with submaps
+ <braunr> but gnumach is full of those, so let's fix them by order of
+ priority
+ <antrik> well, I'm still trying to digest what you wrote about submaps :-)
+ <braunr> i'm downloading netbsd, so you can have a good view of all this
+ <antrik> so, when the kernel allocates virtual address space regions
+ (mostly for itself), instead of grabbing chunks of the address space
+ directly, it takes parts out of a pre-reserved region?
+ <braunr> not exactly
+ <braunr> both statements are true
+ <mcsim> antrik: only virtual addresses are reserved
+ <braunr> it grabs chunks of the address space directly, but does so in a
+ reserved region of the address space
+ <braunr> a submap is like a normal map, it has a start address, a size, and
+ is empty, then it's populated with vm_map_entries
+ <braunr> so instead of allocating from 3-4 GiB, you allocate from, say,
+ 3.1-3.2 GiB
+ <antrik> yeah, that's more or less what I meant...
+ <mcsim> braunr: I see two problems: limited zones and absence of caching.
+ <mcsim> with caching absence of readahead paging will be not so significant
+ <braunr> please avoid readahead
+ <mcsim> ok
+ <braunr> and it's not about paging, it's about kernel memory, which is
+ wired
+ <braunr> (well most of it)
+ <braunr> what about limited zones ?
+ <braunr> the whole kernel space is limited, there has to be limits
+ <braunr> the problem is how to handle them
+ <antrik> braunr: almost all. I looked through all zones once, and IIRC I
+ found exactly one that actually allows paging...
+ <braunr> currently, when you reach the limit, you have an OOM error
+ <braunr> antrik: yes, there are
+ <braunr> i don't remember which implementation does that but, when
+ processes haven't been active for a minute or so, they are "swapedout"
+ <braunr> completely
+ <braunr> even the kernel stack
+ <braunr> and the page tables
+ <braunr> (most of the pmap structures are destroyed, some are retained)
+ <antrik> that might very well be true... at least inactive processes often
+ show up with 0 memory use in top on Hurd
+ <braunr> this is done by having a pageable kernel map, with wired entries
+ <braunr> when the swapper thread swaps tasks out, it unwires them
+ <braunr> but i think modern implementations don't do that any more
+ <antrik> well, I was talking about zalloc only :-)
+ <braunr> oh
+ <braunr> so the zalloc_map must be pageable
+ <braunr> or there are two submaps ?
+ <antrik> not sure whether "morden implementations" includes Linux ;-)
+ <braunr> no, i'm talking about the bsd family only
+ <antrik> but it's certainly true that on Linux even inactive processes
+ retain some memory
+ <braunr> linux doesn't make any difference between processor-bound and
+ I/O-bound processes
+ <antrik> braunr: I have no idea how it works. I just remember that when
+ creating zones, one of the optional flags decides whether the zone is
+ pagable. but as I said, IIRC there is exactly one that actually is...
+ <braunr> zone_map = kmem_suballoc(kernel_map, &zone_min, &zone_max,
+ zone_map_size, FALSE);
+ <braunr> kmem_suballoc(parent, min, max, size, pageable)
+ <braunr> so the zone_map isn't
+ <antrik> IIRC my conclusion was that pagable zones do not count in the
+ fixed zone map limit... but I'm not sure anymore
+ <braunr> zinit() has a memtype parameter
+ <braunr> with ZONE_PAGEABLE as a possible flag
+ <braunr> this is wierd :)
+ <mcsim> There is no any zones which use ZONE_PAGEABLE flag
+ <antrik> mcsim: are you sure? I think I found one...
+ <braunr> if (zone->type & ZONE_PAGEABLE) {
+ <antrik> admittedly, it is several years ago that I looked into this, so my
+ memory is rather dim...
+ <braunr> if (kmem_alloc_pageable(zone_map, &addr, ...
+ <braunr> calling kmem_alloc_pageable() on an unpageable submap seems wrong
+ <mcsim> I've greped gnumach code and there is no any zinit procedure call
+ with ZONE_PAGEABLE flag
+ <braunr> good
+ <antrik> hm... perhaps it was in some code that has been removed
+ alltogether since ;-)
+ <antrik> actually I think it would be pretty neat to have pageable kernel
+ objects... but I guess it would require considerable effort to implement
+ this right
+ <braunr> mcsim: you also mentioned absence of caching
+ <braunr> mcsim: the zone allocator actually is a bare caching object
+ allocator
+ <braunr> antrik: no, it's easy
+ <braunr> antrik: i already had that in x15 0.1
+ <braunr> antrik: the problem is being sure the objects you allocate from a
+ pageable backing store are never used when resolving a page fault
+ <braunr> that's all
+ <antrik> I wouldn't expect that to be easy... but surely you know better
+ :-)
+ <mcsim> braunr: indeed. I was wrong.
+ <antrik> braunr: what is a caching object allocator?...
+ <braunr> antrik: ok, it's not easy
+ <braunr> antrik: but once you have vm_objects implemented, having pageable
+ kernel object is just a matter of using the right options, really
+ <braunr> antrik: an allocator that caches its buffers
+ <braunr> some years ago, the term "object" would also apply to
+ preconstructed buffers
+ <antrik> I have no idea what you mean by "caches its buffers" here :-)
+ <braunr> well, a memory allocator which doesn't immediately free its
+ buffers caches them
+ <mcsim> braunr: but can it return objects to system?
+ <braunr> mcsim: which one ?
+ <antrik> yeah, obviously the *implementation* of pageable kernel objects is
+ not hard. the tricky part is deciding which objects can be pageable, and
+ which need to be wired...
+ <mcsim> Can zone allocator return cached objects to system as in slab?
+ <mcsim> I mean reap()
+ <braunr> well yes, it does so, and it does that too often
+ <braunr> the caching in the zone allocator is actually limited to the
+ pagesize
+ <braunr> once page is completely free, it is returned to the vm
+ <mcsim> this is bad caching
+ <braunr> yes
+ <mcsim> if object takes all page than there is now caching at all
+ <braunr> caching by side effect
+ <braunr> true
+ <braunr> but the linux slab allocator does the same thing :p
+ <braunr> hm
+ <braunr> no, the solaris slab allocator does so
+ <mcsim> linux's slab returns objects only when system ask
+ <antrik> without preconstructed objects, is there actually any point in
+ caching empty slabs?...
+ <mcsim> Once I've changed my allocator to slab and it cached more than 1GB
+ of my memory)
+ <braunr> ok wait, need to fix a few mistakes first
+ <mcsim> s/ask/asks
+ <braunr> the zone allocator (in gnumach) actually has a garbage collector
+ <antrik> braunr: well, the Solaris allocator follows the slab/magazine
+ paper, right? so there is caching at the magazine layer... in that case
+ caching empty slabs too would be rather redundant I'd say...
+ <braunr> which is called when running low on memory, similar to the slab
+ allocaotr
+ <braunr> antrik: yes
+ <antrik> (or rather the paper follows the Solaris allocator ;-) )
+ <braunr> mcsim: the zone allocator reap() is zone_gc()
+ <antrik> braunr: hm, right, there is a "collectable" flag for zones... but
+ I never understood what it means
+ <antrik> braunr: BTW, I heard Linux has yet another allocator now called
+ "slob"... do you happen to know what that is?
+ <braunr> slob is a very simple allocator for embedded devices
+ <mcsim> AFAIR this is just heap allocator
+ <braunr> useful when you have a very low amount of memory
+ <braunr> like 1 MiB
+ <braunr> yes
+ <antrik> just googled it :-)
+ <braunr> zone and slab are very similar
+ <antrik> sounds like a simple heap allocator
+ <mcsim> there is another allocator that calls slub, and it better than slab
+ in many cases
+ <braunr> the main difference is the data structures used to store slabs
+ <braunr> mcsim: i disagree
+ <antrik> mcsim: ah, you already said that :-)
+ <braunr> mcsim: slub is better for systems with very large amounts of
+ memory and processors
+ <braunr> otherwise, slab is better
+ <braunr> in addition, there are accounting issues with slub
+ <braunr> because of cache merging
+ <mcsim> ok. This strange that slub is default allocator
+ <braunr> well both are very good
+ <braunr> iirc, linus stated that he really doesn't care as long as its
+ works fine
+ <braunr> he refused slqb because of that
+ <braunr> slub is nice because it requires less memory than slab, while
+ still being as fast for most cases
+ <braunr> it gets slower on the free path, when the cpu performing the free
+ is different from the one which allocated the object
+ <braunr> that's a reasonable cost
+ <mcsim> slub uses heap for large object. Are there any tests that compare
+ what is better for large objects?
+ <antrik> well, if slub requires less memory, why do you think slab is
+ better for smaller systems? :-)
+ <braunr> antrik: smaller is relative
+ <antrik> mcsim: for large objects slab allocation is rather pointless, as
+ you don't have multiple objects in a page anyways...
+ <braunr> antrik: when lameter wrote slub, it was intended for systems with
+ several hundreds processors
+ <antrik> BTW, was slqb really refused only because the other ones are "good
+ enough"?...
+ <braunr> yes
+ <antrik> wow, that's a strange argument...
+ <braunr> linus is already unhappy of having "so many" allocators
+ <antrik> well, if the new one is better, it could replace one of the others
+ :-)
+ <antrik> or is it useful only in certain cases?
+ <braunr> that's the problem
+ <braunr> nobody really knows
+ <antrik> hm, OK... I guess that should be tested *before* merging ;-)
+ <antrik> is anyone still working on it, or was it abandonned?
+ <antrik> mcsim: back to caching...
+ <antrik> what does caching in the kernel object allocator got to do with
+ readahead (i.e. clustered paging)?...
+ <mcsim> if we cached some physical pages we don't need to find new ones for
+ allocating new object. And that's why there will not be a page fault.
+ <mcsim> antrik: Regarding kam. Hasn't he finished his project?
+ <antrik> err... what?
+ <antrik> one of us must be seriously confused
+ <antrik> I totally fail to see what caching of physical pages (which isn't
+ even really a correct description of what slab does) has to do with page
+ faults
+ <antrik> right, KAM didn't finish his project
+ <mcsim> If we free the physical page and return it to system we need
+ another one for next allocation. But if we keep it, we don't need to find
+ new physical page.
+ <mcsim> And physical page is allocated only then when page fault
+ occurs. Probably, I'm wrong
+ <antrik> what does "return to system" mean? we are talking about the
+ kernel...
+ <antrik> zalloc/slab are about allocating kernel objects. this doesn't have
+ *anything* to do with paging of userspace processes
+ <antrik> only thing the have in common is that they need to get pages from
+ the physical page allocator. but that's yet another topic
+ <mcsim> Under "return to system" I mean ability to use this page for other
+ needs.
+ <braunr> mcsim: consider kernel memory to be wired
+ <braunr> here, return to system means releasing a page back to the vm
+ system
+ <braunr> the vm_kmem module then unmaps the physical page and free its
+ virtual address in the kernel map
+ <mcsim> ok
+ <braunr> antrik: the problem with new allocators like slqb is that it's
+ very difficult to really know if they're better, even with extensive
+ testing
+ <braunr> antrik: there are papers (like wilson95) about the difficulties in
+ making valuable results in this field
+ <braunr> see
+ http://www.sceen.net/~rbraun/dynamic_storage_allocation_a_survey_and_critical_review.pdf
+ <mcsim> how can be allocated physically continuous object now?
+ <braunr> mcsim: rephrase please
+ <mcsim> what is similar to kmalloc in Linux to gnumach?
+ <braunr> i know memory is reserved for dma in a direct virtual to physical
+ mapping
+ <braunr> so even if the allocation is done similarly to vmalloc()
+ <braunr> the selected region of virtual space maps physical memory, so
+ memory is physically contiguous too
+ <braunr> for other allocation types, a block large enough is allocated, so
+ it's contiguous too
+ <mcsim> I don't clearly understand. If we have fragmentation in physical
+ ram, so there aren't 2 free pages in a row, but there are able apart, we
+ can't to allocate these 2 pages along?
+ <braunr> no
+ <braunr> but every system has this problem
+ <mcsim> But since we have only 12 or 32 MB of memory the problem becomes
+ more significant
+ <braunr> you're confusing virtual and physical memory
+ <braunr> those 32 MiB are virtual
+ <braunr> the physical pages backing them don't have to be contiguous
+ <mcsim> Oh, indeed
+ <mcsim> So the only problem are limits?
+ <braunr> and performance
+ <braunr> and correctness
+ <braunr> i find the zone allocator badly written
+ <braunr> antrik: mcsim: here is the content of the kernel pmap on NetBSD
+ (which uses a virtual memory system close to the Mach VM)
+ <braunr> antrik: mcsim: http://www.sceen.net/~rbraun/pmap.out
+
+[[pmap.out]]
+
+ <braunr> you can see the kmem_map (which is used for most general kernel
+ allocations) is 128 MiB large
+ <braunr> actually it's not the kernel pmap, it's the kernel_map
+ <antrik> braunr: why is it called pmap.out then? ;-)
+ <braunr> antrik: because the tool is named pmap
+ <braunr> for process map
+ <braunr> it also exists under Linux, although direct access to
+ /proc/xx/maps gives more info
+ <mcsim> braunr: I've said that this is kernel_map. Can I see kernel_map for
+ Linux?
+ <braunr> mcsim: I don't know how to do that
+ <mcsim> s/I've/You've
+ <braunr> but Linux doesn't have submaps, and uses a direct virtual to
+ physical mapping, so it's used differently
+ <antrik> how are things (such as zalloc zones) entered into kernel_map?
+ <braunr> in zone_init() you have
+ <braunr> zone_map = kmem_suballoc(kernel_map, &zone_min, &zone_max,
+ zone_map_size, FALSE);
+ <braunr> so here, kmem_map is named zone_map
+ <braunr> then, in zalloc()
+ <braunr> kmem_alloc_wired(zone_map, &addr, zone->alloc_size)
+ <antrik> so, kmem_alloc just deals out chunks of memory referenced directly
+ by the address, and without knowing anything about the use?
+ <braunr> kmem_alloc() gives virtual pages
+ <braunr> zalloc() carves them into buffers, as in the slab allocator
+ <braunr> the difference is essentially the lack of formal "slab" object
+ <braunr> which makes the zone code look like a mess
+ <antrik> so kmem_suballoc() essentially just takes a bunch of pages from
+ the main kernel_map, and uses these to back another map which then in
+ turn deals out pages just like the main kernel_map?
+ <braunr> no
+ <braunr> kmem_suballoc creates a vm_map_entry object, and sets its start
+ and end address
+ <braunr> and creates a vm_map object, which is then inserted in the new
+ entry
+ <braunr> maybe that's what you meant with "essentially just takes a bunch
+ of pages from the main kernel_map"
+ <braunr> but there really is no allocation at this point
+ <braunr> except the map entry and the new map objects
+ <antrik> well, I'm trying to understand how kmem_alloc() manages things. so
+ it has map_entry structures like the maps of userspace processes? do
+ these also reference actual memory objects?
+ <braunr> kmem_alloc just allocates virtual pages from a vm_map, and backs
+ those with physical pages (unless the user requested pageable memory)
+ <braunr> it's not "like the maps of userspace processes"
+ <braunr> these are actually the same structures
+ <braunr> a vm_map_entry can reference a memory object or a kernel submap
+ <braunr> in netbsd, it can also referernce nothing (for pure wired kernel
+ memory like the vm_page array)
+ <braunr> maybe it's the same in mach, i don't remember exactly
+ <braunr> antrik: this is actually very clear in vm/vm_kern.c
+ <braunr> kmem_alloc() creates a new kernel object for the allocation
+ <braunr> allocates a new entry (or uses a previous existing one if it can
+ be extended) through vm_map_find_entry()
+ <braunr> then calls kmem_alloc_pages() to back it with wired memory
+ <antrik> "creates a new kernel object" -- what kind of kernel object?
+ <braunr> kmem_alloc_wired() does roughly the same thing, except it doesn't
+ need a new kernel object because it knows the new area won't be pageable
+ <braunr> a simple vm_object
+ <braunr> used as a container for anonymous memory in case the pages are
+ swapped out
+ <antrik> vm_object is the same as memory object/pager? or yet something
+ different?
+ <braunr> antrik: almost
+ <braunr> antrik: a memory_object is the user view of a vm_object
+ <braunr> as in the kernel/user interfaces used by external pagers
+ <braunr> vm_object is a more internal name
+ <mcsim> Is fragmentation a big problem in slab allocator?
+ <mcsim> I've tested it on my computer in Linux and for some caches it
+ reached 30-40%
+ <antrik> well, fragmentation is a major problem for any allocator...
+ <antrik> the original slab allocator was design specifically with the goal
+ of reducing fragmentation
+ <antrik> the revised version with the addition of magazines takes a step
+ back on this though
+ <antrik> have you compared it to slub? would be pretty interesting...
+ <mcsim> I have an idea how can it be decreased, but it will hurt by
+ performance...
+ <mcsim> antrik: no I haven't, but there will be might the same, I think
+ <mcsim> if each cache will handle two types of object: with sizes that will
+ fit cache sizes (or I bit smaller) and with sizes which are much smaller
+ than maximal cache size. For first type of object will be used standard
+ slab allocator and for latter type will be used (within page) heap
+ allocator.
+ <mcsim> I think that than fragmentation will be decreased
+ <antrik> not at all. heap allocator has much worse fragmentation. that's
+ why slab allocator was invented
+ <antrik> the problem is that in a long-running program (such an the
+ kernel), objects tend to have vastly varying lifespans
+ <mcsim> but we use heap only for objects of specified sizes
+ <antrik> so often a few old objects will keep a whole page hostage
+ <mcsim> for example for 32 byte cache it could be 20-28 byte objects
+ <antrik> that's particularily visible in programs such as firefox, which
+ will grow the heap during use even though actual needs don't change
+ <antrik> the slab allocator groups objects in a fashion that makes it more
+ likely adjacent objects will be freed at similar times
+ <antrik> well, that's pretty oversimplyfied, but I hope you get the
+ idea... it's about locality
+ <mcsim> I agree, but I speak not about general heap allocation. We have
+ many heaps for objects with different sizes.
+ <mcsim> Could it be better?
+ <antrik> note that this has been a topic of considerable research. you
+ shouldn't seek to improve the actual algorithms -- you would have to read
+ up on the existing research at least before you can contribute anything
+ to the field :-)
+ <antrik> how would that be different from the slab allocator?
+ <mcsim> slab will allocate 32 byte for both 20 and 32 byte requests
+ <mcsim> And if there was request for 20 bytes we get 12 unused
+ <antrik> oh, you mean the implementation of the generic allocator on top of
+ slabs? well, that might not be optimal... but it's not an often used case
+ anyways. mostly the kernel uses constant-sized objects, which get their
+ own caches with custom tailored size
+ <antrik> I don't think the waste here matters at all
+ <mcsim> affirmative. So my idea is useless.
+ <antrik> does the statistic you refer to show the fragmentation in absolute
+ sizes too?
+ <mcsim> Can you explain what is absolute size?
+ <mcsim> I've counted what were requested (as parameter of kmalloc) and what
+ was really allocated (according to best fit cache size).
+ <antrik> how did you get that information?
+ <mcsim> I simply wrote a hook
+ <antrik> I mean total. i.e. how many KiB or MiB are wasted due to
+ fragmentation alltogether
+ <antrik> ah, interesting. how does it work?
+ <antrik> BTW, did you read the slab papers?
+ <mcsim> Do you mean articles from lwn.net?
+ <antrik> no
+ <antrik> I mean the papers from the Sun hackers who invented the slab
+ allocator(s)
+ <antrik> Bonwick mostly IIRC
+ <mcsim> Yes
+ <antrik> hm... then you really should know the rationale behind it...
+ <mcsim> There he says about 11% percent of memory waste
+ <antrik> you didn't answer my other questions BTW :-)
+ <mcsim> I've corrupted kernel tree with patch, and tomorrow I'm going to
+ read myself up for exam (I have it on Thursday). But than I'll send you a
+ module which I've used for testing.
+ <antrik> OK
+ <mcsim> I can send you module now, but it will not work without patch.
+ <mcsim> It would be better to rewrite it using debugfs, but when I was
+ writing this test I didn't know about trace_* macros
+
+
+# IRC, freenode, #hurd, 2011-04-15
+
+ <mcsim> There is a hack in zone_gc when it allocates and frees two
+ vm_map_kentry_zone elements to make sure the gc will be able to allocate
+ two in vm_map_delete. Isn't it better to allocate memory for these
+ entries statically?
+ <youpi> mcsim: that's not the point of the hack
+ <youpi> mcsim: the point of the hack is to make sure vm_map_delete will be
+ able to allocate stuff
+ <youpi> allocating them statically will just work once
+ <youpi> it may happen several times that vm_map_delete needs to allocate it
+ while it's empty (and thus zget_space has to get called, leading to a
+ hang)
+ <youpi> funnily enough, the bug is also in macos X
+ <youpi> it's still in my TODO list to manage to find how to submit the
+ issue to them
+ <braunr> really ?
+ <braunr> eh
+ <braunr> is that because of map entry splitting ?
+ <youpi> it's git commit efc3d9c47cd744c316a8521c9a29fa274b507d26
+ <youpi> braunr: iirc something like this, yes
+ <braunr> netbsd has this issue too
+ <youpi> possibly
+ <braunr> i think it's a fundamental problem with the design
+ <braunr> people think of munmap() as something similar to free()
+ <braunr> whereas it's really unmap
+ <braunr> with a BSD-like VM, unmap can easily end up splitting one entry in
+ two
+ <braunr> but your issue is more about harmful recursion right ?
+ <youpi> I don't remember actually
+ <youpi> it's quite some time ago :)
+ <braunr> ok
+ <braunr> i think that's why i have "sources" in my slab allocator, the
+ default source (vm_kern) and a custom one for kernel map entries
+
+
+# IRC, freenode, #hurd, 2011-04-18
+
+ <mcsim> braunr: you've said that once page is completely free, it is
+ returned to the vm.
+ <mcsim> who else, besides zone_gc, can return free pages to the vm?
+ <braunr> mcsim: i also said i was wrong about that
+ <braunr> zone_gc is the only one
+
+
+# IRC, freenode, #hurd, 2011-04-19
+
+ <braunr> antrik: mcsim: i added back a new per-cpu layer as planned
+ <braunr>
+ http://git.sceen.net/rbraun/libbraunr.git/?a=blob;f=mem.c;h=c629b2b9b149f118a30f0129bd8b7526b0302c22;hb=HEAD
+ <braunr> mcsim: btw, in mem_cache_reap(), you can clearly see there are two
+ loops, just as in zone_gc, to reduce contention and avoid deadlocks
+ <braunr> this is really common in memory allocators
+
+
+# IRC, freenode, #hurd, 2011-04-23
+
+ <mcsim> I've looked through some allocators and all of them use different
+ per cpu cache policy. AFAIK gnuhurd doesn't support multiprocessing, but
+ still multiprocessing must be kept in mind. So, what do you think what
+ kind of cpu caches is better? As for me I like variant with only per-cpu
+ caches (like in slqb).
+ <antrik> mcsim: well, have you looked at the allocator braunr wrote
+ himself? :-)
+ <antrik> I'm not sure I suggested that explicitly to you; but probably it
+ makes most sense to use that in gnumach
+
+
+# IRC, freenode, #hurd, 2011-04-24
+
+ <mcsim> antrik: Yes, I have. He uses both global and per cpu caches. But he
+ also suggested to look through slqb, where there are only per cpu
+ caches.\
+ <braunr> i don't remember slqb in detail
+ <braunr> what do you mean by "only per-cpu caches" ?
+ <braunr> a whole slab sytem for each cpu ?
+ <mcsim> I mean that there are no global queues in caches, but there are
+ special queues for each cpu.
+ <mcsim> I've just started investigating slqb's code, but I've read an
+ article on lwn about it. And I've read that it is used for zen kernel.
+ <braunr> zen ?
+ <mcsim> Here is this article http://lwn.net/Articles/311502/
+ <mcsim> Yes, this is linux kernel with some patches which haven't been
+ approved to torvald's tree
+ <mcsim> http://zen-kernel.org/
+ <braunr> i see
+ <braunr> well it looks nice
+ <braunr> but as for slub, the problem i can see is cross-CPU freeing
+ <braunr> and I think nick piggins mentions it
+ <braunr> piggin*
+ <braunr> this means that sometimes, objects are "burst-free" from one cpu
+ cache to another
+ <braunr> which has the same bad effects as in most other allocators, mainly
+ fragmentation
+ <mcsim> There is a special list for freeing object allocated for another
+ CPU
+ <mcsim> And garbage collector frees such object on his own
+ <braunr> so what's your question ?
+ <mcsim> It is described in the end of article.
+ <mcsim> What cpu-cache policy do you think is better to implement?
+ <braunr> at this point, any
+ <braunr> and even if we had a kernel that perfectly supports
+ multiprocessor, I wouldn't care much now
+ <braunr> it's very hard to evaluate such allocators
+ <braunr> slqb looks nice, but if you have the same amount of fragmentation
+ per slab as other allocators do (which is likely), you have tat amount of
+ fragmentation multiplied by the number of processors
+ <braunr> whereas having shared queues limit the problem somehow
+ <braunr> having shared queues mean you have a bit more contention
+ <braunr> so, as is the case most of the time, it's a tradeoff
+ <braunr> by the way, does pigging say why he "doesn't like" slub ? :)
+ <braunr> piggin*
+ <mcsim> http://lwn.net/Articles/311093/
+ <mcsim> here he describes what slqb is better.
+ <braunr> well it doesn't describe why slub is worse
+ <mcsim> but not very particularly
+ <braunr> except for order-0 allocations
+ <braunr> and that's a form of fragmentation like i mentioned above
+ <braunr> in mach those problems have very different impacts
+ <braunr> the backend memory isn't physical, it's the kernel virtual space
+ <braunr> so the kernel allocator can request chunks of higher than order-0
+ pages
+ <braunr> physical pages are allocated one at a time, then mapped in the
+ kernel space
+ <mcsim> Doesn't order of page depend on buffer size?
+ <braunr> it does
+ <mcsim> And why does gnumach allocates higher than order-0 pages more?
+ <braunr> why more ?
+ <braunr> i didn't say more
+ <mcsim> And why in mach those problems have very different impact?
+ <braunr> ?
+ <braunr> i've just explained why :)
+ <braunr> 09:37 < braunr> physical pages are allocated one at a time, then
+ mapped in the kernel space
+ <braunr> "one at a time" means order-0 pages, even if you allocate higher
+ than order-0 chunks
+ <mcsim> And in Linux they allocated more than one at time because of
+ prefetching page reading?
+ <braunr> do you understand what virtual memory is ?
+ <braunr> linux allocators allocate "physical memory"
+ <braunr> mach kernel allocator allocates "virtual memory"
+ <braunr> so even if you allocate a big chunk of virtual memory, it's backed
+ by order-0 physical pages
+ <mcsim> yes, I understand this
+ <braunr> you don't seem to :/
+ <braunr> the problem of higher than order-0 page allocations is
+ fragmentation
+ <braunr> do you see why ?
+ <mcsim> yes
+ <braunr> so
+ <braunr> fragmentation in the kernel space is less likely to create issues
+ than it does in physical memory
+ <braunr> keep in mind physical memory is almost always full because of the
+ page cache
+ <braunr> and constantly under some pressure
+ <braunr> whereas the kernel space is mostly empty
+ <braunr> so allocating higher then order-0 pages in linux is more dangerous
+ than it is in Mach or BSD
+ <mcsim> ok
+ <braunr> on the other hand, linux focuses pure performance, and not having
+ to map memory means less operations, less tlb misses, quicker allocations
+ <braunr> the Mach VM must map pages "one at a time", which can be expensive
+ <braunr> it should be adapted to handle multiple page sizes (e.g. 2 MiB) so
+ that many allocations can be made with few mappings
+ <braunr> but that's not easy
+ <braunr> as always: tradeoffs
+ <mcsim> There are other benefits of physical allocating. In big DMA
+ transfers can be needed few continuous physical pages. How does mach
+ handles such cases?
+ <braunr> gnumach does that awfully
+ <braunr> it just reserves the whole DMA-able memory and uses special
+ allocation functions on it, IIRC
+ <braunr> but kernels which have a MAch VM like memory sytem such as BSDs
+ have cleaner methods
+ <braunr> NetBSD provides a function to allocate contiguous physical memory
+ <braunr> with many constraints
+ <braunr> FreeBSD uses a binary buddy system like Linux
+ <braunr> the fact that the kernel allocator uses virtual memory doesn't
+ mean the kernel has no mean to allocate contiguous physical memory ...
+
+
+# IRC, freenode, #hurd, 2011-05-02
+
+ <braunr> hm nice, my allocator uses less memory than glibc (squeeze
+ version) on both 32 and 64 bits systems
+ <braunr> the new per-cpu layer is proving effective
+ <neal> braunr: Are you reimplementation malloc?
+ <braunr> no
+ <braunr> it's still the slab allocator for mach, but tested in userspace
+ <braunr> so i wrote malloc wrappers
+ <neal> Oh.
+ <braunr> i try to heavily test most of my code in userspace now
+ <neal> it's easier :-)
+ <neal> I agree
+ <braunr> even the physical memory allocator has been implemented this way
+ <neal> is this your mach version?
+ <braunr> virtual memory allocation will follow
+ <neal> or are you working on gnu mach?
+ <braunr> for now it's my version
+ <braunr> but i intend to spend the summer working on ipc port names
+ management
+
+[[rework_gnumach_IPC_spaces]].
+
+ <braunr> and integrate the result in gnu mach
+ <neal> are you keeping the same user-space API?
+ <neal> Or are you experimenting with something new?
+ <antrik> braunr: to be fair, it's not terribly hard to use less memory than
+ glibc :-)
+ <braunr> yes
+ <braunr> antrik: well ptmalloc3 received some nice improvements
+ <braunr> neal: the goal is to rework some of the internals only
+ <braunr> neal: namely, i simply intend to replace the splay tree with a
+ radix tree
+ <antrik> braunr: the glibc allocator is emphasising performace, unlike some
+ other allocators that trade some performance for much better memory
+ utilisation...
+ <antrik> ptmalloc3?
+ <braunr> that's the allocator used in glibc
+ <braunr> http://www.malloc.de/en/
+ <antrik> OK. haven't seen any recent numbers... the comparision I have in
+ mind is many years old...
+ <braunr> i also made some additions to my avl and red-black trees this week
+ end, which finally make them suitable for almost all generic uses
+ <braunr> the red-black tree could be used in e.g. gnu mach to augment the
+ linked list used in vm maps
+ <braunr> which is what's done in most modern systems
+ <braunr> it could also be used to drop the overloaded (and probably over
+ imbalanced) page cache hash table
+
+
+# IRC, freenode, #hurd, 2011-05-03
+
+ <mcsim> antrik: How should I start porting? Have I just include rbraun's
+ allocator to gnumach and make it compile?
+ <antrik> mcsim: well, basically yes I guess... but you will have to look at
+ the code in question first before we know anything more specific :-)
+ <antrik> I guess braunr might know better how to start, but he doesn't
+ appear to be here :-(
+ <braunr> mcsim: you can't juste put my code into gnu mach and make it run,
+ it really requires a few careful changes
+ <braunr> mcsim: you will have to analyse how the current zone allocator
+ interacts with regard to locking
+ <braunr> if it is used in interrupt handlers
+ <braunr> what kind of locks it should use instead of the pthread stuff
+ available in userspace
+ <braunr> you will have to change the reclamiing policy, so that caches are
+ reaped on demand
+ <braunr> (this basically boils down to calling the new reclaiming function
+ instead of zone_gc())
+ <braunr> you must be careful about types too
+ <braunr> there is work to be done ;)
+ <braunr> (not to mention the obvious about replacing all the calls to the
+ zone allocator, and testing/debugging afterwards)
+
+
+# IRC, freenode, #hurd, 2011-07-14
+
+ <braunr> can you make your patch available ?
+ <mcsim> it is available in gnumach repository at savannah
+ <mcsim> tree mplaneta/libbraunr/master
+ <braunr> mcsim: i'll test your branch
+ <mcsim> ok. I'll give you a link in a minute
+ <braunr> hm why balloc ?
+ <mcsim> Braun's allocator
+ <braunr> err
+ <braunr>
+ http://git.sceen.net/rbraun/x15mach.git/?a=blob;f=kern/kmem.c;h=37173fa0b48fc9d7e177bf93de531819210159ab;hb=HEAD
+ <braunr> mcsim: this is the interface i had in mind for a kernel version :)
+ <braunr> very similar to the original slab allocator interface actually
+ <braunr> well, you've been working
+ <mcsim> But I have a problem with this patch. When I apply it to gnumach
+ code from debian repository. I have to make a change in file ramdisk.c
+ with sed -i 's/kernel_map/\&kernel_map/' device/ramdisk.c
+ <mcsim> because in git repository there is no such file
+ <braunr> mcsim: how do you configure the kernel before building ?
+ <braunr> mcsim: you should keep in touch more often i think, so that you
+ get feedback from us and don't spend too much time "off course"
+ <mcsim> I didn't configure it. I just run dpkg-buildsource -b.
+ <braunr> oh you build the debian package
+ <braunr> well my version was by configure --enable-kdb --enable-rtl8139
+ <braunr> and it seems stuck in an infinite loop during bootstrap
+ <mcsim> and printf doesn't work. The first function called by c_boot_entry
+ is printf(version).
+ <braunr> mcsim: also, you're invited to get the x15mach version of my
+ files, which are gplv2+ licensed
+ <braunr> be careful of my macros.h file, it can conflict with the
+ macros_help.h file from gnumach iirc
+ <mcsim> There were conflicts with MACRO_BEGIN and MACRO_END. But I solved
+ it
+ <braunr> ok
+ <braunr> it's tricky
+ <braunr> mcsim: try to find where the first use of the allocator is made
+
+
+# IRC, freenode, #hurd, 2011-07-22
+
+ <mcsim> braunr, hello. Kernel with your allocator already compiles and
+ runs. There still some problems, but, certainly, I'm on the final stage
+ already. I hope I'll finish in a few days.
+ <tschwinge> mcsim: Oh, cool! Have you done some measurements already?
+ <mcsim> Not yet
+ <tschwinge> OK.
+ <tschwinge> But if it able to run a GNU/Hurd system, then that already is
+ something, a big milestone!
+ <braunr> nice
+ <braunr> although you'll probably need to tweak the garbage collecting
+ process
+ <mcsim> tschwinge: thanks
+ <mcsim> braunr: As back-end for allocating memory I use
+ kmem_alloc_wired. But in zalloc was an opportunity to use as back-end
+ kmem_alloc_pageable. Although there was no any zone that used
+ kmem_alloc_pageable. Do I need to implement this functionality?
+ <braunr> mcsim: do *not* use kmem_alloc_pageable()
+ <mcsim> braunr: Ok. This is even better)
+ <braunr> mcsim: in x15, i've taken this even further: there is *no* kernel
+ vm object, which means all kernel memory is wired and unmanaged
+ <braunr> making it fast and safe
+ <braunr> pageable kernel memory was useful back when RAM was really scarce
+ <braunr> 20 years ago
+ <braunr> but it's a source of deadlock
+ <mcsim> Indeed. I'll won't use kmem_alloc_pageable.
+
+
+# IRC, freenode, #hurd, 2011-08-09
+
+ < braunr> mcsim: what's the "bug related to MEM_CF_VERIFY" you refer to in
+ one of your commits ?
+ < braunr> mcsim: don't use spin_lock_t as a member of another structure
+ < mcsim> braunr: I confused with types in *_verify functions, so they
+ didn't work. Than I fixed it in the commit you mentioned.
+ < braunr> in gnumach, most types are actually structure pointers
+ < braunr> use simple_lock_data_t
+ < braunr> mcsim: ok
+ < mcsim> > use simple_lock_data_t
+ < mcsim> braunr: ok
+ < braunr> mcsim: don't make too many changes to the code base, and if
+ you're unsure, don't hesitate to ask
+ < braunr> also, i really insist you rename the allocator, as done in x15
+ for example
+ (http://git.sceen.net/rbraun/x15mach.git/?a=blob;f=vm/kmem.c), instead of
+ a name based on mine :/
+ < mcsim> braunr: Ok. It was just work name. When I finish I'll rename the
+ allocator.
+ < braunr> other than that, it's nice to see progress
+ < braunr> although again, it would be better with some reports along
+ < braunr> i won't be present at the meeting tomorrow unfortunately, but you
+ should use those to report the status of your work
+ < mcsim> braunr: You've said that I have to tweak gc process. Did you mean
+ to call mem_gc() when physical memory ends instead of calling it every x
+ seconds? Or something else?
+ < braunr> there are multiple topics, alhtough only one that really matters
+ < braunr> study how zone_gc was called
+ < braunr> reclaiming memory should happen when there is pressure on the VM
+ subsystem
+ < braunr> but it shouldn't happen too ofte, otherwise there is trashing
+ < braunr> and your caches become mostly useless
+ < braunr> the original slab allocator uses a 15-second period after a
+ reclaim during which reclaiming has no effect
+ < braunr> this allows having a somehow stable working set for this duration
+ < braunr> the linux slab allocator uses 5 seconds, but has a more
+ complicated reclaiming mechanism
+ < braunr> it releases memory gradually, and from reclaimable caches only
+ (dentry for example)
+ < braunr> for x15 i intend to implement the original 15 second interval and
+ then perform full reclaims
+ < mcsim> In zalloc mem_gc is called by vm_pageout_scan, but not often than
+ once a second.
+ < mcsim> In balloc I've changed interval to once in 15 seconds.
+ < braunr> don't use the code as it is
+ < braunr> the version you've based your work on was meant for userspace
+ < braunr> where there isn't memory pressure
+ < braunr> so a timer is used to trigger reclaims at regular intervals
+ < braunr> it's different in a kernel
+ < braunr> mcsim: where did you see vm_pageout_scan call the zone gc once a
+ second ?
+ < mcsim> vm_pageout_scan calls consider_zone_gc and consider_zone_gc checks
+ if second is passed.
+ < braunr> where ?
+ < mcsim> Than zone_gc can be called.
+ < braunr> ah ok, it's in zaclloc.c then
+ < braunr> zalloc.c
+ < braunr> yes this function is fine
+ < mcsim> so old gc didn't consider vm pressure. Or I missed something.
+ < braunr> it did
+ < mcsim> how?
+ < braunr> well, it's called by the pageout daemon
+ < braunr> under memory pressure
+ < braunr> so it's fine
+ < mcsim> so if mem_gc is called by pageout daemon is it fine?
+ < braunr> it must be changed to do something similar to what
+ consider_zone_gc does
+ < mcsim> It does. mem_gc does the same work as consider_zone_gc and
+ zone_gc.
+ < braunr> good
+ < mcsim> so gc process is fine?
+ < braunr> should be
+ < braunr> i see mem.c only includes mem.h, which then includes other
+ headers
+ < braunr> don't do that
+ < braunr> always include all the headers you need where you need them
+ < braunr> if you need avltree.h in both mem.c and mem.h, include it in both
+ files
+ < braunr> and by the way, i recommend you use the red black tree instead of
+ the avl type
+ < braunr> (it's the same interface so it shouldn't take long)
+ < mcsim> As to report. If you won't be present at the meeting, I can tell
+ you what I have to do now.
+ < braunr> sure
+ < braunr> in addition, use GPLv2 as the license, teh BSD one is meant for
+ the userspace version only
+ < braunr> GPLv2+ actually
+ < braunr> hm you don't need list.c
+ < braunr> it would only add dead code
+ < braunr> "Zone for dynamical allocator", don't mix terms
+ < braunr> this comment refers to a vm_map, so call it a map
+ < mcsim> 1. Change constructor for kentry_alloc_cache.
+ < mcsim> 2. Make measurements.
+ < mcsim> +
+ < mcsim> 3. Use simple_lock_data_t
+ < mcsim> 4. Replace license
+ < braunr> kentry_alloc_cache <= what is that ?
+ < braunr> cache for kernel map entries in vm_map ?
+ < braunr> the comment for mem_cpu_pool_get doesn't apply in gnumach, as
+ there is no kernel preemption
+ < braunr> "Don't attempt mem GC more frequently than hz/MEM_GC_INTERVAL
+ times a second.
+ < braunr> "
+ < mcsim> sorry. I meant vm_map_kentry_cache
+ < braunr> hm nothing actually about this comment
+ < braunr> mcsim: ok
+ < braunr> yes kernel map entries need special handling
+ < braunr> i don't know how it's done in gnumach though
+ < braunr> static preallocation ?
+ < mcsim> yes
+ < braunr> that's ugly :p
+ < mcsim> but it uses dynamic allocation further even for vm_map kernel
+ entries
+ < braunr> although such bootstrapping issues are generally difficult to
+ solve elegantly
+ < braunr> ah
+ < mcsim> now I use only static allocation, but I'll add dynamic allocation
+ too
+ < braunr> when you have time, mind the coding style (convert everything to
+ gnumach style, which mostly implies using tabs instead of 4-spaces
+ indentation)
+ < braunr> when you'll work on dynamic allocation for the kernel map
+ entries, you may want to review how it's done in x15
+ < braunr> the mem_source type was originally intended for that purpose, but
+ has slightly changed once the allocator was adapted to work in my kernel
+ < mcsim> ok
+ < braunr> vm_map_kentry_zone is the only zone created with ZONE_FIXED
+ < braunr> and it is zcram()'ed immediately after
+ < braunr> so you can consider it a statically allocated zone
+ < braunr> in x15 i use another strategy: there is a special kernel submap
+ named kentry_map which contains only one map entry (statically allocated)
+ < braunr> this map is the backend (mem_source) for the kentry_cache
+ < braunr> the kentry_cache is created with a special flag that tells it
+ memory can't be reclaimed
+ < braunr> when the cache needs to grow, the single map entry is extended to
+ cover the allocated memory
+ < braunr> it's similar to the way pmap_growkernel() works for kernel page
+ table pages
+ < braunr> (and is actually based on that idea)
+ < braunr> it's a compromise between full static and dynamic allocation
+ types
+ < braunr> the advantage is that the allocator code can be used (so there is
+ no need for a special allocator like in netbsd)
+ < braunr> the drawback is that some resources can never be returned to
+ their source (and under peaks, the amount of unfreeable resources could
+ become large, but this is unexpected)
+ < braunr> mcsim: for now you shouldn't waste your time with this
+ < braunr> i see the number of kernel map entries is fixed at 256
+ < braunr> and i've never seen the kernel use more than around 30 entries
+ < mcsim> Do you think that I have to left this problem to the end?
+ < braunr> yes
+
+
+# IRC, freenode, #hurd, 2011-08-11
+
+ < mcsim> braunr: Hello. Can you give me an advice how can I make
+ measurements better?
+ < braunr> mcsim: what kind of measurements
+ < mcsim> braunr: How much is your allocator better than zalloc.
+ < braunr> slightly :p
+ < braunr> that's why i never took the time to put it in gnumach
+ < mcsim> braunr: Just I thought that there are some rules or
+ recommendations of such measurements. Or I can do them any way I want?
+ < braunr> mcsim: i don't know
+ < braunr> mcsim: benchmarking is an art of its own, and i don't even know
+ how to use the bits of profiling code available in gnumach (if it still
+ works)
+ < antrik> mcsim: hm... are you saying you already have a running system
+ with slab allocator?... :-)
+ < braunr> mcsim: the main advantage i can see is the removal of many
+ arbitrary hard limits
+ < mcsim> antrik: yes
+ < antrik> \o/
+ < antrik> nice work!
+ < braunr> :)
+ < braunr> the cpu layer should also help a bit, but it's hard to measure
+ < braunr> i guess it could be seen on the ipc path for very small buffers
+ < mcsim> antrik: Thanks. But I still have to 1. Change constructor for
+ kentry_alloc_cache. and 2. Make measurements.
+ < braunr> and polish the whole thing :p
+ < antrik> mcsim: I'm not sure this can be measured... the performance
+ differente in any real live usage is probably just a few percent at most
+ -- it's hard to construct a benchmark giving enough precision so it's not
+ drowned in noise...
+ < antrik> perhaps it conserves some memory -- but that too would be hard to
+ measure I fear
+ < braunr> yes
+ < braunr> there *should* be better allocation times, less fragmentation,
+ better accounting ... :)
+ < braunr> and no arbitrary limits !
+ < antrik> :-)
+ < braunr> oh, and the self debugging features can be nice too
+ < mcsim> But I need to prove that my work wasn't useless
+ < braunr> well it wasn't, but that's hard to measure
+ < braunr> it's easy to prove though, since there are additional features
+ that weren't present in the zone allocator
+ < mcsim> Ok. If there are some profiling features in gnumach can you give
+ me a link with their description?
+ < braunr> mcsim: sorry, no
+ < braunr> mcsim: you could still write the basic loop test, which counts
+ the number of allocations performed in a fixed time interval
+ < braunr> but as it doesn't match many real life patterns, it won't be very
+ useful
+ < braunr> and i'm afraid that if you consider real life patterns, you'll
+ see how negligeable the improvement can be compared to other operations
+ such as memory copies or I/O (ouch)
+ < mcsim> Do network drivers use this allocator?
+ < mcsim> ok. I'll scrape up some test and than I'll report results.
+
+
+# IRC, freenode, #hurd, 2011-08-26
+
+ < mcsim> hello. Are there any analogs of copy_to_user and copy_from_user in
+ linux for gnumach?
+ < mcsim> Or how can I determine memory map if I know address? I need this
+ for vm_map_copyin
+ < guillem> mcsim: vm_map_lookup_entry?
+ < mcsim> guillem: but I need to transmit map to this function and it will
+ return an entry which contains specified address.
+ < mcsim> And I don't know what map have I transmit.
+ < mcsim> I need to transfer static array from kernel to user. What map
+ contains static data?
+ < antrik> mcsim: Mach doesn't have copy_{from,to}_user -- instead, large
+ chunks of data are transferred as out-of-line data in IPC messages
+ (i.e. using VM magic)
+ < mcsim> antrik: can you give me an example? I just found using
+ vm_map_copyin in host_zone_info.
+ < antrik> no idea what vm_map_copyin is to be honest...
+
+
+# IRC, freenode, #hurd, 2011-08-27
+
+ < braunr> mcsim: the primitives are named copyin/copyout, and they are used
+ for messages with inline data
+ < braunr> or copyinmsg/copyoutmsg
+ < braunr> vm_map_copyin/out should be used for chunks larger than a page
+ (or roughly a page)
+ < braunr> also, when writing to a task space, see which is better suited:
+ vm_map_copyout or vm_map_copy_overwrite
+ < mcsim> braunr: and what will be src_map for vm_map_copyin/out?
+ < braunr> the caller map
+ < braunr> which you can get with current_map() iirc
+ < mcsim> braunr: thank you
+ < braunr> be careful not to leak anything in the transferred buffers
+ < braunr> memset() to 0 if in doubt
+ < mcsim> braunr:ok
+ < braunr> antrik: vm_map_copyin() is roughly vm_read()
+ < antrik> braunr: what is it used for?
+ < braunr> antrik: 01:11 < antrik> mcsim: Mach doesn't have
+ copy_{from,to}_user -- instead, large chunks of data are transferred as
+ out-of-line data in IPC messages (i.e. using VM magic)
+ < braunr> antrik: that "VM magic" is partly implemented using vm_map_copy*
+ functions
+ < antrik> braunr: oh, you mean it doesn't actually copy data, but only page
+ table entries? if so, that's *not* really comparable to
+ copy_{from,to}_user()...
+
+
+# IRC, freenode, #hurd, 2011-08-28
+
+ < braunr> antrik: the equivalent of copy_{from,to}_user are
+ copy{in,out}{,msg}
+ < braunr> antrik: but when the data size is about a page or more, it's
+ better not to copy, of course
+ < antrik> braunr: it's actually not clear at all that it's really better to
+ do VM magic than to copy...
+
+
+# IRC, freenode, #hurd, 2011-08-29
+
+ < braunr> antrik: at least, that used to be the general idea, and with a
+ simpler VM i suspect it's still true
+ < braunr> mcsim: did you progress on your host_zone_info replacement ?
+ < braunr> mcsim: i think you should stick to what the original
+ implementation did
+ < braunr> which is making an inline copy if caller provided enough space,
+ using kmem_alloc_pageable otherwise
+ < braunr> specify ipc_kernel_map if using kmem_alloc_pageable
+ < mcsim> braunr: yes. And it works. But I use kmem_alloc, not pageable. Is
+ it worse?
+ < mcsim> braunr: host_zone_info replacement is pushed to savannah
+ repository.
+ < braunr> mcsim: i'll have a look
+ < mcsim> braunr: I've pushed one more commit just now, which has attitude
+ to host_zone_info.
+ < braunr> mem_alloc_early_init should be renamed mem_bootstrap
+ < mcsim> ok
+ < braunr> mcsim: i don't understand your call to kmem_free
+ < mcsim> braunr: It shouldn't be there?
+ < braunr> why should it be there ?
+ < braunr> you're freeing what the copy object references
+ < braunr> it's strange that it even works
+ < braunr> also, you shouldn't pass infop directly as the copy object
+ < braunr> i guess you get a warning for that
+ < braunr> do what the original code does: use an intermediate copy object
+ and a cast
+ < mcsim> ok
+ < braunr> another error (without consequence but still, you should mind it)
+ < braunr> simple_lock(&mem_cache_list_lock);
+ < braunr> [...]
+ < braunr> kr = kmem_alloc(ipc_kernel_map, &info, info_size);
+ < braunr> you can't hold simple locks while allocating memory
+ < braunr> read how the original implementation works around this
+ < mcsim> ok
+ < braunr> i guess host_zone_info assumes the zone list doesn't change much
+ while unlocked
+ < braunr> or that's it's rather unimportant since it's for debugging
+ < braunr> a strict snapshot isn't required
+ < braunr> list_for_each_entry(&mem_cache_list, cache, node) max_caches++;
+ < braunr> you should really use two separate lines for readability
+ < braunr> also, instead of counting each time, you could just maintain a
+ global counter
+ < braunr> mcsim: use strncpy instead of strcpy for the cache names
+ < braunr> not to avoid overflow but rather to clear the unused bytes at the
+ end of the buffer
+ < braunr> mcsim: about kmem_alloc vs kmem_alloc_pageable, it's a minor
+ issue
+ < braunr> you're handing off debugging data to a userspace application
+ < braunr> a rather dull reporting tool in most cases, which doesn't require
+ wired down memory
+ < braunr> so in order to better use available memory, pageable memory
+ should be used
+ < braunr> in the future i guess it could become a not-so-minor issue though
+ < mcsim> ok. I'll fix it
+ < braunr> mcsim: have you tried to run the kernel with MC_VERIFY always on
+ ?
+ < braunr> MEM_CF_VERIFY actually
+ < mcsim1> yes.
+ < braunr> oh
+ < braunr> nothing wrong
+ < braunr> ?
+ < mcsim1> it is always set
+ < braunr> ok
+ < braunr> ah, you set it in macros.h ..
+ < braunr> don't
+ < braunr> put it in mem.c if you want, or better, make it a compile-time
+ option
+ < braunr> macros.h is a tiny macro library, it shouldn't define such
+ unrelated options
+ < mcsim1> ok.
+ < braunr> mcsim1: did you try fault injection to make sure the checking
+ code actually works and how it behaves when an error occurs ?
+ < mcsim1> I think that when I finish I'll merge files cpu.h and macros.h
+ with mem.c
+ < braunr> yes that would simplify things
+ < mcsim1> Yes. When I confused with types mem_buf_fill worked wrong and
+ panic occurred.
+ < braunr> very good
+ < braunr> have you progressed concerning the measurements you wanted to do
+ ?
+ < mcsim1> not much.
+ < braunr> ok
+ < mcsim1> I think they will be ready in a few days.
+ < antrik> what measurements are these?
+ < mcsim1> braunr: What maximal size for static data and stack in kernel?
+ < braunr> what do you mean ?
+ < braunr> kernel stacks are one page if i'm right
+ < braunr> static data (rodata+data+bss) are limited by grub bugs only :)
+ < mcsim1> braunr: probably they are present, because when I created too big
+ array I couldn't boot kernel
+ < braunr> local variable or static ?
+ < mcsim1> static
+ < braunr> how large ?
+ < mcsim1> 4Mb
+ < braunr> hm
+ < braunr> it's not a grub bug then
+ < braunr> i was able to embed as much as 32 MiB in x15 while doing this
+ kind of tests
+ < braunr> I guess it's the gnu mach boot code which only preallocates one
+ page for the initial kernel mapping
+ < braunr> one PTP (page table page) maps 4 MiB
+ < braunr> (x15 does this completely dynamically, unlike mach or even
+ current BSDs)
+ < mcsim1> antrik: First I want to measure time of each cache
+ creation/allocation/deallocation and then compile kernel.
+ < braunr> cache creation is irrelevant
+ < braunr> because of the cpu pools in the new allocator, you should test at
+ least two different allocation patterns
+ < braunr> one with quick allocs/frees
+ < braunr> the other with large numbers of allocs then their matching frees
+ < braunr> (larger being at least 100)
+ < braunr> i'd say the cpu pool layer is the real advantage over the
+ previous zone allocator
+ < braunr> (from a performance perspective)
+ < mcsim1> But there is only one cpu
+ < braunr> it doesn't matter
+ < braunr> it's stil a very effective cache
+ < braunr> in addition to reducing contention
+ < braunr> compare mem_cpu_pool_pop() against mem_cache_alloc_from_slab()
+ < braunr> mcsim1: work is needed to polish the whole thing, but getting it
+ actually working is a nice achievement for someone new on the project
+ < braunr> i hope it helped you learn about memory allocation, virtual
+ memory, gnu mach and the hurd in general :)
+ < antrik> indeed :-)
+
+
+# IRC, freenode, #hurd, 2011-09-06
+
+ [some performance testing]
+ <braunr> i'm not sure such long tests are relevant but let's assume balloc
+ is slower
+ <braunr> some tuning is needed here
+ <braunr> first, we can see that slab allocation occurs more often in balloc
+ than page allocation does in zalloc
+ <braunr> so yes, as slab allocation is slower (have you measured which part
+ actually is slow ? i guess it's the kmem_alloc call)
+ <braunr> the whole process gets a bit slower too
+ <mcsim> I used alloc_size = 4096 for zalloc
+ <braunr> i don't know what that is exactly
+ <braunr> but you can't hold 500 16 bytes buffers in a page so zalloc must
+ have had free pages around for that
+ <mcsim> I use kmem_alloc_wired
+ <braunr> if you have time, measure it, so that we know how much it accounts
+ for
+ <braunr> where are the results for dealloc ?
+ <mcsim> I can't give you result right now because internet works very
+ bad. But for first DEALLOC result are the same, exept some cases when it
+ takes balloc for more than 1000 ticks
+ <braunr> must be the transfer from the cpu layer to the slab layer
+ <mcsim> as to kmem_alloc_wired. I think zalloc uses this function too for
+ allocating objects in zone I test.
+ <braunr> mcsim: yes, but less frequently, which is why it's faster
+ <braunr> mcsim: another very important aspect that should be measured is
+ memory consumption, have you looked into that ?
+ <mcsim> I think that I made too little iterations in test SMALL
+ <mcsim> If I increase constant SMALL_TESTS will it be good enough?
+ <braunr> mcsim: i don't know, try both :)
+ <braunr> if you increase the number of iterations, balloc average time will
+ be lower than zalloc, but this doesn't remove the first long
+ initialization step on the allocated slab
+ <mcsim> SMALL_TESTS to 500, I mean
+ <braunr> i wonder if maintaining the slabs sorted through insertion sort is
+ what makes it slow
+ <mcsim> braunr: where do you sort slabs? I don't see this.
+ <braunr> mcsim: mem_cache_alloc_from_slab and its free counterpart
+ <braunr> mcsim: the mem_source stuff is useless in gnumach, you can remove
+ it and directly call the kmem_alloc/free functions
+ <mcsim> But I have to make special allocator for kernel map entries.
+ <braunr> ah right
+ <mcsim> btw. It turned out that 256 entries are not enough.
+ <braunr> that's weird
+ <braunr> i'll make a patch so that the mem_source code looks more like what
+ i have in x15 then
+ <braunr> about the results, i don't think the slab layer is that slow
+ <braunr> it's the cpu_pool_fill/drain functions that take time
+ <braunr> they preallocate many objects (64 for your objects size if i'm
+ right) at once
+ <braunr> mcsim: look at the first result page: some times, a number around
+ 8000 is printed
+ <braunr> the common time (ticks, whatever) for a single object is 120
+ <braunr> 8132/120 is 67, close enough to the 64 value
+ <mcsim> I forgot about SMALL tests here are they:
+ http://paste.debian.net/128533/ (balloc) http://paste.debian.net/128534/
+ (zalloc)
+ <mcsim> braunr: why do you divide 8132 by 120?
+ <braunr> mcsim: to see if it matches my assumption that the ~8000 number
+ matches the cpu_pool_fill call
+ <mcsim> braunr: I've got it
+ <braunr> mcsim: i'd be much interested in the dealloc results if you can
+ paste them too
+ <mcsim> dealloc: http://paste.debian.net/128589/
+ http://paste.debian.net/128590/
+ <braunr> mcsim: thanks
+ <mcsim> second dealloc: http://paste.debian.net/128591/
+ http://paste.debian.net/128592/
+ <braunr> mcsim: so the main conclusion i retain from your tests is that the
+ transfers from the cpu and the slab layers are what makes the new
+ allocator a bit slower
+ <mcsim> OPERATION_SMALL dealloc: http://paste.debian.net/128593/
+ http://paste.debian.net/128594/
+ <braunr> mcsim: what needs to be measured now is global memory usage
+ <mcsim> braunr: data from /proc/vmstat after kernel compilation will be
+ enough?
+ <braunr> mcsim: let me check
+ <braunr> mcsim: no it won't do, you need to measure kernel memory usage
+ <braunr> the best moment to measure it is right after zone_gc is called
+ <mcsim> Are there any facilities in gnumach for memory measurement?
+ <braunr> it's specific to the allocators
+ <braunr> just count the number of used pages
+ <braunr> after garbage collection, there should be no free page, so this
+ should be rather simple
+ <mcsim> ok
+ <mcsim> braunr: When I measure memory usage in balloc, what formula is
+ better cache->nr_slabs * cache->bufs_per_slab * cache->buf_size or
+ cache->nr_slabs * cache->slab_size?
+ <braunr> the latter
+
+
+# IRC, freenode, #hurd, 2011-09-07
+
+ <mcsim> braunr: I've disabled calling of mem_cpu_pool_fill and allocator
+ became faster
+ <braunr> mcsim: sounds nice
+ <braunr> mcsim: i suspect the free path might not be as fast though
+ <mcsim> results for first calling: http://paste.debian.net/128639/ second:
+ http://paste.debian.net/128640/ and with many alloc/free:
+ http://paste.debian.net/128641/
+ <braunr> mcsim: thanks
+ <mcsim> best result are for second call: average time decreased from 159.56
+ to 118.756
+ <mcsim> First call slightly worse, but this is because I've added some
+ profiling code
+ <braunr> i still see some ~8k lines in 128639
+ <braunr> even some around ~12k
+ <mcsim> I think this is because of mem_cache_grow I'm investigating it now
+ <braunr> i guess so too
+ <mcsim> I've measured time for first call in cache and from about 22000
+ mem_cache_grow takes 20000
+ <braunr> how did you change the code so that it doesn't call
+ mem_cpu_pool_fill ?
+ <braunr> is the cpu layer still used ?
+ <mcsim> http://paste.debian.net/128644/
+ <braunr> don't forget the free path
+ <braunr> mcsim: anyway, even with the previous slightly slower behaviour we
+ could observe, the performance hit is negligible
+ <mcsim> Is free path a compilation? (I'm sorry for my english)
+ <braunr> mcsim: mem_cache_free
+ <braunr> mcsim: the last two measurements i'd advise are with big (>4k)
+ object sizes and, really, kernel allocator consumption
+ <mcsim> http://paste.debian.net/128648/ http://paste.debian.net/128646/
+ http://paste.debian.net/128649/ (first, second, small)
+ <braunr> mcsim: these numbers are closer to the zalloc ones, aren't they ?
+ <mcsim> deallocating slighty faster too
+ <braunr> it may not be the case with larger objects, because of the use of
+ a tree
+ <mcsim> yes, they are closer
+ <braunr> but then, i expect some space gains
+ <braunr> the whole thing is about compromise
+ <mcsim> ok. I'll try to measure them today. Anyway I'll post result and you
+ could read them in the morning
+ <braunr> at least, it shows that the zone allocator was actually quite good
+ <braunr> i don't like how the code looks, there are various hacks here and
+ there, it lacks self inspection features, but it's quite good
+ <braunr> and there was little room for true improvement in this area, like
+ i told you :)
+ <braunr> (my allocator, like the current x15 dev branch, focuses on mp
+ machines)
+ <braunr> mcsim: thanks again for these numbers
+ <braunr> i wouldn't have had the courage to make the tests myself before
+ some time eh
+ <mcsim> braunr: hello. Look at the small_4096 results
+ http://paste.debian.net/128692/ (balloc) http://paste.debian.net/128693/
+ (zalloc)
+ <braunr> mcsim: wow, what's that ? :)
+ <braunr> mcsim: you should really really include your test parameters in
+ the report
+ <braunr> like object size, purpose, and other similar details
+ <mcsim> for balloc I specified only object_size = 4096
+ <mcsim> for zalloc object_size = 4096, alloc_size = 4096, memtype = 0;
+ <braunr> the results are weird
+ <braunr> apart from the very strange numbers (e.g. 0 or 4429543648), none
+ is around 3k, which is the value matching a kmem_alloc call
+ <braunr> happy to see balloc behaves quite good for this size too
+ <braunr> s/good/well/
+ <mcsim> Oh
+ <mcsim> here is significant only first 101 lines
+ <mcsim> I'm sorry
+ <braunr> ok
+ <braunr> what does the test do again ? 10 loops of 10 allocs/frees ?
+ <mcsim> yes
+ <braunr> ok, so the only slowdown is at the beginning, when the slabs are
+ created
+ <braunr> the two big numbers (31844 and 19548) are strange
+ <mcsim> on the other hand time of compilation is
+ <mcsim> balloc zalloc
+ <mcsim> 38m28.290s 38m58.400s
+ <mcsim> 38m38.240s 38m42.140s
+ <mcsim> 38m30.410s 38m52.920s
+ <braunr> what are you compiling ?
+ <mcsim> gnumach kernel
+ <braunr> in 40 mins ?
+ <mcsim> yes
+ <braunr> you lack hvm i guess
+ <mcsim> is it long?
+ <mcsim> I use real PC
+ <braunr> very
+ <braunr> ok
+ <braunr> so it's normal
+ <mcsim> in vm it was about 2 hours)
+ <braunr> the difference really is negligible
+ <braunr> ok i can explain the big numbers
+ <braunr> the slab size depends on the object size, and for 4k, it is 32k
+ <braunr> you can store 8 4k buffers in a slab (lines 2 to 9)
+ <mcsim> so we need use kmem_alloc_* 8 times?
+ <braunr> on line 10, the ninth object is allocated, which adds another slab
+ to the cache, hence the big number
+ <braunr> no, once for a size of 32k
+ <braunr> and then the free list is initialized, which means accessing those
+ pages, which means tlb misses
+ <braunr> i guess the zone allocator already has free pages available
+ <mcsim> I see
+ <braunr> i think you can stop performance measurements, they show the
+ allocator is slightly slower, but so slightly we don't care about that
+ <braunr> we need numbers on memory usage now (at the page level)
+ <braunr> and this isn't easy
+ <mcsim> For balloc I can get numbers if I summarize nr_slabs*slab_size for
+ each cache, isn't it?
+ <braunr> yes
+ <braunr> you can have a look at the original implementation, function
+ mem_info
+ <mcsim> And for zalloc I have to summarize of cur_size and then add
+ zalloc_wasted_space?
+ <braunr> i don't know :/
+ <braunr> i think the best moment to obtain accurate values is after zone_gc
+ removes the collected pages
+ <braunr> for both allocators, you could fill a stats structure at that
+ moment, and have an rpc copy that structure when a client tool requests
+ it
+ <braunr> concerning your tests, there is another point to have in mind
+ <braunr> the very first loop in your code shows a result of 31844
+ <braunr> although you disabled the call to cpu_pool_fill
+ <braunr> but the reason why it's so long is that the cpu layer still exists
+ <braunr> and if you look carefully, the cpu pools are created as needed on
+ the free path
+ <mcsim> I removed cpu_pool_drain
+ <braunr> but not cpu_pool_push/pop i guess
+ <mcsim> http://paste.debian.net/128698/
+ <braunr> see, you still allocate the cpu pool array on the free path
+ <mcsim> but I don't fill it
+ <braunr> that's not the point
+ <braunr> it uses mem_cache_alloc
+ <braunr> so in a call to free, you can also have an allocation, that can
+ potentially create a new slab
+ <mcsim> I see, so I have to create cpu_pool at the initialization stage?
+ <braunr> no, you can't
+ <braunr> there is a reason why they're allocated on the free path
+ <braunr> but since you don't have the fill/drain functions, i wonder if you
+ should just comment out the whole cpu layer code
+ <braunr> but hmm
+ <braunr> no really, it's not worth the effort
+ <braunr> even with drains/fills, the results are really good enough
+ <braunr> it makes the allocator smp ready
+ <braunr> we should just keep it that way
+ <braunr> mcsim: fyi, the reason why cpu pool arrays are allocated on the
+ free path is to avoid recursion
+ <braunr> because cpu pool arrays are allocated from caches just as almost
+ everything else
+ <mcsim> ok
+ <mcsim> summ of cur_size and then adding zalloc_wasted_space gives 0x4e1954
+ <mcsim> but this value isn't even page aligned
+ <mcsim> For balloc I've got 0x4c6000 0x4aa000 0x48d000
+ <braunr> hm can you report them in decimal, >> 10 so that values are in KiB
+ ?
+ <mcsim> 4888 4776 4660 for balloc
+ <mcsim> 4998 for zalloc
+ <braunr> when ?
+ <braunr> after boot ?
+ <mcsim> boot, compile, zone_gc
+ <mcsim> and then measure
+ <braunr> ?
+ <mcsim> I call garbage collector before measuring
+ <mcsim> and I measure after kernel compilation
+ <braunr> i thought it took you 40 minutes
+ <mcsim> for balloc I got results at night
+ <braunr> oh so you already got them
+ <braunr> i can't beleive the kernel only consumes 5 MiB
+ <mcsim> before gc it takes about 9052 Kib
+ <braunr> can i see the measurement code ?
+ <braunr> oh, and how much ram does your machine have ?
+ <mcsim> 758 mb
+ <mcsim> 768
+ <braunr> that's really weird
+ <braunr> i'd expect the kernel to consume much more space
+ <mcsim> http://paste.debian.net/128703/
+ <mcsim> it's only dynamically allocated data
+ <braunr> yes
+ <braunr> ipc ports, rights, vm map entries, vm objects, and lots of other
+ hanging buffers
+ <braunr> about how much is zalloc_wasted_space ?
+ <braunr> if it's small or constant, i guess you could ignore it
+ <mcsim> about 492
+ <mcsim> KiB
+ <braunr> well it's another good point, mach internal structures don't imply
+ much overhead
+ <braunr> or, the zone allocator is underused
+
+ <tschwinge> mcsim, braunr: The memory allocator project is coming along
+ good, as I get from your IRC messages?
+ <braunr> tschwinge: yes, but as expected, improvements are minor
+ <tschwinge> But at the very least it's now well-known, maintainable code.
+ <braunr> yes, it's readable, easier to understand, provides self inspection
+ and is smp ready
+ <braunr> there also are less hacks, but a few less features (there are no
+ way to avoid sleeping so it's unusable - and unused - in interrupt
+ handlers)
+ <braunr> is* no way
+ <braunr> tschwinge: mcsim did a good job porting and measuring it
+
+
+# IRC, freenode, #hurd, 2011-09-08
+
+ <antrik> braunr: note that the zalloc map used to be limited to 8 MiB or
+ something like that a couple of years ago... so it doesn't seems
+ surprising that the kernel uses "only" 5 MiB :-)
+ <antrik> (yes, we had a *lot* of zalloc panics back then...)
+
+
+# IRC, freenode, #hurd, 2011-09-14
+
+ <mcsim> braunr: hello. I've written a constructor for kernel map entries
+ and it can return resources to their source. Can you have a look at it?
+ http://paste.debian.net/130037/ If all be OK I'll push it tomorrow.
+ <braunr> mcsim: send the patch through mail please, i'll apply it on my
+ copy
+ <braunr> are you sure the cache is reapable ?
+ <mcsim> All slabs, except first I allocate with kmem_alloc_wired.
+ <braunr> how can you be sure ?
+ <mcsim> First slab I allocate during bootstrap and use pmap_steal_memory
+ and further I use only kmem_alloc_wired
+ <braunr> no, you use kmem_free
+ <braunr> in kentry_dealloc_cache()
+ <braunr> which probably creates a recursion
+ <braunr> using the constructor this way isn't a good idea
+ <braunr> constructors are good for preconstructed state (set counters to 0,
+ init lists and locks, that kind of things, not allocating memory)
+ <braunr> i don't think you should try to make this special cache reapable
+ <braunr> mcsim: keep in mind constructors are applied on buffers at *slab*
+ creation, not at object allocation
+ <braunr> so if you allocate a single slab with, say, 50 or 100 objects per
+ slab, kmem_alloc_wired would be called that number of times
+ <mcsim> why kentry_dealloc_cache can create recursion? kentry_dealloc_cache
+ is called only by mem_cache_reap.
+ <braunr> right
+ <braunr> but are you totally sure mem_cache_reap() can't be called by
+ kmem_free() ?
+ <braunr> i think you're right, it probably can't
+
+
+# IRC, freenode, #hurd, 2011-09-25
+
+ <mcsim> braunr: hello. I rewrote constructor for kernel entries and seems
+ that it works fine. I think that this was last milestone. Only moving of
+ memory allocator sources to more appropriate place and merge with main
+ branch left.
+ <braunr> mcsim: it needs renaming and reindenting too
+ <mcsim> for reindenting C-x h Tab in emacs will be enough?
+ <braunr> mcsim: make sure which style must be used first
+ <mcsim> and what should I rename and where better to place allocator? For
+ example, there is no lib directory, like in x15. Should I create it and
+ move list.* and rbtree.* to lib/ or move these files to util/ or
+ something else?
+ <braunr> mcsim: i told you balloc isn't a good name before, use something
+ more meaningful (kmem is already used in gnumach unfortunately if i'm
+ right)
+ <braunr> you can put the support files in kern/
+ <mcsim> what about vm_alloc?
+ <braunr> you should prefix it with vm_
+ <braunr> shouldn't
+ <braunr> it's a top level allocator
+ <braunr> on top of the vm system
+ <braunr> maybe mcache
+ <braunr> hm no
+ <braunr> maybe just km_
+ <mcsim> kern/km_alloc.*?
+ <braunr> no
+ <braunr> just km
+ <mcsim> ok.
+
+
+# IRC, freenode, #hurd, 2011-09-27
+
+ <mcsim> braunr: hello. When I've tried to speed of new allocator and bad
+ I've removed function mem_cpu_pool_fill. But you've said to undo this. I
+ don't understand why this function is necessary. Can you explain it,
+ please?
+ <mcsim> When I've tried to compare speed of new allocator and old*
+ <braunr> i'm not sure i said that
+ <braunr> i said the performance overhead is negligible
+ <braunr> so it's better to leave the cpu pool layer in place, as it almost
+ doesn't hurt
+ <braunr> you can implement the KMEM_CF_NO_CPU_POOL I added in the x15 mach
+ version
+ <braunr> so that cpu pools aren't used by default, but the code is present
+ in case smp is implemented
+ <mcsim> I didn't remove cpu pool layer. I've just removed filling of cpu
+ pool during creation of slab.
+ <braunr> how do you fill the cpu pools then ?
+ <mcsim> If object is freed than it is added to cpu poll
+ <braunr> so you don't fill/drain the pools ?
+ <braunr> you try to get/put an object and if it fails you directly fall
+ back to the slab layer ?
+ <mcsim> I drain them during garbage collection
+ <braunr> oh
+ <mcsim> yes
+ <braunr> you shouldn't touch the cpu layer during gc
+ <braunr> the number of objects should be small enough so that we don't care
+ much
+ <mcsim> ok. I can drain cpu pool at any other time if it is prohibited to
+ in mem_gc.
+ <mcsim> But why do we need to fill cpu poll during slab creation?
+ <mcsim> In this case allocation consist of: get object from slab -> put it
+ to cpu pool -> get it from cpu pool
+ <mcsim> I've just remove last to stages
+ <braunr> hm cpu pools aren't filled at slab creation
+ <braunr> they're filled when they're empty, and drained when they're full
+ <braunr> so that the number of objects they contain is increased/reduced to
+ a value suitable for the next allocations/frees
+ <braunr> the idea is to fall back as little as possible to the slab layer
+ because it requires the acquisition of the cache lock
+ <mcsim> oh. You're right. I'm really sorry. The point is that if cpu pool
+ is empty we don't need to fill it first
+ <braunr> uh, yes we do :)
+ <mcsim> Why cache locking is so undesirable? If we have free objects in
+ slabs locking will not take a lot if time.
+ <braunr> mcsim: it's undesirable on a smp system
+ <mcsim> ok.
+ <braunr> mcsim: and spin locks are normally noops on a up system
+ <braunr> which is the case in gnumach, hence the slightly better
+ performances without the cpu layer
+ <braunr> but i designed this allocator for x15, which only supports mp
+ systems :)
+ <braunr> mcsim: sorry i couldn't look at your code, sick first, busy with
+ server migration now (new server almost ready for xen hurds :))
+ <mcsim> ok.
+ <mcsim> I ended with allocator if didn't miss anything important:)
+ <braunr> i'll have a look soon i hope :)
+
+
+# IRC, freenode, #hurd, 2011-09-27
+
+ <antrik> braunr: would it be realistic/useful to check during GC whether
+ all "used" objects are actually in a CPU pool, and if so, destroy them so
+ the slab can be freed?...
+ <antrik> mcsim: BTW, did you ever do any measurements of memory
+ use/fragmentation?
+ <mcsim> antrik: I couldn't do this for zalloc
+ <antrik> oh... why not?
+ <antrik> (BTW, I would be interested in a comparision between using the CPU
+ layer, and bare slab allocation without CPU layer)
+ <mcsim> Result I've got were strange. It wasn't even aligned to page size.
+ <mcsim> Probably is it better to look into /proc/vmstat?
+ <mcsim> Because I put hooks in the code and probably I missed something
+ <antrik> mcsim: I doubt vmstat would give enough information to make any
+ useful comparision...
+ <braunr> antrik: isn't this draining cpu pools at gc time ?
+ <braunr> antrik: the cpu layer was found to add a slight overhead compared
+ to always falling back to the slab layer
+ <antrik> braunr: my idea is only to drop entries from the CPU cache if they
+ actually prevent slabs from being freed... if other objects in the slab
+ are really in use, there is no point in flushing them from the CPU cache
+ <antrik> braunr: I meant comparing the fragmentation with/without CPU
+ layer. the difference in CPU usage is probably negligable anyways...
+ <antrik> you might remember that I was (and still am) sceptical about CPU
+ layer, as I suspect it worsens the good fragmentation properties of the
+ pure slab allocator -- but it would be nice to actually check this :-)
+ <braunr> antrik: right
+ <braunr> antrik: the more i think about it, the more i consider slqb to be
+ a better solution ...... :>
+ <braunr> an idea for when there's time
+ <braunr> eh
+ <antrik> hehe :-)
diff --git a/open_issues/gnumach_memory_management/pmap.out b/open_issues/gnumach_memory_management/pmap.out
new file mode 100644
index 00000000..b1af1e66
--- /dev/null
+++ b/open_issues/gnumach_memory_management/pmap.out
@@ -0,0 +1,85 @@
+Start End Size Offset rwxpc RWX I/W/A Dev Inode - File
+c0000000-c16c1fff 23304k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+c16c2000-c16c2fff 4k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+c16c3000-c16e2fff 128k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+c16e3000-c999cfff 133864k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ kmem_map ]
+ c16e3000-c16e3fff 4k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+ c16e4000-c1736fff 332k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+ c1737000-c1737fff 4k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+ c1738000-c1766fff 188k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+ c1767000-c1767fff 4k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+ c1768000-c182dfff 792k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+ c182e000-c182efff 4k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+ c182f000-c187bfff 308k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+ c187c000-c187cfff 4k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+ c187d000-c187dfff 4k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+ c1880000-c189ffff 128k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+c999d000-ca99cfff 16384k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ pager_map ]
+ca99d000-ca9b7fff 108k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+ca9b8000-ca9b9fff 8k 0a9b8000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+ca9ba000-ca9bbfff 8k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+ca9bc000-ca9bffff 16k 0a9bc000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+ca9c0000-ca9dffff 128k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+ca9e0000-cab0bfff 1200k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ phys_map ]
+cab0c000-cad16fff 2092k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ mb_map ]
+ cab0c000-cab0cfff 4k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+ cab0d000-cab3afff 184k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cad17000-cad26fff 64k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cad27000-cad2cfff 24k 0ad27000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+cad2d000-cad2dfff 4k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cad2e000-cad2ffff 8k 0ad2e000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+cad30000-cae0ffff 896k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cae10000-cae11fff 8k 0ae10000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+cae12000-cae81fff 448k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cae82000-cae83fff 8k 0ae82000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+cae84000-caecbfff 288k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+caecc000-caecdfff 8k 0aecc000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+caece000-caecefff 4k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+caecf000-caecffff 4k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+caed0000-caed1fff 8k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+caed2000-caed3fff 8k 0aed2000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+caed4000-caee5fff 72k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+caee6000-caee9fff 16k 0aee6000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+caeea000-caeeefff 20k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+caeef000-caef4fff 24k 0aeef000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+caef5000-cb00cfff 1120k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cb00d000-cb01cfff 64k 0b00d000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+cb01d000-cb02afff 56k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cb02b000-cb82afff 8192k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ ubc_pager ]
+cb82b000-cb838fff 56k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cb839000-cb839fff 4k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cb83a000-cb83bfff 8k 0b83a000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+cb83c000-cb855fff 104k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cb856000-cb857fff 8k 0b856000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+cb858000-cb858fff 4k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cb859000-cb85cfff 16k 0b859000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+cb85d000-cb85dfff 4k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cb85e000-cb85ffff 8k 0b85e000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+cb860000-cb88ffff 192k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cb890000-cb8cffff 256k 0b890000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+cb8d0000-cb8f0fff 132k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cb8f1000-cb8f4fff 16k 0b8f1000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+cb8f5000-cba03fff 1084k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cba04000-cba04fff 4k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cba05000-cbaf1fff 948k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cbaf2000-cbaf3fff 8k 0baf2000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+cbaf4000-cbaf7fff 16k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cbaf8000-cbafffff 32k 0baf8000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+cbb00000-cbb70fff 452k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cbb71000-cbb76fff 24k 0bb71000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+cbb77000-cbb7bfff 20k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cbb7c000-cbb7ffff 16k 0bb7c000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+cbb80000-cbbc1fff 264k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cbbc2000-cbbc2fff 4k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cbbc3000-cbbc3fff 4k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cbbc4000-cbbc5fff 8k 0bbc4000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+cbbc6000-cbbc8fff 12k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cbbc9000-cbbcafff 8k 0bbc9000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+cbbcb000-cbbcdfff 12k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cbbce000-cbbcffff 8k 0bbce000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+cbbd0000-cbca1fff 840k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cbca2000-cbcadfff 48k 0bca2000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+cbcae000-cbcaefff 4k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+cbcaf000-cbcb2fff 16k 0bcaf000 rwxs- (rwx) 2/0/1 00:00 0 - [ uvm_aobj ]
+cbcc0000-cbcdffff 128k 00000000 rwxs- (rwx) 2/0/1 00:00 0 - [ anon ]
+ total 193356k
diff --git a/open_issues/gnumach_tlb_flushing.mdwn b/open_issues/gnumach_tlb_flushing.mdwn
new file mode 100644
index 00000000..45d0730d
--- /dev/null
+++ b/open_issues/gnumach_tlb_flushing.mdwn
@@ -0,0 +1,21 @@
+[[!meta copyright="Copyright © 2010 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_gnumach]]
+
+IRC, unknown channel, unknown date.
+
+ <tschwinge> gianluca, youpi: Why the value 32 for the TLB flushing decision, by the way?
+ <youpi> completely arbitrary
+ <tschwinge> I thought whether that might perhaps be worth a macro definition with a comment?
+ <verte> what's the typical TLB size these days?
+ <youpi> tschwinge: right
+ <youpi> note that the 32 value would be probably different between native and xen
+ <gianluca> tschwinge: just arbitrary
diff --git a/open_issues/gnumach_vm_map_entry_forward_merging.mdwn b/open_issues/gnumach_vm_map_entry_forward_merging.mdwn
new file mode 100644
index 00000000..90137766
--- /dev/null
+++ b/open_issues/gnumach_vm_map_entry_forward_merging.mdwn
@@ -0,0 +1,200 @@
+[[!meta copyright="Copyright © 2011 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_gnumach]]
+
+
+# IRC, freenode, #hurd, 2011-07-20
+
+ <braunr> could we add gnumach forward map entry merging as an open issue ?
+ <braunr> probably hurting anything using bash extensively, like build most
+ build systems
+ <braunr> mcsim: this map entry merging problem might interest you
+ <braunr> tschwinge: see vm/vm_map.c, line ~905
+ <braunr> "See whether we can avoid creating a new entry (and object) by
+ extending one of our neighbors. [So far, we only attempt to extend from
+ below.]"
+ <braunr> and also vm_object_coalesce
+ <braunr> "NOTE: Only works at the moment if the second object is NULL -
+ if it's not, which object do we lock first?"
+ <braunr> although map entry merging should be enough
+ <braunr> this seems to be the cause for bash having between 400 and 1000+
+ map entries
+ <braunr> thi makes allocations and faults slow, and forks even more
+ <braunr> but again, this should be checked before attempting anything
+ <braunr> (for example, this comment still exists in freebsd, although they
+ solved the problem, so who knows)
+ <antrik> braunr: what exactly would you want to check?
+ <antrik> braunr: this rather sounds like something you would just have to
+ try...
+ <braunr> antrik: that map merging is actually incomplete
+ <braunr> and that entries can actually be merged
+ <antrik> hm, I see...
+ <braunr> (i.e. they are adjacent and have compatible properties
+ <braunr> )
+ <braunr> antrik: i just want to avoid the "hey, splay trees mak fork slow,
+ let's work on it for a month to see it wasn't the problem"
+ <antrik> so basically you need a dump of a task's map to check whether
+ there are indeed entries that could/should be merged?
+ <antrik> hehe :-)
+ <braunr> well, vminfo should give that easily, i just didn't take the time
+ to check it
+ <jkoenig> braunr, as you pointed out, "vminfo $$" seems to indicate that
+ merging _is_ incomplete.
+ <braunr> this could actually have a noticeable impact on package builds
+ <braunr> hm
+ <braunr> the number of entries for instances of bash running scripts don't
+ exceed 50-55 :/
+ <braunr> the issue seems to affect only certain instances (login shells,
+ and su -)
+ <braunr> jkoenig: i guess dash is just much lighter than bash in many ways
+ :)
+ <jkoenig> braunr, the number seems to increase with usage (100 here for a
+ newly started interactive shell, vs. 150 in an old one)
+ <braunr> yes, merging is far from complete in the vm_map code
+ <braunr> it only handles null objects (private zeroed memory), and only
+ tries to extend a previous entry (this isn't even a true merge)
+ <braunr> this works well for the kernel however, which is why there are so
+ few as 25 entries
+ <braunr> but any request, be it e.g. mmap(), or mprotect(), can easily
+ split entries
+ <braunr> making their number larger
+ <jkoenig> my ext2fs has ~6500 entries, but I guess this is related to
+ mapping blocks from the filesystem, right?
+ <braunr> i think so
+ <braunr> hm not sure actually
+ <braunr> i'd say it's fragmentation due to copy on writes when client have
+ mapped memory from it
+ <braunr> there aren't that many file mappings though :(
+ <braunr> jkoenig: this might just be the same problem as in bash
+ <braunr> 0x1308000[0x3000] (prot=RW, max_prot=RWX, mem_obj=584)
+ <braunr> 0x130b000[0x6000] (prot=RW, max_prot=RWX, mem_obj=585)
+ <braunr> 0x1311000[0x3000] (prot=RX, max_prot=RWX, mem_obj=586)
+ <braunr> 0x1314000[0x1000] (prot=RW, max_prot=RWX, mem_obj=586)
+ <braunr> 0x1315000[0x2000] (prot=RX, max_prot=RWX, mem_obj=587)
+ <braunr> the first two could be merged but not the others
+ <jkoenig> theoritically, those may correspond to memory objects backed by
+ different portions of the disk, right?
+ <braunr> jkoenig: this looks very much like the same issue (many private
+ mappings not merged)
+ <braunr> jkoenig: i'm not sure
+ <braunr> jkoenig: normally there is an offset when the object is valid
+ <braunr> but vminfo may simply not display it if 0
+ * jkoenig goes read about memory object
+ <braunr> ok, vminfo can't actually tell if the object is anonymous or
+ file-backed memory
+ <jkoenig> (I'm perplexed about how the kernel can merge two memory objects
+ if disctinct port names exist in the tasks' name space -- that's what
+ mem_obj is, right?)
+ <braunr> i don't see why
+ <braunr> jkoenig: can you be more specific ?
+ <jkoenig> braunr, if, say, 584 and 585 above are port names which the task
+ expects to be able to access and do stuff with, what will happen to them
+ when the memory objects are merged?
+ <braunr> good question
+ <braunr> but hm
+ <braunr> no it's not really a problem
+ <braunr> memory objects aren't directly handled by the vm system
+ <braunr> vm_object and memory_object are different things
+ <braunr> vm_objects can be split and merged
+ <braunr> and shadow objects form chains ending on a final vm_object
+ <braunr> which references a memory object
+ <braunr> hm
+ <braunr> jkoenig: ok no solution, they can't be merged :)
+ <jkoenig> braunr, I'm confused :-)
+ <braunr> jkoenig: but at least, if two vm_objects are created but reference
+ the same externel memory object, the vm should be able to merge them back
+ <braunr> external*
+ <braunr> are created as a result of a split
+ <braunr> say, you map a memory object, mprotect part of it (=split), then
+ mprotect the reste of it (=merge), it should work
+ <braunr> jkoenig: does that clarify things a bit ?
+ <jkoenig> ok so if I get it right, the entries shown by vmstat are the
+ vm_object, and the mem_obj listed is a send right to the memory object
+ they're referencing ?
+ <braunr> yes
+ <braunr> i'm not sure about the type of the integer showed (port name or
+ simply an index)
+ <braunr> jkoenig: another possibility explaining the high number of entries
+ is how anonymous memory is implemented
+ <braunr> if every vm_allocate request implies the creation of a memory
+ object from the default pager
+ <braunr> the vm has no way to merge them
+ <jkoenig> and a vm_object is not a capability, but just an internal kernel
+ structure used to record the composition of the address space
+ <braunr> jkoenig: not exactly the address space, but close enough
+ <braunr> jkoenig: it's a container used to know what's in physical memory
+ and what isn't
+ <jkoenig> braunr, ok I think I'm starting to get it, thanks.
+ <braunr> glad i could help
+ <braunr> i wonder when vm_map_enter() gets null objects though :/
+ <braunr> "If this port is MEMORY_OBJECT_NULL, then zero-filled memory is
+ allocated instead"
+ <braunr> which means vm_allocate()
+ <jkoenig> braunr, when the task uses vm_allocate(), or maybe vm_map_enter()
+ with MEMORY_OBJECT_NULL, there's an opportunity to extend an existing
+ object though, is that what you referred to earlier ?
+ <braunr> jkoenig: yes, and that's what is done
+ <jkoenig> but how does that play out with the default pager? (I'm thinking
+ aloud, as always feel free to ignore ;-)
+ <braunr> the default pager backs vm_objects providing zero filled memory
+ <braunr> hm, guess it wasn't your question
+ <braunr> well, swap isn't like a file, pages can be placed dynamically,
+ which is why the offset is always 0 for this type of memory
+ <jkoenig> hmm I see, apparently a memory object does not have a size
+ <braunr> are you sure ?
+ <jkoenig> from what I can gather from
+ http://www.gnu.org/software/hurd/gnumach-doc/External-Memory-Management.html,
+ but I looked very quickly
+ <braunr> vm_objects have a size
+ <braunr> and each map entry recors the offset within the object where the
+ mapping begins
+ <braunr> offset and sizes are used by the kernel when querying the memory
+ object pager
+ <braunr> see memory_object_data_request for example
+ <jkoenig> right.
+ <braunr> but the default pager has another interface
+ <braunr> jkoenig: after some simple tests, i haven't seen a simple case
+ where forward merging could be applied :(
+ <braunr> which means it's a lot harder than it first looked
+ <braunr> hm
+ <braunr> actually, there seems to be cases where this can be done
+ <braunr> all of them occurring after a first merge was done
+ <braunr> (which means a mapping request perfectly fits between two map
+ entries)
+
+
+# IRC, freenode, #hurd, 2011-07-21
+
+ <braunr> tschwinge: you may remove the forward map entry merging issue :/
+ <pinotree> what did you discover?
+ <braunr> tschwinge: it's actually much more complicated than i thought, and
+ needs major changes in the vm, and about the way anonymous memory is
+ handled
+ <braunr> from what i could see, part of the problem still exists in freebsd
+ <braunr> for the same reasons (shadow objects being one of them)
+
+
+# GCC build time using bash vs. dash
+
+<http://gcc.gnu.org/ml/gcc/2011-07/msg00444.html>
+
+
+# Procedure
+
+ * Analyze.
+
+ * Measure.
+
+ * Fix.
+
+ * Measure again.
+
+ * Have Samuel measure on the buildd.
diff --git a/open_issues/hurd_101.mdwn b/open_issues/hurd_101.mdwn
new file mode 100644
index 00000000..5c7031c9
--- /dev/null
+++ b/open_issues/hurd_101.mdwn
@@ -0,0 +1,38 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+(See Wikipedia page for the meaning of [[!wikipedia "101_(term)"]].)
+
+Not the first time that something like this is proposed...
+
+IRC, freenode, #hurd, 2011-07-25
+
+ [failed GNU/Hurd project]
+ < antrik> gnu_srs1: I wouldn't say he was on track. just one of the many
+ many people who insist on picking a hard task; realizing that indeed it's
+ hard; and going into hiding
+ < antrik> we see that happen every couple of months
+ < cluck> maybe we need a "hurd 101"
+ < cluck> getting a teacher and setting up a regularly held "class" for hurd
+ noobs
+ < Tekk_> cluck: what would that include?
+ < cluck> explaining core concepts, giving out "homework" (small tasks), etc
+ < cluck> that way "the big guys" could focus on the hard stuff and have an
+ army of code monkeys at their disposal to write speced stuff
+ < cluck> (then again this idea would heavily depend on available "teachers"
+ and "students", which, going by gsoc numbers, may not be all that
+ helpful)
+ < Tekk_> cluck: gsoc isn't an accurate indicator
+ < Tekk_> cluck: I'm not allowed to participate in gsoc but I'd join :P
+ < antrik> cluck: we don't need code monkeys... we need hackers
+ < Tekk_`> antrik: code monkeys involve into hackers
+ < Tekk_`> under the right conditions
+ < cluck> antrik: jokes aside some sort of triage system/training ground for
+ newcomers could be helpful
diff --git a/open_issues/hurd_build_without_parted.mdwn b/open_issues/hurd_build_without_parted.mdwn
new file mode 100644
index 00000000..06ecf56d
--- /dev/null
+++ b/open_issues/hurd_build_without_parted.mdwn
@@ -0,0 +1,16 @@
+[[!meta copyright="Copyright © 2011 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_hurd]]
+
+Seen with `cross-gnu`.
+
+If the *parted* libraries aren't available, we explicitly have to set
+`--without-parted` or the build will fail.
diff --git a/open_issues/hurd_file_name_lookup_retry_FS_RETRY_MAGIC.mdwn b/open_issues/hurd_file_name_lookup_retry_FS_RETRY_MAGIC.mdwn
new file mode 100644
index 00000000..b1eaf9a5
--- /dev/null
+++ b/open_issues/hurd_file_name_lookup_retry_FS_RETRY_MAGIC.mdwn
@@ -0,0 +1,21 @@
+[[!meta copyright="Copyright © 2009, 2010 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]]."]]"""]]
+
+IRC, #hurd, 2009-08-25
+
+ <cfhammar> also I fixed (what I think is) a bug in hurd_file_name_lookup_retry when opening FDs with FS_RETRY_MAGIC
+ <cfhammar> it didn't actually reopen the FD, rather it just (effectively) duped it
+ <scolobb> cfhammar: That's great! I think I had some problems because of not being able to truly reopen a port to a file.
+ <antrik> cfhammar: what is the difference, and why do you consider it a bug?...
+ <cfhammar> antrik: for one thing you can't change open modes, and it doesn't reset the file cursor
+ <cfhammar> (which I actually needed, though I could have done it manually)
+ <cfhammar> antrik: and also it isn't consistant with linux
+ <cfhammar> you can trigger the bug from the shell: cat /dev/fd/3 3>> /tmp/foo
+ <antrik> cfhammar: I can't say that I understand the test case... but I can at least confirm that it behaves differently on Hurd and on Linux :-)
diff --git a/open_issues/hurdextras.mdwn b/open_issues/hurdextras.mdwn
new file mode 100644
index 00000000..1cdb210b
--- /dev/null
+++ b/open_issues/hurdextras.mdwn
@@ -0,0 +1,104 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+This is about merging some hurdextras stuff into Hurd proper repostitories.
+
+[[!toc levels=2]]
+
+
+# OK
+
+## cvsfs
+
+/!\ Waiting for <https://savannah.gnu.org/support/?107474>.
+
+ * stesie -- OK
+
+## libfuse
+
+/!\ Waiting for <https://savannah.gnu.org/support/?107474>.
+
+ * stesie -- OK
+
+## mboxfs
+
+Tarball-import, plus trivial changes.
+
+ * Ludovic Courtes -- OK
+ * mmenal -- OK
+
+## notice
+
+Tarball-import.
+
+ * Wolfgang Jährling <wolfgang@pro-linux.de> -- OK
+
+## run
+
+Tarball-import.
+
+ * Marcus Brinkmann <marcus@gnu.org> -- OK
+ * Manuel Menal <mmenal@hurdfr.org> -- OK
+
+
+# Not Interesting
+
+## procfs
+
+Not interesting anymore, but perhaps import for posterity? Likewise for Neal's
+tarball(s).
+
+
+# Not OK
+
+## httpfs
+
+ * Arun V. <arunsark@yahoo.com> -- NOK
+ * Gopika U. K. <gopika78@yahoo.com> -- NOK
+ * mrphython / James A. Morrison <ja2morri@uwaterloo.ca> -- OK
+
+## jfs
+
+ * Sajith T S <sajith@symonds.net> -- NOK
+ * mmenal / Manuel Menal <mmenal@hurdfr.org> -- OK
+
+## memfs
+
+ * Farid Hajji <farid.hajji@ob.kamp.net> -- NOK
+ * Ludovic Courtes <ludo@chbouib.org> -- OK
+ * mmenal -- OK
+
+## pith
+
+[[tschwinge]] has some tarballs, too.
+
+ * John Tobey <jtobey@john-edwin-tobey.org> -- NOK
+ * Manuel Menal <mmenal@hurdfr.org> -- OK
+
+## pptop
+
+ * Miles Bader -- OK
+ * Paul Emsley <paule@chem.gla.ac.uk> -- NOK
+ * James Morrison -- OK
+ * Neal Walfield -- OK
+ * Jon Arney <jarney1@cox.net> -- OK
+ * Alfredo Beaumont Sainz <alfredo.beaumont@gmail.com> -- NOK (but trivial) -- OK
+
+## smbfs
+
+ * rocky\_10\_balboa, gscrivano -- NOK (but has assignments various other GNU
+ projects); 2010-10-19: started assignment process.
+
+## xmlfs
+
+Tarball-import.
+
+ * Marc de Saint Sauveur <marc@hurdfr.org> -- NOK
+ * mmenal -- OK
diff --git a/open_issues/ifunc.mdwn b/open_issues/ifunc.mdwn
new file mode 100644
index 00000000..96928fdc
--- /dev/null
+++ b/open_issues/ifunc.mdwn
@@ -0,0 +1,49 @@
+[[!meta copyright="Copyright © 2010, 2011 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_binutils open_issue_gcc open_issue_glibc]]
+
+Needs porting / support in [[/binutils]] and [[/glibc]], and then some target
+configure magic for [[/GCC]].
+
+<http://nickclifton.livejournal.com/6612.html> has a short summary about how to
+use it from GCC.
+
+ * binutils
+
+ Already passes the ifunc testsuite bits for GAS, but notably for LD
+ (`ld/testsuite/ld-ifunc/ifunc.exp`), too, but that one contains a bunch of
+ stuff explicitly tailored towards Linux. For example, we get *OS/ABI: UNIX
+ - Linux*. (This should be fixed through using [[toolchain/ELFOSABI_GNU]].)
+
+ Most of the executables that the testsuite generates don't actually
+ execute. (Though, this is partly due to the [[static
+ issue|binutils#static]].)
+
+ $ tmpdir/local_prog
+ ifunc working correctly
+ $ tmpdir/static_prog
+ Killed
+ $ tmpdir/dynamic_prog
+ tmpdir/dynamic_prog: error while loading shared libraries: ./tmpdir/libshared_ifunc.so: ELF file OS ABI invalid
+ $ tmpdir/static_nonifunc_prog
+ Killed
+ $ tmpdir/test-1
+ tmpdir/test-1: error while loading shared libraries: tmpdir/libshared_ifunc.so: ELF file OS ABI invalid
+
+ * [[glibc]]
+
+ * [[libc_variant_selection]]
+
+ * [[GCC]]
+
+ In `gcc/config.gcc`, set `default_gnu_indirect_function=yes' for us, like
+ done for GNU/Linux. See thread starting at
+ *id:"CAFULd4YZsAQ6ckFjXtU5-yyv=3tYQwTJOPhU9zmJxFOrnotj8g@mail.gmail.com"*.
diff --git a/open_issues/implementing_hurd_on_top_of_another_system.mdwn b/open_issues/implementing_hurd_on_top_of_another_system.mdwn
new file mode 100644
index 00000000..95b71ebb
--- /dev/null
+++ b/open_issues/implementing_hurd_on_top_of_another_system.mdwn
@@ -0,0 +1,117 @@
+[[!meta copyright="Copyright © 2010, 2011 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_documentation]]
+
+It is possible to run Hurd stuff on top of another system instead of on Mach.
+One obvious variant is [[emulation]] (using [[hurd/running/QEMU]], for
+example), but
+doing that does not really integratable the Hurd guest into the host system.
+There is also a more direct way, more powerful, but it also has certain
+requirements to do it effectively:
+
+IRC, #hurd, August / September 2010
+
+ <marcusb> silver_hook: the Hurd can also refer to the interfaces of the
+ filesystems etc, and a lot of that is really just server/client APIs that
+ could be implemented on any system that has transferable rights to
+ message capabilities.
+ <marcusb> silver_hook: it's surprising how few systems *have* transferable
+ rights, though!
+ <marcusb> silver_hook: usually it is added as an afterthought
+ <marcusb> and comes with restriction
+ <youpi> marcusb: there's SCM_RIGHTS to transfer fds, which is quite often
+ available
+ <marcusb> youpi: yes, I know this as "fdpassing"
+ <marcusb> youpi: it's described in the Stevens series even
+ [...]
+ <marcusb> ArneBab: well, let me put it this way. the Linux kernel has no
+ interface to manipulate another tasks's virtual address space, ie you
+ can't map/unmap stuff in another process
+ <marcusb> ArneBab: you would have to use ptrace and load some stub code in
+ that process to make that happen.
+ <marcusb> ArneBab: so for complete transparent manipulation, you need a
+ kernel module
+ <marcusb> that is what the User Mode Linux kernel module does
+ <marcusb> ArneBab: so say you use the User Mode Linux kernel module for
+ that one feature. Then you can do everything that User Mode Linux can
+ do, which, I assure you, includes running subhurds :)
+ <marcusb> it can be a bit tricky to implement those features, but it is not
+ harder than writing a kernel in the first place
+ <ArneBab> So, if I got an admin to install User Mode Linux and Mach
+ emulation, I’d get the flexibility (and independence from admin
+ decisions) I have in the Hurd?
+ <marcusb> ArneBab: one problem is that you still use Linux. For those who
+ want to get rid of Linux for political reasons, that would mean complete
+ failure
+ <marcusb> ArneBab: if you have UML kernel module, you can implement Mach in
+ user space
+ <marcusb> ArneBab: in fact, John Tobey did this a couple of years ago, or
+ started it
+
+([[tschwinge]] has tarballs of John's work.)
+
+ <marcusb> ArneBab: or you can just implement parts of it and relay to Linux
+ for the rest
+ <marcusb> the point is, that if you don't care for kernel improvements, and
+ are sufficiently happy with the translator stuff, it's not hard to bring
+ the Hurd to Linux or BSD
+
+Continue reading about the [[benefits of a native Hurd implementation]].
+
+---
+
+IRC, #hurd, 2010-12-28
+
+ <antrik> kilobug: there is no real requirement for the Hurd to run on a
+ microkernel... as long as the important mechanisms are provided (most
+ notably external pagers and Mach IPC), the Hurd could run an top of
+ pretty much any kernel...
+ <antrik> whether it makes sense is another question of course :-)
+ <antrik> though I must say that I'm more and more convinced running the
+ Hurd on top of a monolithic kernel would actually be a useful approach
+ for the time being...
+
+---
+
+IRC, #hurd, 2011-02-11
+
+ <neal> marcus and I were discussing how to add Mach to Linux
+ <neal> one could write a module to implement Mach IPC
+ <neal> and another to implement Mach VM
+ <neal> the big thing missing with Mach VM is the ability for a tracing
+ process to easily map or unmap an inferior process's memory
+ <antrik> neal: why would a tracing process need to map the inferior's
+ memory?
+ <neal> the simple answer is that is how it is done on Mach
+ <antrik> neal: is it? not sure we are talking about the same thing
+ here. GDB uses vm_read()/vm_write() to access the inferior's memory AFAIK
+ <neal> on linux?
+ <neal> I think it use /proc/pid/mem
+ <antrik> on Hurd
+ <neal> I'm talking about adding Mach to Linux
+ <neal> by adding some functionality to Linux
+ <neal> and then implementing a bunch in user space
+ <antrik> yeah, but I don't understand the point about mapping inferior's
+ memory :-(
+ <antrik> what would be in user space?
+ <neal> there are a number of different cut points
+ <neal> one could imagine just using Linux's device drivers, CPU scheduler,
+ memory management, etc.
+ <neal> another possibility would be something higher where Hurd processes
+ just use some Hurdish servers
+ <antrik> neal: yeah, these are all options I have been considering... too
+ bad I wasn't able to come to FOSDEM -- I'd love to have participated in
+ this discussion :-(
+ <antrik> neal: BTW, were you just discussing this as a hypothetical idea,
+ or something you are seriously considering?
+ <neal> I'm unlikely to work on it, sorry
+ <antrik> didn't really expect that :-)
+ <antrik> would be nice though if you could write up your conclusions...
diff --git a/open_issues/inotify_file_notice_changes.mdwn b/open_issues/inotify_file_notice_changes.mdwn
new file mode 100644
index 00000000..6d644788
--- /dev/null
+++ b/open_issues/inotify_file_notice_changes.mdwn
@@ -0,0 +1,47 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+IRC, freenode, #hurd, 2011-03-28
+
+[[!tag open_issue_hurd]]
+
+ <barrucadu> I've been going through the xmlfs code, and plan to have it
+ monitor the backing store (xml file) for changes and update the presented
+ directory hierarchy when something is changed; is there a better way to
+ check a file for changes beyond checking its modification time every few
+ minutes?
+ <tschwinge> barrucadu: In the Hurd spirit, you'd use file_notice_changes
+ (fs.defs).
+ <barrucadu> thanks
+ <youpi> we should manage to work out an inotify interface around it, btw
+ <pochu> like gamin?
+ <pinotree> imho making gamin work should gain all the fam-using
+ applications
+ <pochu> (which, looking at the sources, seems to support hurd already, not
+ sure why it's not built)
+ <pinotree> pochu: the hurd_notify of gamin does not build OOTB
+ <pochu> > /build/buildd/gamin-0.1.10/./libgamin/gam_data.c:476: error:
+ 'PTHREAD_MUTEX_RECURSIVE' undeclared (first use in this function)
+ <pinotree> there are few patches in bugzilla to make it compile
+ <pochu> if they work, and you point me to them, I can upload a new gamin
+ with them included
+ <pinotree> #315644, #588337. #605246
+ <pinotree> and iirc there's something else i have locally but not send yet
+ <pochu> please check and submit :)
+ <pinotree> ah no, those three contains all the build issues
+ <pinotree> .. plus relative proposed fixes
+ <pochu> ok, I'll try to get to it soonish
+ <pinotree> and you should know about two of them already ;D
+ <pochu> please remind me if I don't :)
+
+---
+
+Apparently fanotify is cosidered inotify's successor, so we might directly go
+supporting that one instead, or both. --[[tschwinge]], 2011-05-10
diff --git a/open_issues/issue_tracking.mdwn b/open_issues/issue_tracking.mdwn
new file mode 100644
index 00000000..6693413b
--- /dev/null
+++ b/open_issues/issue_tracking.mdwn
@@ -0,0 +1,98 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+There are the Savannah trackers. Nobody really likes them.
+
+There is a proposal to add/move to <http://debbugs.gnu.org/>. It can be
+operated by email, Debian people (developers and users) already know how to use
+it.
+
+There are the [[Open_Issues]] pages. This is basically just free-form text
+enriched by some tags for grouping, editable via the web and through Git
+commit. [[tschwinge]] added this to the set, and/but mostly is the sole user
+of it, even though casually there are a few other people contributing, and
+surely these pages do show up in web searches. A more traditional system (like
+the Savannah trackers or the new debbugs) do have their advantages, too, so
+perhaps there's a niche for both these and the [[Open_Issues]].
+
+IRC, freenode, #hurd, 2011-08-31:
+
+ <tschwinge> So. Savannah trackers vs. Open Issues vs. debbugs. Any input?
+ <youpi> I like *both* open issues and debbugs
+ <youpi> open issues is good for exposing things that people may encounter
+ in other situations
+ <youpi> while debbugs is useful to actually work on a bug
+ <tschwinge> youpi: The advantage of debbugs being the email interface and
+ the well-known procedure, or something else?
+ <youpi> email interface, which nicely flows into a mailing list
+ <youpi> the savannah bug updates suffer from the additional layout
+ <tschwinge> How does one decide what to put in a debbug and what in an Open
+ Issue page?
+ <youpi> I'd say it's not exclusive at all
+ <youpi> like, a bug on a specific case can start as debbug, and as we
+ discover it's more general and will not be fixed immediately, get an open
+ issue page
+ <youpi> and conversely, when we know some shortcoming, start with an open
+ issue, and if some bugs are submitted which are actually due to it,
+ cross-link
+ <tschwinge> OK.
+ <youpi> (some general short coming I mean, like SIGINFO)
+ <tschwinge> And we would keep the current stuff in the trackers, and let
+ these ``get empty'' gradually (it'll be years...) ;-) or migrate the
+ remaining issues?
+ <tschwinge> What we can do is inhibiting the creation of new issues in the
+ trackers.
+ <youpi> I'd say move
+ <youpi> else they will be forgotten
+ <tschwinge> Hrm.
+ <antrik> actually, I considered creating a track-like plugin for ikiwiki,
+ as both the popularity of trac and the usefulness of open_issues show
+ that something wiki-like is actually more useful than a rigid traditional
+ bugtracker. but I'm not really willing to do the work, which is why I
+ didn't propose it before :-)
+ <antrik> err... trac-like
+ <youpi> yes, the wiki part is really useful to keep a good summary of the
+ issue
+ <tschwinge> antrik: Same for me. I always hoped that someone would do
+ it... :-)
+ <antrik> hehe
+ <tschwinge> antrik: But, as you surely know, this email parsing business is
+ just too ugly to do realiable, etc.
+ <antrik> youpi: my point is that adding a few additional bits (like a
+ comfortable tagging functionality, and some mail interface) could turn
+ into a full-blown tracker unifying the advantages of both... but as I
+ said, I'm not really willing to do the work :-)
+ <youpi> additional to open_issue you mean?
+ <youpi> yes, but like you say :)
+ <antrik> tschwinge: hm... seems to work well enough it debbugs
+ <youpi> debbugs just piles things
+ <youpi> and has a few commands
+ <youpi> you'd still need the web interface to edit the wiki part for
+ instance
+ <antrik> of course. that wouldn't change at all
+ <antrik> (except for adding a tagging GUI perhaps)
+ <antrik> (debbugs of course is not the only mail-operable bugtracking
+ system... there are a number of others -- and I heard rumors even
+ bugzilla grew a mail interface now...)
+ <youpi> antrik: a .mdwn diff should however be sent to the bug for
+ information
+ <youpi> atm, what happens sometimes is somebody saying something here on
+ #hurd, tschwinge turning that into an open_issue, and it does not show up
+ on the mailing list
+ <tschwinge> debbugs surely has the advantage that it is available (nearly)
+ right now.
+ <mattl> RT (request tracker) and ikiwiki play quite nicely together.
+ <tschwinge> mattl: You'Re using that at GNU/FSF/somewhere, right?
+ <mattl> you can close tickets from the wiki, and RT has a good command line
+ interface, email interface and web interface.
+ <mattl> tschwinge: yeah, we use RT and ikiwiki.
+ <mattl> RT for all FSF communications, and ikiwiki for internal organising.
+ <mattl> RT is not the easiest thing to set up, but works pretty well once
+ it's running.
diff --git a/open_issues/keymap_mach_console.mdwn b/open_issues/keymap_mach_console.mdwn
new file mode 100644
index 00000000..3063dd00
--- /dev/null
+++ b/open_issues/keymap_mach_console.mdwn
@@ -0,0 +1,40 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+IRC, freenode, #hurd, 2011-04-26
+
+ <guillem> pavkac: btw are you aware there's already some code to change the
+ keymap for the mach console (I think originally from the hurdfr guys, but
+ I cannot remember exactly from where I got it from :/)
+ <guillem> pavkac: http://www.hadrons.org/~guillem/tmp/hurd-keymap.tgz
+ <pavkac> guillem: No, I didn't know. I'll diff it and try to follow.
+ <guillem> pavkac: it would be nice to maybe integrate it properly into the
+ hurd
+ <guillem> you'll see the code is pretty basic, so extending it would be
+ nice too I guess :)
+ <pavkac> guillem: OK, I'll see to it. Unfortunately I'm quite busy this
+ week. Have a lot of homeworks to school. :/
+ <pavkac> guillem: But, I'll find some time during weekend.
+ <youpi> maybe it'd be simpler to add it to the hurd package and use that
+ from the console-setup package indeed
+ <youpi> but copyright issues should be solved
+ <youpi> unless we simply put this into hurdextras
+ <guillem> ok found this:
+ http://www.mail-archive.com/debian-hurd@lists.debian.org/msg02456.html
+ <guillem> and
+ http://www.mail-archive.com/debian-hurd@lists.debian.org/msg01173.html
+ <guillem> which seems to be the original Mark's code
+ <guillem> AFAIR I contributed the the spanish keymap and some additional
+ key definitions for loadkeys
+ <guillem> and http://lists.debian.org/debian-hurd/2000/10/msg00130.html
+ <pavkac> I've fetched all. :) But I must leave, good night if you're in
+ Europe. :)
+ <guillem> pavkac: the tarball I provided should be the latest, the others
+ are mostly to track the provenance of the source
diff --git a/open_issues/kvm.mdwn b/open_issues/kvm.mdwn
new file mode 100644
index 00000000..6dfffc9a
--- /dev/null
+++ b/open_issues/kvm.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+Issues when running Hurd under KVM: un-synced filesystems, etc. No problems
+with Virtualbox.
+
+2010-07-28, #hurd
+
+ <youpi> pochu: you were the one reporting issues with qemu/kvm and hurd, right?
+ <youpi> is your machine somehow smp (like multicore for instance)
+ <youpi> ?
+ <pochu> youpi: yes, it's a Core 2 Duo
+ <pochu> so 2 cores
+ <youpi> ok, you might want to try to bind qemu/kvm
+ <youpi> e.g. install hwloc, and prepend "hwloc-bind 1 --" before the qemu/kvm command line
+ <pochu> ok, ty
+
+2010-07-31, GNU Mach commit 039176372b4271f370ef38eb2ee5d43923a5b28b.
diff --git a/open_issues/latrace.mdwn b/open_issues/latrace.mdwn
new file mode 100644
index 00000000..b5a2928c
--- /dev/null
+++ b/open_issues/latrace.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+Check whether <http://people.redhat.com/jolsa/latrace/> works.
diff --git a/open_issues/lexical_dot-dot.mdwn b/open_issues/lexical_dot-dot.mdwn
new file mode 100644
index 00000000..3299dfa0
--- /dev/null
+++ b/open_issues/lexical_dot-dot.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta title="Lexical .. Resolution"]]
+
+[[!tag open_issue_glibc open_issue_hurd]]
+
+There is a [[!FF_project 279]][[!tag bounty]] on this task.
+
+
+# Original [[community/GSoC]] Task Description
+
+[[!inline pages=community/gsoc/project_ideas/lexical_dot-dot feeds=no]]
diff --git a/open_issues/libasyncns.mdwn b/open_issues/libasyncns.mdwn
new file mode 100644
index 00000000..bbd34bff
--- /dev/null
+++ b/open_issues/libasyncns.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 2010 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]]
+
+IRC, unknown channel, unknown date.
+
+ <pinotree> tschwinge: btw, would you be able to tell if and what's wrong with a socket-related problem?
+ <pinotree> it is reproducible with a very small self-contained C library
+ <pinotree> http://0pointer.de/lennart/projects/libasyncns/
+ <pinotree> it has a test case with it, which fails
+ <pinotree> tschwinge: if that can ring some bell, imho the problem is related to SOCK_STREAM sockets created with socketpair and used with send/recv
diff --git a/open_issues/libc_variant_selection.mdwn b/open_issues/libc_variant_selection.mdwn
new file mode 100644
index 00000000..afcd9ae0
--- /dev/null
+++ b/open_issues/libc_variant_selection.mdwn
@@ -0,0 +1,34 @@
+[[!meta copyright="Copyright © 2010, 2011 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_glibc open_issue_porting]]
+
+There is a [[!FF_project 274]][[!tag bounty]] on this task.
+
+There are now specialized variants of Debian's libc package, libc0.3-i686 and
+libc0.3-xen.
+
+
+On Thu, Oct 07, 2010 at 11:22:46AM +0200, Samuel Thibault wrote:
+> Thomas Schwinge, le Thu 07 Oct 2010 10:11:07 +0200, a écrit :
+> > Also, this text says ``will be selected instead when running under Xen''
+> > -- is this meant to be automatically done?
+>
+> It's supposed to be, we need to add support for it.
+>
+> > If so, then it didn't work.
+>
+> Yes, you need to copy it by hand. Same for libc0.3-i686, we just need to
+> steal the cpuid code from the kfreebsd port of glibc.
+
+---
+
+Having working CPUID code inside [[glibc]] is also a prerequisite for proper
+[[IFUNC]] support.
diff --git a/open_issues/libdiskfs_dot_dot-dot_relevant_for_libnetfs.mdwn b/open_issues/libdiskfs_dot_dot-dot_relevant_for_libnetfs.mdwn
new file mode 100644
index 00000000..1e4a6acb
--- /dev/null
+++ b/open_issues/libdiskfs_dot_dot-dot_relevant_for_libnetfs.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 2010 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_hurd]]
+
+IRC, unknown channel, unknown date.
+
+ <tschwinge> By the way: your libdiskfs ., .. fix -- is that relevant for libnetfs as well? (Didn't look it up so far.)
+ <youpi> it could be a good idea to protect netfs users directly from there yes
+ <tschwinge> But probably the backend (e.g., NFS server) would protect us in the netfs case, right?
+ <youpi> possibly, but we could have locking issues in between like in libdiskfs
+ <youpi> and POSIX says it's invalid anyway
+ <youpi> so we'd probably better just forbid it
diff --git a/open_issues/libfshelp_in_hurdlibs.mdwn b/open_issues/libfshelp_in_hurdlibs.mdwn
new file mode 100644
index 00000000..0700b061
--- /dev/null
+++ b/open_issues/libfshelp_in_hurdlibs.mdwn
@@ -0,0 +1,17 @@
+[[!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]]."]]"""]]
+
+[[!meta title="libfshelp in HURDLIBS"]]
+
+[[!tag open_issue_hurd]]
+
+[[hurd/libtrivfs]] seems to use [[hurd/libfshelp]], but doesn't have it listed
+in `HURDLIBS`. Should we change that? Same for [[hurd/libnetfs]] and
+[[hurd/libdiskfs]]?
diff --git a/open_issues/libgomp_pthread_attr_setstacksize_pthread_stack_min.mdwn b/open_issues/libgomp_pthread_attr_setstacksize_pthread_stack_min.mdwn
new file mode 100644
index 00000000..817dac76
--- /dev/null
+++ b/open_issues/libgomp_pthread_attr_setstacksize_pthread_stack_min.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2010 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_libpthread]]
+
+IRC, unknown channel, unknown date:
+
+ <azeem> neal: libgomp (GNU's implementation of OpenMP) uses PTHREAD_STACK_MIN, which we do not define apparently
+ <neal> azeem: We have fixed sized stacks.
+ <neal> so the pthread_attr_setstacksize will fail once you define PTHREAD_STACK_MIN)
diff --git a/open_issues/libmachuser_libhurduser_rpc_stubs.mdwn b/open_issues/libmachuser_libhurduser_rpc_stubs.mdwn
new file mode 100644
index 00000000..93055b77
--- /dev/null
+++ b/open_issues/libmachuser_libhurduser_rpc_stubs.mdwn
@@ -0,0 +1,56 @@
+[[!meta copyright="Copyright © 2010, 2011 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_glibc open_issue_hurd]]
+
+[[!toc]]
+
+
+# bug-hurd discussion.
+
+
+# IRC, freenode, #hurd, 2010-08-12
+
+ <jkoenig> Looking at hurd.git, shouldn't {hurd,include}/Makefile's "all"
+ target do something, and shouldn't pretty much everything depend on them?
+ As it stands it seems that the system headers are used and the
+ potentially newer ones never get built, except maybe on "install" (which
+ is seemingly never called from the top-level Makefile)
+ <jkoenig> I would fix it, but something tells me that maybe it's a feature
+ :-)
+ <antrik> jkoenig: the headers are provided by glibc, along with the stubs
+ <jkoenig> antrik, you mean, even those built from the .defs files in hurd/
+ ?
+ <antrik> yes
+ <jkoenig> oh, ok then.
+ <antrik> as glibc provides the stubs (in libhurduser), the headers also
+ have to come from there, or they would get out of sync
+ <jkoenig> hmm, shouldn't glibc also provide /usr/share/msgids/hurd.msgids,
+ then?
+ <antrik> jkoenig: not necessarily. the msgids describe what the servers
+ actually understand. if the stubs are missing from libhurduser, that's no
+ reason to leave out the msgids...
+ <jkoenig> ok this makes sense
+
+
+# IRC, OFTC, #debian-hurd, 2011-09-29
+
+ <tschwinge> pinotree: I don't like their existence. IMO (but I haven't
+ researched this in very much detail), every user of RPC stubs should
+ generated them for themselves (and glibc should directly include the
+ stubs it uses internally).
+ <pinotree> sounds fair
+ <pinotree> maybe they could be moved from glibc to hurd?
+ <tschwinge> pinotree: Yeah; someone needs to research why we have them (or
+ if it's only convenience), and whether we want to keep them.
+ <pinotree> you could move them to hurd, leaving them unaltered, so binary
+ compatibility with eventual 3rd party users is not broken
+ <pinotree> but those using them, other than hurd itself, won't compile
+ anymore, so you fix them progressively
diff --git a/open_issues/libpthread.mdwn b/open_issues/libpthread.mdwn
new file mode 100644
index 00000000..614f1271
--- /dev/null
+++ b/open_issues/libpthread.mdwn
@@ -0,0 +1,67 @@
+[[!meta copyright="Copyright © 2010, 2011 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_glibc open_issue_libpthread]]
+
+[[!toc]]
+
+
+# cthreads -> pthreads
+
+Get rid of cthreads; switch to pthreads.
+
+There is a [[!FF_project 275]][[!tag bounty]] on this task.
+
+
+## Original [[community/GSoC]] Task Description
+
+[[!inline pages=community/gsoc/project_ideas/pthreads feeds=no]]
+
+
+
+# pthread/stubs issue w/ dlopen'ed libraries
+
+IRC, freenode, #hurd, 2010-01-24
+
+ <pinotree> youpi: hm, thought about the pthread/stubs issue w/ dlopen'ed
+ libraries
+ <pinotree> currently looks like libstdc++ on hurd links to pthread-stubs,
+ we're the only one with such configuration
+ <pinotree> i was looking at the gcc 4.4 patch hurd-pthread.diff, could it
+ be it does not set THREADLIBS in the configure.ac switch case?
+ <youpi> that's expected
+ <youpi> on linux the libc provides hooks itself, on hurd-i386 it's
+ pthread-stubs
+ <pinotree> why not explicitly link to pthread though?
+ <youpi> because there is no strict need to, for applications that don't
+ need libpthread
+ <youpi> the dlopen case is a tricky case that pthread-stubs had not thought
+ about
+ <pinotree> hm
+ <pinotree> what if the pthread stubs would be moved in our glibc?
+ <youpi> that's what we should do yes
+ <youpi> (ideally)
+ <youpi> but for this we need to build libpthread along glibc, to get it
+ really working
+ <youpi> and that's the tricky part (Makefile & such) which hasn't been done
+ yet
+ <pinotree> why both (stubs + actual libpthread)?
+ <youpi> because you need the stubs to be able to call the actual libpthread
+ <youpi> as soon libpthread gets dlopened for instance
+ <youpi> +as
+ <pinotree> i see
+ <youpi> (remember that nptl does this if you want to see how)
+ <youpi> (it's the libc files in nptl/)
+ <youpi> (and forward.c)
+ <guillem> also if libpthreads gets integrated with glibc don't we need to
+ switch the hurd from cthreads then? Which has been the blocker all this
+ time AFAIR?
+ <youpi> we don't _need_ to
+ <guillem> ok
diff --git a/open_issues/libpthread_dlopen.mdwn b/open_issues/libpthread_dlopen.mdwn
new file mode 100644
index 00000000..fb665c67
--- /dev/null
+++ b/open_issues/libpthread_dlopen.mdwn
@@ -0,0 +1,84 @@
+[[!meta copyright="Copyright © 2011 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_libpthread]]
+
+IRC, OFTC, #debian-hurd, 2011-07-21.
+
+ <youpi> there's one known issue with pthreads
+ <youpi> you can't dlopen() it
+
+... if the main application is not already linked against it.
+
+ <youpi> which also means you can't dlopen() a module which depends on it if
+ the main application hasn't used -lpthread already
+ <youpi> (so as to get libpthread initialized early, not at the dlopen()
+ call)
+ <lucas> I get this while building simgrid:
+ <lucas> cd /home/lucas/simgrid-3.6.1/obj-i486-gnu/examples/gras/console &&
+ /usr/bin/cmake -E create_symlink
+ /home/lucas/simgrid-3.6.1/obj-i486-gnu/lib/libsimgrid.so
+ /home/lucas/simgrid-3.6.1/obj-i486-gnu/examples/gras/console/simgrid.so
+ <lucas> cd /home/lucas/simgrid-3.6.1/obj-i486-gnu/examples/gras/console &&
+ lua /home/lucas/simgrid-3.6.1/examples/gras/console/ping_generator.lua
+ <lucas> lua:
+ /home/buildd/build/chroot-sid/home/buildd/byhand/hurd/./libpthread/sysdeps/generic/pt-mutex-timedlock.c:68:
+ __pthread_mutex_timedlock_internal: Assertion `__pthread_threads' failed.
+ <lucas> Aborted (core dumped)
+ <youpi> that's it, yes
+ <youpi> (or at least it has the same symptoms)
+ <lucas> it would need fixing in lua, not in SG, then, right?
+ <youpi> yes
+ <lucas> ok, thanks
+
+The fix thus being: link the main application with -lpthread.
+
+IRC, freenode, #hurd, 2011-08-17
+
+ < youpi> i.e. openjade apparently dlopen()s modules which use pthreads, but
+ openjade itself is not liked against libpthread
+ < youpi> which means unexpectedly loading pthreads on the fly, which is
+ not implemented
+ < youpi> (and hard to implement of course)
+ < youpi> gnu_srs: so simply tell openjade people to link it with -lpthread
+ < gnu_srs> Shuoldn't missing linking with pthread create an error when
+ building openjade then?
+ < youpi> no
+ < youpi> because it's just a module which needs pthread
+ < youpi> and that module _is_ linked with -lpthread
+ < youpi> and dlopen() loads libpthreads too due to that
+ < youpi> but that's unexpected, for the libpthread initialization stuff
+ < youpi> (and too late to fix initlaization)
+ < gnu_srs> How come that other OSes build opensp w/o problems?
+ < youpi> because there are stubs in the libc
+ < gnu_srs> Sorry for the delay: What hinders stubs to be present also in
+ the Hurd libc parts too, to cope with this problem?
+ < youpi> doing it
+ < youpi> which is hard because you need libpthread bits inside the libc
+ < youpi> making it simpler would need building libpthread at the same time
+ as libc
+
+[[packaging_libpthread]]
+
+---
+
+The same symptom appears in an odd case, for instance:
+
+ buildd@hurd:~$ ldd /usr/bin/openjade
+ libthreads.so.0.3 => /lib/libthreads.so.0.3 (0x0103d000)
+ libosp.so.5 => /usr/lib/libosp.so.5 (0x01044000)
+ libpthread.so.0.3 => /lib/libpthread.so.0.3 (0x01221000)
+ libnsl.so.1 => /lib/i386-gnu/libnsl.so.1 (0x01232000)
+ [...]
+
+openjade links against *both* libthreads and libpthread. The result is that libc
+early-initializes libthreads only, and thus libpthread is not early-initialized,
+and later on raises assertions. The solution is to just get rid of libthreads,
+to have only one threading library.
diff --git a/open_issues/libpthread_pthread_key_create_reuse.mdwn b/open_issues/libpthread_pthread_key_create_reuse.mdwn
new file mode 100644
index 00000000..a5704d0f
--- /dev/null
+++ b/open_issues/libpthread_pthread_key_create_reuse.mdwn
@@ -0,0 +1,49 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta title="libpthread: pthread_key_create, reuse"]]
+
+IRC, FreeNode, #hurd, 2011-07-02
+
+[[!tag open_issue_libpthread]]
+
+ < pinotree> hm, maybe i found a libpthread bug
+ * pinotree tries a testcase
+ < pinotree> yesssss, found the bug :)
+ < pinotree> youpi: it's a problem of the key reuse in pthread_key_create()
+ < youpi> it doesn't reset it?
+ < youpi> were you looking at the licq issue?
+ < pinotree> no, gtest
+ < youpi> k
+ < youpi> licq has a failing threadspecific issue
+ < youpi> [ FAILED ] ThreadSpecificData.dataDeletedWhenThreadExits
+ < pinotree> basically, pthread_key_delete() does not delete the key values
+ from the "thread_specifics" ihash
+ < pinotree> but those were new keys, so i'm not sure it is allowed to
+ return values of previous keys?
+ < pinotree> after all, the actual key value is an implementation detail,
+ applications shouldn't care about it being reused
+ < pinotree> (imho)
+ < youpi> Upon key creation, the value NULL shall be associated with the new
+ key in all active threads.
+ < youpi> ok, so we have to clear it in all threads
+ < youpi> that's a pity
+ < pinotree> or just remove the entry from the hash on key removal
+ < youpi> pinotree: from all the hashes, you mean?
+ < pinotree> youpi: from how i see it, adding a snippet like
+ http://paste.debian.net/121690/ in pthread_key_delete() should do the job
+ < youpi> that only drops from the current thread
+ < pinotree> ah hm, other threads
+ < youpi> we need to drop from all threads
+ < youpi> that's the pity part
+ < pinotree> youpi: the licq case could look like a similar issue, at a
+ veeery quick glance
+
+Test program: [[pthread_key_create_reuse.c]]
diff --git a/open_issues/libpthread_pthread_key_create_reuse/pthread_key_create_reuse.c b/open_issues/libpthread_pthread_key_create_reuse/pthread_key_create_reuse.c
new file mode 100644
index 00000000..f7f5874e
--- /dev/null
+++ b/open_issues/libpthread_pthread_key_create_reuse/pthread_key_create_reuse.c
@@ -0,0 +1,48 @@
+#include <pthread.h>
+#include <stdio.h>
+#include <assert.h>
+
+#define DEBUG
+
+void del(void *x __attribute__((unused)))
+{
+}
+
+void work(int val)
+{
+ pthread_key_t key1;
+ pthread_key_t key2;
+
+#ifdef DEBUG
+ printf("work/%d: start\n", val);
+#endif
+ assert(pthread_key_create(&key1, &del) == 0);
+ assert(pthread_key_create(&key2, &del) == 0);
+#ifdef DEBUG
+ printf("work/%d: pre-setspecific: %p,%p\n", val, pthread_getspecific(key1), pthread_getspecific(key2));
+#else
+ assert(pthread_getspecific(key1) == NULL);
+ assert(pthread_getspecific(key2) == NULL);
+#endif
+ assert(pthread_setspecific(key1, (void *)(0x100 + val)) == 0);
+ assert(pthread_setspecific(key2, (void *)(0x200 + val)) == 0);
+#ifdef DEBUG
+ printf("work/%d: post-setspecific: %p,%p\n", val, pthread_getspecific(key1), pthread_getspecific(key2));
+#else
+ assert(pthread_getspecific(key1) == (void *)(0x100 + val));
+ assert(pthread_getspecific(key2) == (void *)(0x200 + val));
+#endif
+ assert(pthread_key_delete(key1) == 0);
+ assert(pthread_key_delete(key2) == 0);
+}
+
+int main()
+{
+ int i;
+
+ for (i = 0; i < 8; ++i) {
+ work(i + 1);
+ }
+
+ return 0;
+}
diff --git a/open_issues/libpthread_weak_symbols.mdwn b/open_issues/libpthread_weak_symbols.mdwn
new file mode 100644
index 00000000..6f135979
--- /dev/null
+++ b/open_issues/libpthread_weak_symbols.mdwn
@@ -0,0 +1,50 @@
+[[!meta copyright="Copyright © 2010 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_glibc open_issue_libpthread]]
+
+IRC, unknown channel, unknown date.
+
+ <youpi> btw, the issue with pthread_cancel is tricky
+ <youpi> I'm afraid there might be no fix
+ <youpi> clean fix, I mean
+ <pinotree> oh, hm
+ <pinotree> where it the problem located, actually?
+ <youpi> it's a lot more than just one place
+ <youpi> in some c++ header there is a weak reference to pthread_cancel
+ <youpi> libpthreadstubs0 provides a weak definition of pthread_cancel, which can suit well
+ <youpi> problem comes when also linking with a library which pulls libpthread
+ <youpi> oops no libpthreadstubs0 doesn't provide a weak definition of pthread_cancel
+ <youpi> it couldn't implement it anyway
+ <youpi> and the problem here is that the linker seems to be looking for pthread_cancel in the libpthreadstubs0 library, not libpthread
+ <youpi> and can't find it
+ <youpi> I don't know how this translate to english, but we're “walking on eggs
+ <youpi> ” on this issue
+ <pinotree> i see
+ <youpi> i.e. we already know we're not respecting the ELF standard
+ <youpi> we need a feature that is not in the standard to make pthread symbols working
+ <youpi> the solution would be to integrate libpthread into the glibc
+ <pinotree> you mean in the sources, but still providing separate libc.so and libpthread.so?
+ <youpi> yes
+ <pinotree> would that be difficult/tricky?
+ <youpi> because that permits to put pthread_* functions forwarding directly in the glibc, as is done on linux
+ <youpi> problem is upstream, you know...
+ <youpi> if we put libpthread there, it'll be difficult for us to maintain it
+ <pinotree> ah, the friendly ulrich mate?
+ <youpi> we already have difficults to get almost trivial patches commited
+ <youpi> and the "yes I'll handle it someday" Roland mate
+ <youpi> Roland is supposed to be the GNU part maintainer, but he doesn't have a box running at the moment
+ <youpi> what we could do is to do it in Debian for the moment
+ <pinotree> yeah
+ <pinotree> iirc eglibc is maintained within git, isn't it?
+ <pinotree> maybe you could do a hurd branch, putting all the hurd patches and the pthread sources, and then releasing from that
+ <youpi> we're already moving to something like that, yes
+ <youpi> at least for all the other glibc patches we have
+ <youpi> maybe we'll just do that on sourceware actually
diff --git a/open_issues/librpci.mdwn b/open_issues/librpci.mdwn
new file mode 100644
index 00000000..a3af16b1
--- /dev/null
+++ b/open_issues/librpci.mdwn
@@ -0,0 +1,31 @@
+[[!meta copyright="Copyright © 2011 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_gnumach open_issue_hurd]]
+
+2004 to 2007, Anand Babu has been working some on this project. It is still in
+rather early stages. It's meant to become an extension/complement to
+[[hurd/debugging/rpctrace]].
+
+ * <https://savannah.nongnu.org/projects/rpci>
+
+ > A C language library for interposing ports of a Hurd task running on top
+ > of GNU Mach micro-kernel. Using this library, it would be possible to
+ > implement a trace/replay system, RPC debugger, sandbox, etc.
+
+ On top of that, a debugger was planned:
+
+ > A RPC level debugger with useful command set to analyze/manipulate a task
+ > at run time. For example, the user will be able to set RPC break points,
+ > manipulate port rights and data, trace and replay a task.
+
+If there is interest, the existing source code could be moved from the CVS
+repository into the [[source_repositories/incubator]] ([[tschwinge]] already
+locally converted it to Git.)
diff --git a/open_issues/libstore_parted.mdwn b/open_issues/libstore_parted.mdwn
new file mode 100644
index 00000000..852c8fa8
--- /dev/null
+++ b/open_issues/libstore_parted.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta redir=hurd/libstore/part]]
diff --git a/open_issues/linux_vmsig.mdwn b/open_issues/linux_vmsig.mdwn
new file mode 100644
index 00000000..a4311d3e
--- /dev/null
+++ b/open_issues/linux_vmsig.mdwn
@@ -0,0 +1,29 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="Linux: vmsig"]]
+
+[[!tag open_issue_gnumach open_issue_hurd]]
+
+ * *cooperating with the VM when memory pressure increases*
+
+ * *notify user applications of virtual memory events via real-time signals*
+
+<http://www.cs.umass.edu/~emery/pubs/bookmarking-collector/>, and discussion at
+<http://lambda-the-ultimate.org/node/2391> and
+<http://marc.info/?t=113269321800003&r=1&w=2>.
+
+Found this via <http://lambda-the-ultimate.org/node/4094#comment-62100>, which
+was linked from [LWN](http://lwn.net/Articles/409416/).
+
+From a quick glance, this sounds to [[me|tschwinge]] quite a bit like
+mechanisms also found in (originating in?) Mach's
+[[microkernel/mach/external_pager_mechanism]]. May be worth having a look at
+it.
diff --git a/open_issues/lisp_cross-compile.mdwn b/open_issues/lisp_cross-compile.mdwn
new file mode 100644
index 00000000..c9100aec
--- /dev/null
+++ b/open_issues/lisp_cross-compile.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+flaviocruz-soc2008-lisp-branch: lisp stuff can't be cross-compiled.
diff --git a/open_issues/llvm.mdwn b/open_issues/llvm.mdwn
new file mode 100644
index 00000000..d0b7b91d
--- /dev/null
+++ b/open_issues/llvm.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2011 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_llvm open_issue_porting]]
+
+[LLVM](http://www.llvm.org/) needs a little bit of porting for being usable on
+GNU/Hurd.
+
+Apparently this has already been done within Debian;
+<http://anonscm.debian.org/viewvc/pkg-llvm/llvm/trunk/debian/patches/>.
diff --git a/open_issues/locking_issues.mdwn b/open_issues/locking_issues.mdwn
new file mode 100644
index 00000000..e15562bc
--- /dev/null
+++ b/open_issues/locking_issues.mdwn
@@ -0,0 +1,34 @@
+[[!meta copyright="Copyright © 2011 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_hurd]]
+
+There are locking issues in the Hurd's libraries.
+
+[[!toc]]
+
+
+# Original [[community/GSoC]] Task Description
+
+[[!inline pages=community/gsoc/project_ideas/libdiskfs_locking feeds=no]]
+
+
+# ext2fs Deadlock
+
+[[ext2fs_deadlock]].
+
+
+# Formal Verification
+
+Methods of [[formal_verification]] should be applied to get an understanding of
+the behavior of the locking logic. There are tools for formal
+verification/[[code_analysis]] that can likely help here.
+
+There is a [[!FF_project 278]][[!tag bounty]] on this task.
diff --git a/open_issues/lsof.mdwn b/open_issues/lsof.mdwn
new file mode 100644
index 00000000..2cbf2302
--- /dev/null
+++ b/open_issues/lsof.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+We don't have a `lsof` tool. Perhaps we could cook something with having a
+look at which ports are open at the moment (as [[`portinfo`|hurd/portinfo]]
+does, for example)?
diff --git a/open_issues/ltrace.mdwn b/open_issues/ltrace.mdwn
new file mode 100644
index 00000000..cf0df759
--- /dev/null
+++ b/open_issues/ltrace.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 2010 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_glibc]]
+
+IRC, unknown channel, unknown date.
+
+ <youpi> it'd be good to have ltrace eventually
+ <youpi> rpctrace has too many issues to be usable
+ <youpi> (and a lot of them are hard to fix iirc)
+ <youpi> ltrace traces library calls
+ <youpi> in principle it should just work at the dynamic linker stage, so should be portable
diff --git a/open_issues/m4_vs_stack.mdwn b/open_issues/m4_vs_stack.mdwn
new file mode 100644
index 00000000..c92cfb00
--- /dev/null
+++ b/open_issues/m4_vs_stack.mdwn
@@ -0,0 +1,21 @@
+[[!meta copyright="Copyright © 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]]
+
+ m4 (1.4.13-1+hurd.2) unreleased; urgency=low
+
+ * Drop stack overflow (checks/stackovf) check, test-c-stack and
+ test-c-stack2 checks, and /dev/null/ (test-open and test-fopen) checks.
+
+ -- Samuel Thibault <samuel.thibault@ens-lyon.org> Tue, 18 Aug 2009 20:54:30 +0000
+
+ <youpi> that was a quick fix (as not having m4 makes autoconf uninstallable, which is quite a problem)
+ <youpi> there's probably something wrong in the stack management of the Hurd, I haven't investigated
diff --git a/open_issues/mach-defpager_malloc_hook.mdwn b/open_issues/mach-defpager_malloc_hook.mdwn
new file mode 100644
index 00000000..2bbff75a
--- /dev/null
+++ b/open_issues/mach-defpager_malloc_hook.mdwn
@@ -0,0 +1,14 @@
+[[!meta copyright="Copyright © 2011 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_glibc open_issue_hurd]]
+
+*malloc hooks* are used in `[hurd]/mach-defpager/kalloc.c`. But their use is
+deprecated (glibc 7d17596c198f11fa85cbcf9587443f262e63b616).
diff --git a/open_issues/mach-defpager_vs_defpager.mdwn b/open_issues/mach-defpager_vs_defpager.mdwn
new file mode 100644
index 00000000..f03bc67f
--- /dev/null
+++ b/open_issues/mach-defpager_vs_defpager.mdwn
@@ -0,0 +1,33 @@
+[[!meta copyright="Copyright © 2010, 2011 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_gnumach open_issue_hurd]]
+
+IRC, freenode, #hurd, end of May/beginning of June 2010
+
+ <cfhammar> whats the difference between mach-defpager and defpager?
+ <cfhammar> i'm guessing defpager is a hurdish version that uses libstore
+ but was never finished or something
+ <cfhammar> found an interesting thread about it:
+ http://mirror.libre.fm/hurd/list/msg01232.html
+ <slpz> antrik: an interesting thread, indeed :-)
+ <pochu> slpz: btw is mach-defpager linked statically but not called
+ mach-defpager.static on purpose?
+ <slpz> antrik: also, I can confirm that mach-defpager needs a complete
+ rewrite ;-)
+ <slpz> pochu: I think the original defpager was launched by serverboot
+ <slpz> pochu: that could be the reason to have it static, like ext2fs
+ <slpz> and since there's no need to execute it again during the normal
+ operation of the system, they probably decided to not create a
+ dynamically linked version
+ <slpz> (but I'm just guessing)
+ <slpz> of perhaps they wanted to prevent mach-defpager from the need of
+ reading libraries, since it's used when memory is really scarce (guessing
+ again)
diff --git a/open_issues/mach_migrating_threads.mdwn b/open_issues/mach_migrating_threads.mdwn
new file mode 100644
index 00000000..c14ce95a
--- /dev/null
+++ b/open_issues/mach_migrating_threads.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2011 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_gnumach]]
+
+<http://www.brynosaurus.com/pub/os/thread-migrate.pdf>
+
+ * [[microkernel/mach/memory_object/discussion]]
+
+ * [[resource_management_problems]]
diff --git a/open_issues/mach_on_top_of_posix.mdwn b/open_issues/mach_on_top_of_posix.mdwn
new file mode 100644
index 00000000..7574feb0
--- /dev/null
+++ b/open_issues/mach_on_top_of_posix.mdwn
@@ -0,0 +1,16 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta title="Mach on Top of POSIX"]]
+
+[[!tag open_issue_gnumach]]
+
+At the beginning of the 2000s, there was a *Mach on Top of POSIX* port started
+by John Edwin Tobey. Status unknown. Ask [[tschwinge]] for the source code.
diff --git a/open_issues/mach_tasks_memory_usage.mdwn b/open_issues/mach_tasks_memory_usage.mdwn
new file mode 100644
index 00000000..9abb7639
--- /dev/null
+++ b/open_issues/mach_tasks_memory_usage.mdwn
@@ -0,0 +1,147 @@
+[[!meta copyright="Copyright © 2011 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_documentation]]
+
+IRC, freenode, #hurd, 2011-01-06
+
+ <antrik> hm, odd... vmstat tells me that ~500 MiB of RAM are in use; but
+ the sum of all RSS is <300 MiB... what's the rest?
+ <braunr> kernel memory ?
+ <braunr> the zone allocator maybe
+ <braunr> or the page cache simply
+ <antrik> braunr: which page cache? AIUI, caches are implemented by the
+ individual filesystem servers -- in which case any memory used by them
+ should show up in RSS
+ <antrik> also, gnumach is listed among other tasks, so I'd assume the
+ kernel memery also to be accounted for
+ <braunr> antrik: no, the kernel maintains a page cache, very similar to
+ what is done in Linux, and almost the same as in FreeBSD
+ <braunr> the file system servers are just backing stores
+ <braunr> the RSS for the gnumach tasks only includes kernel memory
+ <braunr> I don't think the page cache is accounted for
+ <braunr> because it's not really kernel memory, it's a cache of user space
+ memory
+ <antrik> apparently my understanding of Mach paging is still (or again?)
+ rather incomplete :-(
+ <antrik> BTW, is there any way to find out how much anonymous memory a
+ process is using? the "virtual" includes discardable mappings, and is
+ thus not very helpful...
+ <antrik> (that applies to Linux as well though)
+ <braunr> can you provide an example of the output of vmstat please ?
+ <braunr> I don't have a Hurd VM near me
+ <antrik> olaf@alien:~$ vmstat
+ <antrik> pagesize: 4K
+ <antrik> size: 501M
+ <antrik> free: 6.39M
+ <antrik> active: 155M
+ <antrik> inactive: 310M
+ <antrik> wired: 29.4M
+ <antrik> zero filled: 15.3G
+ <antrik> reactivated: 708M
+ <antrik> pageins: 3.43G
+ <antrik> pageouts: 1.55G
+ <antrik> page faults: 26844574
+ <antrik> cow faults: 3736174
+ <antrik> memobj hit ratio: 92%
+ <antrik> swap size: 733M
+ <antrik> swap free: 432M
+ <antrik> interesting... closing a single screen window temporarily raises
+ the "free" value by almost 10 MB
+ <antrik> I guess bash is rather hungry nowadays ;-)
+ <braunr> antrik: I guess the only way is using pmap or looking into
+ /proc/<pid>/maps
+ <braunr> but it won't give you the amount of physical memory used by
+ anonymous mappings
+ <antrik> nah, I don't even want that... just like to know how much memory
+ (RAM+swap) a process is really using
+ <braunr> antrik: then the RSS field is what you want
+ <antrik> OTOH, anonymous doesn't include program code or other actively
+ used mappings... so not very useful either
+ <antrik> nah, RSS doesn't count anything that is in swap
+ <braunr> well
+ <braunr> don't you have a SWAP column ?
+ <braunr> hm
+ <braunr> i guess not
+ <braunr> antrik: why do you say it doesn't include other actively used
+ mappings ?
+ <braunr> antrik: and the inclusion of program code also depends on the
+ implementation of the ELF handler
+ <braunr> I don't know how the hurd does that, but some ELF loaders use
+ anonymous memory for the execution view
+ <antrik> well, if a program maps a data file, and regularily accesses parts
+ of the file, they won't occupy physical RAM all the time (and show up in
+ RSS), but they are not anonymous mappings. similar to program code
+ <braunr> then this anonymous memory is shared by all processes using that
+ code
+ <antrik> oh, interesting
+ <antrik> is it really a completely distinct mapping, rather than just COW?
+ <braunr> the first is
+ <braunr> others are COW
+ <antrik> so if a program loads 200 MB of libraries, they are all read in on
+ startup, and occupy RAM or swap subsequently, even if most of the code is
+ never actually run?...
+ <kilobug> library code should be backed by the library file on disk, not be
+ swap
+ <braunr> depends on the implementation
+ <braunr> I guess most use the file system backend
+ <braunr> but in the Hurd, ext2fs.static and ld.so.1 use anonymous memory
+ <braunr> (that's the case for another reason, still, I don't think the
+ report in top/ps clearly indicates that fact)
+ <kilobug> braunr: yeah for bootstrapping issues, makes sense
+ <braunr> it may also depends on the pic/pie options used when building
+ libraries
+
+
+IRC, freenode, #hurd, 2011-07-24
+
+ < braunr> the panic is probably due to memory shortage
+ < braunr> so as antrik suggested, use more swap
+ < antrik> gg0: you could run "vmstat 1" in another terminal to watch memory
+ usage
+ < antrik> that way we will know for sure whether it's related
+ < braunr> antrik: it's trickier than that
+ < braunr> it depends if the zones used are pageable
+ < antrik> braunr: well, if it's a zone map exhaustion, then the swap size
+ won't change anything?...
+ < braunr> antrik: in this case no, but if the zone is pageable and the
+ pager (backing anonymous memory) refuses to create memory because it
+ estimates it's full (all swap space is reserved), it will fail to
+ < braunr> too
+ < braunr> but i don't think there are much pageable zones in the kernel
+ < antrik> yes, but in that case we can see the exhaustion in vmstat :-)
+ < braunr> many*
+ < braunr> i'm not sure
+ < braunr> reserved swap space doesn't mean it's used
+ < braunr> that's one of the major changes in freebsd 4 or 5 i was
+ mentioning
+ < antrik> if it's reserved, it wouldn't show up as "free", would it?...
+ < braunr> (btw, it's also what makes anonymous memory merging so hard)
+ < braunr> yes it would
+ < braunr> well, it could, i'm not sure
+ < braunr> anonymous memory is considered as a file
+ < braunr> one big file filled with zeroes, which is the swap partition
+ < braunr> when you allocate pageable anonymous memory, a part of this
+ "file" is reserved
+ < braunr> but i don't know if the reported number if the reserved
+ (allocated) space, or used (actually containing data)
+ < braunr> is*
+ < braunr> i also suspect wired allocations can fail because of a full swap
+ (because the kernel is unable to make free pages)
+ < braunr> in this case vmstat will show it
+ < antrik> what does it matter whether there is data there or not? if it's
+ reserved, it's not free. if it behaves differently, I'd consider that a
+ serious bug
+ < braunr> maybe the original developers intended to monitor its actual
+ usage
+ < braunr> antrik: i've just checked how the free count gets updated, and it
+ looks like it is on both seqnos_memory_object_data_initialize and
+ seqnos_memory_object_data_write
+ < braunr> antrik: so i guess reserved memory is accounted for
diff --git a/open_issues/mach_vm_pageout.mdwn b/open_issues/mach_vm_pageout.mdwn
new file mode 100644
index 00000000..dac7fe28
--- /dev/null
+++ b/open_issues/mach_vm_pageout.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 2011 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_gnumach]]
+
+IRC, freenode, #hurd, 2011-09-09
+
+ <slpz> It's amazing how broken some parts of Mach's VM are
+ <slpz> currently, it doesn't even keep track of the number of external
+ pages in the lists
+ <slpz> and vm_pageout_scan produces a hang if want_pages == FALSE (which
+ never is, because vm_page_external_count is always 0)
diff --git a/open_issues/magic_translator_machtype.mdwn b/open_issues/magic_translator_machtype.mdwn
new file mode 100644
index 00000000..1c62b762
--- /dev/null
+++ b/open_issues/magic_translator_machtype.mdwn
@@ -0,0 +1,24 @@
+[[!meta copyright="Copyright © 2008, 2010 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]]."]]"""]]
+
+[[!meta title="/hurd/magic machtype"]]
+
+[[!tag open_issue_hurd open_issue_glibc]]
+
+ tschwinge@clubber:~ $ settrans -ca machtype /hurd/magic machtype
+ tschwinge@clubber:~ $ l mach<TAB>Connection to clubber.bddebian.com closed.
+ thomas@dirichlet:~ $ ssh clubber
+ Warning: Permanently added '[clubber.bddebian.com]:2251' (RSA) to the list of known hosts.
+ Last login: Tue Dec 30 08:52:58 2008 from dslb-084-057-196-016.pools.arcor-ip.net
+ tschwinge@clubber:~ $ cat machtype
+ Segmentation fault
+ tschwinge@clubber:~ $ l machtype
+ Segmentation fault
+ tschwinge@clubber:~ $ l mach<TAB>Connection to clubber.bddebian.com closed.
diff --git a/open_issues/mig_error_reply.mdwn b/open_issues/mig_error_reply.mdwn
new file mode 100644
index 00000000..21a5b217
--- /dev/null
+++ b/open_issues/mig_error_reply.mdwn
@@ -0,0 +1,68 @@
+[[!meta copyright="Copyright © 2010 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_mig]]
+
+\#hurd, freenode, 2010-05-19
+
+ <cfhammar> ugh, mig server stubs generated from *_reply.defs don't call the server functions when the reply is an error, since the message size is too small...
+ <cfhammar> term seems to get around it by turning of type checking
+ <cfhammar> s/of/off
+ <cfhammar> but streamio doesn't
+ <cfhammar> luckily the only other program that makes use of a *_reply.defs is crash, and crash_reply.defs' routines only return an error code so it isn't affected
+ <slpz> cfhammar: could you point me to a stub with that problem?
+ <cfhammar> slpz: trans/device_replyServer.c:_Xdevice_open_reply (in build dir)
+ <slpz> cfhammar: So, if I understand it correctly, the problem is that GNU Mach generated stub doesn't properly set the size of the message if there's an error in the function, thus the type checking in user generated stub discards the reply
+ <cfhammar> slpz: the size is correct, error messages contain just a return value
+ <cfhammar> slpz: it is the type checking that is at fault imho
+ <slpz> cfhammar: even when a server wants to return an error, the size of the message should be the same as the reply structure previously defined
+ <slpz> cfhammar: on the other hand, I can't understand why streamio is using device_open_request (async RPC) instead of device_open (sync RPC)...
+ <cfhammar> slpz: the server does not always know the proper size, e.g. when it doesn't understand the message
+ <slpz> cfhammar: what do you mean by "doesn't understand the message"?
+ <cfhammar> slpz: if it doesn't implement that interface or is the wrong type, etc.
+ <cfhammar> slpz: in that case the mig stub needs to send out a generic error reply
+ <cfhammar> slpz: i don't know why streamio uses it either
+ <slpz> cfhammar: OK, now I see your point. If the server answers with a generic error code (as MIG_*), device_open_reply will not be called, and device_open_request doesn't get an error.
+ <slpz> cfhammar: good catch :-)
+ <cfhammar> slpz: all errors are handled the same way, MIG_* is just an example of why it does so
+ <slpz> cfhammar: on an unrealted note, I think we should get rid of all asynchronous messages sent from the user to the kernel, since they aren't asynchronous except for sending the reply to a different port (the process is really done by the thread calling mach_msg)
+ <cfhammar> slpz: i'm not not all that familiar with the low-level parts of message passing so i can't really comment
+ <slpz> cfhammar: in that point I disagree. If the server function can understand the message (so there isn't a MIG_* error), it can send a reply message with the proper size
+ <cfhammar> slpz: it could, but what is the advantage if we still need to handle generic errors?
+ <cfhammar> slpz: "sending the reply to a different port", different from what?
+ <slpz> cfhammar: to differentiate between message marshalling errors and errors generated by the called function
+ <slpz> cfhammar: in a synchronous RPC, the same call to mach_msg will send the request and receive the reply by providing a mig generated reply port
+ <slpz> cfhammar: but in an asynchronous, the reply is received by a port previously generated by the function requesting the message
+ <cfhammar> slpz: ah, that's a clever optimization
+ <slpz> cfhammar: if the "asynchronous" message is sent to the kernel, the thread calling for mach_msg will execute the server's function, but the reply will be sent to one of these previously generated ports
+ <slpz> cfhammar: actually you have a synchronous operation replying to a different port. That doesn't make much sense to me :-)
+ <antrik> slpz: note that most kernel functions can be implemented by userspace servers, in which case they could be really async...
+ <cfhammar> slpz: not sure how differentiating mig errors from server errors is useful...
+ <slpz> antrik: define "most kernel functions" ;-)
+ <cfhammar> slpz: if nothing else kernel rpcs can be proxied, e.g. rpctrace
+ <slpz> cfhammar: well, think of device_open_request. If the result is not a mig error, you can still device_open_reply an expect it to properly process the return code from the message
+ <cfhammar> slpz: it should be able to handle all kinds of errors anyway, the result should be the same as with syncronous rpcs
+ <slpz> cfhammar: yes, you're right. User generated stub should be able to fill the reply with the error code and call to the reply function.
+ <slpz> cfhammar: Then someone needs to introduce some changes in MiG's magic...
+ <cfhammar> slpz: yes, a flag to generate reply side of an interface would be ideal
+ <cfhammar> slpz: then we could toss out *_reply.defs altogether
+ <slpz> cfhammar: well, that's a different change from what I was thinking
+ <cfhammar> slpz: how would you change it?
+ <slpz> cfhammar: just generating stubs which, in case of error, will properly call to the reply function with the error code in its arguments
+ <cfhammar> slpz: ah yes, i considered that as well, but i don't think mig can actually distinguish the error code from any other int argument
+ <cfhammar> slpz: i should double check it though
+ <slpz> cfhammar: I tag can be used to point to argument of this nature
+ <slpz> cfhammar: s/I/A/
+ <cfhammar> slpz: oh, it already is tagged with retcode, intresting
+ <slpz> cfhammar: OMG, I'm thinking like MiG! ;-P
+ <cfhammar> slpz: is that a good or bad ;
+ <cfhammar> slpz: ;-)
+ <slpz> cfhammar: I don't know, but it's somewhat scary ;-)
+ <cfhammar> slpz: apparently retcode is only there for comatibility, mig just ignores it...
diff --git a/open_issues/mmap_crash_etc.mdwn b/open_issues/mmap_crash_etc.mdwn
new file mode 100644
index 00000000..4946a5a0
--- /dev/null
+++ b/open_issues/mmap_crash_etc.mdwn
@@ -0,0 +1,95 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+Several issues here:
+
+ * [[!tag open_issue_glibc open_issue_gnumach]] Even invalid `mmap` shoudn't
+ crash the process.
+
+ * [[!tag open_issue_documentation]] The memory layout example should be
+ documented.
+
+ * [[!tag open_issue_gnumach]] New `vm_map` allocation strategy may be
+ desirable; see also [[placement_of_virtual_memory_regions]].
+
+ * [[!tag open_issue_glibc]] *task X deallocating an invalid port Y, most
+ probably a bug*.
+
+IRC, freenode, #hurd, 2011-08-11
+
+ < zyg> oh, mmap sigsegvs, strange.
+ < braunr> hwo do you see that ?
+ < zyg> braunr: I'll try to paste a minimal case
+ < braunr> zyg: make sure you have a sane memory setup
+ < braunr> 512 RAM / 1G swap seems good
+ < braunr> have more swap than RAM
+ < zyg> I have those. Still it shouldn't sigsegv.
+ < braunr> gnumach is picky about that
+ < braunr> and yes, the hurd shouldn't have bugs
+ < zyg> braunr: ready to crash? #include <stdio.h> #include <sys/mman.h> int
+ main (int argc, char **argv) { mmap(0x10000, 0x8000, PROT_READ, MAP_ANON
+ | MAP_FIXED, -1, 0); return 0; }
+ < braunr> a fixed mapping at such an address is likely to fail, yes
+ < braunr> but a crash, hm
+ < zyg> why should it fail?
+ < braunr> because the hurd doesn't have a common text data bss heap stack
+ layout
+ < braunr> e.g. there are mappings below text, as show by vminfo :
+ < braunr> $ vminfo $$
+ < braunr> 0[0x1000] (prot=0)
+ < braunr> 0x1000[0x21000] (prot=RX, max_prot=RWX, mem_obj=105)
+ < braunr> 0x22000[0x1000] (prot=R, max_prot=RWX, mem_obj=105)
+ < braunr> 0x23000[0x1000] (prot=RW, max_prot=RWX, mem_obj=105)
+ < braunr> 0x24000[0x1000] (prot=0, max_prot=RWX)
+ < braunr> 0x25000[0xfff000] (prot=RWX, mem_obj=106)
+ < braunr> 0x1024000[0x1000] (prot=RWX, mem_obj=107)
+ < braunr> 0x1025000[0x1000] (prot=RW, max_prot=RWX, mem_obj=108)
+ < braunr> 0x1026000[0x1000] (prot=RW, max_prot=RWX, mem_obj=108,
+ offs=0x1000)
+ < braunr> 0x1027000[0x1000] (prot=RW, max_prot=RWX, mem_obj=109)
+ < braunr> 0x1028000[0x2000] (prot=RW, max_prot=RWX, mem_obj=110,
+ offs=0x1000)
+ < braunr> 0x102a000[0x1000] (prot=RW, max_prot=RWX, mem_obj=111)
+ < braunr> (sorry for the long paste)
+ < zyg> oh.. my mmap falls into an occupied range?
+ < braunr> seems so
+ < zyg> thanks, that was really useful.
+ < braunr> MAP_FIXED isn't portable, this is clearly stated in most man
+ pages
+ < zyg> yes, implementation specific it says
+ < braunr> well the behaviour isn't specific, it's well defined, but the
+ memory layout isn't
+ < braunr> i personally think vm_map() should be slightly changed to include
+ a new flag for top-down allocations
+ < braunr> so that our stack and libraries are at high addresses, below the
+ kernel
+ < braunr> zyg: what kind of error do you get ? i don't get sigsegv
+ < zyg> I get both sigsegv and sigill depending on addr
+ < braunr> ok
+ < braunr> i get sigill with your example
+ < braunr> the error is the same (wrong memory access) but the behaviour
+ changes because of the special memory configuration
+ < zyg> yes.. I guess the usecase is too uncommon. Else mmap would have an
+ guard
+ < braunr> some accesses cause invalid page faults (which are sent as
+ segmentation faults) while other cause general protection faults (which
+ are sent as illegal instructions)
+ < braunr> (this is quite weird since the GP fault is likely because the
+ access targets something out of the data or code segment eh)
+ < zyg> braunr: that's very os-specific. Do you mean hurd behaves that way?
+ < braunr> gnumach
+ < braunr> on i386
+ < braunr> the segmant configuration isn't completely flat
+ < braunr> segment*
+ < braunr> hm nice
+ < braunr> your small program triggers the "task X deallocating an invalid
+ port Y, most probably a bug." message
+ < zyg> where do you see that?
+ < braunr> on the mach console
diff --git a/open_issues/multiprocessing.mdwn b/open_issues/multiprocessing.mdwn
new file mode 100644
index 00000000..562ccd83
--- /dev/null
+++ b/open_issues/multiprocessing.mdwn
@@ -0,0 +1,82 @@
+[[!meta copyright="Copyright © 2010, 2011 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_documentation open_issue_hurd]]
+
+We would expect that fine-grained, compartmentalized systems, that is,
+microkernel-based multi-server systems in particular, would be ideal candidates
+for applying multiprocessing. That is, however, only true from a first and
+inexperienced point of view: there are many difficulties.
+
+
+IRC, freenode, #hurd, August / September 2010
+
+ <marcusb> silver_hook: because multi-server systems depend on inter-process
+ communication, and inter-process communication is many times more
+ expensive across cpus
+ <marcusb> silver_hook: so you either force interrelated work on the same
+ cpu, or suffer heavy penalties. and in a typical fine-grained object
+ system, all objects are interconnected!
+ <marcusb> silver_hook: resources in today's systems, even in a single node
+ with one cpu, but more so in a network, are very non-uniform. scheduling
+ these resources efficiently is a huge problem. restricting the resource
+ distribution policies in the way microkernel systems tend to do is posing
+ serious research challenges
+
+
+IRC, freenode, #hurd, 2011-07-26
+
+ < braunr> 12:03 < CTKArcher> and does the hurd take more advantages in a
+ multicore architecture than linux ?
+ < braunr> CTKArcher: short answer: no
+ < CTKArcher> it's easier to imagine one server pro core than the linux
+ kernel divided to be executed on multiple cores
+ < braunr> CTKArcher: this approach is less efficient
+ < braunr> CTKArcher: threads carry state, both explicit and implicit (like
+ cache data)
+ < braunr> CTKArcher: switching to another core means resetting and
+ refetching this state
+ < braunr> it's expensive and there is no gain obtained by doing this
+ < braunr> thread migration (having a thread from a client also run in
+ servers when making synchronous RPC, even handling its own page faults)
+ was implemented in mach4 and is imo a very good thing we should have
+ < braunr> CTKArcher: and concerning linux, it's actually very scalable
+ < braunr> it's already like if all client threads run in servers (the
+ kernel is the servers there)
+ < braunr> rcu is used a lot
+ < braunr> thread migration already takes into account smt, cores, and numa
+ < braunr> it's hard to do something better
+ < braunr> (here, thread migration means being dispatched on another cpu)
+ < braunr> some systems like dragonflybsd go as far as to pin threads on one
+ processor for their entire lifetime
+ < braunr> in order to have rcu-like locking almost everywhere
+ < braunr> (you could argue it's less efficient since in the worst case
+ everything runs on the same cpu, but it's very unlikely, and in practice
+ most patterns are well balanced)
+
+
+debian-hurd list
+
+On Thu, Jan 02, 2003 at 05:40:00PM -0800, Thomas Bushnell, BSG wrote:
+> Georg Lehner writes:
+>
+> > - One promise of the microkernel architecture is better performance on
+> > multiprocessor systems, or multicomputer systems. What is the status
+> > of Gnu Mach with respect to these.
+>
+> This may or may not be true. The Hurd is built around a microkernel
+> architecture because of its conceptual elegance and flexibility.
+> Other touted advantages may be more illusory than real, at least, they
+> aren't something *we* are proclaiming is our motivation.
+
+
+---
+
+See also: [[multithreading]].
diff --git a/open_issues/multithreading.mdwn b/open_issues/multithreading.mdwn
new file mode 100644
index 00000000..1fc2c318
--- /dev/null
+++ b/open_issues/multithreading.mdwn
@@ -0,0 +1,59 @@
+[[!meta copyright="Copyright © 2010, 2011 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_hurd]]
+
+Hurd servers / VFS libraries are multithreaded.
+
+
+# Implementation
+
+ * well-known threading libraries
+
+ * [[hurd/libthreads]]
+
+ * [[hurd/libpthread]]
+
+
+# Design
+
+Roughly using one thread per
+incoming request. This is not the best approach: it doesn't really make sense
+to scale the number of worker threads with the number of incoming requests, but
+instead they should be scaled according to the backends' characteristics.
+
+The [[hurd/Critique]] should have some more on this.
+
+[*Event-based Concurrency
+Control*](http://soft.vub.ac.be/~tvcutsem/talks/presentations/T37_nobackground.pdf),
+Tom Van Cutsem, 2009.
+
+
+# Alternative approaches:
+
+ * <http://www.concurrencykit.org/>
+
+ * Continuation-passing style
+
+ * [[microkernel/Mach]] internally [[uses
+ continuations|microkernel/mach/continuation]], too.
+
+ * [[Erlang-style_parallelism]]
+
+ * [[!wikipedia Actor_model]]; also see overlap with
+ {{$capability#wikipedia_object-capability_model}}.
+
+ * [libtcr - Threaded Coroutine Library](http://oss.linbit.com/libtcr/)
+
+ * <http://monkey.org/~provos/libevent/>
+
+---
+
+See also: [[multiprocessing]].
diff --git a/open_issues/multithreading/erlang-style_parallelism.mdwn b/open_issues/multithreading/erlang-style_parallelism.mdwn
new file mode 100644
index 00000000..75539848
--- /dev/null
+++ b/open_issues/multithreading/erlang-style_parallelism.mdwn
@@ -0,0 +1,201 @@
+[[!meta copyright="Copyright © 2010 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_hurd]]
+
+IRC, #hurd, 2010-10-05
+
+ <sdschulze> antrik: Erlang-style parallelism might actually be interesting
+ for Hurd translators.
+ <sdschulze> There are certain similarities between Erlang's message boxes
+ and Mach ports.
+ <sdschulze> The problem is that all languages that implement the Erlang
+ actor model are VM-based.
+ <antrik> sdschulze: I guess that's because most systems don't offer this
+ kind of message passing functionality out of the box... perhaps on Hurd
+ it would be possible to implement an Erlang-like language natively?
+ <sdschulze> That would be quite attractive -- having the same API for
+ in-process parallelism and IPC.
+ <sdschulze> But I don't see why Erlang needs a VM... It could also be
+ implemented in a library.
+ [...]
+ <sdschulze> BTW, Scala doesn't require a VM by design. Its Erlang
+ implementation is a binary-compatible abstraction to Java.
+ [...]
+ <sdschulze> My point was that Erlang employs some ideas that might be
+ usable in the Hurd libraries.
+ <sdschulze> concerning multithreading stuff
+ <sdschulze> Unfortunately, it will not contribute to readability if done in
+ C.
+ <antrik> perhaps it's worth a look :-)
+ <sdschulze> Actually, a Mach port is pretty close to an Erlang actor.
+ <sdschulze> Currently, your I/O callbacks have to block when they're
+ waiting for something.
+ <sdschulze> What they should do is save the Mach port and respond as soon
+ as they can.
+ <sdschulze> So there should be a return status for "call me later, when I
+ tell you to" in the callbacks.
+ <sdschulze> Then the translator associates the Mach port with the summary
+ of the request in some data structure.
+ <sdschulze> As soon as the data is there, it tells the callback function to
+ appear again and fulfills the request.
+ <sdschulze> That's -- very roughly -- my idea.
+ <sdschulze> Actually, this eliminates the need for multithreading
+ completely.
+ <antrik> sdschulze: not sure whether you are talking about RPC level or
+ libc level here...
+ <sdschulze> It should be transparent to libc.
+ <sdschulze> If the client does a read() that cannot be answered immediatly,
+ it blocks.
+ <sdschulze> The difference is that there is no corresponding blocking
+ thread in the translator.
+ <antrik> ah, so you are talking about the server side only
+ <sdschulze> yes
+ <antrik> you mean the callback functions provided by the translator
+ implementation should return ASAP, and then the dispatcher would call
+ them again somehow
+ <sdschulze> allowing the server to be single-threaded, if desired
+ <sdschulze> exactly
+ <sdschulze> like: call_again (mach_port);
+ <antrik> but if the functions give up control, how does the dispatcher know
+ when they are ready to be activated again? or does it just poll?
+ <sdschulze> The translator knows this.
+ <sdschulze> hm...
+ <antrik> well, we are talking about the internal design of the translator,
+ right?
+ <antrik> I'm not saying it's impossible... but it's a bit tricky
+ <antrik> essentially, the callbacks would have to tell the dispatcher,
+ "call me again when there is an incoming message on this port"
+ <sdschulze> Say we have a filesystem translator.
+ <antrik> (or rather, it probably should actually call a *different*
+ callback when this happens)
+ <sdschulze> The client does a "read(...)".
+ <sdschulze> => A callback is called in the translator.
+ <antrik> let's call it disfs_S_io_read() ;-)
+ <antrik> err... diskfs
+ <sdschulze> The callback returns: SPECIAL_CALL_ME_LATER.
+ <sdschulze> yes, exactly that :)
+ <sdschulze> But before, it saves the position to be read in its internal
+ data structure.
+ <sdschulze> (a sorted tree, whatever)
+ <sdschulze> The main loop steps through the data structure, doing a read()
+ on the underlying translator (might be the disk partition).
+ <sdschulze> "Ah, gotcha, this is what the client with Mach port number 1234
+ wanted! Call his callback again!"
+ <sdschulze> Then we're back in diskfs_S_io_read() and supply the data.
+ <antrik> so you want to move part of the handling into the main loop? while
+ I'm not fundamentally opposed to that, I'm not sure whether the
+ dispatcher/callback approach used by MIG makes much sense at all in this
+ case...
+ <antrik> my point is that this probably can be generalised. blocking
+ operations (I/O or other) usually wait for a reply message on a port --
+ in this case the port for the underlying store
+ <antrik> so the main loop would just need to wait for a reply message on
+ the port, without really knowing what it means
+ <sdschulze> on what port?
+ <antrik> so disfs_S_io_read() would send a request message to the store;
+ then it would return to the dispatcher, informing it to call
+ diskfs_S_io_read_finish() or something like that when there is a message
+ on the reply port
+ <antrik> main loop would add the reply port to the listening port bucket
+ <antrik> and as soon as the store provides the reply message, the
+ dispatcher would then call diskfs_S_io_read_finish() with the reply
+ message
+ <sdschulze> yes
+ <antrik> this might actually be doable without changes to MIG, and with
+ fairly small changes to libports... though libdiskfs etc. would probably
+ need major rewrites
+ <sdschulze> What made me think about it is that Mach port communication
+ doesn't block per se.
+ <antrik> all this is however ignoring the problem I mentioned yesterdays:
+ we need to handle page faults as well...
+ <sdschulze> It's MIG and POSIX that block.
+ <sdschulze> What about page faults?
+ <antrik> when the translator has some data mapped, instead of doing
+ explicit I/O, blocking can occur on normal memory access
+ <sdschulze> antrik: Well, I've only been talking about the server side so
+ far.
+ <antrik> sdschulze: this *is* the server side
+ <antrik> sdschulze: a filesystem translator can map the underlying store
+ for example
+ <antrik> (in fact that's what the ext2 translator does... which is why we
+ had this 2G partition limit)
+ <sdschulze> antrik: Ah, OK, so in other words, there are requests that it
+ can answer immediatly and others that it can't?
+ <antrik> that's not the issue. the issue is the the ext2 translator doesn't
+ issue explicit blocking io_read() operations on the underlying
+ store. instead, it just copies some of it's own address space from or to
+ the client; and if the page is not in physical memory, blocking occurs
+ during the copy
+ <antrik> so essentially we would need a way to return control to the
+ dispatcher when a page fault occurs
+ <sdschulze> antrik: Ah, so MIG will find the translator unresponsive? (and
+ then do what?)
+ <antrik> sdschulze: again, this is not really a MIG thing. the main loop is
+ *not* in MIG -- it's provided by the tranlator, usually through libports
+ <sdschulze> OK, but as Mach IPC is asynchronous, a temporarily unresponsive
+ translator won't cause any severe harm?
+ <sdschulze> antrik: "Easy" solution: use a defined number of worker
+ threads.
+ <antrik> sdschulze: well, for most translators it doesn't do any harm if
+ they block. but if we want to accept that, there is no point in doing
+ this continuation stuff at all -- we could just use a single-threaded
+ implementation :-)
+ <sdschulze> Hard solution: do use explicit I/O and invent a
+ read_no_pagefault() call.
+ <antrik> not sure what you mean exactly. what I would consider is something
+ like an exception handler around the copy code
+ <antrik> so if an exception occurs during the copy, control is returned to
+ the dispatcher; and once the pager informs us that the memory is
+ available, the copy is restarted. but this is not exacly simple...
+ <sdschulze> antrik: Ah, right. If the read() blocks, you haven't gained
+ anything over blocking callbacks.
+ * sdschulze adopted an ML coding style for his C coding...
+ <sdschulze> antrik: Regarding it on the Mach level, all you want to do is
+ some communication on some ports.
+ <sdschulze> antrik: Only Unix's blocking I/O makes you want to use threads.
+ <sdschulze> Unless you have a multicore CPU, there's no good reason why you
+ would *ever* want multithreading.
+ <sdschulze> (except poor software design)
+ <sdschulze> antrik: Is there a reason why not to use io_read?
+ <antrik> sdschulze: I totally agree about multithreading...
+ <antrik> as for not using io_read(): some things are easier and/or more
+ efficient with mapping
+ <antrik> the Mach VM is really the most central part of Mach, and it's
+ greatest innovation...
+ <sdschulze> antrik: If you used explicit I/O, it would at least shift the
+ problem somewhere else...
+ <antrik> sure... but that's a workaround, not a solution
+ <sdschulze> I'm not sure how to deal with page faults then -- I know too
+ little about the Hurd's internal design.
+ <sdschulze> Non-blocking io_read only works if we address the client side,
+ too, BTW.
+ <sdschulze> which would be quite ugly in C IMHO
+ <sdschulze> announce_read (what, to, read, when_ready_callback);
+ <antrik> sdschulze: POSIX knows non-blocking I/O
+ <antrik> never checked how it works though
+ <sdschulze> Yes, but I doubt it does what we want.
+ <antrik> anyways, it's not too hard to do non-blocking io_read(). the
+ problem is that then you have to use MIG stubs directly, not the libc
+ function
+ <sdschulze> And you somehow need to get the answer.
+ <sdschulze> resp. get to know when it's ready
+ <antrik> the Hurd actually comes with a io_request.defs and io_reply.defs
+ by default. you just need to use them.
+ <sdschulze> oh, ok
+ <antrik> (instead of the usual io.defs, which does a blocking send/receive
+ in one step)
+ <sdschulze> I'd be interested how this works in Linux...
+ <antrik> what exactly?
+ <sdschulze> simultaneous requests on one FS
+ <antrik> ah, you mean the internal threading model of Linux? no idea
+ <sdschulze> if it uses threading at all
+ <antrik> youpi probably knows... and some others might as well
+ <sdschulze> Callbacks are still ugly...
diff --git a/open_issues/neals_hurd-misc_papers.mdwn b/open_issues/neals_hurd-misc_papers.mdwn
new file mode 100644
index 00000000..7f4e1e3b
--- /dev/null
+++ b/open_issues/neals_hurd-misc_papers.mdwn
@@ -0,0 +1,16 @@
+[[!meta copyright="Copyright © 2010 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_documentation]]
+
+<http://walfield.org/pub/people/neal/papers/hurd-misc/>
+
+ <tschwinge> neal: We could put that into the wiki some day, I think.
+ <neal> sure
diff --git a/open_issues/network_file_system_by_just_forwarding_rpcs.mdwn b/open_issues/network_file_system_by_just_forwarding_rpcs.mdwn
new file mode 100644
index 00000000..de1d63a3
--- /dev/null
+++ b/open_issues/network_file_system_by_just_forwarding_rpcs.mdwn
@@ -0,0 +1,21 @@
+[[!meta copyright="Copyright © 2010 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_hurd]]
+
+IRC, #hurd, August / September 2010
+
+ <jkoenig> btw, it should be possible to implement a network "filesystem" by
+ just forwarding RPCs over the network, right?
+ <jkoenig> (of course auth would be an additional concern)
+ <jkoenig> that would open all kinds of possibilities, possibly.
+ <LarstiQ> jkoenig: plan9?
+ <jkoenig> I don't know much about plan9 yet. I seem to remember some mach
+ extension for network transparency being mentionned somewhere..
diff --git a/open_issues/nice_changes_priority_of_parent_shell.mdwn b/open_issues/nice_changes_priority_of_parent_shell.mdwn
new file mode 100644
index 00000000..d731ef82
--- /dev/null
+++ b/open_issues/nice_changes_priority_of_parent_shell.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2010 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_gnumach open_issue_glibc]]
+
+ * <http://bugs.debian.org/44039>
+
+ * Also see [[nice_vs_mach_thread_priorities]].
diff --git a/open_issues/nice_vs_mach_thread_priorities.mdwn b/open_issues/nice_vs_mach_thread_priorities.mdwn
new file mode 100644
index 00000000..e6b68134
--- /dev/null
+++ b/open_issues/nice_vs_mach_thread_priorities.mdwn
@@ -0,0 +1,197 @@
+[[!meta copyright="Copyright © 2010 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_gnumach open_issue_glibc]]
+
+This issue has been known for some time, due to coreutils' testsuite choking
+when testing *nice*: <http://bugs.debian.org/190581>.
+
+There has been older discussion about this, too, but this is not yet captured
+here.
+
+IRC, #hurd, August 2010
+
+ <pochu> I'm reading Mach and POSIX documentation to understand the priorities/nice problems
+ <pochu> antrik said it would be better to reimplement everything instead of fixing the current Mach interfaces, though I'm not sure about that yet
+ <youpi> uh, so he changed his mind?
+ <pochu> it seems POSIX doesn't say nice values should be -20..20, but 0..(2*NZERO - 1)
+ <youpi> he said we could just change the max priority value and be done with it :)
+ <pochu> so we can probably define NZERO to 16 to match the Mach range of 0..31
+ <youpi> s/said/had said previously/
+ <antrik> youpi: POSIX is actually fucked up regarding the definition of nice values
+ <antrik> or at least the version I checked was
+ <pochu> antrik: why? this says the range is [0,{NZERO}*2-1], so we can just set NZERO to 16 AFAICS: http://www.opengroup.org/onlinepubs/9699919799/functions/getpriority.html
+ <antrik> it talkes about NZERO and all; making it *look* like this could be defined arbitrarily... but in other places, it's clear that the standard 40 level range is always assumed
+ <antrik> anyways, I totally see no point in deviating from other systems in this regard. it can only cause problems, and gives us no benefits
+ <cfhammar> it says NZERO should be at least 20 iirc
+ <youpi> agreed
+ <antrik> I don't remember the details; it's been a while since I looked at this
+ <antrik> youpi: changing the number of levels is only part of the issue. I'm not sure why I didn't mention it initially when we discussed this
+ <antrik> youpi: I already concluded years ago that it's not possible to implement nice levels correctly with the current Mach interfaces in a sane fashion
+ <antrik> (it's probably possible, but only with a stupid hack like setting all the thread priorities one by one)
+ <antrik> youpi: also, last time we discussed this, I checked how the nice stuff works currently on Hurd; and concluded that it's so utterly broken, that there is no point in trying to preserve *any* compatibility. I think we can safely throw away any handling that is alread there, and do it over from scratch in the most straightforward fashion
+ <pochu> antrik: I've thought about setting NZERO to 16 and doing exactly what you've just said to be a hack (setting all the thread priorities one by one)
+ <pochu> but there seems to be consensus that that's undesirable...
+ <pochu> indeed, POSIX says NZERO should be at least 20
+ <antrik> pochu: BTW, I forgot to say: I'm not sure you appreciate the complexity of setting the thread max priorities individually
+ <pochu> antrik: I don't. would it be too complex? I imagined it would be a simple loop :)
+ <antrik> pochu: in order to prevent race conditions, you have to stop all other threads before obtaining the list of threads, and continue them after setting the priority for each
+ <antrik> I don't even know whether it can be done without interfering with other thread handling... in which case it gets really really ugly
+ <pochu> antrik: btw I'm looking at [gnumach]/kern/thread.[ch], removing the priority stuff as appropriate, and will change the tasks code later
+ <antrik> it seems to me that using a more suitable kernel interface will not only be more elegant, but quite possibly actually easier to implement...
+ <pochu> antrik: apparently it's not that hard to change the priority for all threads in a task, see task_priority() in gnumach/kern/task.c
+ <pochu> it looks like the nice test failures are mostly because of the not 1:1 mapping between nice values and Mach priorities
+ <marcusb> "Set priority of task; used only for newly created threads."
+ <marcusb> there is a reason I didn't fix nice 8 years ago
+ <marcusb> ah there is a change_threads option
+ <pochu> marcusb: I'm not sure that comment is correct. that syscall is used by setpriority()
+ <marcusb> yeah
+ <marcusb> I didn't read further, where it explains the change_threads options
+ <marcusb> I was shooting before asking questions :)
+ <marcusb> pochu: although there are some bad interactions if max_priorities are set per thread
+ <antrik> pochu: maybe we are talking past each other. my point was not that it's hard to do in the kernel. I was just saying that it would be painful to do from userspace with the current kernel interface
+ <pochu> antrik: you could still use that interface in user space, couldn't you? or maybe I'm misunderstanding...
+ <pochu> cfhammar, antrik: current patch: http://emilio.pozuelo.org/~deb/gnumach.patch, main issue is probably what to do with high-priority threads. are there cases where there should be a thread with a high priority but the task's priority shouldn't be high? e.g. what to do with kernel_thread() in [gnumach]/kern/thread.c
+ <pochu> i.e. if tasks have a max_priority, then threads shouldn't have a higher priority, but then either we raise the task's max_priority if we need a high-prio thread, or we treat them specially (e.g. new field in struct thread), or maybe it's a non-issue because in such cases, all the task is high-prio?
+ <pochu> also I wonder whether I can kill the processor set's max_priority. It seems totally unused (I've checked gnumach, hurd and glibc)
+ <pochu> (that would simplify the priority handling)
+ <cfhammar> pochu: btw what does your patch do? i can't remember what was decided
+ <pochu> cfhammar: it moves the max_priority from the thread to the task, so raising/lowering it has effect on all of its threads
+ <pochu> it also increases the number of run queues (and thus that of priority levels) from 32 to 40 so we can have a 1:1 mapping with nice values
+ <pochu> cfhammar: btw don't do a full review yet, just a quick look would be fine for now
+ <neal> why not do priorities from 0 to 159
+ <neal> then both ranges can be scaled
+ <neal> without loss of precision
+ <pochu> neal: there would be from Mach to nice priorities, e.g. a task with a priority of 2 another with 3 would have the same niceness, though their priority isn't really the same
+ <neal> pochu: sure
+ <neal> pochu: but any posix priority would map to a current mach priority and back
+ <neal> sorry, that's not true
+ <neal> a posix priority would map to a new mach priority and bach
+ <neal> and a current mach priority would map to a new mach priority and back
+ <neal> which is I think more desirable than changing to 40 priority levels
+ <pochu> neal> and a current mach priority would map to a new mach priority and back <- why should we care about this?
+ <neal> to be compatible with existing mach code
+ <neal> why gratutiously break existing interfaces?
+ <pochu> they would break anyway, wouldn't them? i.e. if you do task_set_priority(..., 20), you can't know if the caller is assuming old or new priorities (to leave it as 20 or as 100)
+ <neal> you add a new interface
+ <neal> you should avoid changing the semantics of existing interfaces as much as possible
+ <pochu> ok, and deprecate the old ones I guess
+ <neal> following that rule, priorities only break if someone does task_set_priority_new(..., X) and task_get_priority ()
+ <neal> there are other users of Mach
+ <neal> I'd add a configure check for the new interface
+ <neal> alternatively, you can check at run time
+ <pochu> well if you _set_priority_new(), you should _get_priority_new() :)
+ <neal> it's not always possible
+ <pochu> other users of GNU Mach?
+ <neal> you are assuming you have complete control of all the code
+ <neal> this is usually not the case
+ <neal> no, other users of Mach
+ <neal> even apple didn't gratuitously break Mach
+ <neal> in fact, it may make sense to see how apple handles this problem
+ <pochu> hmm, I hadn't thought about that
+ <pochu> the other thing I don't understand is: "I'd add a configure check for the new interface". a configure check where? in Mach's configure? that doesn't make sense to me
+ <neal> any users of the interface
+ <pochu> ok so in clients, e.g. glibc & hurd
+ <neal> yes.
+ <antrik> neal: I'm not sure we are winning anything by keeping compatibility with other users of Mach...
+ <antrik> neal: we *know* that to make Hurd work really well, we have to do major changes sooner or later. we can just as well start now IMHO
+ <antrik> keeping compatibility just seems like extra effort without any benefit for us
+ <guillem> just OOC have all other Mach forks, preserved full compatibility?
+ <neal> guillem: Darwin is pretty compatible, as I understand it
+ <antrik> pochu: the fundamental approach of changing the task_priority interface to serve as a max priority, and to drop the notion of max priorities from threads, looks fine
+ <antrik> pochu: I'm not sure about the thread priority handling
+ <antrik> I don't know how thread priorities are supposed to work in chreads and/or pthread
+ <antrik> I can only *guess* that they assume a two-stage scheduling process, where the kernel first decides what process to run; and only later which thread in a process...
+ <antrik> if that's indeed the case, I don't think it's even possible to implement with the current Mach scheduler
+ <antrik> I guess we could work with relative thread priorities if we really want: always have the highest-priority thread run with the task's max priority, and lower the priorities of the other threads accordingly
+ <antrik> however, before engaging into this, I think you should better check whether any of the code in Hurd or glibc actually uses thread priorities at all. my guess is that it doesn't
+ <antrik> I think we could get away with stubbing out thread priority handling alltogether for now, and just use the task priority for all threads
+ <antrik> I agree BTW that it would be useful to check how Darwin handles this
+ <pochu> btw do you know where to download the OS X kernel source? I found something called xnu, but I?m not sure that's it
+ <antrik> pochu: yeah, that's it
+ <antrik> Darwin is the UNIX core of OS X, and Xnu is the actual kernel...
+ <pochu> hmm, so they have both a task.priority and a task.max_priority
+ <neal> pochu: thoughts?
+ <pochu> neal: they have a priority and a max_priority in the task and in the threads, new threads inherit it from its parent task
+ <pochu> then they have a task_priority(task, priority, max_priority) that can change a task's priorities, and it also changes it for all its threads
+ <neal> how does the global run queue work?
+ <pochu> and they have 128 run queues, no idea if there's a special reason for that number
+ <pochu> neal: sorry, what do you mean?
+ <neal> I don't understand the point of the max_priority parameter
+ <pochu> neal: and I don't understand the point of the (base) priority ;)
+ <pochu> the max_priority is just that, the maximum priority of a thread, which can be lowered, but can't exceed the max one
+ <pochu> the (base) priority, I don't understand what it does, though I haven't looked too hard. maybe it's the one a thread starts at, and must be <= max_priority
+ <antrik> pochu: it's clearly documented in the manual, as well as in the code your initial patch changes...
+ <antrik> or do you mean the meaning is different in Darwin?...
+ <pochu> I was speaking of Darwin, though maybe it's the same as you say
+ <antrik> I would assume it's the same. I don't think there would be any point in having the base vs. max priority distinction at all, except to stay in line with standard Mach...
+ <antrik> at least I can't see a point in the base priority semantics for use in POSIX systems...
+ <pochu> right, it would make sense to always have priority == max_priority ...
+ <pochu> neal: so max_priority is that maximum priority, and priority is the one used to calculate the scheduled priority, and can be raised and lowered by the user without giving special permissions as long as he doesn't raise it above max_priority
+ <pochu> well this would allow a user to lower a process' priority, and raise it again later, though that may not be allowed by POSIX, so then we would want to have max_priority == priority (or get rid of one of them if possible and backwards compatible)
+ <antrik> pochu: right, that's what I think too
+ <antrik> BTW, did I bring up handling of thread priorities? I know that I meant to, but I don't remember whether I actually did...
+ <pochu> antrik: you told me it'd be ok to just get rid of them for now
+ <pochu> so I'm more thinking of fixing max_priority and (base) priority and leaving thread's scheduling priority as it currently is
+ <pochu> s/so/though/
+ <antrik> pochu: well, my fear is that keeping the thread priority handling as ist while changing task priority handling would complicate the changes, while giving us no real benefit...
+ <antrik> though looking at what Darwin did there should give you an idea what it involves exactly...
+ <pochu> antrik: what would you propose, keeping sched_priority == max_priority ?
+ <pochu> s/keeping/making/
+ <antrik> yes, if that means what I think it does ;-)
+ <antrik> and keeping the priority of all threads equal to the task priority for now
+ <antrik> of course this only makes sense if changing it like this is actually simpler than extending the current handling...
+ <antrik> again, I can't judge this without actually knowing the code in question. looking at Darwin should give you an idea...
+ <pochu> I think leaving it as is, making it work with the task's max_priority changes would be easier
+ <antrik> perhaps I'm totally overestimating the amount of changes required to do what Darwin does
+ <antrik> OTOH, carrying around dead code isn't exactly helping the maintainability and efficiency of gnumach...
+ <antrik> so I'm a bit ambivalent on this
+ <antrik> should we go for minimal changes here, or use this occasion to simplify things?...
+ <antrik> I guess it would be good to bring this up on the ML
+ <cfhammar> in the context of gsoc i'd say minimal changes
+ <pochu> there's also neal's point on keeping backwards compatibility as much as possible
+ <neal> my point was not backwards compatibility at all costs
+ <antrik> I'm still not convinced this is a valid point :-)
+ <neal> but to not gratutiously break things
+ <antrik> neal: well, I never suggested breaking things just because we can... I only suggested breaking things to make the code and interface simpler :-)
+ <antrik> I do not insist on it though
+ <neal> at that time, we did not know how Mac did it
+ <antrik> I only think it would be good to get into a habit that Mach interfaces are not sacred...
+ <neal> and, I also had a proposal, which I think is not difficult to implement given the existing patch
+ <antrik> but as I said, I do not feel strongly about this. if people feel more confident about a minimal change, I'm fine with that :-)
+ <antrik> neal: err... IIRC your proposal was only about the number of nice levels? we are discussing the interface change necessary to implement POSIX semantics properly
+ <antrik> or am I misremembering?
+ <pochu> antrik: he argues that with that number of nice levels, we could keep backwards compatibility for the 0..31 levels, and for 0..39 for POSIX compatibility
+ <antrik> pochu: yes, I remember that part
+ <neal> antrik : My suggestion was: raise the number of nice levels to 160 and introduce a new interface which uses those. Adjust the old interface to space by 160/32
+ <antrik> neal: I think I said it before: the problem is not *only* in the number of priority levels. the semantics are also wrong. which is why Darwin added a max_priority for tasks
+ <neal> what do you mean the semantics are wrong?
+ <neal> I apologize if you already explained this.
+ <antrik> hm... I explained it at some point, but I guess you were not present at that conversation
+ <neal> I got disconnected recently so I likely don't have it in backlog.
+ <antrik> in POSIX, any process can lower its priority; while only privileged processes can raise it
+ <antrik> Mach distinguishes between "current" and "max" priority for threads: "max" behaves like POSIX; while "current" can be raised or lowered at will, as long as it stays below "max"
+ <antrik> for tasks, there is only a "current" priority
+ <antrik> (which applies to newly created threads, and optionally can be set for all current threads while changing the task priority)
+ <antrik> glibc currently uses the existing task priorities, which leads to *completely* broken semantics
+ <antrik> instead, we need something like a max task priority -- which is exactly what Darwin added
+ <neal> yes
+ <antrik> (the "current" task priority is useless for POSIX semantics as far as I can tell; and regarding thread priorities, I doubt we actually use them at all?...)
+ <cfhammar> where does a new thread get its initial max_priority from?
+ <antrik> cfhammar: from the creator thread IIRC
+ <pochu> yes
+
+2010-08-12
+
+ <pochu> my plan is to change the number of priority levels and the threads/tasks priority handling, then add new RPCs to play with them and make the old ones stay compatible, then make glibc use the new RPCs
+
+---
+
+Another nice issue: [[nice_changes_priority_of_parent_shell]].
diff --git a/open_issues/nightly_builds.mdwn b/open_issues/nightly_builds.mdwn
new file mode 100644
index 00000000..6eef7d19
--- /dev/null
+++ b/open_issues/nightly_builds.mdwn
@@ -0,0 +1,29 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+We'd like to have nightly builds for the whole [[toolchain]], and then do some
+automatic [[unit_testing]] on them.
+
+Resources:
+
+ * [[toolchain/cross-gnu]]
+
+ * [[Debian_Cross_Toolchain]]
+
+ * As reported in the [[news/2010-05-31]] news, there's Hydra doing nightly
+ builds / Nix packages.
+
+ * <http://hudson-ci.org/>, <http://jenkins-ci.org/>
+
+ * <http://buildbot.net/>
+
+---
+
+See also [[nightly_builds_deb_packages]].
diff --git a/open_issues/nightly_builds_deb_packages.mdwn b/open_issues/nightly_builds_deb_packages.mdwn
new file mode 100644
index 00000000..11fc4c79
--- /dev/null
+++ b/open_issues/nightly_builds_deb_packages.mdwn
@@ -0,0 +1,31 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+I'd be quite helpful to have nightly builds in form of Debian `.deb`
+packages.
+
+ * <http://noone.org/talks/vcs-buildd/> (german)
+
+ * Need to have an automation to get from Hurd upstream Git branches to
+ a branch usable in Debian.
+
+---
+
+There is infrastructure available to test whole OS installations.
+
+ * <http://www.os-autoinst.org/>
+
+---
+
+[[Debian_Cross_Toolchain]] for cross-building?
+
+---
+
+See also [[nightly_builds]].
diff --git a/open_issues/nptl.mdwn b/open_issues/nptl.mdwn
new file mode 100644
index 00000000..9ff5fb51
--- /dev/null
+++ b/open_issues/nptl.mdwn
@@ -0,0 +1,37 @@
+[[!meta copyright="Copyright © 2010 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_libpthread open_issue_glibc]]
+
+IRC, #hurd, 2010-07-31
+
+ <tschwinge> Other question: how difficult is a NPTL port? Futexes and some kernel interfaces for scheduling stuff etc. -- what else?
+ <youpi> actually NPTL doesn't _require_ futexes
+ <youpi> it just requires low-level locks
+ <youpi> Mmm, it seems to be so only in principle
+ <youpi> I can see futex names here and there in the generic code
+ <youpi> looks like Drepper isn't disciplined enough in that area either
+ <tschwinge> (well, why would he...)
+ <youpi> I'm not sure we really want to port NPTL
+ <tschwinge> OK.
+ <youpi> Drepper will keep finding things to add
+ <youpi> while the interface between glibc and libpthread isn't increasing _so_ much
+ <tschwinge> ... and even less so the interfavce that actual applications are using.
+ <tschwinge> We'd need to evaluate which benefits NPTL would bring.
+
+---
+
+# Resources
+
+ * <http://www.akkadia.org/drepper/nptl-design.pdf>
+
+ * <http://nptltracetool.sourceforge.net/>
+
+ * <http://posixtest.sourceforge.net/>
diff --git a/open_issues/ogi.mdwn b/open_issues/ogi.mdwn
new file mode 100644
index 00000000..e4372dc0
--- /dev/null
+++ b/open_issues/ogi.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+Go through Ognyan Kulev's (ogi) pages, and archive / hunt down what's still
+interesting.
+
+ * <http://debian.fmi.uni-sofia.bg/~ogi/hurd/links/>
+
+ * <http://debian.fmi.uni-sofia.bg/~ogi/hurd/ext3fs/>
+
+ * SVN ext2fs (ext2fs / large stores doc)
+
+ done
+
+ * ext3fs et al.
+
+ checking copyright situation, also for thesis / w.r.t. university
+ project
diff --git a/open_issues/open_posix_test_suite.mdwn b/open_issues/open_posix_test_suite.mdwn
new file mode 100644
index 00000000..089ea1b1
--- /dev/null
+++ b/open_issues/open_posix_test_suite.mdwn
@@ -0,0 +1,2715 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="Open POSIX Test Suite"]]
+
+Here's a log of a [Open POSIX Test Suite](http://posixtest.sourceforge.net/)
+run (get sources, `make`, inspect `logfile`); this is from 2009-07-27 HEAD
+sources on a 2009-07-27 Debian GNU/Hurd system.
+
+The `logfile` has been post-processed with:
+
+ $ sed ↩
+ -e '/build: PASS$/d' ↩
+ -e '/link: PASS$/d' ↩
+ -e '/link: SKIP$/d' ↩
+ -e '/execution: PASS$/d'
+
+The tests that failed as *INTERRUPTED* were hanging and have manually been
+interrupted using `kill [PID]`.
+
+ conformance/definitions/signal_h/16-1: build: FAILED: Compiler output:
+ conformance/definitions/signal_h/16-1.c:14: error: ‘SA_SIGINFO’ undeclared here (not in a function)
+ conformance/definitions/signal_h/16-1.c:15: error: ‘SA_NOCLDWAIT’ undeclared here (not in a function)
+ conformance/definitions/signal_h/26-1: build: FAILED: Compiler output:
+ conformance/definitions/signal_h/26-1.c:9: error: expected ‘)’ before ‘int’
+ conformance/definitions/signal_h/26-1.c: In function ‘dummyfcn’:
+ conformance/definitions/signal_h/26-1.c:13: error: ‘pthread_kill_test’ undeclared (first use in this function)
+ conformance/definitions/signal_h/26-1.c:13: error: (Each undeclared identifier is reported only once
+ conformance/definitions/signal_h/26-1.c:13: error: for each function it appears in.)
+ conformance/definitions/signal_h/26-1.c:13: error: expected ‘;’ before ‘dummyvar’
+ conformance/definitions/signal_h/26-1.c:14: error: ‘dummyvar’ undeclared (first use in this function)
+ conformance/definitions/signal_h/26-1.c:14: error: ‘pthread_kill’ undeclared (first use in this function)
+ conformance/interfaces/aio_cancel/3-1: build: FAILED: Compiler output:
+ conformance/interfaces/aio_cancel/3-1.c: In function ‘main’:
+ conformance/interfaces/aio_cancel/3-1.c:96: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/aio_cancel/3-1.c:96: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/aio_cancel/3-1.c:96: error: for each function it appears in.)
+ conformance/interfaces/aio_cancel/3-1.c:97: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/aio_fsync/1-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_fsync/1-1.c: In function ‘main’:
+ conformance/interfaces/aio_fsync/1-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_fsync/1-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_fsync/10-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_fsync/10-1.c: In function ‘main’:
+ conformance/interfaces/aio_fsync/10-1.c:33: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_fsync/10-1.c:33: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_fsync/11-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_fsync/11-1.c: In function ‘main’:
+ conformance/interfaces/aio_fsync/11-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_fsync/11-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_fsync/13-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_fsync/13-1.c: In function ‘main’:
+ conformance/interfaces/aio_fsync/13-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_fsync/13-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_fsync/6-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_fsync/6-1.c: In function ‘main’:
+ conformance/interfaces/aio_fsync/6-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_fsync/6-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_fsync/7-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_fsync/7-1.c: In function ‘main’:
+ conformance/interfaces/aio_fsync/7-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_fsync/7-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_read/12-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_read/12-1.c: In function ‘main’:
+ conformance/interfaces/aio_read/12-1.c:34: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_read/12-1.c:34: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_read/13-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_read/13-1.c: In function ‘main’:
+ conformance/interfaces/aio_read/13-1.c:33: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_read/13-1.c:33: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_read/14-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_read/14-1.c: In function ‘main’:
+ conformance/interfaces/aio_read/14-1.c:34: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_read/14-1.c:34: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_read/15-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_read/15-1.c: In function ‘main’:
+ conformance/interfaces/aio_read/15-1.c:30: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_read/15-1.c:30: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_read/6-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_read/6-1.c: In function ‘main’:
+ conformance/interfaces/aio_read/6-1.c:30: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_read/6-1.c:30: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_suspend/1-1: build: FAILED: Compiler output:
+ conformance/interfaces/aio_suspend/1-1.c: In function ‘main’:
+ conformance/interfaces/aio_suspend/1-1.c:120: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/aio_suspend/1-1.c:120: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/aio_suspend/1-1.c:120: error: for each function it appears in.)
+ conformance/interfaces/aio_suspend/1-1.c:126: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/aio_suspend/2-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_suspend/2-1.c: In function ‘main’:
+ conformance/interfaces/aio_suspend/2-1.c:31: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_suspend/2-1.c:31: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_suspend/6-1: build: FAILED: Compiler output:
+ conformance/interfaces/aio_suspend/6-1.c: In function ‘main’:
+ conformance/interfaces/aio_suspend/6-1.c:116: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/aio_suspend/6-1.c:116: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/aio_suspend/6-1.c:116: error: for each function it appears in.)
+ conformance/interfaces/aio_suspend/6-1.c:122: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/aio_suspend/7-1: build: FAILED: Compiler output:
+ conformance/interfaces/aio_suspend/7-1.c: In function ‘main’:
+ conformance/interfaces/aio_suspend/7-1.c:118: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/aio_suspend/7-1.c:118: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/aio_suspend/7-1.c:118: error: for each function it appears in.)
+ conformance/interfaces/aio_suspend/7-1.c:124: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/aio_suspend/8-1: build: FAILED: Compiler output:
+ conformance/interfaces/aio_suspend/8-1.c: In function ‘main’:
+ conformance/interfaces/aio_suspend/8-1.c:121: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/aio_suspend/8-1.c:121: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/aio_suspend/8-1.c:121: error: for each function it appears in.)
+ conformance/interfaces/aio_suspend/8-1.c:127: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/aio_write/10-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_write/10-1.c: In function ‘main’:
+ conformance/interfaces/aio_write/10-1.c:32: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_write/10-1.c:32: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_write/11-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_write/11-1.c: In function ‘main’:
+ conformance/interfaces/aio_write/11-1.c:32: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_write/11-1.c:32: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_write/12-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_write/12-1.c: In function ‘main’:
+ conformance/interfaces/aio_write/12-1.c:31: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_write/12-1.c:31: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_write/13-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_write/13-1.c: In function ‘main’:
+ conformance/interfaces/aio_write/13-1.c:30: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_write/13-1.c:30: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_write/4-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_write/4-1.c: In function ‘main’:
+ conformance/interfaces/aio_write/4-1.c:30: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_write/4-1.c:30: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/fork/2-1: build: FAILED: Compiler output:
+ conformance/interfaces/fork/2-1.c: In function ‘main’:
+ conformance/interfaces/fork/2-1.c:240: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/fork/2-1.c:240: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/fork/2-1.c:240: error: for each function it appears in.)
+ conformance/interfaces/fork/2-1.c:241: error: ‘SA_NOCLDWAIT’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/1-1: build: FAILED: Compiler output:
+ conformance/interfaces/lio_listio/1-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/1-1.c:110: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/1-1.c:110: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/lio_listio/1-1.c:110: error: for each function it appears in.)
+ conformance/interfaces/lio_listio/1-1.c:122: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/10-1: build: FAILED: Compiler output:
+ conformance/interfaces/lio_listio/10-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/10-1.c:107: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/10-1.c:107: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/lio_listio/10-1.c:107: error: for each function it appears in.)
+ conformance/interfaces/lio_listio/10-1.c:119: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/11-1: build: FAILED: Compiler output:
+ conformance/interfaces/lio_listio/11-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/11-1.c:111: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/11-1.c:111: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/lio_listio/11-1.c:111: error: for each function it appears in.)
+ conformance/interfaces/lio_listio/11-1.c:123: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/14-1: build: FAILED: Compiler output:
+ conformance/interfaces/lio_listio/14-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/14-1.c:111: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/14-1.c:111: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/lio_listio/14-1.c:111: error: for each function it appears in.)
+ conformance/interfaces/lio_listio/14-1.c:123: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/15-1: build: FAILED: Compiler output:
+ conformance/interfaces/lio_listio/15-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/15-1.c:111: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/15-1.c:111: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/lio_listio/15-1.c:111: error: for each function it appears in.)
+ conformance/interfaces/lio_listio/15-1.c:123: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/16-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/lio_listio/16-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/16-1.c:32: error: implicit declaration of function ‘exit’
+ conformance/interfaces/lio_listio/16-1.c:32: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/lio_listio/17-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/lio_listio/17-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/17-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/lio_listio/17-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/lio_listio/19-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/lio_listio/19-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/19-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/lio_listio/19-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/lio_listio/2-1: build: FAILED: Compiler output:
+ conformance/interfaces/lio_listio/2-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/2-1.c:106: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/2-1.c:106: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/lio_listio/2-1.c:106: error: for each function it appears in.)
+ conformance/interfaces/lio_listio/2-1.c:118: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/20-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/lio_listio/20-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/20-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/lio_listio/20-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/lio_listio/21-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/lio_listio/21-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/21-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/lio_listio/21-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/lio_listio/22-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/lio_listio/22-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/22-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/lio_listio/22-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/lio_listio/23-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/lio_listio/23-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/23-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/lio_listio/23-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/lio_listio/24-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/lio_listio/24-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/24-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/lio_listio/24-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/lio_listio/25-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/lio_listio/25-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/25-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/lio_listio/25-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/lio_listio/3-1: build: FAILED: Compiler output:
+ conformance/interfaces/lio_listio/3-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/3-1.c:107: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/3-1.c:107: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/lio_listio/3-1.c:107: error: for each function it appears in.)
+ conformance/interfaces/lio_listio/3-1.c:119: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/4-1: build: FAILED: Compiler output:
+ conformance/interfaces/lio_listio/4-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/4-1.c:114: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/4-1.c:114: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/lio_listio/4-1.c:114: error: for each function it appears in.)
+ conformance/interfaces/lio_listio/4-1.c:126: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/7-1: build: FAILED: Compiler output:
+ conformance/interfaces/lio_listio/7-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/7-1.c:113: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/7-1.c:113: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/lio_listio/7-1.c:113: error: for each function it appears in.)
+ conformance/interfaces/lio_listio/7-1.c:125: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/mq_open/27-1: build: FAILED: Compiler output:
+ conformance/interfaces/mq_open/27-1.c: In function ‘main’:
+ conformance/interfaces/mq_open/27-1.c:27: error: ‘PATH_MAX’ undeclared (first use in this function)
+ conformance/interfaces/mq_open/27-1.c:27: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/mq_open/27-1.c:27: error: for each function it appears in.)
+ cc1: warnings being treated as errors
+ conformance/interfaces/mq_open/27-1.c:27: error: unused variable ‘qname’
+ conformance/interfaces/mq_send/13-1: build: FAILED: Compiler output:
+ conformance/interfaces/mq_send/13-1.c:30: error: ‘MQ_PRIO_MAX’ undeclared here (not in a function)
+ conformance/interfaces/mq_send/4-1: build: FAILED: Compiler output:
+ conformance/interfaces/mq_send/4-1.c: In function ‘main’:
+ conformance/interfaces/mq_send/4-1.c:41: error: ‘MQ_PRIO_MAX’ undeclared (first use in this function)
+ conformance/interfaces/mq_send/4-1.c:41: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/mq_send/4-1.c:41: error: for each function it appears in.)
+ conformance/interfaces/mq_send/4-2: build: FAILED: Compiler output:
+ conformance/interfaces/mq_send/4-2.c: In function ‘main’:
+ conformance/interfaces/mq_send/4-2.c:41: error: ‘MQ_PRIO_MAX’ undeclared (first use in this function)
+ conformance/interfaces/mq_send/4-2.c:41: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/mq_send/4-2.c:41: error: for each function it appears in.)
+ conformance/interfaces/mq_send/4-3: build: FAILED: Compiler output:
+ conformance/interfaces/mq_send/4-3.c: In function ‘main’:
+ conformance/interfaces/mq_send/4-3.c:51: error: ‘MQ_PRIO_MAX’ undeclared (first use in this function)
+ conformance/interfaces/mq_send/4-3.c:51: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/mq_send/4-3.c:51: error: for each function it appears in.)
+ conformance/interfaces/mq_send/7-1: build: FAILED: Compiler output:
+ conformance/interfaces/mq_send/7-1.c: In function ‘main’:
+ conformance/interfaces/mq_send/7-1.c:60: error: ‘MQ_PRIO_MAX’ undeclared (first use in this function)
+ conformance/interfaces/mq_send/7-1.c:60: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/mq_send/7-1.c:60: error: for each function it appears in.)
+ conformance/interfaces/mq_timedsend/13-1: build: FAILED: Compiler output:
+ conformance/interfaces/mq_timedsend/13-1.c:31: error: ‘MQ_PRIO_MAX’ undeclared here (not in a function)
+ conformance/interfaces/mq_timedsend/4-1: build: FAILED: Compiler output:
+ conformance/interfaces/mq_timedsend/4-1.c: In function ‘main’:
+ conformance/interfaces/mq_timedsend/4-1.c:45: error: ‘MQ_PRIO_MAX’ undeclared (first use in this function)
+ conformance/interfaces/mq_timedsend/4-1.c:45: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/mq_timedsend/4-1.c:45: error: for each function it appears in.)
+ conformance/interfaces/mq_timedsend/4-2: build: FAILED: Compiler output:
+ conformance/interfaces/mq_timedsend/4-2.c: In function ‘main’:
+ conformance/interfaces/mq_timedsend/4-2.c:45: error: ‘MQ_PRIO_MAX’ undeclared (first use in this function)
+ conformance/interfaces/mq_timedsend/4-2.c:45: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/mq_timedsend/4-2.c:45: error: for each function it appears in.)
+ conformance/interfaces/mq_timedsend/4-3: build: FAILED: Compiler output:
+ conformance/interfaces/mq_timedsend/4-3.c: In function ‘main’:
+ conformance/interfaces/mq_timedsend/4-3.c:55: error: ‘MQ_PRIO_MAX’ undeclared (first use in this function)
+ conformance/interfaces/mq_timedsend/4-3.c:55: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/mq_timedsend/4-3.c:55: error: for each function it appears in.)
+ conformance/interfaces/pthread_attr_getstack/1-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_attr_getstack/1-1.c: In function ‘main’:
+ conformance/interfaces/pthread_attr_getstack/1-1.c:54: error: ‘PTHREAD_STACK_MIN’ undeclared (first use in this function)
+ conformance/interfaces/pthread_attr_getstack/1-1.c:54: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/pthread_attr_getstack/1-1.c:54: error: for each function it appears in.)
+ conformance/interfaces/pthread_attr_getstacksize/1-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_attr_getstacksize/1-1.c: In function ‘main’:
+ conformance/interfaces/pthread_attr_getstacksize/1-1.c:53: error: ‘PTHREAD_STACK_MIN’ undeclared (first use in this function)
+ conformance/interfaces/pthread_attr_getstacksize/1-1.c:53: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/pthread_attr_getstacksize/1-1.c:53: error: for each function it appears in.)
+ conformance/interfaces/pthread_attr_setstack/1-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_attr_setstack/1-1.c: In function ‘main’:
+ conformance/interfaces/pthread_attr_setstack/1-1.c:63: error: ‘PTHREAD_STACK_MIN’ undeclared (first use in this function)
+ conformance/interfaces/pthread_attr_setstack/1-1.c:63: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/pthread_attr_setstack/1-1.c:63: error: for each function it appears in.)
+ conformance/interfaces/pthread_attr_setstack/2-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_attr_setstack/2-1.c: In function ‘main’:
+ conformance/interfaces/pthread_attr_setstack/2-1.c:90: error: ‘PTHREAD_STACK_MIN’ undeclared (first use in this function)
+ conformance/interfaces/pthread_attr_setstack/2-1.c:90: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/pthread_attr_setstack/2-1.c:90: error: for each function it appears in.)
+ conformance/interfaces/pthread_attr_setstack/4-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_attr_setstack/4-1.c: In function ‘main’:
+ conformance/interfaces/pthread_attr_setstack/4-1.c:73: error: ‘PTHREAD_STACK_MIN’ undeclared (first use in this function)
+ conformance/interfaces/pthread_attr_setstack/4-1.c:73: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/pthread_attr_setstack/4-1.c:73: error: for each function it appears in.)
+ conformance/interfaces/pthread_attr_setstack/6-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_attr_setstack/6-1.c: In function ‘main’:
+ conformance/interfaces/pthread_attr_setstack/6-1.c:59: error: ‘PTHREAD_STACK_MIN’ undeclared (first use in this function)
+ conformance/interfaces/pthread_attr_setstack/6-1.c:59: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/pthread_attr_setstack/6-1.c:59: error: for each function it appears in.)
+ conformance/interfaces/pthread_attr_setstack/7-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_attr_setstack/7-1.c: In function ‘main’:
+ conformance/interfaces/pthread_attr_setstack/7-1.c:60: error: ‘PTHREAD_STACK_MIN’ undeclared (first use in this function)
+ conformance/interfaces/pthread_attr_setstack/7-1.c:60: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/pthread_attr_setstack/7-1.c:60: error: for each function it appears in.)
+ conformance/interfaces/pthread_attr_setstacksize/1-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_attr_setstacksize/1-1.c: In function ‘main’:
+ conformance/interfaces/pthread_attr_setstacksize/1-1.c:41: error: ‘PTHREAD_STACK_MIN’ undeclared (first use in this function)
+ conformance/interfaces/pthread_attr_setstacksize/1-1.c:41: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/pthread_attr_setstacksize/1-1.c:41: error: for each function it appears in.)
+ conformance/interfaces/pthread_attr_setstacksize/2-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_attr_setstacksize/2-1.c: In function ‘main’:
+ conformance/interfaces/pthread_attr_setstacksize/2-1.c:79: error: ‘PTHREAD_STACK_MIN’ undeclared (first use in this function)
+ conformance/interfaces/pthread_attr_setstacksize/2-1.c:79: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/pthread_attr_setstacksize/2-1.c:79: error: for each function it appears in.)
+ conformance/interfaces/pthread_attr_setstacksize/4-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_attr_setstacksize/4-1.c: In function ‘main’:
+ conformance/interfaces/pthread_attr_setstacksize/4-1.c:50: error: ‘PTHREAD_STACK_MIN’ undeclared (first use in this function)
+ conformance/interfaces/pthread_attr_setstacksize/4-1.c:50: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/pthread_attr_setstacksize/4-1.c:50: error: for each function it appears in.)
+ conformance/interfaces/pthread_key_create/speculative/5-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_key_create/speculative/5-1.c:37: error: ‘PTHREAD_KEYS_MAX’ undeclared here (not in a function)
+ conformance/interfaces/pthread_once/3-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_once/3-1.c: In function ‘main’:
+ conformance/interfaces/pthread_once/3-1.c:71: error: expected expression before ‘{’ token
+ conformance/interfaces/pthread_once/6-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_once/6-1.c: In function ‘test’:
+ conformance/interfaces/pthread_once/6-1.c:199: error: expected expression before ‘{’ token
+ conformance/interfaces/sched_yield/1-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/sched_yield/1-1.c: In function ‘set_process_affinity’:
+ conformance/interfaces/sched_yield/1-1.c:87: error: implicit declaration of function ‘__CPU_ZERO_S’
+ conformance/interfaces/sched_yield/1-1.c:89: error: implicit declaration of function ‘__CPU_SET_S’
+ conformance/interfaces/sched_yield/1-1.c: In function ‘set_thread_affinity’:
+ conformance/interfaces/sched_yield/1-1.c:119: error: implicit declaration of function ‘pthread_setaffinity_np’
+ conformance/interfaces/sched_yield/1-1.c: In function ‘runner’:
+ conformance/interfaces/sched_yield/1-1.c:136: error: format ‘%ld’ expects type ‘long int’, but argument 3 has type ‘pthread_t’
+ conformance/interfaces/sched_yield/1-1.c: In function ‘busy_thread’:
+ conformance/interfaces/sched_yield/1-1.c:159: error: format ‘%ld’ expects type ‘long int’, but argument 3 has type ‘pthread_t’
+ conformance/interfaces/sem_init/6-1: build: FAILED: Compiler output:
+ conformance/interfaces/sem_init/6-1.c: In function ‘main’:
+ conformance/interfaces/sem_init/6-1.c:29: error: ‘SEM_VALUE_MAX’ undeclared (first use in this function)
+ conformance/interfaces/sem_init/6-1.c:29: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sem_init/6-1.c:29: error: for each function it appears in.)
+ conformance/interfaces/sem_open/5-1: build: FAILED: Compiler output:
+ conformance/interfaces/sem_open/5-1.c: In function ‘main’:
+ conformance/interfaces/sem_open/5-1.c:32: error: ‘SEM_VALUE_MAX’ undeclared (first use in this function)
+ conformance/interfaces/sem_open/5-1.c:32: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sem_open/5-1.c:32: error: for each function it appears in.)
+ conformance/interfaces/sigaction/10-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/10-1.c: In function ‘main’:
+ conformance/interfaces/sigaction/10-1.c:41: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/10-1.c:41: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/10-1.c:41: error: for each function it appears in.)
+ conformance/interfaces/sigaction/11-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/11-1.c: In function ‘main’:
+ conformance/interfaces/sigaction/11-1.c:50: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/11-1.c:50: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/11-1.c:50: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-1.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-1.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-1.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-1.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-10: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-10.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-10.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-10.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-10.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-11: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-11.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-11.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-11.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-11.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-12: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-12.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-12.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-12.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-12.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-13: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-13.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-13.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-13.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-13.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-14: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-14.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-14.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-14.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-14.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-15: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-15.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-15.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-15.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-15.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-16: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-16.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-16.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-16.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-16.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-17: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-17.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-17.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-17.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-17.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-18: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-18.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-18.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-18.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-18.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-19: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-19.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-19.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-19.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-19.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-2: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-2.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-2.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-2.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-2.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-20: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-20.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-20.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-20.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-20.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-21: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-21.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-21.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-21.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-21.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-22: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-22.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-22.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-22.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-22.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-23: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-23.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-23.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-23.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-23.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-24: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-24.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-24.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-24.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-24.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-25: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-25.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-25.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-25.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-25.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-26: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-26.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-26.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-26.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-26.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-3: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-3.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-3.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-3.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-3.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-4: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-4.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-4.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-4.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-4.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-5: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-5.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-5.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-5.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-5.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-6: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-6.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-6.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-6.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-6.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-7: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-7.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-7.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-7.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-7.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-8: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-8.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-8.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-8.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-8.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-9: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-9.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-9.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-9.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-9.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/21-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/21-1.c: In function ‘main’:
+ conformance/interfaces/sigaction/21-1.c:36: error: ‘SA_NOCLDWAIT’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/21-1.c:36: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/21-1.c:36: error: for each function it appears in.)
+ conformance/interfaces/sigaction/29-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/29-1.c: In function ‘handler’:
+ conformance/interfaces/sigaction/29-1.c:95: error: ‘SIGRTMAX’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/29-1.c:95: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/29-1.c:95: error: for each function it appears in.)
+ conformance/interfaces/sigaction/29-1.c: In function ‘main’:
+ conformance/interfaces/sigaction/29-1.c:133: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/29-1.c:145: error: ‘SIGRTMAX’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/30-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/30-1.c: In function ‘main’:
+ conformance/interfaces/sigaction/30-1.c:117: error: ‘SIGRTMAX’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/30-1.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/30-1.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-1.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-1.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-1.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-1.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-10: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-10.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-10.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-10.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-10.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-11: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-11.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-11.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-11.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-11.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-12: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-12.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-12.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-12.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-12.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-13: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-13.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-13.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-13.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-13.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-14: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-14.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-14.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-14.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-14.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-15: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-15.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-15.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-15.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-15.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-16: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-16.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-16.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-16.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-16.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-17: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-17.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-17.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-17.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-17.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-18: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-18.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-18.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-18.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-18.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-19: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-19.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-19.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-19.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-19.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-2: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-2.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-2.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-2.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-2.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-20: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-20.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-20.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-20.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-20.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-21: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-21.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-21.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-21.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-21.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-22: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-22.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-22.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-22.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-22.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-23: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-23.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-23.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-23.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-23.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-24: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-24.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-24.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-24.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-24.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-25: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-25.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-25.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-25.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-25.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-26: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-26.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-26.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-26.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-26.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-3: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-3.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-3.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-3.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-3.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-4: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-4.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-4.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-4.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-4.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-5: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-5.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-5.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-5.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-5.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-6: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-6.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-6.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-6.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-6.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-7: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-7.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-7.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-7.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-7.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-8: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-8.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-8.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-8.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-8.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-9: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-9.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-9.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-9.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-9.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/9-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/9-1.c: In function ‘main’:
+ conformance/interfaces/sigaction/9-1.c:49: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/9-1.c:49: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/9-1.c:49: error: for each function it appears in.)
+ conformance/interfaces/sigqueue/1-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigqueue/1-1.c: In function ‘myhandler’:
+ conformance/interfaces/sigqueue/1-1.c:33: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/1-1.c:33: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigqueue/1-1.c:33: error: for each function it appears in.)
+ conformance/interfaces/sigqueue/1-1.c: In function ‘main’:
+ conformance/interfaces/sigqueue/1-1.c:46: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/1-1.c:49: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/4-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigqueue/4-1.c: In function ‘main’:
+ conformance/interfaces/sigqueue/4-1.c:45: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/4-1.c:45: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigqueue/4-1.c:45: error: for each function it appears in.)
+ conformance/interfaces/sigqueue/4-1.c:48: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/5-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigqueue/5-1.c: In function ‘main’:
+ conformance/interfaces/sigqueue/5-1.c:48: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/5-1.c:48: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigqueue/5-1.c:48: error: for each function it appears in.)
+ conformance/interfaces/sigqueue/6-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigqueue/6-1.c: In function ‘main’:
+ conformance/interfaces/sigqueue/6-1.c:55: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/6-1.c:55: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigqueue/6-1.c:55: error: for each function it appears in.)
+ conformance/interfaces/sigqueue/6-1.c:58: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/7-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigqueue/7-1.c: In function ‘main’:
+ conformance/interfaces/sigqueue/7-1.c:52: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/7-1.c:52: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigqueue/7-1.c:52: error: for each function it appears in.)
+ conformance/interfaces/sigqueue/7-1.c:58: error: ‘SIGRTMAX’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/7-1.c:58: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/8-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigqueue/8-1.c: In function ‘main’:
+ conformance/interfaces/sigqueue/8-1.c:46: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/8-1.c:46: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigqueue/8-1.c:46: error: for each function it appears in.)
+ conformance/interfaces/sigqueue/8-1.c:49: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/9-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigqueue/9-1.c: In function ‘main’:
+ conformance/interfaces/sigqueue/9-1.c:46: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/9-1.c:46: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigqueue/9-1.c:46: error: for each function it appears in.)
+ conformance/interfaces/sigqueue/9-1.c:49: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/sigwait/2-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigwait/2-1.c: In function ‘main’:
+ conformance/interfaces/sigwait/2-1.c:45: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/sigwait/2-1.c:45: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigwait/2-1.c:45: error: for each function it appears in.)
+ conformance/interfaces/sigwait/7-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigwait/7-1.c: In function ‘main’:
+ conformance/interfaces/sigwait/7-1.c:114: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/sigwait/7-1.c:114: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigwait/7-1.c:114: error: for each function it appears in.)
+ conformance/interfaces/sigwait/7-1.c:114: error: ‘SIGRTMAX’ undeclared (first use in this function)
+ conformance/interfaces/sigwaitinfo/2-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigwaitinfo/2-1.c: In function ‘main’:
+ conformance/interfaces/sigwaitinfo/2-1.c:44: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigwaitinfo/2-1.c:44: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigwaitinfo/2-1.c:44: error: for each function it appears in.)
+ conformance/interfaces/sigwaitinfo/2-1.c:49: error: ‘SIGRTMAX’ undeclared (first use in this function)
+ conformance/interfaces/sigwaitinfo/2-1.c:49: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/sigwaitinfo/5-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigwaitinfo/5-1.c: In function ‘main’:
+ conformance/interfaces/sigwaitinfo/5-1.c:41: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigwaitinfo/5-1.c:41: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigwaitinfo/5-1.c:41: error: for each function it appears in.)
+ conformance/interfaces/sigwaitinfo/6-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigwaitinfo/6-1.c: In function ‘main’:
+ conformance/interfaces/sigwaitinfo/6-1.c:41: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigwaitinfo/6-1.c:41: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigwaitinfo/6-1.c:41: error: for each function it appears in.)
+ conformance/interfaces/sigwaitinfo/7-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigwaitinfo/7-1.c: In function ‘main’:
+ conformance/interfaces/sigwaitinfo/7-1.c:48: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigwaitinfo/7-1.c:48: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigwaitinfo/7-1.c:48: error: for each function it appears in.)
+ conformance/interfaces/sigwaitinfo/7-1.c:51: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/sigwaitinfo/8-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigwaitinfo/8-1.c: In function ‘main’:
+ conformance/interfaces/sigwaitinfo/8-1.c:47: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigwaitinfo/8-1.c:47: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigwaitinfo/8-1.c:47: error: for each function it appears in.)
+ conformance/interfaces/sigwaitinfo/8-1.c:50: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/definitions/mqueue_h/1-1: execution: UNTESTED: Output:
+ Not Implemented!
+ conformance/definitions/mqueue_h/10-1: execution: UNTESTED: Output:
+ Test not implemented!
+ conformance/definitions/mqueue_h/11-1: execution: UNTESTED: Output:
+ Test not implemented!
+ conformance/definitions/mqueue_h/2-1: execution: UNTESTED: Output:
+ Test not implemented!
+ conformance/definitions/mqueue_h/3-1: execution: UNTESTED: Output:
+ Test not implemented!
+ conformance/definitions/mqueue_h/4-1: execution: UNTESTED: Output:
+ Test not implemented!
+ conformance/definitions/mqueue_h/5-1: execution: UNTESTED: Output:
+ Test not implemented!
+ conformance/definitions/mqueue_h/6-1: execution: UNTESTED: Output:
+ Test not implemented!
+ conformance/definitions/mqueue_h/7-1: execution: UNTESTED: Output:
+ Test not implemented!
+ conformance/definitions/mqueue_h/8-1: execution: UNTESTED: Output:
+ Test not implemented!
+ conformance/definitions/mqueue_h/9-1: execution: UNTESTED: Output:
+ Test not implemented!
+ conformance/interfaces/aio_cancel/1-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_cancel/10-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_cancel/2-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_cancel/2-2: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_cancel/4-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_cancel/5-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_cancel/6-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_cancel/7-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_cancel/8-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_cancel/9-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_error/1-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_error/2-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_error/3-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_fsync/12-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_fsync/14-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_fsync/2-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_fsync/3-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_fsync/4-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_fsync/4-2: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_fsync/5-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_fsync/8-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_fsync/8-2: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_fsync/8-3: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_fsync/8-4: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_fsync/9-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_read/1-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_read/10-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_read/11-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_read/11-2: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_read/2-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_read/3-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_read/3-2: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_read/4-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_read/5-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_read/7-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_read/8-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_read/9-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_return/1-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_return/2-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_return/3-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_return/3-2: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_return/4-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_suspend/3-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_suspend/4-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_suspend/5-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_suspend/9-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_write/1-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_write/1-2: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_write/2-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_write/3-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_write/5-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_write/6-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_write/7-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_write/8-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_write/8-2: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_write/9-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_write/9-2: execution: UNSUPPORTED: Output:
+ conformance/interfaces/clock_getcpuclockid/1-1: execution: UNSUPPORTED: Output:
+ _POSIX_CPUTIME unsupported
+ conformance/interfaces/clock_getcpuclockid/2-1: execution: UNSUPPORTED: Output:
+ _POSIX_CPUTIME unsupported
+ conformance/interfaces/clock_getres/3-1: execution: FAILED: Output:
+ clock_getres() failed
+ Test FAILED
+ conformance/interfaces/clock_getres/7-1: execution: UNSUPPORTED: Output:
+ _POSIX_CPUTIME not supported
+ conformance/interfaces/clock_getres/8-1: execution: UNSUPPORTED: Output:
+ _POSIX_THREAD_CPUTIME not supported
+ conformance/interfaces/clock_gettime/3-1: execution: UNSUPPORTED: Output:
+ CLOCK_MONOTONIC unsupported
+ conformance/interfaces/clock_gettime/4-1: execution: UNSUPPORTED: Output:
+ _POSIX_CPUTIME unsupported
+ conformance/interfaces/clock_nanosleep/10-1: execution: FAILED: Output:
+ In handler
+ errno != EINTR
+ Test FAILED
+ conformance/interfaces/clock_nanosleep/9-1: execution: FAILED: Output:
+ In handler
+ clock_nanosleep() did not return EINTR
+ Child did not exit normally.
+ Test FAILED
+ conformance/interfaces/clock_settime/1-1: execution: UNTESTED: Output:
+ Run this test as ROOT, not as a Regular User
+ conformance/interfaces/clock_settime/19-1: execution: UNTESTED: Output:
+ Run this test as ROOT, not as a Regular User
+ conformance/interfaces/clock_settime/4-1: execution: UNTESTED: Output:
+ Run this test as ROOT, not as a Regular User
+ conformance/interfaces/clock_settime/4-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/clock_settime/5-1: execution: UNTESTED: Output:
+ Run this test as ROOT, not as a Regular User
+ conformance/interfaces/clock_settime/5-2: execution: UNTESTED: Output:
+ Run this test as ROOT, not as a Regular User
+ conformance/interfaces/clock_settime/7-1: execution: UNTESTED: Output:
+ Run this test as ROOT, not as a Regular User
+ conformance/interfaces/clock_settime/7-2: execution: UNTESTED: Output:
+ Run this test as ROOT, not as a Regular User
+ conformance/interfaces/clock_settime/8-1: execution: UNTESTED: Output:
+ Run this test as ROOT, not as a Regular User
+ conformance/interfaces/clock_settime/speculative/4-3: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/clock_settime/speculative/4-4: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/fork/1-1: execution: UNRESOLVED: Output:
+ [02:46:23]Test conformance/interfaces/fork/1-1.c unresolved: got 1073741869 (Operation not supported) on line 115 (Failed to open the semaphore)
+ [02:46:23]Test conformance/interfaces/fork/1-1.c unresolved: got 1073741869 (Operation not supported) on line 115 (Failed to open the semaphore)
+ conformance/interfaces/fork/11-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/fork/12-1: execution: FAILED: Output:
+ [09:57:13]SIGUSR1 and SIGUSR2 are pending, we can fork
+ [09:57:13]SIGUSR1 and SIGUSR2 are blocked in child
+ [09:57:13]Test conformance/interfaces/fork/12-1.c FAILED: The new process was created with SIGUSR1 pending
+ [09:57:13]SIGUSR1 and SIGUSR2 are pending, we can fork
+ [09:57:13]Test conformance/interfaces/fork/12-1.c FAILED: Child exited abnormally
+ conformance/interfaces/fork/13-1: execution: UNRESOLVED: Output:
+ [09:57:14]Test conformance/interfaces/fork/13-1.c unresolved: got 1073741902 (Function not implemented) on line 117 (Failed to set interval timer for ITIMER_VIRTUAL)
+ conformance/interfaces/fork/14-1: execution: UNRESOLVED: Output:
+ [09:57:14]Test conformance/interfaces/fork/14-1.c unresolved: got 1073741869 (Operation not supported) on line 100 (Failed to create the named semaphore)
+ conformance/interfaces/fork/17-1: execution: UNRESOLVED: Output:
+ [09:57:15]Test conformance/interfaces/fork/17-1.c unresolved: got 1073741902 (Function not implemented) on line 103 (Failed to get max priority value)
+ conformance/interfaces/fork/17-2: execution: UNRESOLVED: Output:
+ [09:57:15]Test conformance/interfaces/fork/17-2.c unresolved: got 1073741902 (Function not implemented) on line 103 (Failed to get max priority value)
+ conformance/interfaces/fork/18-1: execution: UNRESOLVED: Output:
+ [09:57:16]Test conformance/interfaces/fork/18-1.c unresolved: got 1073741902 (Function not implemented) on line 128 (Failed to create a timer)
+ conformance/interfaces/fork/19-1: execution: UNRESOLVED: Output:
+ [09:57:16]Test conformance/interfaces/fork/19-1.c unresolved: got 1073741902 (Function not implemented) on line 114 (Failed to create the message queue descriptor)
+ conformance/interfaces/fork/21-1: execution: UNRESOLVED: Output:
+ [09:57:17]Test conformance/interfaces/fork/21-1.c unresolved: got 1073741869 (Operation not supported) on line 128 (Failed to open the semaphore)
+ conformance/interfaces/fork/22-1: execution: UNTESTED: Output:
+ [09:57:17]File conformance/interfaces/fork/22-1.c cannot test: The testcase needs CPUTIME or THREAD_CPUTIME support
+ conformance/interfaces/fork/8-1: execution: FAILED: Output:
+ [09:57:20]Test conformance/interfaces/fork/8-1.c FAILED: The process is created with non-zero tms_cutime or tms_cstime
+ conformance/interfaces/fsync/7-1: execution: FAILED: Output:
+ fsync/7-1.c Test Fail: Expect EINVAL, get: (ipc/mig) bad request message ID
+ conformance/interfaces/lio_listio/12-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/lio_listio/13-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/lio_listio/18-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/lio_listio/5-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/lio_listio/6-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/lio_listio/8-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/lio_listio/9-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/mlock/10-1: execution: UNRESOLVED: Output:
+ You don't have permission to lock your address space.
+ Try to rerun this test as root.
+ conformance/interfaces/mlock/5-1: execution: UNRESOLVED: Output:
+ You don't have permission to lock your address space.
+ Try to rerun this test as root.
+ conformance/interfaces/mlock/8-1: execution: UNRESOLVED: Output:
+ You don't have permission to lock your address space.
+ Try to rerun this test as root.
+ conformance/interfaces/mlockall/13-1: execution: FAILED: Output:
+ Unexpected error: Function not implemented
+ conformance/interfaces/mlockall/13-2: execution: FAILED: Output:
+ Unexpected error: Function not implemented
+ conformance/interfaces/mlockall/3-6: execution: UNRESOLVED: Output:
+ An error occurs when calling mlockall(): Function not implemented
+ conformance/interfaces/mlockall/3-7: execution: UNRESOLVED: Output:
+ An error occurs when calling mlockall(): Function not implemented
+ conformance/interfaces/mlockall/8-1: execution: UNRESOLVED: Output:
+ Unexpected error: Function not implemented
+ conformance/interfaces/mlockall/speculative/15-1: execution: UNRESOLVED: Output:
+ Unexpected error: Function not implemented
+ conformance/interfaces/mmap/11-4: execution: FAILED: Output:
+ pa: 0x28000
+ pa_2: 0x29000
+ Test Fail: mmap/11-4.c Modification of the partial page at the end of an object is written out
+ conformance/interfaces/mmap/11-5: execution: FAILED: Output:
+ Test Fail: mmap/11-5.c Modification of the partial page at the end of an object is written out
+ conformance/interfaces/mmap/13-1: execution: FAILED: Output:
+ Time before write(): 1248767904
+ Time before mmap(): 1248767905
+ Time before munmap(): 1248767906
+ atime1: 1248767904, atime2: 1248767904, atime3: 1248767904
+ Test Fail mmap/13-1.c st_atime did not update properly
+ conformance/interfaces/mmap/14-1: execution: FAILED: Output:
+ Time before write(): 1248767907
+ Time before mmap(): 1248767908
+ Time before write reference: 1248767909
+ Time before msync(): 1248767910
+ ctime1: 1248767909, ctime2: 1248767909
+ mtime1: 1248767909, mtime2: 1248767909
+ Test Fail mmap/14-1.c st_ctime and st_mtime were not updated properly
+ conformance/interfaces/mmap/18-1: execution: UNRESOLVED: Output:
+ mmap/18-1.c Error at mlockall(): Function not implemented
+ conformance/interfaces/mmap/21-1: execution: FAILED: Output:
+ Test FAIL
+
+Kernel panic [[!tag open_issue_gnumach]] (at conformance/interfaces/mmap/24-1):
+
+ Assertion `(object == VM_OBJECT_NULL) || (object->ref_count > 0) || ((object->paging_in_progress != 0) && internal)' failed in file "../gnumach-1-branch-Xen-branch/vm/vm_object.c", line 2087
+ Kernel Breakpoint trap, eip 0x20020a77
+ Stopped at 0x20020a76: int $3
+ db> trace
+ 0x20020a76(2006abc1,20067354,2006708c,827,2e4e5514)
+ 0x20020ace(20067354,2006708c,827,2001c900,2e3b54f4)
+ 0x20035ef2(2e4e5514,1000,0,200194c0,2e3b54f4)
+ 0x2003929f(2e3b4d64,2fc6ff9c,400,0,1)
+ 0x200577ea(1,15ff998,400,0,1)
+ 0x20006838(1,15ff998,400,0,1)
+ >>>>> user space <<<<<
+
+ $ addr2line -i -f -e /boot/gnumach-xen 0x20020a76 0x20020ace 0x20035ef2 0x2003929f 0x200577ea 0x20006838
+ Debugger
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/debug.c:105
+ Assert
+ ??:0
+ vm_object_enter
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/vm/vm_object.c:2109
+ vm_map
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/vm/vm_user.c:326
+ syscall_vm_map
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/ipc_mig.c:657
+ mach_call_call
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/i386/i386/locore.S:1083
+
+Disable the panic-causing test (conformance/interfaces/mmap/24-1) and restart:
+
+ [...]
+ conformance/interfaces/mmap/24-2: execution: INTERRUPTED: Output:
+ conformance/interfaces/mmap/27-1: execution: UNTESTED: Output:
+ Test Untested: MAP_FIXED defined
+ conformance/interfaces/mmap/28-1: execution: FAILED: Output:
+ Test Fail: mmap/28-1.c Got no error at mmap()
+ conformance/interfaces/mmap/31-1: execution: FAILED: Output:
+ Test FAIL: expect EOVERFLOW but get other error: Cannot allocate memory
+ off: fffff000, len: fffff000
+ conformance/interfaces/mmap/6-4: execution: FAILED: Output:
+ Test Fail: Did not get EACCES as expected
+ conformance/interfaces/mmap/6-6: execution: FAILED: Output:
+ Test Fail: Did not get EACCES as expected
+ conformance/interfaces/mmap/7-1: execution: UNRESOLVED: Output:
+ mmap/7-1.c Error at msync(): Error in unknown error system: FFFFFFFF
+ conformance/interfaces/mmap/7-2: execution: UNRESOLVED: Output:
+ mmap/7-2.c Error at msync(): Error in unknown error system: FFFFFFFF
+ conformance/interfaces/mq_close/1-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_close/2-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_close 2-1: mq_open: Function not implemented
+ unexpected error: mq_close 2-1: read: EOF
+ conformance/interfaces/mq_close/3-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_close 3-1: mq_open: Function not implemented
+ conformance/interfaces/mq_close/3-2: execution: FAILED: Output:
+ errno != EBADF on invalid descriptor
+ Test FAILED
+ conformance/interfaces/mq_close/3-3: execution: FAILED: Output:
+ errno != EBADF on invalid descriptor
+ Test FAILED
+ conformance/interfaces/mq_close/4-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_close 4-1: mq_open: Function not implemented
+ conformance/interfaces/mq_close/5-1: execution: UNTESTED: Output:
+ Functionality of using mqdes after mq_close() and before
+ mq_open() will not be tested as POSIX says this is undefined.
+ conformance/interfaces/mq_getattr/2-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_getattr 2-1: mq_open(): Function not implemented
+ conformance/interfaces/mq_getattr/2-2: execution: UNRESOLVED: Output:
+ unexpected error: mq_getattr 2-2: mq_open(): Function not implemented
+ conformance/interfaces/mq_getattr/3-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_getattr 3-1: mq_open(): Function not implemented
+ conformance/interfaces/mq_getattr/4-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_getattr 4-1: mq_open(): Function not implemented
+ conformance/interfaces/mq_getattr/speculative/7-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_getattr 7-1: mq_open(): Function not implemented
+ conformance/interfaces/mq_notify/1-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_notify 1-1: mq_open: Function not implemented
+ conformance/interfaces/mq_notify/2-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_notify 2-1: mq_open: Function not implemented
+ conformance/interfaces/mq_notify/3-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_notify 3-1: mq_open: Function not implemented
+ conformance/interfaces/mq_notify/4-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_notify 4-1: mq_open: Function not implemented
+ conformance/interfaces/mq_notify/5-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_notify 5-1: mq_open: Function not implemented
+ conformance/interfaces/mq_notify/8-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_notify 8-1: mq_open(): Function not implemented
+ conformance/interfaces/mq_notify/9-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_notify 9-1: mq_open: Function not implemented
+ conformance/interfaces/mq_open/1-1: execution: FAILED: Output:
+ mq_open() did not return success: Function not implemented
+ Test FAILED
+ conformance/interfaces/mq_open/10-1: execution: UNTESTED: Output:
+ Will not test the user ID and group ID of a created
+ message queue as we would need multiple users and
+ groups on the system to test.
+ Will not test the file permissions as testing would
+ be implementation defined.
+ conformance/interfaces/mq_open/11-1: execution: FAILED: Output:
+ mq_open() did not return success: Function not implemented
+ Test FAILED
+ conformance/interfaces/mq_open/12-1: execution: FAILED: Output:
+ mq_open() did not return success: Function not implemented
+ Test FAILED
+ conformance/interfaces/mq_open/13-1: execution: FAILED: Output:
+ mq_open() did not return success: Function not implemented
+ Test FAILED
+ conformance/interfaces/mq_open/14-1: execution: UNTESTED: Output:
+ Will not test calling process privileges on name
+ as POSIX does not define when this error occurs.
+ conformance/interfaces/mq_open/15-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_open/16-1: execution: FAILED: Output:
+ Test FAILED - mq_open() never succeeded
+ conformance/interfaces/mq_open/17-1: execution: UNTESTED: Output:
+ Will not test setting O_EXCL without O_CREAT because
+ results are undefined.
+ conformance/interfaces/mq_open/18-1: execution: FAILED: Output:
+ mq_open() did not return success w/O_NONBLOCK set: Function not implemented
+ Test FAILED
+ conformance/interfaces/mq_open/19-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_open/2-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_open/20-1: execution: FAILED: Output:
+ mq_open() did not return success: Function not implemented
+ Test FAILED
+ conformance/interfaces/mq_open/22-1: execution: UNTESTED: Output:
+ Will not test returning EACCESS when privileges are denied
+ as POSIX does not define when this error occurs.
+ conformance/interfaces/mq_open/23-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_open/24-1: execution: UNTESTED: Output:
+ Will not test mq_open() being interrupted as it is
+ not possible to predictably interrupt an mq_open().
+ conformance/interfaces/mq_open/25-1: execution: UNTESTED: Output:
+ Will not test mq_open() failing with EINVAL if mq_open()
+ is not supported for the name parameter as
+ unsupported names are implementation defined.
+ conformance/interfaces/mq_open/25-2: execution: FAILED: Output:
+ errno != EINVAL for mq_maxmsg 0
+ errno != EINVAL for mq_maxmsg -1
+ errno != EINVAL for mq_maxmsg -2147483648
+ errno != EINVAL for mq_msgsize 0
+ errno != EINVAL for mq_msgsize -1
+ errno != EINVAL for mq_msgsize -2147483648
+ Test FAILED
+ conformance/interfaces/mq_open/27-2: execution: FAILED: Output:
+ errno != ENAMETOOLONG
+ Test FAILED
+ conformance/interfaces/mq_open/28-1: execution: UNTESTED: Output:
+ Will not test returning with ENFILE if the system has
+ too many message queues as this is beyond this
+ test's domain.
+ conformance/interfaces/mq_open/29-1: execution: FAILED: Output:
+ errno != ENOENT
+ Test FAILED
+ conformance/interfaces/mq_open/30-1: execution: UNTESTED: Output:
+ Will not test mq_open() failing with ENOSPC when there
+ is not enough space to create the message queue
+ as system space cannot be controlled from this test.
+ conformance/interfaces/mq_open/4-1: execution: UNTESTED: Output:
+ Will not test that {OPEN_MAX} file and message queues can
+ be opened as we cannot determine at run-time if a given
+ implementation is implemented with a file descriptor.
+ conformance/interfaces/mq_open/7-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_open/7-2: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_open/7-3: execution: FAILED: Output:
+ mq_open() for read-only queue did not return success: Function not implemented
+ Test FAILED
+ conformance/interfaces/mq_open/8-1: execution: UNRESOLVED: Output:
+ mq_open() for write-only queue did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_open/8-2: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_open/9-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success on read-write queue: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_open/9-2: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_open/speculative/26-1: execution: FAILED: Output:
+ mq_open() failed before expected
+ errno != EMFILE on > _POSIX_OPEN_MAX or _POSIX_MQ_OPEN_MAX queues
+ Test FAILED
+ conformance/interfaces/mq_receive/1-1: execution: FAILED: Output:
+ unexpected error: mq_receive 1-1: mq_open: Function not implemented
+ unexpected error: mq_receive 1-1: mq_send: Function not implemented
+ unexpected error: mq_receive 1-1: mq_send: Function not implemented
+ unexpected error: mq_receive 1-1: mq_receive: Function not implemented
+ unexpected error: mq_receive 1-1: mq_receive: Function not implemented
+ unexpected error: mq_receive 1-1: mq_close: Function not implemented
+ unexpected error: mq_receive 1-1: mq_unlink: Function not implemented
+ FAIL: mq_receive didn't receive the highest priority message
+ FAIL: receive priority 134520252 != send priority 2
+ FAIL: mq_receive didn't receive the correct message
+ FAIL: receive priority 134520252 != send priority 1
+ Test FAILED
+ conformance/interfaces/mq_receive/10-1: execution: FAILED: Output:
+ unexpected error: mq_receive 10-1: mq_open: Function not implemented
+ unexpected error: mq_receive 10-1: mq_close: Function not implemented
+ unexpected error: mq_receive 10-1: mq_unlink: Function not implemented
+ errno != EAGAIN
+ Test FAILED
+ conformance/interfaces/mq_receive/11-1: execution: FAILED: Output:
+ unexpected error: mq_receive 11-1: mq_open(): Function not implemented
+ unexpected error: mq_receive 11-1: mq_close(): Function not implemented
+ unexpected error: mq_receive 11-1: mq_unlink(): Function not implemented
+ errno != EBADF
+ Test FAILED
+ conformance/interfaces/mq_receive/11-2: execution: FAILED: Output:
+ unexpected error: mq_receive 11-2: mq_open(): Function not implemented
+ unexpected error: mq_receive 11-2: mq_close: Function not implemented
+ unexpected error: mq_receive 11-2: mq_unlink(): Function not implemented
+ errno != EBADF
+ Test FAILED
+ conformance/interfaces/mq_receive/12-1: execution: FAILED: Output:
+ unexpected error: mq_receive 12-1: mq_open: Function not implemented
+ unexpected error: mq_receive 12-1: mq_send: Function not implemented
+ unexpected error: mq_receive 12-1: mq_close: Function not implemented
+ unexpected error: mq_receive 12-1: mq_unlink: Function not implemented
+ errno != EMSGSIZE
+ Test FAILED
+ conformance/interfaces/mq_receive/13-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_receive 13-1: mq_open: Function not implemented
+ mq_close() did not return success: Function not implemented
+ mq_unlink() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_receive/2-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_receive 2-1: mq_open: Function not implemented
+ unexpected error: mq_receive 2-1: mq_send: Function not implemented
+ unexpected error: mq_receive 2-1: mq_close: Function not implemented
+ unexpected error: mq_receive 2-1: mq_unlink: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_receive/5-1: execution: FAILED: Output:
+ unexpected error: mq_receive 5-1: mq_open: Function not implemented
+ unexpected error: mq_receive 5-1: mq_send: Function not implemented
+ unexpected error: mq_receive 5-1: mq_receive: Function not implemented
+ unexpected error: mq_receive 5-1: mq_close: Function not implemented
+ unexpected error: mq_receive 5-1: mq_unlink: Function not implemented
+ Test FAILED
+ conformance/interfaces/mq_receive/7-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_receive 7-1: mq_open: Function not implemented
+ unexpected error: mq_receive 7-1: mq_close: Function not implemented
+ unexpected error: mq_receive 7-1: mq_unlink: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_receive/8-1: execution: FAILED: Output:
+ unexpected error: mq_receive 8-1: mq_open: Function not implemented
+ unexpected error: mq_receive 8-1: mq_send: Function not implemented
+ unexpected error: mq_receive 8-1: mq_send: Function not implemented
+ unexpected error: mq_receive 8-1: mq_close: Function not implemented
+ unexpected error: mq_receive 8-1: mq_unlink: Function not implemented
+ FAIL: mq_receive didn't return the selected message size correctly
+ FAIL: mq_receive didn't return the selected message size correctly
+ Test FAILED
+ conformance/interfaces/mq_send/1-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_send/10-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_send/11-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_send/11-2: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_send/12-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_send/14-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_send/2-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_send/3-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_send/3-2: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_send/5-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_send/5-2: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_send/6-1: execution: UNTESTED: Output:
+ Priority Scheduling needed to make a reliable test case
+ for this instance. Will not be tested.
+ conformance/interfaces/mq_send/8-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_send/9-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_setattr/1-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_setattr/1-2: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_setattr/2-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_setattr/5-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_setattr 5-1: mq_open(): Function not implemented
+ conformance/interfaces/mq_timedreceive/1-1: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 1-1: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 1-1: mq_send: Function not implemented
+ unexpected error: mq_timedreceive 1-1: mq_send: Function not implemented
+ unexpected error: mq_timedreceive 1-1: mq_timedreceive: Function not implemented
+ unexpected error: mq_timedreceive 1-1: mq_timedreceive: Function not implemented
+ unexpected error: mq_timedreceive 1-1: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 1-1: mq_unlink: Function not implemented
+ FAIL: mq_timedreceive didn't receive the highest priority message
+ FAIL: receive priority 134520424 != send priority 2
+ FAIL: mq_timedreceive didn't receive the correct message
+ FAIL: receive priority 134520424 != send priority 1
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/10-1: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 10-1: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 10-1: mq_send: Function not implemented
+ FAIL: mq_receive fails unexpectly
+ : Function not implemented
+ unexpected error: mq_timedreceive 10-1: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 10-1: mq_unlink: Function not implemented
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/10-2: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 10-1: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 10-1: mq_send: Function not implemented
+ Unexpected error at mq_timedreceive: Function not implemented
+ unexpected error: mq_timedreceive 10-1: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 10-1: mq_unlink: Function not implemented
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/11-1: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 11-1: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 11-1: mq_send: Function not implemented
+ unexpected error: mq_timedreceive 11-1: mq_send: Function not implemented
+ unexpected error: mq_timedreceive 11-1: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 11-1: mq_unlink: Function not implemented
+ FAIL: mq_timedreceive didn't return the selected message size correctly
+ FAIL: mq_timedreceive didn't return the selected message size correctly
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/13-1: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 13-1: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 13-1: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 13-1: mq_unlink: Function not implemented
+ errno != EAGAIN
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/14-1: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 14-1: mq_open(): Function not implemented
+ unexpected error: mq_timedreceive 14-1: mq_close(): Function not implemented
+ unexpected error: mq_timedreceive 14-1: mq_unlink(): Function not implemented
+ errno != EBADF
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/15-1: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 15-1: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 15-1: mq_send: Function not implemented
+ unexpected error: mq_timedreceive 15-1: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 15-1: mq_unlink: Function not implemented
+ errno != EMSGSIZE
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/17-1: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 17-1: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 17-1: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 17-1: mq_unlink: Function not implemented
+ errno != EINVAL
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/17-2: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 17-2: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 17-2: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 17-2: mq_unlink: Function not implemented
+ errno != EINVAL
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/17-3: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 17-3: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 17-3: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 17-3: mq_unlink: Function not implemented
+ errno != EINVAL
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/18-1: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 18-1: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 18-1: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 18-1: mq_unlink: Function not implemented
+ errno != ETIMEDOUT
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/18-2: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 18-2: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 18-2: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 18-2: mq_unlink: Function not implemented
+ errno != ETIMEDOUT
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/2-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_timedreceive 2-1: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 2-1: mq_send: Function not implemented
+ unexpected error: mq_timedreceive 2-1: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 2-1: mq_unlink: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_timedreceive/5-1: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 5-1: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 5-1: mq_send: Function not implemented
+ unexpected error: mq_timedreceive 5-1: mq_timedreceive: Function not implemented
+ unexpected error: mq_timedreceive 5-1: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 5-1: mq_unlink: Function not implemented
+ mq_timedreceive didn't block on waiting
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/5-2: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 5-2: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 5-2: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 5-2: mq_unlink: Function not implemented
+ FAIL: mq_timedreceive didn't block until timout expires
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/5-3: execution: UNRESOLVED: Output:
+ unexpected error: mq_timedreceive 5-3: mq_open: Function not implemented
+ mq_close() did not return success: Function not implemented
+ mq_unlink() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_timedreceive/7-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_timedreceive 7-1: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 7-1: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 7-1: mq_unlink: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_timedreceive/8-1: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 8-1: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 8-1: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 8-1: mq_unlink: Function not implemented
+ Using CLOCK_REALTIME
+ FAIL: mq_timedreceive didn't block until timout expires
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/speculative/10-2: execution: UNRESOLVED: Output:
+ unexpected error: mq_timedreceive 10-2: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 10-2: mq_send: Function not implemented
+ unexpected error: mq_timedreceive 10-2: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 10-2: mq_unlink: Function not implemented
+ mq_timedreceive() did fail on invalid abs_time
+ Test UNRESOLVED
+ conformance/interfaces/mq_timedsend/1-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/10-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/11-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/11-2: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/12-1: execution: INTERRUPTED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/14-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/15-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_timedsend/16-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/17-1: execution: UNTESTED: Output:
+ Will not test timeout resolution.
+ conformance/interfaces/mq_timedsend/18-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_timedsend/19-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_timedsend/2-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/20-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_timedsend/3-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/3-2: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/5-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/5-2: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/5-3: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/6-1: execution: UNTESTED: Output:
+ Priority Scheduling needed to make a reliable test case
+ for this instance. Will not be tested.
+ conformance/interfaces/mq_timedsend/7-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/8-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/9-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/speculative/18-2: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_unlink/1-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_unlink 1-1: mq_open: Function not implemented
+ conformance/interfaces/mq_unlink/2-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_unlink 2-1: mq_open: Function not implemented
+ unexpected error: mq_unlink 2-1: read: EOF
+ conformance/interfaces/mq_unlink/2-2: execution: UNRESOLVED: Output:
+ unexpected error: mq_unlink 2-2: mq_open: Function not implemented
+ unexpected error: mq_unlink 2-2: read: EOF
+ conformance/interfaces/mq_unlink/2-3: execution: UNTESTED: Output:
+ Difficult to detect whether mq_unlink will block until all the reference have been closed
+ for this instance. Will not be tested.
+ conformance/interfaces/mq_unlink/7-1: execution: FAILED: Output:
+ Test FAILED
+ conformance/interfaces/mq_unlink/speculative/7-2: execution: FAILED: Output:
+ Test FAILED, error is Function not implemented
+ conformance/interfaces/munlock/10-1: execution: UNRESOLVED: Output:
+ Unexpected error: Operation not permitted
+ conformance/interfaces/munlock/11-1: execution: UNRESOLVED: Output:
+ Unexpected error: Operation not permitted
+ conformance/interfaces/munlock/7-1: execution: UNRESOLVED: Output:
+ You don't have permission to lock your address space.
+ Try to rerun this test as root.
+ conformance/interfaces/munmap/3-1: execution: FAILED: Output:
+ Test FAILED: munmap/3-1.c munmap returns: No such file or directory
+ conformance/interfaces/munmap/4-1: execution: UNRESOLVED: Output:
+ munmap/4-1.c Error at msync(): Error in unknown error system: FFFFFFFF
+ conformance/interfaces/munmap/8-1: execution: FAILED: Output:
+ Test FAILED: Expect EINVAL but get: (os/kern) successful
+ conformance/interfaces/munmap/9-1: execution: FAILED: Output:
+ Test Fail: Expect EINVAL while get No such file or directory
+ conformance/interfaces/nanosleep/10000-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/nanosleep/5-1: execution: FAILED: Output:
+ nanosleep() did not return -1 on failure
+ conformance/interfaces/nanosleep/5-2: execution: FAILED: Output:
+ In handler
+ Child did not exit normally.
+ Test FAILED
+ conformance/interfaces/nanosleep/6-1: execution: UNRESOLVED: Output:
+ sleep -1
+ nanosleep() did not return -1 on failure
+ conformance/interfaces/nanosleep/7-1: execution: FAILED: Output:
+ In handler
+ nanosleep did not return -1
+ Child did not exit normally.
+ Test FAILED
+ conformance/interfaces/nanosleep/7-2: execution: FAILED: Output:
+ In handler
+ nanosleep() was not interrupted
+ Child did not exit normally.
+ Test FAILED
+ conformance/interfaces/pthread_atfork/1-1: execution: UNRESOLVED: Output:
+ Error in pthread_atfork
+ conformance/interfaces/pthread_atfork/1-2: execution: UNRESOLVED: Output:
+ [11:58:02]Test conformance/interfaces/pthread_atfork/1-2.c unresolved: got 1073741902 (Function not implemented) on line 216 (Failed to register the atfork handlers)
+ conformance/interfaces/pthread_atfork/2-1: execution: FAILED: Output:
+ Test FAILED: Expected return value success, instead received 1073741902
+ conformance/interfaces/pthread_atfork/2-2: execution: UNRESOLVED: Output:
+ [11:58:03]Test conformance/interfaces/pthread_atfork/2-2.c unresolved: got 1073741902 (Function not implemented) on line 244 (Failed to register the atfork handlers(N,N,N))
+ conformance/interfaces/pthread_atfork/3-2: execution: UNRESOLVED: Output:
+ [11:58:03]Test conformance/interfaces/pthread_atfork/3-2.c unresolved: got 1073741902 (Function not implemented) on line 213 (Failed to register the atfork handlers)
+ conformance/interfaces/pthread_atfork/3-3: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_atfork/4-1: execution: UNRESOLVED: Output:
+ [12:10:53]Test conformance/interfaces/pthread_atfork/4-1.c unresolved: got 1073741902 (Function not implemented) on line 244 (Failed to register the atfork handlers)
+ conformance/interfaces/pthread_attr_getschedparam/1-1: execution: UNRESOLVED: Output:
+ unexpected error: pthread_attr_getschedparam 1-1: pthread_attr_setschedpolicy
+ conformance/interfaces/pthread_attr_getschedpolicy/2-1: execution: UNRESOLVED: Output:
+ unexpected error: pthread_attr_getschedpolicy 1-1: pthread_attr_setschedpolicy
+ conformance/interfaces/pthread_attr_setinheritsched/2-1: execution: UNRESOLVED: Output:
+ unexpected error: pthread_attr_setinheritsched 2-1: pthread_attr_setschedpolicy: (os/kern) successful
+ conformance/interfaces/pthread_attr_setinheritsched/2-2: execution: UNRESOLVED: Output:
+ unexpected error: pthread_attr_setinheritsched 2-2: pthread_attr_setschedpolicyconformance/interfaces/pthread_attr_setinheritsched/2-3: execution: UNRESOLVED: Output:
+ unexpected error: scheduler 4-1: pthread_setschedparam
+ conformance/interfaces/pthread_attr_setinheritsched/2-4: execution: UNRESOLVED: Output:
+ unexpected error: scheduler 4-2: pthread_setschedparam
+ conformance/interfaces/pthread_attr_setschedparam/1-1: execution: FAILED: Output:
+ unexpected error: pthread_attr_setschedparam 1-1: pthread_attr_setschedpolicy
+ conformance/interfaces/pthread_attr_setschedparam/1-2: execution: FAILED: Output:
+ unexpected error: pthread_attr_setschedparam 1-2: pthread_attr_setschedpolicy
+ conformance/interfaces/pthread_attr_setschedparam/1-3: execution: UNRESOLVED: Output:
+ unexpected error: scheduler 3-1: pthread_attr_setschedpolicy
+ conformance/interfaces/pthread_attr_setschedparam/1-4: execution: UNRESOLVED: Output:
+ unexpected error: scheduler 3-2: pthread_attr_setschedpolicy
+ conformance/interfaces/pthread_attr_setschedparam/speculative/3-1: execution: FAILED: Output:
+ unexpected error: pthread_attr_setschedparam 3-1: pthread_attr_setschedpolicy
+ conformance/interfaces/pthread_attr_setschedparam/speculative/3-2: execution: FAILED: Output:
+ unexpected error: pthread_attr_setschedpaarm 3-2: pthread_attr_setschedpolicyconformance/interfaces/pthread_attr_setschedpolicy/1-1: execution: FAILED: Output:
+ Error on pthread_attr_setschedpolicy() rc=1073741942
+ conformance/interfaces/pthread_attr_setschedpolicy/speculative/5-1: execution: UNRESOLVED: Output:
+ unexpected error: pthread_attr_setschedpolicy 5-1: pthread_attr_setinheritsched
+ conformance/interfaces/pthread_attr_setscope/5-1: execution: UNTESTED: Output:
+ Untested for now, cannot find a unsupported inheritsched value
+ conformance/interfaces/pthread_barrierattr_getpshared/2-1: execution: UNRESOLVED: Output:
+ Error at pthread_barrierattr_setpshared()
+ conformance/interfaces/pthread_barrierattr_setpshared/1-1: execution: FAILED: Output:
+ Test FAILED: Error at pthread_barrierattr_setpshared()
+ conformance/interfaces/pthread_cancel/3-1: execution: UNRESOLVED: Output:
+ unexpected error: pthread_cancel 3-1: pthread_setschedparam
+ conformance/interfaces/pthread_cancel/5-2: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_cond_broadcast/1-2: execution: UNRESOLVED: Output:
+ [12:42:33]Test starting
+ [12:42:33]System abilities:
+ [12:42:33] TPS : -1
+ [12:42:33] CS : 200112
+ [12:42:33] MON : -1
+ [12:42:33] MF : 200112
+ [12:42:33]Process-shared attributes won't be tested
+ [12:42:33]Alternative clock won't be tested
+ [12:42:33]Test conformance/interfaces/pthread_cond_broadcast/1-2.c unresolved: got 1073741846 (Invalid argument) on line 393 ([parent] Failed to set thread stack size)
+ conformance/interfaces/pthread_cond_broadcast/2-3: execution: UNRESOLVED: Output:
+ [12:42:36]Test starting
+ [12:42:36]System abilities:
+ [12:42:36] TPS : -1
+ [12:42:36] CS : 200112
+ [12:42:36] MON : -1
+ [12:42:36] MF : 200112
+ [12:42:36]Process-shared attributes won't be tested
+ [12:42:36]Alternative clock won't be tested
+ [12:42:36]Test conformance/interfaces/pthread_cond_broadcast/2-3.c unresolved: got 1073741846 (Invalid argument) on line 384 ([parent] Failed to set thread stack size)
+ conformance/interfaces/pthread_cond_broadcast/4-2: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_cond_destroy/2-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_cond_init/1-2: execution: UNTESTED: Output:
+ File conformance/interfaces/pthread_cond_init/1-2.c cannot test: This test requires unsupported features
+ conformance/interfaces/pthread_cond_init/1-3: execution: UNTESTED: Output:
+ File conformance/interfaces/pthread_cond_init/1-3.c cannot test: This test requires unsupported features
+ conformance/interfaces/pthread_cond_init/2-2: execution: UNTESTED: Output:
+ File conformance/interfaces/pthread_cond_init/2-2.c cannot test: This test requires unsupported features
+ conformance/interfaces/pthread_cond_init/4-1: execution: UNRESOLVED: Output:
+ Test conformance/interfaces/pthread_cond_init/4-1.c unresolved: got 1073741942 (Not supported) on line 145 (Cond attribute PSHARED failed)
+ conformance/interfaces/pthread_cond_init/4-2: execution: INTERRUPTED: Output:
+ Test conformance/interfaces/pthread_cond_init/4-2.c unresolved: got 1073741942 (Not supported) on line 171 (Cond attribute PSHARED failed)
+ conformance/interfaces/pthread_cond_signal/1-2: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_cond_signal/4-2: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_cond_timedwait/4-3: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_cond_wait/4-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_condattr_getpshared/1-2: execution: UNRESOLVED: Output:
+ Error in pthread_condattr_setpshared(), error: 1073741942
+ conformance/interfaces/pthread_condattr_setclock/1-2: execution: UNSUPPORTED: Output:
+ UNSUPPORTED: CLOCK_MONOTONIC is unsupported
+ conformance/interfaces/pthread_condattr_setclock/1-3: execution: UNSUPPORTED: Output:
+ _POSIX_CPUTIME unsupported
+ conformance/interfaces/pthread_condattr_setpshared/1-2: execution: FAILED: Output:
+ Test FAILED: Could not set pshared to PTHREAD_PROCESS_SHARED, error: 1073741942
+ conformance/interfaces/pthread_create/1-4: execution: UNTESTED: Output:
+ [13:44:56]System abilities:
+ [13:44:56] TSA: -1
+ [13:44:56] TSS: -1
+ [13:44:56] TPS: -1
+ [13:44:56] pagesize: 4096
+ [13:44:56] min stack size: -1
+ [13:44:56]File conformance/interfaces/pthread_create/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_create/1-5: execution: UNTESTED: Output:
+ [13:44:56]System abilities:
+ [13:44:56] TSA: -1
+ [13:44:56] TSS: -1
+ [13:44:56] TPS: -1
+ [13:44:56] pagesize: 4096
+ [13:44:56] min stack size: -1
+ [13:44:56]File conformance/interfaces/pthread_create/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_create/1-6: execution: UNTESTED: Output:
+ [13:44:57]System abilities:
+ [13:44:57] TSA: -1
+ [13:44:57] TSS: -1
+ [13:44:57] TPS: -1
+ [13:44:57] pagesize: 4096
+ [13:44:57] min stack size: -1
+ [13:44:57]File conformance/interfaces/pthread_create/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_create/11-1: execution: UNSUPPORTED: Output:
+ _POSIX_THREAD_CPUTIME not supported
+ conformance/interfaces/pthread_create/14-1: execution: UNTESTED: Output:
+ [13:45:08]System abilities:
+ [13:45:08] TSA: -1
+ [13:45:08] TSS: -1
+ [13:45:08] TPS: -1
+ [13:45:08] pagesize: 4096
+ [13:45:08] min stack size: -1
+ [13:45:08]File conformance/interfaces/pthread_create/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_create/15-1: execution: UNTESTED: Output:
+ [13:45:09]System abilities:
+ [13:45:09] TSA: -1
+ [13:45:09] TSS: -1
+ [13:45:09] TPS: -1
+ [13:45:09] pagesize: 4096
+ [13:45:09] min stack size: -1
+ [13:45:09]File conformance/interfaces/pthread_create/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_create/3-2: execution: UNTESTED: Output:
+ [13:45:11]Growing down stack started upon 0x19fffa0 and we are currently down to 0x19fff60
+ [13:45:11]Test starting
+ Stack tests will be executed.
+ Sched tests won't be executed.
+ [13:45:11]System abilities:
+ [13:45:11] TSA: -1
+ [13:45:11] TSS: -1
+ [13:45:11] TPS: -1
+ [13:45:11] pagesize: 4096
+ [13:45:11] min stack size: -1
+ [13:45:11]File conformance/interfaces/pthread_create/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_create/8-2: execution: UNTESTED: Output:
+ [13:45:13]System abilities:
+ [13:45:13] TSA: -1
+ [13:45:13] TSS: -1
+ [13:45:13] TPS: -1
+ [13:45:13] pagesize: 4096
+ [13:45:13] min stack size: -1
+ [13:45:13]File conformance/interfaces/pthread_create/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_detach/1-2: execution: UNTESTED: Output:
+ [13:45:13]System abilities:
+ [13:45:13] TSA: -1
+ [13:45:13] TSS: -1
+ [13:45:13] TPS: -1
+ [13:45:13] pagesize: 4096
+ [13:45:13] min stack size: -1
+ [13:45:13]File conformance/interfaces/pthread_detach/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_detach/2-2: execution: UNTESTED: Output:
+ [13:45:14]System abilities:
+ [13:45:14] TSA: -1
+ [13:45:14] TSS: -1
+ [13:45:14] TPS: -1
+ [13:45:14] pagesize: 4096
+ [13:45:14] min stack size: -1
+ [13:45:14]File conformance/interfaces/pthread_detach/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_detach/4-3: execution: UNTESTED: Output:
+ [13:45:15]System abilities:
+ [13:45:16] TSA: -1
+ [13:45:16] TSS: -1
+ [13:45:16] TPS: -1
+ [13:45:16] pagesize: 4096
+ [13:45:16] min stack size: -1
+ [13:45:16]File conformance/interfaces/pthread_detach/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_equal/2-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_exit/1-2: execution: UNTESTED: Output:
+ [15:01:43]System abilities:
+ [15:01:43] TSA: -1
+ [15:01:43] TSS: -1
+ [15:01:43] TPS: -1
+ [15:01:43] pagesize: 4096
+ [15:01:43] min stack size: -1
+ [15:01:43]File conformance/interfaces/pthread_exit/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_exit/2-2: execution: UNTESTED: Output:
+ [15:01:44]System abilities:
+ [15:01:44] TSA: -1
+ [15:01:44] TSS: -1
+ [15:01:44] TPS: -1
+ [15:01:44] pagesize: 4096
+ [15:01:44] min stack size: -1
+ [15:01:44]File conformance/interfaces/pthread_exit/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_exit/3-2: execution: UNTESTED: Output:
+ [15:01:45]System abilities:
+ [15:01:45] TSA: -1
+ [15:01:45] TSS: -1
+ [15:01:45] TPS: -1
+ [15:01:45] pagesize: 4096
+ [15:01:45] min stack size: -1
+ [15:01:45]File conformance/interfaces/pthread_exit/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_exit/4-1: execution: UNTESTED: Output:
+ [15:01:45]System abilities:
+ [15:01:45] TSA: -1
+ [15:01:45] TSS: -1
+ [15:01:45] TPS: -1
+ [15:01:45] pagesize: 4096
+ [15:01:45] min stack size: -1
+ [15:01:45]File conformance/interfaces/pthread_exit/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_exit/5-1: execution: UNTESTED: Output:
+ [15:01:46]System abilities:
+ [15:01:46] TSA: -1
+ [15:01:46] TSS: -1
+ [15:01:46] TPS: -1
+ [15:01:46] pagesize: 4096
+ [15:01:46] min stack size: -1
+ [15:01:46]File conformance/interfaces/pthread_exit/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_exit/6-1: execution: UNTESTED: Output:
+ [15:01:46]System abilities:
+ [15:01:46] TSA: -1
+ [15:01:46] TSS: -1
+ [15:01:46] TPS: -1
+ [15:01:46] pagesize: 4096
+ [15:01:46] min stack size: -1
+ [15:01:46]File conformance/interfaces/pthread_exit/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_exit/6-2: execution: UNTESTED: Output:
+ [15:01:46]System abilities:
+ [15:01:46] TSA: -1
+ [15:01:46] TSS: -1
+ [15:01:46] TPS: -1
+ [15:01:46] pagesize: 4096
+ [15:01:46] min stack size: -1
+ [15:01:46]File conformance/interfaces/pthread_exit/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_getschedparam/1-1: execution: FAILED: Output:
+ Error at pthread_getschedparam: rc=1073741902
+ conformance/interfaces/pthread_getschedparam/1-2: execution: UNRESOLVED: Output:
+ Error at pthread_setschedparam: rc=1073741902
+ conformance/interfaces/pthread_getschedparam/1-3: execution: UNRESOLVED: Output:
+ [15:01:49]Test conformance/interfaces/pthread_getschedparam/1-3.c unresolved: got 1073741902 (Function not implemented) on line 223 (Failed to get min priority)
+ conformance/interfaces/pthread_getschedparam/4-1: execution: UNRESOLVED: Output:
+ [15:01:49]Test conformance/interfaces/pthread_getschedparam/4-1.c unresolved: got 1073741902 (Function not implemented) on line 200 (Unexpected error returned)
+ conformance/interfaces/pthread_join/1-2: execution: UNTESTED: Output:
+ [15:01:54]System abilities:
+ [15:01:54] TSA: -1
+ [15:01:54] TSS: -1
+ [15:01:54] TPS: -1
+ [15:01:54] pagesize: 4096
+ [15:01:54] min stack size: -1
+ [15:01:54]File conformance/interfaces/pthread_join/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_join/3-1: execution: UNRESOLVED: Output:
+ Error in pthread_testcancel(). Cancel request timed out.
+ : (os/kern) successful
+ conformance/interfaces/pthread_join/4-1: execution: UNTESTED: Output:
+ [15:02:06]System abilities:
+ [15:02:06] TSA: -1
+ [15:02:06] TSS: -1
+ [15:02:06] TPS: -1
+ [15:02:06] pagesize: 4096
+ [15:02:06] min stack size: -1
+ [15:02:06]File conformance/interfaces/pthread_join/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_join/6-3: execution: UNTESTED: Output:
+ [15:02:07]System abilities:
+ [15:02:07] TSA: -1
+ [15:02:07] TSS: -1
+ [15:02:07] TPS: -1
+ [15:02:07] pagesize: 4096
+ [15:02:07] min stack size: -1
+ [15:02:07]File conformance/interfaces/pthread_join/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_key_create/2-1: execution: INTERRUPTED: Output:
+ 2-1.test: /var/tmp/hurd-20090404/./libpthread/sysdeps/hurd/pt-getspecific.c:30: pthread_getspecific: Assertion `key < __pthread_key_count' failed.
+ conformance/interfaces/pthread_kill/2-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_kill/3-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_kill/7-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_kill/8-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_mutex_getprioceiling/1-1: execution: FAILED: Output:
+ Test FAILED: Error obtaining the priority ceiling
+
+Another system crash, due to conformance/interfaces/pthread_mutex_init/5-1:
+
+ (default pager): dropping data_request because of previous paging errors
+ (default pager): dropping data_request because of previous paging errors
+ (default pager): dropping data_request because of previous paging errors
+ (default pager): dropping data_request because of previous paging errors
+
+Disable the panic-causing test (conformance/interfaces/pthread_mutex_init/5-1)
+and restart:
+
+ conformance/interfaces/pthread_mutex_init/speculative/5-2: execution: UNTESTED: Output:
+ Implementation is:
+ GNU
+ 0.3
+ GNU-Mach 1.3.99/Hurd-0.3
+ This implementation is not tested yet
+ conformance/interfaces/pthread_mutex_timedlock/5-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_mutex_timedlock/5-2: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_mutex_trylock/4-3: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_mutexattr_getprioceiling/1-1: execution: UNRESOLVED: Output:
+ Error obtaining the attribute process-shared
+ conformance/interfaces/pthread_mutexattr_getprioceiling/1-2: execution: UNRESOLVED: Output:
+ Error setting prioceiling to -1
+ conformance/interfaces/pthread_mutexattr_getprioceiling/3-1: execution: FAILED: Output:
+ Test FAILED: Invalid return code 1073741902. Expected EINVAL or 0.
+ conformance/interfaces/pthread_mutexattr_getprotocol/1-2: execution: UNRESOLVED: Output:
+ Error setting protocol to 1
+ conformance/interfaces/pthread_mutexattr_getpshared/1-2: execution: UNRESOLVED: Output:
+ Error in pthread_mutexattr_setpshared(), error: 1073741942
+ conformance/interfaces/pthread_mutexattr_gettype/speculative/3-1: execution: FAILED: Output:
+ Test FAILED: Incorrect return code. Expected EINVAL, but got: 0
+ conformance/interfaces/pthread_mutexattr_setprioceiling/1-1: execution: FAILED: Output:
+ Test FAILED: Error setting prioceiling to -1
+ conformance/interfaces/pthread_mutexattr_setprioceiling/3-1: execution: FAILED: Output:
+ Test FAILED: Invalid return code 1073741902. Expected EINVAL or 0.
+ conformance/interfaces/pthread_mutexattr_setprioceiling/3-2: execution: FAILED: Output:
+ Test FAILED: Invalid return code 1073741902. Expected EINVAL or 0.
+ conformance/interfaces/pthread_mutexattr_setprotocol/1-1: execution: UNRESOLVED: Output:
+ Error setting protocol to 1
+ conformance/interfaces/pthread_mutexattr_setpshared/1-1: execution: FAILED: Output:
+ Test FAILED: Cannot set pshared attribute to PTHREAD_PROCESS_SHARED. Error code: 1073741942
+ conformance/interfaces/pthread_mutexattr_setpshared/2-2: execution: FAILED: Output:
+ Test FAILED: Expected return code 0, got: 1073741942
+ conformance/interfaces/pthread_rwlock_rdlock/2-1: execution: FAILED: Output:
+ main: has priority: 1
+ main: attempt read lock
+ main: acquired read lock
+ main: create wr_thread, with priority: 0
+ wr_thread: attempt write lock
+ main: create rd_thread, with priority: -1
+ rd_thread: attempt read lock
+ rd_thread: acquired read lock
+ rd_thread: unlock read lock
+ Test FAILED: rd_thread did not block on read lock, when a reader owns the lock, and a higher priority writer is waiting for the lock
+ conformance/interfaces/pthread_rwlock_rdlock/2-2: execution: FAILED: Output:
+ main: attempt read lock
+ main: acquired read lock
+ main: create wr_thread, with priority: 0
+ wr_thread: attempt write lock
+ main: create rd_thread, with priority: 0
+ rd_thread: attempt read lock
+ rd_thread: acquired read lock
+ rd_thread: unlock read lock
+ Test FAILED: rd_thread did not block on read lock, when a reader owns the lock, and an equal priority writer is waiting for the lock
+ conformance/interfaces/pthread_rwlock_unlock/3-1: execution: FAILED: Output:
+ main: write lock
+ main: create writer1, with priority: 1
+ writer1: attempt write lock
+ main: create reader, with priority: 1
+ reader: attempt read lock
+ main: create writer2, with priority: -1
+ writer2: attempt write lock
+ main: release write lock
+ writer2: acquired writer lock
+ Test fail: writer did not get write lock, when main release the lock
+ conformance/interfaces/pthread_rwlock_unlock/4-1: execution: INTERRUPTED: Output:
+ 4-1.test: /var/tmp/hurd-20090404/./libpthread/sysdeps/generic/pt-rwlock-unlock.c:34: pthread_rwlock_unlock: Assertion `__pthread_spin_trylock (&rwlock->__held) == ((0x10 << 26) | ((16) & 0x3fff))' failed.
+ conformance/interfaces/pthread_rwlock_unlock/4-2: execution: INTERRUPTED: Output:
+ 4-2.test: /var/tmp/hurd-20090404/./libpthread/sysdeps/generic/pt-rwlock-unlock.c:34: pthread_rwlock_unlock: Assertion `__pthread_spin_trylock (&rwlock->__held) == ((0x10 << 26) | ((16) & 0x3fff))' failed.
+ main: attempt read lock
+ main: acquired read lock
+ main: create un_thread
+ un_thread: unlock read lock
+ conformance/interfaces/pthread_rwlock_wrlock/3-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_rwlockattr_getpshared/2-1: execution: UNRESOLVED: Output:
+ Error at pthread_rwlockattr_setpshared()
+ conformance/interfaces/pthread_rwlockattr_setpshared/1-1: execution: FAILED: Output:
+ Test FAILED: Error at pthread_rwlockattr_setpshared(), return error: 1073741942
+ conformance/interfaces/pthread_setschedparam/1-1: execution: FAILED: Output:
+ Error at pthread_setschedparam: rc=1073741902
+ conformance/interfaces/pthread_setschedparam/1-2: execution: UNTESTED: Output:
+ [08:51:19]File conformance/interfaces/pthread_setschedparam/1-2.c cannot test: Failed to get min SCHED_RR range
+ conformance/interfaces/pthread_setschedparam/4-1: execution: UNRESOLVED: Output:
+ [08:51:20]Test conformance/interfaces/pthread_setschedparam/4-1.c unresolved: got 1073741902 (Function not implemented) on line 132 (Failed to set thread policy -- need to be root?)
+ conformance/interfaces/pthread_setschedparam/5-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_setschedprio/1-1: execution: UNRESOLVED: Output:
+ Error at pthread_setschedparam: rc=1073741902
+ conformance/interfaces/pthread_sigmask/10-1: execution: FAILED: Output:
+ FAIL: SIGKILL was added to the signal mask
+ Test FAILED
+ conformance/interfaces/pthread_sigmask/18-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_sigmask/4-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_sigmask/5-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_sigmask/6-1: execution: HUNG: Output:
+ conformance/interfaces/pthread_sigmask/9-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_spin_lock/1-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/sched_get_priority_max/1-1: execution: FAILED: Output:
+ An error occurs: Function not implemented
+ conformance/interfaces/sched_get_priority_max/1-2: execution: FAILED: Output:
+ An error occurs: Function not implemented
+ conformance/interfaces/sched_get_priority_max/1-3: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_get_priority_max/1-4: execution: FAILED: Output:
+ An error occurs: Function not implemented
+ conformance/interfaces/sched_get_priority_max/2-1: execution: FAILED: Output:
+ error is not EINVAL: Function not implemented
+ conformance/interfaces/sched_get_priority_min/1-1: execution: FAILED: Output:
+ An error occurs: Function not implemented
+ conformance/interfaces/sched_get_priority_min/1-2: execution: FAILED: Output:
+ An error occurs: Function not implemented
+ conformance/interfaces/sched_get_priority_min/1-3: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_get_priority_min/1-4: execution: FAILED: Output:
+ An error occurs: Function not implemented
+ conformance/interfaces/sched_get_priority_min/2-1: execution: FAILED: Output:
+ error is not EINVAL: Function not implemented
+ conformance/interfaces/sched_getparam/1-1: execution: FAILED: Output:
+ Return code is not zero.
+ conformance/interfaces/sched_getparam/2-1: execution: FAILED: Output:
+ Different results between pid == 0 and pid == getpid().
+ conformance/interfaces/sched_getparam/3-1: execution: FAILED: Output:
+ Unexpected error: Function not implemented
+ conformance/interfaces/sched_getparam/4-1: execution: FAILED: Output:
+ errno is not ESRCH: Function not implemented
+ conformance/interfaces/sched_getparam/6-1: execution: UNRESOLVED: Output:
+ errno is not EPERM: The system allows a non-rootuser to use sched_getparam(): Function not implemented
+ conformance/interfaces/sched_getparam/speculative/7-1: execution: UNRESOLVED: Output:
+ sched_getparam() return -1 and sets errno == 1073741902.
+ conformance/interfaces/sched_getscheduler/1-1: execution: FAILED: Output:
+ Unexpected error: Function not implemented
+ conformance/interfaces/sched_getscheduler/2-1: execution: UNTESTED: Output:
+ Will not test the behavior of sched_getscheduler() when pid is negative
+ because it is unspecified.
+ conformance/interfaces/sched_getscheduler/3-1: execution: FAILED: Output:
+ Returned code is -1.
+ conformance/interfaces/sched_getscheduler/4-1: execution: FAILED: Output:
+ Unexpected error: Function not implemented
+ conformance/interfaces/sched_getscheduler/7-1: execution: FAILED: Output:
+ errno is not EPERM: Function not implemented
+ conformance/interfaces/sched_rr_get_interval/1-1: execution: FAILED: Output:
+ Unexpected error: Function not implemented
+ conformance/interfaces/sched_rr_get_interval/2-1: execution: FAILED: Output:
+ interval.tv_sec not updated.
+ conformance/interfaces/sched_rr_get_interval/3-1: execution: FAILED: Output:
+ Returned error is not ESRCH: Function not implemented
+ conformance/interfaces/sched_rr_get_interval/speculative/5-1: execution: UNRESOLVED: Output:
+ sched_rr_get_interval() return -1 and sets errno == 1073741902.
+ conformance/interfaces/sched_setparam/1-1: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setparam/10-1: execution: UNRESOLVED: Output:
+ An error occurs when calling shmget(): Invalid argument
+ conformance/interfaces/sched_setparam/12-1: execution: UNTESTED: Output:
+ Not yet tested.
+ conformance/interfaces/sched_setparam/13-1: execution: UNTESTED: Output:
+ Not yet tested.
+ conformance/interfaces/sched_setparam/14-1: execution: UNTESTED: Output:
+ Not yet tested.
+ conformance/interfaces/sched_setparam/15-1: execution: UNTESTED: Output:
+ Will not test the effects of the sched_ss_low_priority,
+ sched_ss_repl_period, and sched_ss_init_budget members when the scheduling
+ policy of the target process is not SCHED_FIFO, SCHED_RR, or SCHED_SPORADIC.
+ It is implementation-defined.
+ conformance/interfaces/sched_setparam/16-1: execution: UNTESTED: Output:
+ Will not test the result of sched_setparam when the scheduling policy of the
+ target process is not SCHED_FIFO, SCHED_RR, or SCHED_SPORADIC.
+ It is implementation-defined.
+ conformance/interfaces/sched_setparam/17-1: execution: UNTESTED: Output:
+ Will not test that sched_setparam have no effect on the scheduling of threads
+ with system scheduling contention scope.
+ conformance/interfaces/sched_setparam/18-1: execution: UNTESTED: Output:
+ Will not test that the threads scheduling policy and associated parameters
+ are not affected.
+ conformance/interfaces/sched_setparam/19-1: execution: UNTESTED: Output:
+ Will not test that the underlying kernel-scheduled entities for the system
+ contention scope threads are not be affected by this sched_setparam().
+ conformance/interfaces/sched_setparam/2-1: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_setscheduler(): Function not implemented
+ conformance/interfaces/sched_setparam/2-2: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_setscheduler(): Function not implemented
+ conformance/interfaces/sched_setparam/22-1: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setparam/23-1: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setparam/23-2: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_setparam/23-3: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_setparam/23-4: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_setparam/23-5: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_setparam/23-6: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setparam/23-7: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setparam/25-1: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getscheduler(): Function not implemented
+ conformance/interfaces/sched_setparam/25-2: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_setparam/26-1: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setparam/27-1: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setparam/3-1: execution: UNTESTED: Output:
+ Will not test the behavior of sched_setparam() when pid is negative because
+ it is unspecified.
+ conformance/interfaces/sched_setparam/5-1: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setparam/6-1: execution: UNTESTED: Output:
+ Will not test the conditions under which one process has permission to
+ change the scheduling parameters of another process, because they are
+ implementation-defined.
+ conformance/interfaces/sched_setparam/7-1: execution: UNTESTED: Output:
+ Will not test that implementations may require the requesting process to
+ have the appropriate privilege to set its own scheduling parameters or those
+ of another process.
+ conformance/interfaces/sched_setparam/8-1: execution: UNTESTED: Output:
+ Will not test that the target process is moved to the tail of the thread
+ list for its priority when it is running.
+ conformance/interfaces/sched_setparam/9-1: execution: UNRESOLVED: Output:
+ An error occurs when calling shmget(): Invalid argument
+ conformance/interfaces/sched_setscheduler/1-1: execution: UNRESOLVED: Output:
+ Policy: SCHED_FIFO
+ Error calling sched_setscheduler() for SCHED_FIFO policy
+ Policy: SCHED_RR
+ Error calling sched_setscheduler() for SCHED_RR policy
+ Policy: SCHED_OTHER
+ Error calling sched_setscheduler() for SCHED_OTHER policy
+ conformance/interfaces/sched_setscheduler/10-1: execution: UNTESTED: Output:
+ Not yet tested.
+ conformance/interfaces/sched_setscheduler/11-1: execution: UNTESTED: Output:
+ Not yet tested.
+ conformance/interfaces/sched_setscheduler/12-1: execution: UNTESTED: Output:
+ Will not test that sched_setscheduler have no effect on the scheduling of
+ threads with system scheduling contention scope.
+ conformance/interfaces/sched_setscheduler/13-1: execution: UNTESTED: Output:
+ Will not test that the threads scheduling policy and associated parameters
+ are not affected.
+ conformance/interfaces/sched_setscheduler/14-1: execution: UNTESTED: Output:
+ Will not test that the underlying kernel-scheduled entities for the system
+ contention scope threads are not be affected by sched_setscheduler().
+ conformance/interfaces/sched_setscheduler/15-1: execution: UNSUPPORTED: Output:
+ Process contention scope threads are not supported.
+ conformance/interfaces/sched_setscheduler/16-1: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getscheduler(): Function not implemented
+ conformance/interfaces/sched_setscheduler/17-1: execution: UNRESOLVED: Output:
+ Policy: SCHED_FIFO
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setscheduler/17-2: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_setscheduler/17-3: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_setscheduler/17-4: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_setscheduler/17-5: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setscheduler/17-6: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setscheduler/17-7: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setscheduler/19-1: execution: UNRESOLVED: Output:
+ Policy: SCHED_FIFO
+ An error occurs when calling sched_get_priority_max(): Function not implemented
+ conformance/interfaces/sched_setscheduler/19-2: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_setscheduler/19-3: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_setscheduler/19-4: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_setscheduler/19-5: execution: FAILED: Output:
+ Unknow error: Function not implemented
+ conformance/interfaces/sched_setscheduler/2-1: execution: UNTESTED: Output:
+ Will not test the behavior of sched_setscheduler() when pid is negative
+ because it is unspecified.
+ conformance/interfaces/sched_setscheduler/20-1: execution: FAILED: Output:
+ errno is not EPERM: Function not implemented
+ conformance/interfaces/sched_setscheduler/21-1: execution: FAILED: Output:
+ errno is not ESRCH: Function not implemented
+ conformance/interfaces/sched_setscheduler/4-1: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setscheduler/5-1: execution: UNTESTED: Output:
+ Will not test the condition under which one process has the appropriate
+ privilege to change the scheduling parameters of another process because
+ they are implementation-defined.
+ conformance/interfaces/sched_setscheduler/6-1: execution: UNTESTED: Output:
+ Will not test that implementations may require that the requesting process
+ have permission to set its own scheduling parameters or those of another
+ process.
+ conformance/interfaces/sched_setscheduler/7-1: execution: UNTESTED: Output:
+ Will not test if implementation-defined restrictions apply as to the
+ appropriate privileges required to set a process' own scheduling policy, or
+ another process' scheduling policy, to a particular value.
+ conformance/interfaces/sched_setscheduler/9-1: execution: UNTESTED: Output:
+ Not yet tested.
+ conformance/interfaces/sem_close/1-1: execution: INTERRUPTED: Output:
+ unexpected error: sem_close 1-1: sem_open: Operation not supported
+ conformance/interfaces/sem_close/2-1: execution: INTERRUPTED: Output:
+ unexpected error: sem_close 2-1: sem_open: Operation not supported
+ conformance/interfaces/sem_close/3-1: execution: INTERRUPTED: Output:
+ unexpected error: sem_close 3-1: sem_open: Operation not supported
+ conformance/interfaces/sem_close/3-2: execution: UNRESOLVED: Output:
+ [08:56:54]Test conformance/interfaces/sem_close/3-2.c unresolved: got 1073741869 (Operation not supported) on line 113 (Failed to create the semaphore)
+ conformance/interfaces/sem_getvalue/1-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_getvalue 1-1: sem_open: Operation not supported
+ conformance/interfaces/sem_getvalue/2-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_getvalue 2-1: sem_open: Operation not supported
+ conformance/interfaces/sem_getvalue/4-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_getvalue 4-1: sem_open: Operation not supported
+ conformance/interfaces/sem_getvalue/5-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_getvalue 5-1: sem_open: Operation not supported
+ conformance/interfaces/sem_init/3-2: execution: UNRESOLVED: Output:
+ [08:56:59]Test conformance/interfaces/sem_init/3-2.c unresolved: got 1073741869 (Operation not supported) on line 135 (Failed to init the semaphore)
+ conformance/interfaces/sem_init/3-3: execution: UNRESOLVED: Output:
+ [08:57:00]Test conformance/interfaces/sem_init/3-3.c unresolved: got 1073741869 (Operation not supported) on line 134 (Failed to init the semaphore)
+ conformance/interfaces/sem_init/7-1: execution: UNTESTED: Output:
+ [08:57:01]sysconf( _SC_SEM_NSEMS_MAX ) = -1
+ [08:57:01]File conformance/interfaces/sem_init/7-1.c cannot test: There is no constraint on SEM_NSEMS_MAX
+ conformance/interfaces/sem_open/1-1: execution: FAILED: Output:
+ TEST FAILED
+ conformance/interfaces/sem_open/1-3: execution: UNRESOLVED: Output:
+ unexpected error: sem_open 1-3: sem_open: Operation not supported
+ conformance/interfaces/sem_open/1-4: execution: UNRESOLVED: Output:
+ unexpected error: sem_open 1-4: sem_open: Operation not supported
+ conformance/interfaces/sem_open/10-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_open 10-1: sem_open: Operation not supported
+ conformance/interfaces/sem_open/15-1: execution: UNRESOLVED: Output:
+ [08:57:03]Test conformance/interfaces/sem_open/15-1.c unresolved: got 1073741869 (Operation not supported) on line 106 (Failed to sem_open)
+ conformance/interfaces/sem_open/2-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_open 2-1: sem_open: Operation not supported
+ conformance/interfaces/sem_open/2-2: execution: UNRESOLVED: Output:
+ unexpected error: sem_open 2-2: sem_open: Operation not supported
+ conformance/interfaces/sem_open/3-1: execution: FAILED: Output:
+ TEST FAILED
+ conformance/interfaces/sem_open/4-1: execution: FAILED: Output:
+ TEST FAILED
+ conformance/interfaces/sem_open/6-1: execution: FAILED: Output:
+ TEST FAILED
+ conformance/interfaces/sem_post/1-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_post 1-1: sem_open: Operation not supported
+ conformance/interfaces/sem_post/1-2: execution: UNRESOLVED: Output:
+ unexpected error: sem_post 1-2: sem_open: Operation not supported
+ conformance/interfaces/sem_post/2-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_post 2-1: sem_open: Operation not supported
+ conformance/interfaces/sem_post/4-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_post 4-1: sem_open: Operation not supported
+ conformance/interfaces/sem_post/5-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_post 5-1: sem_open: Operation not supported
+ conformance/interfaces/sem_post/6-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_post 6-1: sem_open: Operation not supported
+ conformance/interfaces/sem_post/8-1: execution: UNTESTED: Output:
+ _POSIX_PRIORITY_SCHEDULING not defined
+ conformance/interfaces/sem_timedwait/9-1: execution: FAILED: Output:
+ In handler
+ TEST FAILED: errno != EINTR
+ conformance/interfaces/sem_unlink/1-1: execution: INTERRUPTED: Output:
+ unexpected error: sem_unlink 1-1: sem_open: Operation not supported
+ conformance/interfaces/sem_unlink/2-1: execution: INTERRUPTED: Output:
+ unexpected error: sem_unlink 2-1: sem_open: Operation not supported
+ conformance/interfaces/sem_unlink/2-2: execution: UNRESOLVED: Output:
+ [08:57:23]Test conformance/interfaces/sem_unlink/2-2.c unresolved: got 1073741869 (Operation not supported) on line 158 (Failed to create the semaphore)
+ conformance/interfaces/sem_unlink/3-1: execution: UNRESOLVED: Output:
+ [08:57:23]Test conformance/interfaces/sem_unlink/3-1.c unresolved: got 1073741869 (Operation not supported) on line 156 (Failed to create the semaphore)
+ conformance/interfaces/sem_unlink/4-1: execution: FAILED: Output:
+ TEST FAILED: semaphore does exist
+ conformance/interfaces/sem_unlink/4-2: execution: FAILED: Output:
+ [08:57:24]Error 1073741869: Operation not supported
+ [08:57:24]Test conformance/interfaces/sem_unlink/4-2.c FAILED: The error was not ENOENT
+ conformance/interfaces/sem_unlink/6-1: execution: UNRESOLVED: Output:
+ [08:57:25]Test conformance/interfaces/sem_unlink/6-1.c unresolved: got 1073741869 (Operation not supported) on line 107 (Failed to create the semaphore)
+ conformance/interfaces/sem_unlink/7-1: execution: UNRESOLVED: Output:
+ [08:57:25]Test conformance/interfaces/sem_unlink/7-1.c unresolved: got 1073741869 (Operation not supported) on line 126 (Failed to create the semaphore)
+ conformance/interfaces/sem_unlink/9-1: execution: UNRESOLVED: Output:
+ [08:57:25]Test conformance/interfaces/sem_unlink/9-1.c unresolved: got 1073741869 (Operation not supported) on line 133 (Failed to create the semaphore)
+ conformance/interfaces/sem_wait/1-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_wait 1-1: sem_open: Operation not supported
+ conformance/interfaces/sem_wait/1-2: execution: UNRESOLVED: Output:
+ unexpected error: sem_wait 2-1: sem_open: Operation not supported
+ conformance/interfaces/sem_wait/11-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_trywait 11-1: sem_open: Operation not supported
+ conformance/interfaces/sem_wait/12-1: execution: INTERRUPTED: Output:
+ unexpected error: sem_trywait 12-1: sem_open: Operation not supported
+ conformance/interfaces/sem_wait/3-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_wait 3-1: sem_open: Operation not supported
+ conformance/interfaces/sem_wait/5-1: execution: INTERRUPTED: Output:
+ unexpected errno: sem_trywait 5-1: sem_open: Operation not supported
+ conformance/interfaces/sem_wait/7-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_wait 7-1: sem_open: Operation not supported
+ conformance/interfaces/shm_open/1-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/shm_open/10-1: execution: UNTESTED: Output:
+ Will not test whether the file offset is set because it is unspecified.
+ conformance/interfaces/shm_open/12-1: execution: UNTESTED: Output:
+ Will not test the behavior of implementation when an application does not
+ specify exactly one of two values: O_RDONLY and O_RDWR.
+ conformance/interfaces/shm_open/14-2: execution: INTERRUPTED: Output:
+ conformance/interfaces/shm_open/19-1: execution: UNTESTED: Output:
+ Will not test the effect of calling shm_open() when the shared memory object
+ does not exists, the O_CREAT flags is set, and bits in mode other than the
+ file permission bits are set. It is unspecified.
+ conformance/interfaces/shm_open/2-1: execution: UNTESTED: Output:
+ Will not test that the shm_open() function create an open file description
+ that refers to the shared memory object and a file descriptor that refers to
+ conformance/interfaces/shm_open/23-1: execution: UNRESOLVED: Output:
+ error at sem_open: Operation not supported
+ conformance/interfaces/shm_open/24-1: execution: UNTESTED: Output:
+ Will not test the result of shm_open() when O_EXCL is set and O_CREAT is not
+ set because it is undefined.
+ conformance/interfaces/shm_open/26-2: execution: UNRESOLVED: Output:
+ You don't have permission to change your UID.
+ Try to rerun this test as root.
+ conformance/interfaces/shm_open/27-1: execution: UNTESTED: Output:
+ Will not test the result of shm_open() when using O_TRUNC with O_RDONLY.
+ It is undefined.
+ conformance/interfaces/shm_open/28-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/shm_open/28-3: execution: INTERRUPTED: Output:
+ conformance/interfaces/shm_open/29-1: execution: UNTESTED: Output:
+ Will not test whether the name and shared memory object state remain valid
+ after a system reboot. It is unspecified.
+ conformance/interfaces/shm_open/3-1: execution: UNTESTED: Output:
+ Will not test whether the name appears in the file system and is visible to
+ other functions that take pathnames as arguments because it is unspecified.
+ conformance/interfaces/shm_open/36-1: execution: UNTESTED: Output:
+ It is very difficult to test that the shm_open() function sets errno = EINTR
+ when it is interrupted by a signal.
+ conformance/interfaces/shm_open/37-1: execution: FAILED: Output:
+ Name: '[GARBAGE]'
+ OK: open with success.
+ Name: '[GARBAGE]'
+ OK: open with success.
+ Name: '..'
+ Unexpected error: Is a directory
+ Name: '/'
+ OK: errno == EINVAL
+ Name: '//'
+ OK: errno == EINVAL
+ Name: '/abc'
+ OK: open with success.
+ Test FAILED
+ conformance/interfaces/shm_open/39-2: execution: UNRESOLVED: Output:
+ An error occurs when calling pathconf(): Invalid argument
+ conformance/interfaces/shm_open/42-1: execution: UNTESTED: Output:
+ Will not test that the shm_open() function sets errno to ENOSPC if there is
+ insufficient space for the creation of the new shared memory object.
+ conformance/interfaces/shm_open/5-1: execution: FAILED: Output:
+ Test FAILED
+ conformance/interfaces/shm_open/6-1: execution: UNTESTED: Output:
+ Will not test the effect of a name which does not begin with the slash
+ character because it is implementation-defined.
+ conformance/interfaces/shm_open/7-1: execution: UNTESTED: Output:
+ Will not test the interpretation of slash characters other than the leading
+ slash character in name because it is implementation-defined.
+ conformance/interfaces/shm_open/9-1: execution: UNTESTED: Output:
+ Will not test that the open file description is new.
+ conformance/interfaces/shm_unlink/10-2: execution: UNRESOLVED: Output:
+ An error occurs when calling pathconf(): Invalid argument
+ conformance/interfaces/shm_unlink/8-1: execution: UNRESOLVED: Output:
+ You don't have permission to change your UID.
+ Try to rerun this test as root.
+ conformance/interfaces/shm_unlink/9-1: execution: UNRESOLVED: Output:
+ You don't have permission to change your UID.
+ Try to rerun this test as root.
+ conformance/interfaces/sigaction/4-37: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/17-23: execution: FAILED: Output:
+ Caught SIGURG
+ Test FAILED
+ conformance/interfaces/sigaction/12-41: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-4: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/4-28: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/17-26: execution: FAILED: Output:
+ Caught SIGXFSZ
+ Test FAILED
+ conformance/interfaces/sigaction/12-49: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-8: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-45: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-18: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/4-42: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-15: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-25: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/17-7: execution: FAILED: Output:
+ Caught SIGHUP
+ Test FAILED
+ conformance/interfaces/sigaction/4-48: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-23: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/4-34: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-24: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/4-43: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/17-22: execution: FAILED: Output:
+ Caught SIGTRAP
+ Test FAILED
+ conformance/interfaces/sigaction/12-31: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-35: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-46: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-7: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-34: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-3: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/4-52: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/4-30: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/4-51: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-13: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/4-36: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/17-21: execution: FAILED: Output:
+ Caught SIGSYS
+ Test FAILED
+ conformance/interfaces/sigaction/17-11: execution: FAILED: Output:
+ Caught SIGQUIT
+ Test FAILED
+ conformance/interfaces/sigaction/4-38: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-47: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-30: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-44: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/4-50: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-27: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-20: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/4-40: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/17-19: execution: FAILED: Output:
+ Caught SIGPOLL
+ Test FAILED
+ conformance/interfaces/sigaction/12-16: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-51: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-21: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/17-1: execution: FAILED: Output:
+ Caught SIGABRT
+ Test FAILED
+ conformance/interfaces/sigaction/4-32: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/17-12: execution: FAILED: Output:
+ Caught SIGSEGV
+ Test FAILED
+ conformance/interfaces/sigaction/12-52: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-10: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-36: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/17-9: execution: FAILED: Output:
+ Caught SIGINT
+ Test FAILED
+ conformance/interfaces/sigaction/4-47: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-11: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/17-10: execution: FAILED: Output:
+ Caught SIGPIPE
+ Test FAILED
+ conformance/interfaces/sigaction/12-5: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-48: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-19: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/4-46: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/17-17: execution: FAILED: Output:
+ Caught SIGUSR1
+ Test FAILED
+ conformance/interfaces/sigaction/12-14: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/17-14: execution: FAILED: Output:
+ Caught SIGTSTP
+ Test FAILED
+ conformance/interfaces/sigaction/17-18: execution: FAILED: Output:
+ Caught SIGUSR2
+ Test FAILED
+ conformance/interfaces/sigaction/4-41: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-43: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-28: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/17-6: execution: FAILED: Output:
+ Caught SIGFPE
+ Test FAILED
+ conformance/interfaces/sigaction/4-45: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/4-35: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-6: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/4-29: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/17-16: execution: FAILED: Output:
+ Caught SIGTTOU
+ Test FAILED
+ conformance/interfaces/sigaction/4-39: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-29: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-9: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/17-25: execution: FAILED: Output:
+ Caught SIGXCPU
+ Test FAILED
+ conformance/interfaces/sigaction/17-4: execution: FAILED: Output:
+ Caught SIGCHLD
+ Test FAILED
+ conformance/interfaces/sigaction/12-22: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/17-13: execution: FAILED: Output:
+ Caught SIGTERM
+ Test FAILED
+ conformance/interfaces/sigaction/4-31: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-38: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-12: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/4-44: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/4-49: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-40: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-42: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/17-15: execution: FAILED: Output:
+ Caught SIGTTIN
+ Test FAILED
+ conformance/interfaces/sigaction/17-3: execution: FAILED: Output:
+ Caught SIGBUS
+ Test FAILED
+ conformance/interfaces/sigaction/12-2: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/17-5: execution: FAILED: Output:
+ Caught SIGCONT
+ Test FAILED
+ conformance/interfaces/sigaction/12-33: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-17: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/17-2: execution: FAILED: Output:
+ Caught SIGALRM
+ Test FAILED
+ conformance/interfaces/sigaction/12-37: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/17-20: execution: FAILED: Output:
+ Caught SIGPROF
+ Test FAILED
+ conformance/interfaces/sigaction/17-8: execution: FAILED: Output:
+ Caught SIGILL
+ Test FAILED
+ conformance/interfaces/sigaction/4-33: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-39: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-50: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-32: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/4-27: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/17-24: execution: FAILED: Output:
+ Caught SIGVTALRM
+ Test FAILED
+ conformance/interfaces/sigaction/12-26: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaltstack/1-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaltstack/11-1: execution: FAILED: Output:
+ Test FAILED: Expected return value of -1.
+ conformance/interfaces/sigaltstack/12-1: execution: FAILED: Output:
+ Test FAILED: Expected return value of -1.
+ conformance/interfaces/sigaltstack/2-1: execution: FAILED: Output:
+ Test FAILED: ss_sp of the handler's stack changed even though SS_DISABLE was set
+ conformance/interfaces/sigaltstack/3-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaltstack/6-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaltstack/7-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigpause/2-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigpending/1-2: execution: INTERRUPTED: Output:
+ Not all pending signals found
+ conformance/interfaces/sigpending/1-3: execution: INTERRUPTED: Output:
+ Error with send signals
+ Test FAILED
+ conformance/interfaces/sigqueue/10-1: execution: FAILED: Output:
+ sigqueue() failed on EINVAL but errno not set correctly
+ conformance/interfaces/sigqueue/11-1: execution: FAILED: Output:
+ sigqueue() failed on ESRCH but errno not set correctly
+ conformance/interfaces/sigqueue/12-1: execution: FAILED: Output:
+ sigqueue() failed but errno not set correctly
+ conformance/interfaces/sigqueue/2-1: execution: FAILED: Output:
+ Could not call sigqueue with sig = 0
+ conformance/interfaces/sigqueue/2-2: execution: FAILED: Output:
+ sigqueue() failed on ESRCH but errno not set correctly
+ At least one test FAILED -- see output for status
+ conformance/interfaces/sigqueue/3-1: execution: FAILED: Output:
+ Test FAILED: EPERM error not received
+ conformance/interfaces/sigset/6-1: execution: UNRESOLVED: Output:
+ Unexpected error while using sigset(): (os/kern) successful
+ conformance/interfaces/sigset/7-1: execution: UNRESOLVED: Output:
+ Unexpected error while using sigset(): (os/kern) successful
+ conformance/interfaces/sigset/8-1: execution: FAILED: Output:
+ Test FAILED: sigset() didn't return SIG_HOLD
+ conformance/interfaces/sigsuspend/1-1: execution: UNRESOLVED: Output:
+ suspending child
+ SIGUSR2 called. Inside handler
+ parent sending child a SIGUSR2 signal
+ parent sending child a SIGUSR1 signal
+ Exit status from child is 1
+ Test UNRESOLVED: Either sigsuspend did not successfully block SIGUSR2, OR sigsuspend returned before handling the signal SIGUSR1
+ conformance/interfaces/sigtimedwait/1-1: execution: FAILED: Output:
+ Test FAILED: sigtimedwait() did not return in the required time
+ conformance/interfaces/sigtimedwait/4-1: execution: FAILED: Output:
+ Call to sigtimedwait() failed
+ : Function not implemented
+ conformance/interfaces/sigtimedwait/6-1: execution: FAILED: Output:
+ Test FAILED: sigtimedwait() did set errno to EAGAIN
+ conformance/interfaces/sigwait/1-1: execution: FAILED: Output:
+ Signal SIGALRM is not pending!
+ conformance/interfaces/sigwait/3-1: execution: FAILED: Output:
+ Test FAILED
+ conformance/interfaces/sigwait/6-1: execution: FAILED: Output:
+ [09:04:10]0 threads were awaken
+ [09:04:10]Test conformance/interfaces/sigwait/6-1.c FAILED: Unexpected number of threads awaken
+ conformance/interfaces/sigwaitinfo/1-1: execution: UNRESOLVED: Output:
+ Call to sigwaitinfo() failed
+ : Function not implemented
+ conformance/interfaces/sigwaitinfo/3-1: execution: FAILED: Output:
+ Call to sigwaitinfo() failed
+ : Function not implemented
+ Child calling sigwaitinfo()
+ parent sending child a SIGUSR1 signal
+ Exit status from child is 2
+ Test FAILED
+ conformance/interfaces/sigwaitinfo/9-1: execution: FAILED: Output:
+ Call to sigwaitinfo() failed
+ : Function not implemented
+ conformance/interfaces/strftime/2-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/timer_create/1-1: execution: FAILED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_create/10-1: execution: UNRESOLVED: Output:
+ sysconf(_SC_CPUTIME) returns: -1
+ conformance/interfaces/timer_create/11-1: execution: UNSUPPORTED: Output:
+ rc = -1
+ _POSIX_THREAD_CPUTIME unsupported
+ conformance/interfaces/timer_create/16-1: execution: FAILED: Output:
+ errno != EINVAL
+ Test FAILED
+ conformance/interfaces/timer_create/3-1: execution: FAILED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_create/7-1: execution: UNSUPPORTED: Output:
+ CLOCK_MONOTONIC unsupported
+ conformance/interfaces/timer_create/8-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_create/9-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_create/speculative/2-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_create/speculative/5-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_delete/1-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_delete/1-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_delete/speculative/5-1: execution: FAILED: Output:
+ timer_delete() returned -1, but didn't set errno!=EINVAL
+ conformance/interfaces/timer_delete/speculative/5-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_getoverrun/1-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_getoverrun/2-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_getoverrun/2-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_getoverrun/2-3: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_getoverrun/3-1: execution: UNTESTED: Output:
+ Cannot be tested as DELAYTIMER_MAX is too large.
+ DELAYTIMER_MAX is ffffffff
+ conformance/interfaces/timer_getoverrun/speculative/6-1: execution: FAILED: Output:
+ fcn returned -1, but errno!=EINVAL
+ Test FAILED
+ conformance/interfaces/timer_getoverrun/speculative/6-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_getoverrun/speculative/6-3: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_gettime/1-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_gettime/1-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_gettime/1-3: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_gettime/1-4: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_gettime/2-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_gettime/2-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_gettime/3-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_gettime/speculative/6-1: execution: FAILED: Output:
+ fcn returned -1 but errno!=EINVAL
+ Test FAILED
+ conformance/interfaces/timer_gettime/speculative/6-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_gettime/speculative/6-3: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/1-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/1-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/13-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/2-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/3-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/3-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/3-3: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/5-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/5-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/5-3: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/6-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/8-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/8-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/8-3: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/8-4: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/9-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/9-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/speculative/12-1: execution: FAILED: Output:
+ fcn returned -1, but errno!=EINVAL
+ Test FAILED
+ conformance/interfaces/timer_settime/speculative/12-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/speculative/12-3: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ functional/threads/schedule/1-1: execution: UNRESOLVED: Output:
+ unexpected error: scheduler 5-4: pthread_attr_setschedpolicy
+ functional/threads/schedule/1-2: execution: UNRESOLVED: Output:
+ unexpected error: scheduler 5-5: pthread_setschedparam
diff --git a/open_issues/osf_mach.mdwn b/open_issues/osf_mach.mdwn
new file mode 100644
index 00000000..d689bfcb
--- /dev/null
+++ b/open_issues/osf_mach.mdwn
@@ -0,0 +1,237 @@
+[[!meta copyright="Copyright © 2011 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_glibc open_issue_gnumach open_issue_hurd]]
+
+IRC, freenode, #hurd, 2011-09-07
+
+ <slpz> tschwinge: do you think that should be possible/convenient to
+ maintain hurd and glibc versions for OSF Mach as branches in the offical
+ git repo?
+ <tschwinge> Is OSF Mach the MkLinux one?
+ <slpz> Yes, it is
+ <tschwinge> slpz: If there's a suitable license, then yes, of course!
+ <tschwinge> Unless there is a proper upstream, of course.
+ <tschwinge> But I don't assume there is?
+ <tschwinge> slpz: What is interesting for us about OSF Mach?
+ <slpz> tschwinge: Peter Bruin and Jose Marchesi did a gnuified version some
+ time ago (gnu-osfmach), so I suppose the license is not a problem. But
+ I'm going to check it, though
+ <slpz> OSF Mach has a number of interesting features
+ <slpz> like migrating threads, advisory pageout, clustered pageout, kernel
+ loaded tasks, short circuited RPC...
+ <tschwinge> Oh!
+ <tschwinge> Good.
+ <slpz> right now I'm testing if it's really worth the effort
+ <tschwinge> Yes.
+ <tschwinge> But if the core codebase is the same (is it?) it may be
+ possible to merge some things?
+ <tschwinge> If the changes can be identified reasonably...
+ <slpz> comparing performance of the specialized RPC of OSF Mach with
+ generic IPC
+ <slpz> That was my first intention, but I think that porting all those
+ features will be much more work than porting Hurd/glibc to it
+ <braunr> slpz: ipc performance currently matters less than clustered
+ pageouts
+ <braunr> slpz: i'm really not sure ..
+ <braunr> i'd personnally adapt the kernel
+ <slpz> braunr: well, clustered pageouts is one of the changes that can be
+ easily ported
+ <slpz> braunr: We can consider OSF Mach code as reasonably stable, and
+ porting its features to GNU Mach will take us to the point of having to
+ debug all that code again
+ <slpz> probably, the hardest feature to be ported is migrating threads
+ <braunr> isn't that what was tried for gnu mach 2 ? or was it only about
+ oskit ?
+ <slpz> IIRC only oskit
+ <tschwinge> slpz: But there have been some advancements in GNU Mach, too.
+ For example the Xen port.
+ <tschwinge> But wen can experiment with it, of course.
+ <slpz> tschwinge: I find easier to move the Xen support from GNU Mach to
+ OSF Mach, than porting MT in the other direction
+ <tschwinge> slpz: And I think MkLinux is a single-server, so I don't this
+ they used IPC as much as we did?
+ <tschwinge> slpz: OK, I see.
+ <braunr> slpz: MT aren't as needed as clustered pageouts :p
+ <braunr> gnumach already has ipc handoff, so MT would just consume less
+ stack space, and only slightly improve raw ipc performance
+ <tschwinge> slpz: But we will surely accept patches that get the Hurd/glibc
+ ported to OSF Mach, no question.
+ <braunr> (it's required for other issues we discussed already, but not a
+ priority imo)
+ <slpz> tschwinge: MkLinux makes heavy use of IPC, but it tries to
+ "short-circuit" it when running as a kernel loaded task
+ <tschwinge> And it's obviously best to keep it in one place. Luckily it's
+ not CVS branches anymore... :-)
+ <slpz> braunr: well, I'm a bit obsessed with IPC peformance, if the RPC on
+ OSF Mach really makes a difference, I want it for Hurd right now
+ <slpz> braunr: clustered pages can be implemented at any time :-)
+ <slpz> tschwinge: great!
+ <tschwinge> slpz: In fact, haven'T there already been some Savannah
+ repositories created, several (five?) years ago?
+ <braunr> slpz: the biggest performance issue on the hurd is I/O
+ <braunr> and the easiest way to improve that is better VM transfers
+ <slpz> tschwinge: yes, the HARD project, but I think it wasn't too well
+ received...
+ <tschwinge> slpz: Quite some things changed since then, I'd say.
+ <slpz> braunr: I agree, but IPC is the hardest part to optimize
+ <slpz> braunr: If we have a fast IPC, the rest of improvements are way
+ easier
+ <braunr> slpz: i don't see how faster IPC makes I/O faster :(
+ <braunr> slpz: read
+ http://www.sceen.net/~rbraun/the_increasing_irrelevance_of_ipc_performance_for_microkernel_based_operating_systems.pdf
+ again :)
+ <slpz> braunr: IPC puts the upper limit of how fast I/O could be
+ <braunr> the abstract for my thesis on x15 mach was that the ipc code was
+ the most focused part of the kernel
+ <braunr> so my approach was to optimize everything *else*
+ <braunr> the improvements in UVM (and most notably clustered page
+ transfers) show global system improvements up to 30% in netbsd
+ <braunr> we should really focus on the VM first (which btw, is a pain in
+ the ass with the crappy panicking swap code in place)
+ <braunr> and then complete the I/O system
+ <slpz> braunr: If a system can't transfer data between translators faster
+ than 100 MB/s, faster devices doesn't make much sense
+ <guillem> has anyone considered switching the syscalls to use
+ sysenter/syscall instead of soft interrupts?
+ <slpz> braunr: but I agree on the VM part
+ <braunr> guillem: it's in my thesis .. but only there :)
+ <braunr> slpz: let's reach 100 MiB/s first, then improve IPC
+ <slpz> guillem: that's a must do, also moving to 64 bits :-)
+ <braunr> guillem: there are many tiny observations in it, like the use of
+ global page table entries, which was added by youpi around that time
+ <guillem> slpz: I wanted to fix all warnings first before sending my first
+ batch of 64 bit fixes, but I think I'll just send them after checking
+ they don't introduce regressions on i386
+ <guillem> braunr: interesting I think I might have skimmed over your
+ thesis, maybe I should read it properly some time :)
+ <slpz> braunr: I see exactly as the opposite. First push IPC to its limit,
+ then improve devices/VM
+ <slpz> guillem: that's great :-)
+ <braunr> slpz: improving ipc now will bring *nothing*, whereas improving
+ vm/io now will make the system considerably more useable
+ <guillem> but then fixing 64-bit issues in the Linux code is pretty
+ annoying given that the latest code from upstream has that already fixed,
+ and we are “supposed” to drop the linux code from gnumach at some point
+ :)
+ <braunr> slpz: that's a basic principle in profiling, improve what brings
+ the best gains
+ <slpz> braunr: I'm not thinking about today, I'm thinking about how fast
+ Hurd could be when running on Mach. And, as I said, IPC is the absolute
+ upper limit.
+ <braunr> i'm really not convinced
+ <braunr> there are that many tasks making extensive use of IPCs
+ <braunr> most are cpu/IO bound
+ <slpz> but I have to acknowledge that this concern has been really
+ aliviated by the EPT improvement discovery
+ <braunr> there aren't* that many tasks
+ <slpz> braunr: create a ramdisk an write some files on it
+ <slpz> braunr: there's no I/O in that case, an performance it's really low
+ too
+ <braunr> well, ramdisks don't even work correctly iirc
+ <slpz> I must say that I consider improvements in OOL data moving as if it
+ were in IPC itself
+ <slpz> braunr: you can simulate one with storeio
+ <braunr> slpz: then measure what's slow
+ <braunr> slpz: it couldn't simply be the vm layer
+ <slpz> braunr:
+ http://www.gnu.org/s/hurd/hurd/libstore/examples/ramdisk.html
+ <braunr> ok, it's not a true ramdisk
+ <braunr> it's a stack of a ramdisk and extfs servers
+ <braunr> ext2fs*
+ <braunr> i was thinking about tmpfs
+ <slpz> True, but one of Hurd main advantages is the ability of doing that
+ kind of things
+ <slpz> so they must work with a reasonable performance
+ <braunr> other systems can too ..
+ <braunr> anyway
+ <braunr> i get your point, you want faster IPCs, like everyone does
+ <slpz> braunr: yes, and I also want to know how fast could be, to have a
+ reference when profiling complex services
+ <antrik> slpz: really improving IPC performance probably requires changing
+ the semantics... but we don't know which semantics we want until we have
+ actually tried fixing the existing bottlenecks
+ <antrik> well, not only bottlenecks... also other issues such as resource
+ management
+ <slpz> antrik: I think fixing bottlenecks would probably require changes in
+ some Mach interfaces, not in the IPC subsystem
+ <slpz> antrik: I mean, IPC semantics just provide the basis for messaging,
+ I don't think we will need to change them further
+ <antrik> slpz: right, but only once we have addressed the bottlenecks (and
+ other major shortcomings), we will know how the IPC mechanisms needs to
+ change to get further improvements...
+ <antrik> of course improving Mach IPC performance is interesting too -- if
+ nothing else, then to see how much of a difference it really makes... I
+ just don't think it should be considered an overriding priority :-)
+ <youpi> slpz: I agree with braunr, I don't think improving IPC will bring
+ much on the short term
+ <youpi> the buildds are slow mostly because of bad VM
+ <youpi> like lack of read-ahead, the randomness of object cache pageout,
+ etc.
+ <youpi> that doesn't mean IPC shouldn't be improved of course
+ <youpi> but we have a big margin for iow
+ <youpi> s/iow/now
+ <slpz> youpi: I agree with you and with braunr in that regard. I'm not
+ looking for an inmediate improvement, I just want to see how fast the IPC
+ (specially, OOL data transfers) could be.
+ <slpz> also, migrating threads will help to fix some problems related with
+ resource management
+ <antrik> slpz: BTW, what about Apple's Mach? isn't it essentialy OSF Mach
+ with some further improvements?...
+ <slpz> antrik: IPC is an area with very little room for improvement, so I
+ don't we will fix that bottlenecks by applying some changes there
+ <antrik> well, for large OOL transfers, the limiting facter is certainly
+ also VM rather than the thread model?...
+ <slpz> antrik: yes, but I think is encumbered with the APPLv2 license
+ <antrik> ugh
+ <slpz> antrik: for OOL transfers, VM plays a big role, but IPC also has
+ great deal of responsibility
+ <antrik> as for resource management, migrating threads do not really help
+ much IMHO, as they only affect CPU scheduling. memory usage is a much
+ more pressing issue
+ <antrik> BTW, I have thought about passive objects in the past, but didn't
+ reach any conclusion... so I'm a bit ambivalent about migrating threads
+ :-)
+ <slpz> As an example, in Hurd on GNU Mach, an io_read can't take advantage
+ from copy-on-write, as buffers from the translator always arrive outside
+ user's buffer
+ <slpz> antrik: well, I think cpu scheduling is a big deal ;-)
+ <slpz> antrik: and for memory management, until a better design is
+ implemented, some fixes could be applied to get us to the same level as a
+ monolithic kernel
+ <antrik> to get even close to monolithic systems, we need either a way to
+ account server resources used on client's behalf, or to make servers use
+ client-provided resources. both require changes in the IPC mechanism I
+ think...
+ <antrik> (though *if* we go for the latter option, the CPU scheduling
+ changes of migrating threads would of course be necessary, in addition to
+ any changes regarding memory management...)
+ <antrik> slpz: BTW, I didn't get the point about io_read and COW...
+ <slpz> antrik: AFAIK, the FS cache (which is our primary concern) in most
+ monolithic system is agnostic with respect the users, and only deals with
+ absolute numbers. In our case we can do almost the same by combining Mach
+ and pagers knowledege.
+ <antrik> slpz: my primary concern is that anything program having a hiccup
+ crashes the system... and I'm not sure this can be properly fixed without
+ working memory accounting
+ <antrik> (I guess in can be worked around to some extent by introducing
+ various static limits on processes... but I'm not sure how well)
+ <antrik> it can
+ <slpz> antrik: monolithic system also suffer that problem (remember fork
+ bombs) and it's "solved" by imposing static limits to user processes
+ (ulimit).
+ <slpz> antrik: we do have more problems due to port management, but I think
+ some degree of control can be archieved with a reasonably amount of
+ changes.
+ <antrik> slpz: in a client-server architecture static limits are much less
+ effective... that problem exists on traditional systems too, but only in
+ some specific cases (such as X server); while on a microkernel system
+ it's ubiquitous... that's why we need a *better* solution to this problem
+ to get anywhere close to monolithic systems
diff --git a/open_issues/packaging_libpthread.mdwn b/open_issues/packaging_libpthread.mdwn
new file mode 100644
index 00000000..fa3d4312
--- /dev/null
+++ b/open_issues/packaging_libpthread.mdwn
@@ -0,0 +1,50 @@
+[[!meta copyright="Copyright © 2010, 2011 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_libpthread open_issue_glibc]]
+
+IRC, #hurd, 2010-07-31
+
+ <tschwinge> My idea was to have a separate libpthread package. What do you think about that?
+ <youpi> in the long term, that can't work with glibc
+ <youpi> because of the thread stub stuff
+
+[[libpthread_dlopen]], for example.
+
+ <youpi> it's not really possible to keep synchronized
+ <youpi> because you have to decide which package you unpack first
+ <youpi> (when upgrading)
+ <tschwinge> Hmm, how is that different if two shared libraries are in one package vs. two packages? It isn't atomic either way? Aren't sonames / versioned library packages solving that?
+ <tschwinge> ... for incompatible forward changes?
+ <youpi> that'd be a mess to maintain
+ <youpi> Drepper doesn't have this constraint and thus adds members of private fields at will
+ <tschwinge> OK, but how is it different then if the libpthread is in the Hurd package?
+ <youpi> I'm not saying it's better to have libpthread in the Hurd package
+ <tschwinge> OK.
+ <youpi> I'm saying it's useless to package it separately when Drepper makes everything to have us put it along glibc
+ <tschwinge> Then, to goal is to have it in glibc?
+ <tschwinge> OK. :-)
+ <tschwinge> OK, I can accommodate to that. Isn't not that we'd want to switch libpthread to something else so quickly.
+ <tschwinge> So our official goal is to have libpthread in glibc, at least for Debian purposese?
+ <youpi> for any port purpose
+ <tschwinge> Ack.
+ <youpi> provided you're using glibc, you're deemed to ship libpthread with it
+ <youpi> because of the strong relations Drepper puts between them
+ <youpi> (just to remind: we already have bugs just because our current libpthread isn't bound enough to glibc: dlopen()ing a library depending on libpthread doesn't work, for instance)
+ <pinotree> yeah, pthread-stubs is linked to almost everywhere -lpthread isn't used
+ <pinotree> (would be nice to not have those issues anymore...)
+ <tschwinge> So -- what do we need to put it into glibc? We can make libpthread a Git submodule (or move the code; but it's shared also for Neal's viengoos, so perhaps the submodule is better?), plus some glibc make foo, plus some other adaptions (stubs, etc.)
+ <tschwinge> Does that sound about right, or am I missing something fundamental?
+ <youpi> I actually don't know what a git submodule permits :)
+ <youpi> looks like a good thing for this, yes
+ <tschwinge> Unfortunately I can't allocate much time at the moment to work on this. :-/
+ <youpi> well, as long as I know where we're going, I can know how to package stuff in Debian
+ <tschwinge> That sounds like a plan to me. libpthread -> glibc as submodule.
+ <youpi> (note: actually, the interface between glibc and the libpthread is the responsibility of the libpthread: it gives a couple of .c files to be shipped in libc.so)
diff --git a/open_issues/performance.mdwn b/open_issues/performance.mdwn
new file mode 100644
index 00000000..2fd34621
--- /dev/null
+++ b/open_issues/performance.mdwn
@@ -0,0 +1,40 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+*Performance analysis* ([[!wikipedia Performance_analysis desc="Wikipedia
+article"]]) deals with analyzing how computing resources are used for
+completing a specified task.
+
+[[Profiling]] is one relevant tool.
+
+In [[microkernel]]-based systems, there is generally a considerable [[RPC]]
+overhead.
+
+In a multi-server system, it is non-trivial to implement a high-performance
+[[I/O System|community/gsoc/project_ideas/disk_io_performance]].
+
+When providing [[faq/POSIX_compatibility]] (and similar interfaces) in an
+environemnt that doesn't natively implement these interfaces, there may be a
+severe performance degradation. For example, in this [[`fork` system
+call|/glibc/fork]]'s case.
+
+[[Unit_testing]] can be used for tracking performance regressions.
+
+---
+
+ * [[Degradation]]
+
+ * [[fork]]
+
+ * [[IPC_virtual_copy]]
+
+ * [[microbenchmarks]]
+
+ * [[microkernel_multi-server]]
diff --git a/open_issues/performance/degradation.mdwn b/open_issues/performance/degradation.mdwn
new file mode 100644
index 00000000..8c9a087c
--- /dev/null
+++ b/open_issues/performance/degradation.mdwn
@@ -0,0 +1,48 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta title="Degradation of GNU/Hurd ``system performance''"]]
+
+[[!tag open_issue_gnumach open_issue_hurd]]
+
+[[!toc]]
+
+
+# Email, `id:"87mxg2ahh8.fsf@kepler.schwinge.homeip.net"` (bug-hurd, 2011-07-25, Thomas Schwinge)
+
+> Building a certain GCC configuration on a freshly booted system: 11 h.
+> Remove build tree, build it again (2nd): 12 h 50 min. Huh. Remove build
+> tree, reboot, build it again (1st): back to 11 h. Remove build tree, build
+> it again (2nd): 12 h 40 min. Remove build tree, build it again (3rd): 15 h.
+
+IRC, freenode, #hurd, 2011-07-23:
+
+ < antrik> tschwinge: yes, the system definitely gets slower with
+ time. after running for a couple of weeks, it needs at least twice as
+ long to open a new shell for example
+ < antrik> I don't know whether this is only related to swap usage, or there
+ are some serious fragmentation issues
+ < braunr> antrik: both could be induced by fragmentation
+
+
+# During [[IPC_virtual_copy]] testing
+
+IRC, freenode, #hurd, 2011-09-02:
+
+ <manuel> interestingly, running it several times has made the performance
+ drop quite much (i'm getting 400-500MB/s with 1M now, compared to nearly
+ 800 fifteen minutes ago)
+ <braunr> manuel: i observed the same behaviour
+ [...]
+
+
+# IRC, freenode, #hurd, 2011-09-22
+
+See [[/open_issues/pagers]], IRC, freenode, #hurd, 2011-09-22.
diff --git a/open_issues/performance/fork.mdwn b/open_issues/performance/fork.mdwn
new file mode 100644
index 00000000..5ceb6455
--- /dev/null
+++ b/open_issues/performance/fork.mdwn
@@ -0,0 +1,37 @@
+[[!meta copyright="Copyright © 2010, 2011 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_glibc open_issue_hurd]]
+
+Our [[`fork` implementation|glibc/fork]] is nontrivial.
+
+To do: hard numbers.
+[[Microbenchmarks]]?
+
+
+# Windows / Cygwin
+
+ * <http://www.google.com/search?q=cygwin+fork>
+
+ * <http://www.redhat.com/support/wpapers/cygnus/cygnus_cygwin/architecture.html>
+
+ In particular, *5.6. Process Creation*.
+
+ * <http://archive.gamedev.net/community/forums/topic.asp?topic_id=360290>
+
+ * <http://cygwin.com/cgi-bin/cvsweb.cgi/src/winsup/cygwin/how-cygheap-works.txt?cvsroot=src>
+
+ > Cygwin has recently adopted something called the "cygwin heap". This is
+ > an internal heap that is inherited by forked/execed children. It
+ > consists of process specific information that should be inherited. So
+ > things like the file descriptor table, the current working directory, and
+ > the chroot value live there.
+
+ * <http://www.perlmonks.org/?node_id=588994>
diff --git a/open_issues/performance/io_system/binutils_ld_64ksec.mdwn b/open_issues/performance/io_system/binutils_ld_64ksec.mdwn
new file mode 100644
index 00000000..359d5fee
--- /dev/null
+++ b/open_issues/performance/io_system/binutils_ld_64ksec.mdwn
@@ -0,0 +1,50 @@
+[[!meta copyright="Copyright © 2010, 2011 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_hurd]]
+
+This one may be considered as a testcase for [[I/O system
+optimization|community/gsoc/project_ideas/disk_io_performance]].
+
+It is taken from the [[binutils testsuite|binutils]],
+`ld/ld-elf/sec64k.exp`, where this
+test may occasionally [[trigger a timeout|binutils#64ksec]]. It is
+extracted from cdf7c161ebd4a934c9e705d33f5247fd52975612 sources, 2010-10-24.
+
+ $ wget -O - http://www.gnu.org/software/hurd/open_issues/performance/io_system/binutils_ld_64ksec/test.tar.xz | xz -d | tar -x
+ $ cd test/
+ $ \time ./ld-new.stripped -o dump dump?.o dump??.o
+ 0.00user 0.00system 2:46.11elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k
+ 0inputs+0outputs (0major+0minor)pagefaults 0swaps
+
+On the idle grubber, this one repeatedly takes a few minutes wall time to
+complete successfully, contrary to a few seconds on a GNU/Linux system.
+
+While processing the object files, there is heavy interaction with the relevant
+[[hurd/translator/ext2fs]] process. Running [[hurd/debugging/rpctrace]] on
+the testee shows that (primarily) an ever-repeating series of `io_seek` and
+`io_read` is being processed. Running the testee on GNU/Linux with strace
+shows the equivalent thing (`_llseek`, `read`) -- but Linux' I/O system isn't
+as slow as the Hurd's.
+
+---
+
+IRC, freenode, #hurd, 2011-09-01:
+
+ <youpi> hum, f951 does myriads of 71->io_seek_request (32768 0) = 0 32768
+ <youpi> no wonder it's slow
+ <youpi> unfortunately that's also what it does on linux, the system call is
+ just less costly
+ <youpi> apparently gfortran calls io_seek for, like, every token of the
+ sourced file
+ <youpi> (fgetpos actually, but that's the same)
+ <youpi> and it is indeed about 10 times slower under Xen for some reason
+
+[[!tag open_issue_xen]]
diff --git a/open_issues/performance/io_system/binutils_ld_64ksec/test.tar.xz b/open_issues/performance/io_system/binutils_ld_64ksec/test.tar.xz
new file mode 100644
index 00000000..6d7c606c
--- /dev/null
+++ b/open_issues/performance/io_system/binutils_ld_64ksec/test.tar.xz
Binary files differ
diff --git a/open_issues/performance/io_system/clustered_page_faults.mdwn b/open_issues/performance/io_system/clustered_page_faults.mdwn
new file mode 100644
index 00000000..a3baf30d
--- /dev/null
+++ b/open_issues/performance/io_system/clustered_page_faults.mdwn
@@ -0,0 +1,162 @@
+[[!meta copyright="Copyright © 2011 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_gnumach open_issue_hurd]]
+
+[[community/gsoc/project_ideas/disk_io_performance]].
+
+[[!toc]]
+
+
+# IRC, freenode, #hurd, 2011-02-16
+
+ <braunr> exceptfor the kernel, everything in an address space is
+ represented with a VM object
+ <braunr> those objects can represent anonymous memory (from malloc() or
+ because of a copy-on-write)
+ <braunr> or files
+ <braunr> on classic Unix systems, these are files
+ <braunr> on the Hurd, these are memory objects, backed by external pagers
+ (like ext2fs)
+ <braunr> so when you read a file
+ <braunr> the kernel maps it from ext2fs in your address space
+ <braunr> and when you access the memory, a fault occurs
+ <braunr> the kernel determines it's a region backed by ext2fs
+ <braunr> so it asks ext2fs to provide the data
+ <braunr> when the fault is resolved, your process goes on
+ <etenil> does the faul occur because Mach doesn't know how to access the
+ memory?
+ <braunr> it occurs because Mach intentionnaly didn't back the region with
+ physical memory
+ <braunr> the MMU is programmed not to know what is present in the memory
+ region
+ <braunr> or because it's read only
+ <braunr> (which is the case for COW faults)
+ <etenil> so that means this bit of memory is a buffer that ext2fs loads the
+ file into and then it is remapped to the application that asked for it
+ <braunr> more or less, yes
+ <braunr> ideally, it's directly written into the right pages
+ <braunr> there is no intermediate buffer
+ <etenil> I see
+ <etenil> and as you told me before, currently the page faults are handled
+ one at a time
+ <etenil> which wastes a lot of time
+ <braunr> a certain amount of time
+ <etenil> enough to bother the user :)
+ <etenil> I've seen pages have a fixed size
+ <braunr> yes
+ <braunr> use the PAGE_SIZE macro
+ <etenil> and when allocating memory, the size that's asked for is rounded
+ up to the page size
+ <etenil> so if I have this correctly, it means that a file ext2fs provides
+ could be split into a lot of pages
+ <braunr> yes
+ <braunr> once in memory, it is managed by the page cache
+ <braunr> so that pages more actively used are kept longer than others
+ <braunr> in order to minimize I/O
+ <etenil> ok
+ <braunr> so a better page cache code would also improve overall performance
+ <braunr> and more RAM would help a lot, since we are strongly limited by
+ the 768 MiB limit
+ <braunr> which reduces the page cache size a lot
+ <etenil> but the problem is that reading a whole file in means trigerring
+ many page faults just for one file
+ <braunr> if you want to stick to the page clustering thing, yes
+ <braunr> you want less page faults, so that there are less IPC between the
+ kernel and the pager
+ <etenil> so either I make pages bigger
+ <etenil> or I modify Mach so it can check up on a range of pages for faults
+ before actually processing
+ <braunr> you *don't* change the page size
+ <etenil> ah
+ <etenil> that's hardware isn't it?
+ <braunr> in Mach, yes
+ <etenil> ok
+ <braunr> and usually, you want the page size to be the CPU page size
+ <etenil> I see
+ <braunr> current CPU can support multiple page sizes, but it becomes quite
+ hard to correctly handle
+ <braunr> and bigger page sizes mean more fragmentation, so it only suits
+ machines with large amounts of RAM, which isn't the case for us
+ <etenil> ok
+ <etenil> so I'll try the second approach then
+ <braunr> that's what i'd recommand
+ <braunr> recommend*
+ <etenil> ok
+
+
+# IRC, freenode, #hurd, 2011-02-16
+
+ <antrik> etenil: OSF Mach does have clustered paging BTW; so that's one
+ place to start looking...
+ <antrik> (KAM ported the OSF code to gnumach IIRC)
+ <antrik> there is also an existing patch for clustered paging in libpager,
+ which needs some adaptation
+ <antrik> the biggest part of the task is probably modifying the Hurd
+ servers to use the new interface
+ <antrik> but as I said, KAM's code should be available through google, and
+ can serve as a starting point
+
+<http://lists.gnu.org/archive/html/bug-hurd/2010-06/msg00023.html>
+
+
+# IRC, freenode, #hurd, 2011-07-22
+
+ <braunr> but concerning clustered pagins/outs, i'm not sure it's a mach
+ interface limitation
+ <braunr> the external memory pager interface does allow multiple pages to
+ be transfered
+ <braunr> isn't it an internal Mach VM problem ?
+ <braunr> isn't it simply the page fault handler ?
+ <antrik> braunr: are you sure? I was under the impression that changing the
+ pager interface was among the requirements...
+ <antrik> hm... I wonder whether for pageins, it could actually be handled
+ in the pages instead of Mach... though this wouldn't work for pageouts,
+ so probably not very helpful
+ <antrik> err... in the pagers
+ <braunr> antrik: i'm almost sure
+ <braunr> but i've be proven wrong many times, so ..
+ <braunr> there are two main facts that lead me to think this
+ <braunr> 1/
+ http://www.gnu.org/software/hurd/gnumach-doc/Memory-Objects-and-Data.html#Memory-Objects-and-Data
+ says lengths are provided and doesn't mention the limitation
+ <braunr> 2/ when reading about UVM, one of the major improvements (between
+ 10 and 30% of global performance depending on the benchmarks) was
+ implementing the madvise semantics
+ <braunr> and this didn't involve a new pager interface, but rather a new
+ page fault handler
+ <antrik> braunr: hm... the interface indeed looks like it can handle
+ multiple pages in both directions... perhaps it was at the Hurd level
+ where the pager interface needs to be modified, not the Mach one?...
+ <braunr> antrik: would be nice wouldn't it ? :)
+ <braunr> antrik: more probably the page fault handler
+
+
+# IRC, freenode, #hurd, 2011-09-28
+
+ <slpz> antrik: I've just recovered part of my old multipage I/O work
+ <slpz> antrik: I intend to clean and submit it after finishing the changes
+ to the pageout system.
+ <antrik> slpz: oh, great!
+ <antrik> didn't know you worked on multipage I/O
+ <antrik> slpz: BTW, have you checked whether any of the work done for GSoC
+ last year is any good?...
+ <antrik> (apart from missing copyright assignments, which would be a
+ serious problem for the Hurd parts...)
+ <slpz> antrik: It was seven years ago, but I did:
+ http://www.mail-archive.com/bug-hurd@gnu.org/msg10285.html :-)
+ <slpz> antrik: Sincerely, I don't think the quality of that code is good
+ enough to be considered... but I think it was my fault as his mentor for
+ not correcting him soon enough...
+ <antrik> slpz: I see
+ <antrik> TBH, I feel guilty myself, for not asking about the situation
+ immediately when he stopped attending meetings...
+ <antrik> slpz: oh, you even already looked into vm_pageout_scan() back then
+ :-)
diff --git a/open_issues/performance/io_system/read-ahead.mdwn b/open_issues/performance/io_system/read-ahead.mdwn
new file mode 100644
index 00000000..b6851edd
--- /dev/null
+++ b/open_issues/performance/io_system/read-ahead.mdwn
@@ -0,0 +1,301 @@
+[[!meta copyright="Copyright © 2011 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_gnumach open_issue_hurd]]
+
+[[community/gsoc/project_ideas/disk_io_performance]]
+
+IRC, #hurd, freenode, 2011-02-13:
+
+ <etenil> youpi: Would libdiskfs/diskfs.h be in the right place to make
+ readahead functions?
+ <youpi> etenil: no, it'd rather be at the memory management layer,
+ i.e. mach, unfortunately
+ <youpi> because that's where you see the page faults
+ <etenil> youpi: Linux also provides a readahead() function for higher level
+ applications. I'll probably have to add the same thing in a place that's
+ higher level than mach
+ <youpi> well, that should just be hooked to the same common implementation
+ <etenil> the man page for readahead() also states that portable
+ applications should avoid it, but it could be benefic to have it for
+ portability
+ <youpi> it's not in posix indeed
+
+---
+
+IRC, #hurd, freenode, 2011-02-14:
+
+ <etenil> youpi: I've investigated prefetching (readahead) techniques. One
+ called DiskSeen seems really efficient. I can't tell yet if it's patented
+ etc. but I'll keep you informed
+ <youpi> don't bother with complicated techniques, even the most simple ones
+ will be plenty :)
+ <etenil> it's not complicated really
+ <youpi> the matter is more about how to plug it into mach
+ <etenil> ok
+ <youpi> then don't bother with potential pattents
+ <antrik> etenil: please take a look at the work KAM did for last year's
+ GSoC
+ <youpi> just use a trivial technique :)
+ <etenil> ok, i'll just go the easy way then
+
+ <braunr> antrik: what was etenil referring to when talking about
+ prefetching ?
+ <braunr> oh, madvise() stuff
+ <braunr> i could help him with that
+
+---
+
+[[Etenil]] is now working in this area.
+
+---
+
+IRC, freenode, #hurd, 2011-02-15
+
+ <etenil> oh, I'm looking into prefetching/readahead to improve I/O
+ performance
+ <braunr> etenil: ok
+ <braunr> etenil: that's actually a VM improvement, like samuel told you
+ <etenil> yes
+ <braunr> a true I/O improvement would be I/O scheduling
+ <braunr> and how to implement it in a hurdish way
+ <braunr> (or if it makes sense to have it in the kernel)
+ <etenil> that's what I've been wondering too lately
+ <braunr> concerning the VM, you should look at madvise()
+ <etenil> my understanding is that Mach considers devices without really
+ knowing what they are
+ <braunr> that's roughly the interface used both at the syscall() and the
+ kernel levels in BSD, which made it in many other unix systems
+ <etenil> whereas I/O optimisations are often hard disk drives specific
+ <braunr> that's true for almost any kernel
+ <braunr> the device knowledge is at the driver level
+ <etenil> yes
+ <braunr> (here, I separate kernels from their drivers ofc)
+ <etenil> but Mach also contains some drivers, so I'm going through the code
+ to find the apropriate place for these improvements
+ <braunr> you shouldn't tough the drivers at all
+ <braunr> touch
+ <etenil> true, but I need to understand how it works before fiddling around
+ <braunr> hm
+ <braunr> not at all
+ <braunr> the VM improvement is about pagein clustering
+ <braunr> you don't need to know how pages are fetched
+ <braunr> well, not at the device level
+ <braunr> you need to know about the protocol between the kernel and
+ external pagers
+ <etenil> ok
+ <braunr> you could also implement pageout clustering
+ <etenil> if I understand you well, you say that what I'd need to do is a
+ queuing system for the paging in the VM?
+ <braunr> no
+ <braunr> i'm saying that, when a page fault occurs, the kernel should
+ (depending on what was configured through madvise()) transfer pages in
+ multiple blocks rather than one at a time
+ <braunr> communication with external pagers is already async, made through
+ regular ports
+ <braunr> which already implement message queuing
+ <braunr> you would just need to make the mapped regions larger
+ <braunr> and maybe change the interface so that this size is passed
+ <etenil> mmh
+ <braunr> (also don't forget that page clustering can include pages *before*
+ the page which caused the fault, so you may have to pass the start of
+ that region too)
+ <etenil> I'm not sure I understand the page fault thing
+ <etenil> is it like a segmentation error?
+ <etenil> I can't find a clear definition in Mach's manual
+ <braunr> ah
+ <braunr> it's a fundamental operating system concept
+ <braunr> http://en.wikipedia.org/wiki/Page_fault
+ <etenil> ah ok
+ <etenil> I understand now
+ <etenil> so what's currently happening is that when a page fault occurs,
+ Mach is transfering pages one at a time and wastes time
+ <braunr> sometimes, transferring just one page is what you want
+ <braunr> it depends on the application, which is why there is madvise()
+ <braunr> our rootfs, on the other hand, would benefit much from such an
+ improvement
+ <braunr> in UVM, this optimization is account for around 10% global
+ performance improvement
+ <braunr> accounted*
+ <etenil> not bad
+ <braunr> well, with an improved page cache, I'm sure I/O would matter less
+ on systems with more RAM
+ <braunr> (and another improvement would make mach support more RAM in the
+ first place !)
+ <braunr> an I/O scheduler outside the kernel would be a very good project
+ IMO
+ <braunr> in e.g. libstore/storeio
+ <etenil> yes
+ <braunr> but as i stated in my thesis, a resource scheduler should be as
+ close to its resource as it can
+ <braunr> and since mach can host several operating systems, I/O schedulers
+ should reside near device drivers
+ <braunr> and since current drivers are in the kernel, it makes sens to have
+ it in the kernel too
+ <braunr> so there must be some discussion about this
+ <etenil> doesn't this mean that we'll have to get some optimizations in
+ Mach and have the same outside of Mach for translators that access the
+ hardware directly?
+ <braunr> etenil: why ?
+ <etenil> well as you said Mach contains some drivers, but in principle, it
+ shouldn't, translators should do disk access etc, yes?
+ <braunr> etenil: ok
+ <braunr> etenil: so ?
+ <etenil> well, let's say if one were to introduce SATA support in Hurd,
+ nothing would stop him/her to do so with a translator rather than in Mach
+ <braunr> you should avoid the term translator here
+ <braunr> it's really hurd specific
+ <braunr> let's just say a user space task would be responsible for that
+ job, maybe multiple instances of it, yes
+ <etenil> ok, so in this case, let's say we have some I/O optimization
+ techniques like readahead and I/O scheduling within Mach, would these
+ also apply to the user-space task, or would they need to be
+ reimplemented?
+ <braunr> if you have user space drivers, there is no point having I/O
+ scheduling in the kernel
+ <etenil> but we also have drivers within the kernel
+ <braunr> what you call readahead, and I call pagein/out clustering, is
+ really tied to the VM, so it must be in Mach in any case
+ <braunr> well
+ <braunr> you either have one or the other
+ <braunr> currently we have them in the kernel
+ <braunr> if we switch to DDE, we should have all of them outside
+ <braunr> that's why such things must be discussed
+ <etenil> ok so if I follow you, then future I/O device drivers will need to
+ be implemented for Mach
+ <braunr> currently, yes
+ <braunr> but preferrably, someone should continue the work that has been
+ done on DDe so that drivers are outside the kernel
+ <etenil> so for the time being, I will try and improve I/O in Mach, and if
+ drivers ever get out, then some of the I/O optimizations will need to be
+ moved out of Mach
+ <braunr> let me remind you one of the things i said
+ <braunr> i said I/O scheduling should be close to their resource, because
+ we can host several operating systems
+ <braunr> now, the Hurd is the only system running on top of Mach
+ <braunr> so we could just have I/O scheduling outside too
+ <braunr> then you should consider neighbor hurds
+ <braunr> which can use different partitions, but on the same device
+ <braunr> currently, partitions are managed in the kernel, so file systems
+ (and storeio) can't make good scheduling decisions if it remains that way
+ <braunr> but that can change too
+ <braunr> a single storeio representing a whole disk could be shared by
+ several hurd instances, just as if it were a high level driver
+ <braunr> then you could implement I/O scheduling in storeio, which would be
+ an improvement for the current implementation, and reusable for future
+ work
+ <etenil> yes, that was my first instinct
+ <braunr> and you would be mostly free of the kernel internals that make it
+ a nightmare
+ <etenil> but youpi said that it would be better to modify Mach instead
+ <braunr> he mentioned the page clustering thing
+ <braunr> not I/O scheduling
+ <braunr> theseare really two different things
+ <etenil> ok
+ <braunr> you *can't* implement page clustering outside Mach because Mach
+ implements virtual memory
+ <braunr> both policies and mechanisms
+ <etenil> well, I'd rather think of one thing at a time if that's alright
+ <etenil> so what I'm busy with right now is setting up clustered page-in
+ <etenil> which need to be done within Mach
+ <braunr> keep clustered page-outs in mind too
+ <braunr> although there are more constraints on those
+ <etenil> yes
+ <etenil> I've looked up madvise(). There's a lot of documentation about it
+ in Linux but I couldn't find references to it in Mach (nor Hurd), does it
+ exist?
+ <braunr> well, if it did, you wouldn't be caring about clustered page
+ transfers, would you ?
+ <braunr> be careful about linux specific stuff
+ <etenil> I suppose not
+ <braunr> you should implement at least posix options, and if there are
+ more, consider the bsd variants
+ <braunr> (the Mach VM is the ancestor of all modern BSD VMs)
+ <etenil> madvise() seems to be posix
+ <braunr> there are system specific extensions
+ <braunr> be careful
+ <braunr> CONFORMING TO POSIX.1b. POSIX.1-2001 describes posix_madvise(3)
+ with constants POSIX_MADV_NORMAL, etc., with a behav‐ ior close to that
+ described here. There is a similar posix_fadvise(2) for file access.
+ <braunr> MADV_REMOVE, MADV_DONTFORK, MADV_DOFORK, MADV_HWPOISON,
+ MADV_MERGEABLE, and MADV_UNMERGEABLE are Linux- specific.
+ <etenil> I was about to post these
+ <etenil> ok, so basically madvise() allows tasks etc. to specify a usage
+ type for a chunk of memory, then I could apply the relevant I/O
+ optimization based on this
+ <braunr> that's it
+ <etenil> cool, then I don't need to worry about knowing what the I/O is
+ operating on, I just need to apply the optimizations as advised
+ <etenil> that's convenient
+ <etenil> ok I'll start working on this tonight
+ <etenil> making a basic readahead shouldn't be too hard
+ <braunr> readahead is a misleading name
+ <etenil> is pagein better?
+ <braunr> applies to too many things, doesn't include the case where
+ previous elements could be prefetched
+ <braunr> clustered page transfers is what i would use
+ <braunr> page prefetching maybe
+ <etenil> ok
+ <braunr> you should stick to something that's already used in the
+ literature since you're not inventing something new
+ <etenil> yes I've read a paper about prefetching
+ <etenil> ok
+ <etenil> thanks for your help braunr
+ <braunr> sure
+ <braunr> you're welcome
+ <antrik> braunr: madvise() is really the least important part of the
+ picture...
+ <antrik> very few applications actually use it. but pretty much all
+ applications will profit from clustered paging
+ <antrik> I would consider madvise() an optional goody, not an integral part
+ of the implementation
+ <antrik> etenil: you can find some stuff about KAM's work on
+ http://www.gnu.org/software/hurd/user/kam.html
+ <antrik> not much specific though
+ <etenil> thanks
+ <antrik> I don't remember exactly, but I guess there is also some
+ information on the mailing list. check the archives for last summer
+ <antrik> look for Karim Allah Ahmed
+ <etenil> antrik: I disagree, madvise gives me a good starting point, even
+ if eventually the optimisations should run even without it
+ <antrik> the code he wrote should be available from Google's summer of code
+ page somewhere...
+ <braunr> antrik: right, i was mentioning madvise() because the kernel (VM)
+ interface is pretty similar to the syscall
+ <braunr> but even a default policy would be nice
+ <antrik> etenil: I fear that many bits were discussed only on IRC... so
+ you'd better look through the IRC logs from last April onwards...
+ <etenil> ok
+
+ <etenil> at the beginning I thought I could put that into libstore
+ <etenil> which would have been fine
+
+ <antrik> BTW, I remembered now that KAM's GSoC application should have a
+ pretty good description of the necessary changes... unfortunately, these
+ are not publicly visible IIRC :-(
+
+---
+
+IRC, freenode, #hurd, 2011-02-16
+
+ <etenil> braunr: I've looked in the kernel to see where prefetching would
+ fit best. We talked of the VM yesterday, but I'm not sure about it. It
+ seems to me that the device part of the kernel makes more sense since
+ it's logically what manages devices, am I wrong?
+ <braunr> etenil: you are
+ <braunr> etenil: well
+ <braunr> etenil: drivers should already support clustered sector
+ read/writes
+ <etenil> ah
+ <braunr> but yes, there must be support in the drivers too
+ <braunr> what would really benefit the Hurd mostly concerns page faults, so
+ the right place is the VM subsystem
+
+[[clustered_page_faults]]
diff --git a/open_issues/performance/ipc_virtual_copy.mdwn b/open_issues/performance/ipc_virtual_copy.mdwn
new file mode 100644
index 00000000..9708ab96
--- /dev/null
+++ b/open_issues/performance/ipc_virtual_copy.mdwn
@@ -0,0 +1,395 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+IRC, freenode, #hurd, 2011-09-02:
+
+ <slpz> what's the usual throughput for I/O operations (like "dd
+ if=/dev/zero of=/dev/null") in one of those Xen based Hurd machines
+ (*bber)?
+ <braunr> good question
+ <braunr> slpz: but don't use /dev/zero and /dev/null, as they don't have
+ anything to do with true I/O operations
+ <slpz> braunr: in fact, I want to test the performance of IPC's virtual
+ copy operations
+ <braunr> ok
+ <slpz> braunr: sorry, the "I/O" was misleading
+ <braunr> use bs=4096 then i guess
+ <slpz> bs > 2k
+ <braunr> ?
+ <slpz> braunr: everything about 2k is copied by vm_map_copyin/copyout
+ <slpz> s/about/above/
+ <slpz> braunr: MiG's stubs check for that value and generate complex (with
+ out_of_line memory) messages if datalen is above 2k, IIRC
+ <braunr> ok
+ <braunr> slpz: found it, thanks
+ <tschwinge> tschwinge@strauss:~ $ dd if=/dev/zero of=/dev/null bs=4k & p=$!
+ && sleep 10 && kill -s INFO $p && sleep 1 && kill $p
+ <tschwinge> [1] 13469
+ <tschwinge> 17091+0 records in
+ <tschwinge> 17090+0 records out
+ <tschwinge> 70000640 bytes (70 MB) copied, 17.1436 s, 4.1 MB/s
+ <tschwinge> Note, however 10 s vs. 17 s!
+ <tschwinge> And this is slow compared to heal hardware:
+ <tschwinge> thomas@coulomb:~ $ dd if=/dev/zero of=/dev/null bs=4k & p=$! &&
+ sleep 10 && kill -s INFO $p && sleep 1 && kill $p
+ <tschwinge> [1] 28290
+ <tschwinge> 93611+0 records in
+ <tschwinge> 93610+0 records out
+ <tschwinge> 383426560 bytes (383 MB) copied, 9.99 s, 38.4 MB/s
+ <braunr> tschwinge: is the first result on xen vm ?
+ <tschwinge> I think so.
+ <braunr> :/
+ <slpz> tschwinge: Thanks! Could you please try with a higher block size,
+ something like 128k or 256k?
+ <tschwinge> strauss is on a machine that also hosts a buildd, I think.
+ <braunr> oh ok
+ <pinotree> yes, aside either rossini or mozart
+ <tschwinge> And I can confirm that with dd if=/dev/zero of=/dev/null bs=4k
+ running, a parallel sleep 10 takes about 20 s (on strauss).
+
+[[open_issues/time]]
+
+ <braunr> slpz: i'll set up xen hosts soon and can try those tests while
+ nothing else runs to have more accurate results
+ <tschwinge> tschwinge@strauss:~ $ dd if=/dev/zero of=/dev/null bs=256k &
+ p=$! && sleep 10 && kill -s INFO $p && sleep 1 && kill $p
+ <tschwinge> [1] 13482
+ <tschwinge> 4566+0 records in
+ <tschwinge> 4565+0 records out
+ <tschwinge> 1196687360 bytes (1.2 GB) copied, 13.6751 s, 87.5 MB/s
+ <braunr> slpz: gains are logarithmic beyond the page size
+ <tschwinge> thomas@coulomb:~ $ dd if=/dev/zero of=/dev/null bs=256k & p=$!
+ && sleep 10 && kill -s INFO $p && sleep 1 && kill $p
+ <tschwinge> [1] 28295
+ <tschwinge> 6335+0 records in
+ <tschwinge> 6334+0 records out
+ <tschwinge> 1660420096 bytes (1.7 GB) copied, 9.99 s, 166 MB/s
+ <tschwinge> This time a the sleep 10 decided to take 13.6 s.
+ ``Interesting.''
+ <slpz> tschwinge: Thanks again. The results for the Xen machine are not bad
+ though. I can't obtain a throughput over 50MB/s with KVM.
+ <tschwinge> slpz: Want more data (bs)? Just tell.
+ <braunr> slpz: i easily get more than that
+ <braunr> slpz: what buffer size do you use ?
+ <slpz> tschwinge: no, I just wanted to see if Xen has an upper limit beyond
+ KVM's. Thank you.
+ <slpz> braunr: I try with different sizes until I find the maximum
+ throughput for a certain amount of requests (count)
+ <slpz> braunr: are you working with KVM?
+ <braunr> yes
+ <braunr> slpz: my processor is a model name : Intel(R) Core(TM)2 Duo
+ CPU E7500 @ 2.93GHz
+ <braunr> Linux silvermoon 2.6.32-5-amd64 #1 SMP Tue Jun 14 09:42:28 UTC
+ 2011 x86_64 GNU/Linux
+ <braunr> (standard amd64 squeeze kernel)
+ <slpz> braunr: and KVM's version?
+ <braunr> squeeze (0.12.5)
+ <braunr> bbl
+ <gnu_srs> 212467712 bytes (212 MB) copied, 9.95 s, 21.4 MB/s on kvm for me!
+ <slpz> gnu_srs: which block size?
+ <gnu_srs> 4k, and 61.7 MB/s with 256k
+ <slpz> gnu_srs: could you try with 512k and 1M?
+ <gnu_srs> 512k: 56.0 MB/s, 1024k: 40.2 MB/s Looks like the peak is around a
+ few 100k
+ <slpz> gnu_srs: thanks!
+ <slpz> I've just obtained 1.3GB/s with bs=512k on other (newer) machine
+ <braunr> on which hw/vm ?
+ <slpz> I knew this is a cpu-bound test, but I couldn't imagine faster
+ processors could make this difference
+ <slpz> braunr: Intel(R) Core(TM) i5 CPU 650 @ 3.20GHz
+ <slpz> braunr: KVM
+ <braunr> ok
+ <braunr> how much time did you wait before reading the result ?
+ <slpz> that was 20x times better than the same test on my Intel(R)
+ Core(TM)2 Duo CPU T7500 @ 2.20GHz
+ <slpz> braunr: I've repeated the test with a fixed "count"
+ <gnu_srs> My box is: Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz: Max
+ is 67 MB/s around 140k block size
+ <braunr> yes but how much time did dd run ?
+ <gnu_srs> 10 s plus/minus a few fractions of a second,
+ <braunr> try waiting 30s
+ <slpz> braunr: didn't check, let me try again
+ <braunr> my kvm peaks at 130 MiB/s with bs 512k / 1M
+ <gnu_srs> 2029690880 bytes (2.0 GB) copied, 30.02 s, 67.6 MB/s, bs=140k
+ <braunr> gnu_srs: i'm very surprised with slpz's result of 1.3 GiB/s
+ <slpz> braunr: over 60 s running, same performance
+ <braunr> nice
+ <braunr> i wonder what makes it so fast
+ <braunr> how much cache ?
+ <gnu_srs> Me too, I cannot get better values than around 67 MB/s
+ <braunr> gnu_srs: same questions
+ <slpz> braunr: 4096KB, same as my laptop
+ <braunr> slpz: l2 ? l3 ?
+ <gnu_srs> kvm: cache=writeback, CPU: 4096 KB
+ <braunr> gnu_srs: this has nothing to do with the qemu option, it's about
+ the cpu
+ <slpz> braunr: no idea, it's the first time I touch this machine. I going
+ to see if I find the model in processorfinder
+ <braunr> under my host linux system, i get a similar plot, that is,
+ performance drops beyond bs=1M
+ <gnu_srs> braunr: OK, bu I gave you the cache size too, same as slpz.
+ <braunr> i wonder what dd actually does
+ <braunr> read() and writes i guess
+ <slpz> braunr: read/write repeatedly, nothing fancy
+ <braunr> slpz: i don't think it's a good test for virtual copy
+ <braunr> io_read_request, vm_deallocate, io_write_request, right
+ <braunr> slpz: i really wonder what it is about i5 that improves speed so
+ much
+ <slpz> braunr: me too
+ <slpz> braunr: L2: 2x256KB, L3: 4MB
+ <slpz> and something calling "SmartCache"
+ <gnu_srs> slpz: where did you find these values?
+ <slpz> gnu_srs: ark.intel.com and wikipedia
+ <gnu_srs> aha, cpuinfo just gives cache size.
+ <slpz> that "SmartCache" thing seems to be just L2 cache sharing between
+ cores. Shouldn't make a different since we're using only one core, and I
+ don't see KVM hooping between them.
+ <manuel> with bs=256k: 7004487680 bytes (7.0 GB) copied, 10 s, 700 MB/s
+ <manuel> (qemu/kvm, 3 * Intel(R) Xeon(R) E5504 2GHz, cache size 4096 KB)
+ <slpz> manuel: did you try with 512k/1M?
+ <manuel> bs=512k: 7730626560 bytes (7.7 GB) copied, 10 s, 773 MB/s
+ <manuel> bs=1M: 7896825856 bytes (7.9 GB) copied, 10 s, 790 MB/s
+ <slpz> manuel: those are pretty good numbers too
+ <braunr> xeon processor
+ <gnu_srs> lshw gave me: L1 Cache 256KiB, L2 cache 4MiB
+ <slpz> sincerely, I've never seen Hurd running this fast. Just checked
+ "uname -a" to make sure I didn't take the wrong image :-)
+ <manuel> for bs=256k, 60s: 40582250496 bytes (41 GB) copied, 60 s, 676 MB/s
+ <braunr> slpz: i think you can assume processor differences alter raw
+ copies too much to get any valuable results about virtual copy operations
+ <braunr> you need a specialized test program
+ <manuel> and bs=512k, 60s, 753 MB/s
+ <slpz> braunr: I'm using the mach_perf suite from OSFMach to do the
+ "serious" testing. I just wanted a non-synthetic test to confirm the
+ readings.
+
+[[!taglink open_issue_gnumach]] -- have a look at *mach_perf*.
+
+ <braunr> manuel: how much cache ? 2M ?
+ <braunr> slpz: ok
+ <braunr> manuel: hmno, more i guess
+ <manuel> braunr: /proc/cpuinfo says cache size : 4096 KB
+ <braunr> ok
+ <braunr> manuel: performance should drop beyond bs=2M
+ <braunr> but that's not relevant anyway
+ <gnu_srs> Linux: bs=1M, 10.8 GB/s
+ <slpz> I think this difference is too big to be only due to a bigger amount
+ of CPU cycles...
+ <braunr> slpz: clearly
+ <slpz> gnu_srs: your host system has 64 or 32 bits?
+ <slpz> braunr: I'm going to investigate a bit
+ <slpz> but this accidental discovery just made my day. We're able to run
+ Hurd at decent speeds on newer hardware!
+ <braunr> slpz: what result do you get with the same test on your host
+ system ?
+ <manuel> interestingly, running it several times has made the performance
+ drop quite much (i'm getting 400-500MB/s with 1M now, compared to nearly
+ 800 fifteen minutes ago)
+
+[[Degradataion]].
+
+ <slpz> braunr: probably an almost infinite throughput, but I don't consider
+ that a valid test, since in Linux, the write operation to "/dev/null"
+ doesn't involve memory copying/moving
+ <braunr> manuel: i observed the same behaviour
+ <gnu_srs> slpz: Host system is 64 bit
+ <braunr> slpz: it doesn't on the hurd either
+ <braunr> slpz: (under 2k, that is)
+ <braunr> over*
+ <slpz> braunr: humm, you're right, as the null translator doesn't "touch"
+ the memory, CoW rules apply
+ <braunr> slpz: the only thing which actually copies things around is dd
+ <braunr> probably by simply calling read()
+ <braunr> which gets its result from a VM copy operation, but copies the
+ content to the caller provided buffer
+ <braunr> then vm_deallocate() the data from the storeio (zero) translator
+ <braunr> if storeio isn't too dumb, it doesn't even touch the transfered
+ buffer (as anonymous vm_map()ped memory is already cleared)
+
+[[!taglink open_issue_documentation]]
+
+ <braunr> so this is a good test for measuring (profiling?) our ipc overhead
+ <braunr> and possibly the vm mapping operations (which could partly explain
+ why the results get worse over time)
+ <braunr> manuel: can you run vminfo | wc -l on your gnumach process ?
+ <slpz> braunr: Yes, unless some special situation apply, like the source
+ address/offset being unaligned, or if the translator decides to return
+ the result in a different buffer (which I assume is not the case for
+ storeio/zero)
+ <manuel> braunr: 35
+ <braunr> slpz: they can't be unaligned, the vm code asserts that
+ <braunr> manuel: ok, this is normal
+ <slpz> braunr: address/offset from read()
+ <braunr> slpz: the caller provided buffer you mean ?
+ <slpz> braunr: yes, and the offset of the memory_object, if it's a pager
+ based translator
+ <braunr> slpz: highly unlikely, the compiler chooses appropriate alignments
+ for such buffers
+ <slpz> braunr: in those cases, memcpy is used over vm_copy
+ <braunr> slpz: and the glibc memcpy() optimized versions can usually deal
+ with that
+ <braunr> slpz: i don't get your point about memory objects
+ <braunr> slpz: requests on memory objects always have aligned values too
+ <slpz> braunr: sure, but can't deal with the user requesting non
+ page-aligned sizes
+ <braunr> slpz: we're considering our dd tests, for which we made sure sizes
+ were page aligned
+ <slpz> braunr: oh, I was talking in a general sense, not just in this dd
+ tests, sorry
+ <slpz> by the way, dd on the host tops at 12 GB/s with bs=2M
+ <braunr> that's consistent with our other results
+ <braunr> slpz: you mean, even on your i5 processor with 1.3 GiB/s on your
+ hurd kvm ?
+ <slpz> braunr: yes, on the GNU/Linux which is running as host
+ <braunr> slpz: well that's not consistent
+ <slpz> braunr: consistent with what?
+ <braunr> slpz: i get roughly the same result on my host, but ten times less
+ on my hurd kvm
+ <braunr> slpz: what's your kernel/kvm versions ?
+ <slpz> 2.6.32-5-amd64 (debian's build) 0.12.5
+ <braunr> same here
+ <braunr> i'm a bit clueless
+ <braunr> why do i only get 130 MiB/s where you get 1.3 .. ? :)
+ <slpz> well, on my laptop, where Hurd on KVM tops on 50 MB/s, Linux gets a
+ bit more than 10 GB/s
+ <braunr> see
+ <braunr> slpz: reduce bs to 256k and test again if you have time please
+ <slpz> braunr: on which system?
+ <braunr> slpz: the fast one
+ <braunr> (linux host)
+ <slpz> braunr: Hurd?
+ <slpz> ok
+ <slpz> 12 GB/s
+ <braunr> i get 13.3
+ <slpz> same for 128k, only at 64k starts dropping
+ <slpz> maybe, on linux we're being limited by memory speed, while on Hurd's
+ this test is (much) more CPU-bound?
+ <braunr> slpz: maybe
+ <braunr> too bad processor stalls aren't easy to measure
+ <slpz> braunr: that's very true. It's funny when you read a paper which
+ measures performance by cycles on an old RISC processor. That's almost
+ impossible to do (with reliability) nowadays :-/
+ <slpz> I wonder which throughput can achieve Hurd running bare-metal on
+ this machine...
+ <antrik> both the Xeon and the i5 use cores based on the Nehalem
+ architecture
+ <antrik> apparently Nehalem is where Intel first introduces nested page
+ tables
+ <antrik> which pretty much explains the considerably lower overhead of VM
+ magic
+ <cjuner> antrik, what are nested page tables? (sounds like the 4-level page
+ tables we already have on amd64, or 2-level or 3-level on x86 pae)
+ <antrik> page tables were always 2-level on x86
+ <antrik> that's unrelated
+ <antrik> nested page tables means there is another layer of address
+ translation, so the VMM can do it's own translation and doesn't care what
+ the guest system does => no longer has to intercept all page table
+ manipulations
+ <braunr> antrik: do you imply it only applies to virtualized systems ?
+ <antrik> braunr: yes
+ <slpz> antrik: Good guess. Looks like Intel's EPT are doing the trick by
+ allowing the guest OS deal with its own page faults
+ <slpz> antrik: next monday, I'll try disabling EPT support in KVM on that
+ machine (the fast one). That should confirm your theory empirically.
+ <slpz> this also means that there're too many page faults, as we should be
+ doing virtual copies of memory that is not being accessed
+ <slpz> and looking at how the value of "page faults" in "vmstat" increases,
+ shows that page faults are directly proportional to the number of pages
+ we are asking from the translator
+ <slpz> I've also tried doing a long read() directly, to be sure that "dd"
+ is not doing something weird, and it shows the same behaviour.
+ <braunr> slpz: dd does copy buffers
+ <braunr> slpz: i told you, it's not a good test case for pure virtual copy
+ evaluation
+ <braunr> antrik: do you know if xen benefits from nested page tables ?
+ <antrik> no idea
+
+[[!taglink open_issue_xen]]
+
+ <slpz> braunr: but my small program doesn't, and still provokes a lot of
+ page faults
+ <braunr> slpz: are you certain it doesn't ?
+ <slpz> braunr: looking at google, it looks like recent Xen > 3.4 supports
+ EPT
+ <braunr> ok
+ <braunr> i'm ordering my new server right now, core i5 :)
+ <slpz> braunr: at least not explicitily. I need to look at MiG stubs again,
+ I don't remember if they do something weird.
+ <antrik> braunr: sandybridge or nehalem? :-)
+ <braunr> antrik: no idea
+ <antrik> does it tell a model number?
+ <braunr> not yet
+ <braunr> but i don't have a choice for that, so i'll order it first, check
+ after
+ <antrik> hehe
+ <antrik> I'm not sure it makes all that much difference anyways for a
+ server... unless you are running it at 100% load ;-)
+ <braunr> antrik: i'm planning on running xen guests suchs as new buildd
+ <antrik> hm... note though that some of the nehalem-generation i5s were
+ dual-core, while all the new ones are quad
+ <braunr> it's a quad
+ <antrik> the newer generation has better performance per GHz and per
+ Watt... but considering that we are rather I/O-limited in most cases, it
+ probably won't make much difference
+ <antrik> not sure whether there are further virtualisation improvements
+ that could be relevant...
+ <braunr> buildds spend much time running gcc, so even such improvements
+ should help
+ <braunr> there, server ordered :)
+ <braunr> antrik: model name : Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz
+
+IRC, freenode, #hurd, 2011-09-06:
+
+ <slpz> youpi: what machines are being used for buildd? Do you know if they
+ have EPT/RVI?
+ <youpi> we use PV Xen there
+ <slpz> I think Xen could also take advantage of those technologies. Not
+ sure if only in HVM or with PV too.
+ <youpi> only in HVM
+ <youpi> in PV it does not make sense: the guest already provides the
+ translated page table
+ <youpi> which is just faster than anything else
+
+IRC, freenode, #hurd, 2011-09-09:
+
+ <antrik> oh BTW, for another data point: dd zero->null gets around 225 MB/s
+ on my lowly 1 GHz Pentium3, with a blocksize of 32k
+ <antrik> (but only half of that with 256k blocksize, and even less with 1M)
+ <antrik> the system has been up for a while... don't know whether it's
+ faster on a freshly booted one
+
+IRC, freenode, #hurd, 2011-09-15:
+
+ <sudoman>
+ http://www.reddit.com/r/gnu/comments/k68mb/how_intelamd_inadvertently_fixed_gnu_hurd/
+ <sudoman> so is the dd command pointed to by that article a measure of io
+ performance?
+ <antrik> sudoman: no, not really
+ <antrik> it's basically the baseline of what is possible -- but the actual
+ slowness we experience is more due to very unoptimal disk access patterns
+ <antrik> though using KVM with writeback caching does actually help with
+ that...
+ <antrik> also note that the title of this post really makes no
+ sense... nested page tables should provide similar improvements for *any*
+ guest system doing VM manipulation -- it's not Hurd-specific at all
+ <sudoman> ok, that makes sense. thanks :)
+
+IRC, freenode, #hurd, 2011-09-16:
+
+ <slpz> antrik: I wrote that article (the one about How AMD/Intel fixed...)
+ <slpz> antrik: It's obviously a bit of an exaggeration, but it's true that
+ nested pages supposes a great improvement in the performance of Hurd
+ running on virtual machines
+ <slpz> antrik: and it's Hurd specific, as this system is more affected by
+ the cost of page faults
+ <slpz> antrik: and as the impact of virtualization on the performance is
+ much higher than (almost) any other OS.
+ <slpz> antrik: also, dd from /dev/zero to /dev/null it's a measure on how
+ fast OOL IPC is.
diff --git a/open_issues/performance/microbenchmarks.mdwn b/open_issues/performance/microbenchmarks.mdwn
new file mode 100644
index 00000000..de3a54b7
--- /dev/null
+++ b/open_issues/performance/microbenchmarks.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+Microbenchmarks may give useful hints, or they may not.
+
+<http://www.ibm.com/developerworks/java/library/j-jtp02225.html>
diff --git a/open_issues/performance/microkernel_multi-server.mdwn b/open_issues/performance/microkernel_multi-server.mdwn
new file mode 100644
index 00000000..111d2b88
--- /dev/null
+++ b/open_issues/performance/microkernel_multi-server.mdwn
@@ -0,0 +1,47 @@
+[[!meta copyright="Copyright © 2011 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_documentation]]
+
+Performance issues due to the microkernel/multi-server system architecture?
+
+IRC, freenode, #hurd, 2011-07-26
+
+ < CTKArcher> I read that, because of its microkernel+servers design, the
+ hurd was slower than a monolithic kernel, is that confirmed ?
+ < youpi> the hurd is currently slower than current monolithic kernels, but
+ it's not due to the microkernel + servers design
+ < youpi> the microkernel+servers design makes the system call path longer
+ < youpi> but you're bound by disk and network speed
+ < youpi> so the extra overhead will not hurt so much
+ < youpi> except dumb applications keeping doing system calls all the time
+ of course, but they are usually considered bogus
+ < braunr> there may be some patterns (like applications using pipes
+ extensively, e.g. git-svn) which may suffer from the design, but still in
+ an acceptable range
+ < CTKArcher> so, you are saying that disk and network are more slowing the
+ system than the longer system call path and because of that, it wont
+ really matter ?
+ < youpi> braunr: they should sitll be fixed because they'll suffer (even if
+ less) on monolithic kernels
+ < youpi> CTKArcher: yes
+ < braunr> yes
+ < CTKArcher> mmh
+ < youpi> CTKArcher: you might want to listen to AST's talk at fosdem 10
+ iirc, about minix
+ < youpi> they even go as far as using an IPC for each low-level in/out
+ < youpi> for security
+ < braunr> this has been expected for a long time
+ < braunr> which is what motivated research in microkernels
+ < CTKArcher> I've already downloaded the video :)
+ < youpi> and it has been more and more true with faster and faster cpus
+ < braunr> but in 95, processors weren't that fast compared to other
+ components as they are now
+ < youpi> while disk/mem haven't evovled so fast
diff --git a/open_issues/perl.mdwn b/open_issues/perl.mdwn
new file mode 100644
index 00000000..45680328
--- /dev/null
+++ b/open_issues/perl.mdwn
@@ -0,0 +1,51 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta title="Foster Perl programming"]]
+
+[[!template id=note text="""**2011-08**. A dependency loop in Debian GNU/Hurd
+currently leads to: *Could not perform immediate configuration on 'perl'*.
+Easy workaround:
+
+ # apt-get install perl perl-base -o APT::Immediate-Configure=false
+
+"""]]
+
+
+Resolve issues uncovered by Perl's test suite, and enable Hurd-specific
+features.
+
+There is a [[!FF_project 264]][[!tag bounty]] on this task.
+
+---
+
+
+# Part I
+
+First, make the language functional, have its test suite pass without errors.
+
+
+## Original [[community/GSoC]] Task Description
+
+[[!inline pages=community/gsoc/project_ideas/perl_python feeds=no]]
+
+---
+
+
+# Part II
+
+Next, Hurd-specific features can be added. Add an interface to the
+language/environment for being able to do [[RPC]] calls, in order to program
+[[hurd/translator]]s natively in Perl.
+
+
+## Original [[community/GSoC]] Task Description
+
+[[!inline pages=community/gsoc/project_ideas/language_bindings feeds=no]]
diff --git a/open_issues/perlmagick.mdwn b/open_issues/perlmagick.mdwn
new file mode 100644
index 00000000..8a57a8fd
--- /dev/null
+++ b/open_issues/perlmagick.mdwn
@@ -0,0 +1,107 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+[[!debbug 557771]]
+
+# Bisecting
+
+ * Good
+
+ * 7:6.4.0.9.dfsg1-1 (2008-04-22) built from
+ <http://snapshot.debian.net/package/imagemagick>
+ * 6.4.0-11
+ * 6.4.1-0
+ * 6.4.1-1
+
+ * Bad
+
+ * 6.4.1-2
+ * 6.4.1-5
+ * 6.4.1-10
+ * 6.4.2-10
+ * 6.4.5-9
+ * 6.4.8-0 / Debian 6.4.8.0-1
+ * 6.5.5-3 / Debian 6.5.5.3-1
+ * 6.5.8.3-1 from Debian unstable (also in testing)
+ * Svn trunk (r848)
+
+
+# 6.4.1-1 -> 6.4.1-2
+
+ -CFLAGS = -g -O2 -Wall -W -pthread
+ +CFLAGS = -fopenmp -g -O2 -Wall -W -pthread
+ -GOMP_LIBS =
+ +GOMP_LIBS = -lgomp
+ -LDFLAGS = -lfreetype -lz
+ +LDFLAGS = -fopenmp -lfreetype -lz
+
+Etc.
+
+ +/usr/include/pthread.h:
+ +
+ +/usr/include/pthread/pthread.h:
+ +
+ +/usr/include/bits/spin-lock-inline.h:
+ +
+ +/usr/include/bits/cancelation.h:
+ +
+ +/usr/include/bits/pthread-np.h:
+ +
+ +/usr/lib/gcc/i486-gnu/4.4.2/include/omp.h:
+
+
+# State as of 2011-03-06
+
+freenode, #hurd channel, 2011-03-06:
+
+ <pinotree> tschwinge: (speaking on working perl, how did it en with that
+ "(glibc) double free" crash with perl?)
+ <pinotree> *end
+ <tschwinge> I think I remember I suspected it's a libgomp (!) issue in the
+ end. I have not yet continued working on that.
+ <pinotree> libogmp? looks like you know more than me, then :)
+ <youpi> tschwinge: oh, I'm interested
+ <youpi> I know a bit about libgomp :)
+ <tschwinge> I bisected this down to where Imagemagick added -fgomp (or
+ whatever it is). And then the perl library (Imagemagick.pm?) which loads
+ the imagemagick.so segfaulted.
+ <tschwinge> ImageMagick did this change in the middle of a x.x.x.something
+ release..
+ <tschwinge> My next step would have been to test whether libgomp works at
+ all for us.
+ <youpi> ./usr/sbin/debootstrap:DEBOOTSTRAP_CHECKSUM_FIELD="SHA$SHA_SIZE"
+ <youpi> erf
+ <youpi> so they switched to another checksum
+ <youpi> but we don't have that one on all of our packages :)
+ <youpi> tschwinge:
+ <youpi> buildd@bach:~$ OMP_NUM_THREADS=2 ./test
+ <youpi> I'm 0x1
+ <youpi> I'm 0x3
+ <youpi> libgomp works at least a bit
+ <tschwinge> OK.
+ <pinotree> i guess we should hope the working bits don't stop at that point
+ ;)
+ <tschwinge> If open_issues/perlmagick is to be believed a diff of 6.4.1-1
+ and 6.4.1-2 should tell what exactly was changed.
+ <tschwinge> Oh!
+ <tschwinge> I even have it on the page already! ;-)
+ <tschwinge> -fopenmp
+ <youpi> I've tried the pragmas that imagemagick uses
+ <youpi> they work
+ <tschwinge> Might be the issue fixed itself?
+ <youpi> I don't know, it's the latest libc here
+ <youpi> (and latest hurd, to be uploaded)
+
+
+# Other
+
+[[!debbug 551017]]
+
+Code in Svn: `+ 1` missing to account for both `/` and `\0`.
diff --git a/open_issues/pfinet.mdwn b/open_issues/pfinet.mdwn
new file mode 100644
index 00000000..7aadd736
--- /dev/null
+++ b/open_issues/pfinet.mdwn
@@ -0,0 +1,27 @@
+[[!meta copyright="Copyright © 2011 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_hurd]]
+
+In certain situations, pfinet spawns more and more threads,
+apparently without any bounds.
+
+The thread creation happens in bursts rather than continuously.
+According to a backtrace in GDB,
+all the threads are functional and waiting for client requests.
+(The bursts are getting smaller as the number of threads rises,
+but probably only because the enormous number of existing threads
+slows down processing in general.)
+
+This can be triggered quite reliably by X clients running on the Hurd system,
+connected to an X server on another machine over TCP,
+and transferring fairly large amounts of data.
+The easiest way to reproduce it I found is launching freeciv-gtk2,
+pressing the "new game" button, and then simply waiting for a while.
diff --git a/open_issues/pfinet_vs_system_time_changes.mdwn b/open_issues/pfinet_vs_system_time_changes.mdwn
new file mode 100644
index 00000000..714c8784
--- /dev/null
+++ b/open_issues/pfinet_vs_system_time_changes.mdwn
@@ -0,0 +1,42 @@
+[[!meta copyright="Copyright © 2010, 2011 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_hurd]]
+
+IRC, unknown channel, unknown date.
+
+ <grey_gandalf> I did a sudo date...
+ <grey_gandalf> and the machine hangs
+
+This was very likely a misdiagnosis:
+
+IRC, freenode, #hurd, 2011-03-25
+
+ <tschwinge> antrik: I suspect it'S some timing stuff in pfinet that perhaps
+ uses absolute time, and somehow wildely gets confused?
+ <antrik> tschwinge: BTW, pfinet doesn't actually die I think -- it just
+ drops open connections...
+ <antrik> perhaps it thinks they timed out
+ <tschwinge> antrik: Isn't the translator restarted instead?
+ <antrik> don't think so
+ <antrik> when pfinet actually dies, I also loose the NFS mounts, which
+ doesn't happen in this case
+ <antrik> hehe "... and the machine hangs"
+ <antrik> he didn't bother to check that the machine is perfectly fine, only
+ the SSH connection got dropped
+ <tschwinge> Ah, I see. So it'S perhaps indeed simply closes TCP
+ connections that have been without data for ``too long''?
+ <antrik> yeah, that's my guess
+ <antrik> my clock is speeding, so ntpdate sets it in the past
+ <antrik> perhaps there is some math that concludes the connection have been
+ inactive for -200 seconds, which (unsigned) is more than any timeout :-)
+ <tschwinge> (The other way round, you might likely get some integer
+ wrap-around, and thus the same result.)
+ <tschwinge> Yes.
diff --git a/open_issues/pflocal_reauth.mdwn b/open_issues/pflocal_reauth.mdwn
new file mode 100644
index 00000000..839e383d
--- /dev/null
+++ b/open_issues/pflocal_reauth.mdwn
@@ -0,0 +1,39 @@
+[[!meta copyright="Copyright © 2011 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_glibc open_issue_hurd]]
+
+IRC, freenode, #hurd, 2011-04-02
+
+ <pinotree> youpi: i'm playing with pflocal, and noticing that a simple C
+ executable doesn't trigger reauthenticate
+ <pinotree> youpi: i've put a debug output (to file) in S_io_reauthenticate,
+ and with a simple C test (which uses unix sockets) it isn't called
+ <youpi> pinotree: it seems pflocal should return FS_RETRY_REAUTH in
+ retry_type
+ <youpi> to make glibc call reauthentication
+ <pinotree> pflocal?
+ <youpi> yes, in the dir_lookup handler
+ <pinotree> isn't that ext2fs?
+ <youpi> libtrivfs had dir_lookup() too
+ <youpi> trivfs_check_open_hook can be used to tweak its behavior
+ <pinotree> ah, missed that pflocal was using libtrivfs, sorry
+ <youpi> there are probably very few translators which don't use one of the
+ lib*fs :)
+ <antrik> pinotree: what are you trying to do with pflocal?
+ <pinotree> local socket scredentials (SCM_CREDS)
+ <antrik> ah
+ <antrik> don't really know what that is, but I remember reading some
+ mention of it ;-)
+
+---
+
+See also [[pflocal_socket_credentials_for_local_sockets]] and
+[[sendmsg_scm_creds]].
diff --git a/open_issues/pflocal_socket_credentials_for_local_sockets.mdwn b/open_issues/pflocal_socket_credentials_for_local_sockets.mdwn
new file mode 100644
index 00000000..dfdc213c
--- /dev/null
+++ b/open_issues/pflocal_socket_credentials_for_local_sockets.mdwn
@@ -0,0 +1,46 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+IRC, freenode, #hurd, 2011-03-28
+
+[[!tag open_issue_hurd]]
+
+ <pinotree> basically, i'm trying to implement socket credentials for local
+ sockets, and i guessed doing it in pflocal would be the appropriate place
+ <pinotree> what i thought was filling the cmsg data for MSG_CRED at
+ S_socket_recv() call
+ <pinotree> in case i missed it, would there be a way to "identify" the
+ other side of the port associated to the sock_user of that call?
+ <pochu> pinotree: that's needed by dbus right? cool! (and I don't know)
+ <pinotree> (yes, and gamin)
+ <youpi> pinotree: you have them already, they're just not stored
+ <youpi> see S_io_reauthenticate
+ <youpi> Throw away the ids we went through all that trouble to get...
+ <youpi> (comment)
+ * pinotree looks
+ <pinotree> hm, and who calls that rpc?
+ <youpi> everybody
+ <youpi> since that's how ext2fs knows the permission to apply, for instance
+ <pinotree> ah, i was referring to the reauthenticate of pflocal, not
+ auth_server_authenticate()
+ <youpi> that's what I'm saying
+ <youpi> see __hurd_file_name_lookup_retry, which is the very internal part
+ of open()
+ <youpi> it calls io_reauthenticate()
+ <youpi> to authenticate itself to the underlying translator of the opened
+ node
+ <pinotree> youpi: so, hm, could be an option make the result of pflocal's
+ S_io_reauthenticate cached in the sock_user struct?
+ <youpi> yes
+ <pinotree> nice thanks, i will try that change first
+
+---
+
+See also [[pflocal_reauth]] and [[sendmsg_scm_creds]].
diff --git a/open_issues/pflocal_x_slowness.mdwn b/open_issues/pflocal_x_slowness.mdwn
new file mode 100644
index 00000000..9bc18128
--- /dev/null
+++ b/open_issues/pflocal_x_slowness.mdwn
@@ -0,0 +1,16 @@
+[[!meta copyright="Copyright © 2010 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_hurd]]
+
+IRC, #hurd, 2010-08-10
+
+ <antrik> m1k11e: I think the X slowness is a problem in pflocal, i.e. the translator handling UNIX domain sockets
+ <antrik> (X clients communicate with a local X server using domain sockets)
diff --git a/open_issues/phython.mdwn b/open_issues/phython.mdwn
new file mode 100644
index 00000000..62f70be0
--- /dev/null
+++ b/open_issues/phython.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+Go through James Morrison's (phython) pages, <http://hurd.dyndns.org/>, (via
+Intrernet Archive Wayback Machine), and archive / hunt down what's still
+interesting.
diff --git a/open_issues/placement_of_virtual_memory_regions.mdwn b/open_issues/placement_of_virtual_memory_regions.mdwn
new file mode 100644
index 00000000..39478f20
--- /dev/null
+++ b/open_issues/placement_of_virtual_memory_regions.mdwn
@@ -0,0 +1,103 @@
+[[!meta copyright="Copyright © 2011 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_gnumach]]
+
+# IRC, freenode, #hurd, 2011-07-13
+
+ <braunr> does anyone know if posix (or mach) has requirements or a policy
+ about the placement of allocations of virtual space ?
+ <braunr> a policy such as bottom-up ?
+ <braunr> or "find lowest vailable space" ?
+ <jkoenig> braunr, you mean for vm_allocate ? You may want to check mmap()
+ but I can't remember ever coming across such a thing (except maybe
+ wrt. alignment)
+ <braunr> i was wondering how e.g. libraries are linked near the stack
+ (possibly at slightly random addresses)
+ <braunr> does the linker walk the address space entries top-down ?
+ <braunr> jkoenig: i didn't see anything either in the mach interface, but i
+ may have missed something
+ <braunr> jkoenig: most systems i've been studying mark the vm regions for
+ the heap and the stack
+ <braunr> but for mach, the stack is just allocated virtual memory at the
+ top of the space
+ <braunr> so the "placement policy" is either completely outside the kernel,
+ or relies on its interface
+ <jkoenig> braunr, actually I'm surprised Mach would even dictate where the
+ (one?) stack should be, I would have expected it to be the job of
+ whatever creates a thread to make this kind of choice
+ <braunr> jkoenig: threads have their own stacks, under the responsibility
+ of the user trhead implementation
+ <braunr> but a program usually needs a stack even before it runs
+ <braunr> i had to set one to bootstrap modules in v0.1
+ <braunr> but i wonder if it's just for bootstrapping (and then propagated
+ by fork()) or part of the interface
+ <braunr> but this doesn't matter much actually, the allocation mechanism i
+ have in mind can actually support multiple policies
+ <jkoenig> I would guess the former (just for bootstrapping), since a new
+ task has no thread, and a new thread has no state. (but I'm no expert)
+ <braunr> i think so
+ <braunr> i'll have a look at the exec server
+ <braunr> jkoenig: did the previous implementation of procfs show task maps
+ ?
+ <jkoenig> braunr, I don't think so, I would probably have felt compelled to
+ include them in the new one if it did :-)
+ <braunr> hmmm
+ <braunr> we definitely need that
+ <jkoenig> is there a compelling use case you think about in particular?
+ <braunr> yes
+ <braunr> i failed to understand how gnumach behaved wrt ipc right spaces
+
+[[rework_gnumach_ipc_spaces]]
+
+ <braunr> and when i did, i found out my work was impossible to integrate
+ <jkoenig> "ipc right spaces" ?
+ <braunr> each task have an ipc space, which contains righs
+ <braunr> rights
+ <braunr> the ipc translation layer converts space/name and space/port
+ tuples to rights
+ <braunr> i wanted to replace the splay tree with a radix tree but didn't
+ get how the ipc table made the splay tree almost unused
+ <braunr> i don't want to make this kind of mistake again, so i'd like a
+ clear and detailed view of the vm spaces
+ <braunr> (it's only compelling for myself, all right)
+ <braunr> but
+ <braunr> we have vminfo
+ <braunr> rbraun@nordrassil:~$ vminfo $$ | wc -l
+ <braunr> 1046
+ <braunr> oh my
+ <braunr> in comparison, a firefox instance has less than 500 on linux
+ <jkoenig> you mean there's some kind of port name table (or functional
+ equivalent) which actually resides in the task's memory? (and that's what
+ shows up at the beginning of the address space with prot=0?)
+ <braunr> jkoenig: sorry for being confusing, it's not that at all
+ <jkoenig> (btw feel free to tell me to just go read the source or whatever)
+ <braunr> jkoenig: don't worry
+ <jkoenig> braunr, no problem
+ <braunr> jkoenig: i just compared a previous attempt to improve gnumach
+ which failed because i didn't have enough insight of the inner workings
+ of the kernel
+ <braunr> jkoenig: i really want to miss as little as possible on the vm
+ part, so having detailed information about what actually happens on
+ running hurd systems is something i need
+
+
+# IRC, freenode, #hurd, 2011-07-24
+
+ <braunr> oh btw, i noticed there are many mappings below the program text
+ <braunr> most notably, the stack
+ <braunr> except for special applications like wine, could this break
+ anything ?
+ <braunr> i also wonder how libraries are mapped, because there is nothing
+ to perform top-down allocations
+ <braunr> which means if the region below the program text is exhausted,
+ libraries could be mapped right after the heap
+ <youpi> it shouldn't break anything except things like wine & libgc, yes
+ <braunr> which could make malloc() fail :/
diff --git a/open_issues/populate_hurd_git_with_submodules_etc.mdwn b/open_issues/populate_hurd_git_with_submodules_etc.mdwn
new file mode 100644
index 00000000..c89b95e9
--- /dev/null
+++ b/open_issues/populate_hurd_git_with_submodules_etc.mdwn
@@ -0,0 +1,16 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="populate hurd.git with submodules, etc."]]
+
+Populate the top-level *[Savannah]/hurd.git* with a bunch of submodules
+(various translators; everything that's intersting), have it serve as sort of a
+tested distribution (because the submodules are versioned), plus adding build
+machinery / cross-compilation support, etc.
diff --git a/open_issues/prelink.mdwn b/open_issues/prelink.mdwn
new file mode 100644
index 00000000..ad85b9e2
--- /dev/null
+++ b/open_issues/prelink.mdwn
@@ -0,0 +1,27 @@
+[[!meta copyright="Copyright © 2011 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]]
+
+The *prelink* package, as distributed via Debian unstable, does build on
+GNU/Hurd. After installing the satisfiable dependencies, use
+`dpkg-buildpackage -b -uc -d` to ignore SELinux and libc6-dev dependencies.
+
+It is unclear whether it also does work. The testsuite (run manually) does
+*FAIL* on all tests, which is due to the prelinker doing something to the
+copied `ld.so.1` so that it faults on every invocation. This does not happen
+on GNU/Linux.
+
+Not much in the prelinker is Linux-specific. `src/get.c`'s `is_ldso_soname`
+should already cover our `ld.so.1` case (and what about `ld.so`?). At the end
+of `src/arch-i386.c`, `.dynamic_linker` has to be set properly. And, in that
+file there are some Linux process VM constants, of which `REG2S` and `REG2E`
+are the only relevant in the `!exec_shield` case. Probably these need to be
+adjusted. What else?
diff --git a/open_issues/proc_server_proc_exception_raise.mdwn b/open_issues/proc_server_proc_exception_raise.mdwn
new file mode 100644
index 00000000..1d0e92a3
--- /dev/null
+++ b/open_issues/proc_server_proc_exception_raise.mdwn
@@ -0,0 +1,37 @@
+[[!meta copyright="Copyright © 2011 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_hurd]]
+
+IRC, freenode, #hurd, 2011-08-11
+
+ < youpi> in which error cases a reply port will actually have been consumed
+ by mach_msg ?
+ < youpi> it seems at least MACH_SEND_NOTIFY_IN_PROGRESS do?
+ < braunr>
+ http://www.gnu.org/software/hurd/gnumach-doc/Message-Send.html#Message-Send
+ < braunr> "These return codes imply that the message was returned to the
+ caller with a pseudo-receive operation: "
+ < braunr> isn't it what you're looking for ?
+ < youpi> well, it's hard to tell from the name
+ < youpi> I don't know what "pseudo-receiv operation" means
+ < braunr> it's described below
+ < youpi> ew
+ < braunr> it looks close enough to a normal receive to assume it consumes
+ the reply port
+ < youpi> so it's even more complex than what I thought
+ < youpi> well, no, it returns the right
+ < youpi> actually the error I'm getting is MACH_RCV_INVALID_NAME
+ < youpi> which I guess means the sending part succeeded
+ < youpi> the case at stake is proc/mgt.c: S_proc_exception_raise()
+ < youpi> when the proc_exception_raise() forward fails
+ < youpi> currently we always return 0, but if proc_exception_raise()
+ actually managed to send the message, the reply port was consumed and
+ MIG_NO_REPLY should be returned instead
diff --git a/open_issues/profiling.mdwn b/open_issues/profiling.mdwn
new file mode 100644
index 00000000..7e3c7350
--- /dev/null
+++ b/open_issues/profiling.mdwn
@@ -0,0 +1,28 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+*Profiling* ([[!wikipedia Profiling_(computer_programming) desc="Wikipedia
+article"]]) is a tool for tracing where CPU time is spent. This is usually
+done for [[performance analysis|performance]] reasons.
+
+ * [[gprof]]
+
+ Should be working, but some issues have been reported, regarding GCC spec
+ files. Should be possible to fix (if not yet done) easily.
+
+ * [[community/gsoc/project_ideas/dtrace]]
+
+ Have a look at this, integrate it into the main trees.
+
+ * [[LTTng]]
+
+ * [[SystemTap]]
+
+ * ... or some other Linux thing.
diff --git a/open_issues/pth.mdwn b/open_issues/pth.mdwn
new file mode 100644
index 00000000..12bf5098
--- /dev/null
+++ b/open_issues/pth.mdwn
@@ -0,0 +1,28 @@
+[[!meta copyright="Copyright © 2008, 2009, 2010 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]]
+
+IRC, unknown channel, unknown date.
+
+ <azeem> seems pth still doesn't work
+ <bddebian> Doesn't build or doesn't work?
+ <azeem> both
+ <azeem> some configure test keep grinding the CPU, same for the test suite
+ <azeem> which apparently runs pth_init() and never returns
+
+ <azeem> actually, pth fails to build right now
+ <azeem> pth_mctx.c:477: error: request for member '__pc' in something not a structure or union
+
+ <azeem> I know the pth test suite fails (it locks up the machine) or used to fail, so I guess porting work for pth would be needed
+ <azeem> < marcusb> from reading the pth/PORTING document, porting libpth shouldn't be too hard...
+
+ <youpi> dropped pth [from the channel's topic], as we think we know why it fails (sigaltstack is bogus)
diff --git a/open_issues/pthread_atfork.mdwn b/open_issues/pthread_atfork.mdwn
new file mode 100644
index 00000000..ac724cf0
--- /dev/null
+++ b/open_issues/pthread_atfork.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 2011 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_libpthread]]
+
+pthread_atfork is not actually implemented, making some programs fail. Code can probably be borrowed from nptl/sysdeps/unix/sysv/linux/register-atfork.c
diff --git a/open_issues/python.mdwn b/open_issues/python.mdwn
new file mode 100644
index 00000000..403ff8aa
--- /dev/null
+++ b/open_issues/python.mdwn
@@ -0,0 +1,47 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta title="Foster Python programming"]]
+
+Resolve issues uncovered by Python's test suite, and enable Hurd-specific
+features.
+
+There is a [[!FF_project 260]][[!tag bounty]] on this task.
+
+---
+
+
+# Part I
+
+First, make the language functional, have its test suite pass without errors.
+
+
+## Original [[community/GSoC]] Task Description
+
+[[!inline pages=community/gsoc/project_ideas/perl_python feeds=no]]
+
+
+## Analysis
+
+ * [[select_bogus_fd]]
+
+---
+
+
+# Part II
+
+Next, Hurd-specific features can be added. Add an interface to the
+language/environment for being able to do [[RPC]] calls, in order to program
+[[hurd/translator]]s natively in Python.
+
+
+## Original [[community/GSoC]] Task Description
+
+[[!inline pages=community/gsoc/project_ideas/language_bindings feeds=no]]
diff --git a/open_issues/resource_management_problems.mdwn b/open_issues/resource_management_problems.mdwn
new file mode 100644
index 00000000..8f752d61
--- /dev/null
+++ b/open_issues/resource_management_problems.mdwn
@@ -0,0 +1,86 @@
+[[!meta copyright="Copyright © 2008, 2009, 2010 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_gnumach open_issue_hurd open_issue_viengoos]]
+
+[[microkernel/Mach]] interfaces do not allow for proper resource accounting,
+when a server allocates resources on behalf of a client.
+
+Mach can't do a good job at resource management, as it doesn't have enough
+information how resources are used: which data is important and which is
+discardable, for example.
+
+These issues are what Neal Walfield is working on with his new kernel
+[[microkernel/viengoos]].
+
+
+# Kernel
+
+Inside the [[kernel]], there is commonly a need to allocate resources according
+to externally induced demand, dynamically. For example, for memory-management
+data structures (page tables), process table entries, thread control blocks,
+[[capability]] tables, incoming network packages, blocks that are read in from
+disk, the keyboard type-ahead buffer for a in-kernel keyboard driver. Some of
+these are due to actions driven by user-space requests, others are due to
+actions internal to the the kernel itself. Some of these buffers can be sized
+statically (keyboard type-ahead buffer), and are thus unproblematic. Others
+are not, and should thus be attributed to their user space entities. In the
+latter (ideal) case, all resources -- that is, including those needed inside
+the kernel -- that a user space task needs for execution are provided by itself
+(and, in turn, provided by its parent / principal), and the kernel itself does
+not need to allocate any resources dynamically out of an its own memory pool.
+This avoids issues like [[microkernel/Mach]]'s [[zalloc_panics]] upon user
+space processes allocating too many [[microkernel/mach/port]]s, for example.
+
+[[!toggleable id=fof_plos09 text="""[[!template id=note
+text="*[[fof\_plos09|microkernel/barrelfish]]*:
+{{$microkernel/barrelfish#fof_plos09}}"]]"""]]
+
+[[!toggleable id=sel4 text="""[[!template id=note
+text="[[*sel4*|microkernel/l4]]: {{$microkernel/l4#sel4}}"]]"""]]
+
+In [[!toggle id=fof_plos09 text="[fof\_plos09]"]], the authors describe in
+section 3 how they model their [[capability]] system according to [[!toggle
+id=sel4 text="[sel4]"]] using a *retype* operation that *takes an existing
+capability and produces one or more derived capabilities [...] used to create
+new kernel-level memory objects (such as page tables or execution contexts)
+from capabilities to raw regions of RAM*.
+
+This is, of course, non-trivial to implement, and also requires changing the
+[[RPC]] interfaces, for example, but it is a valid approach, a research topic.
+
+([[!taglink open_issue_documentation]]: compare this to Linux [`vmsplice`'s
+SPLICE_F_GIFT
+flag](http://www.kernel.org/doc/man-pages/online/pages/man2/vmsplice.2.html#DESCRIPTION).)
+
+IRC, freenode, #hurd, 2011-07-31
+
+ < braunr> one of the biggest problems on the hurd is that, when a client
+ makes a call, kernel (and other) resources are allocated on behalf of the
+ server performaing the requested action
+ < braunr> performing*
+ < braunr> this makes implementing scheduling and limits difficult
+ < CTKArcher> And could changing the kernel change anything to that ?
+ < braunr> yes but you'd probably need to change its interface as well
+ < braunr> iirc, the critique describes resource containers
+ < braunr> but no work has been done on the current hurd (hence the hurdng
+ attempts)
+
+
+# Further Examples
+
+ * [[hurd/critique]]
+
+ * [[IO_accounting]]
+
+ * [[translators_set_up_by_untrusted_users]], and [[pagers]]
+
+ * [[configure max command line length]]
diff --git a/open_issues/resource_management_problems/configure_max_command_line_length.mdwn b/open_issues/resource_management_problems/configure_max_command_line_length.mdwn
new file mode 100644
index 00000000..6c0a0d99
--- /dev/null
+++ b/open_issues/resource_management_problems/configure_max_command_line_length.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 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]]
+
+ <terpstra> do the buildds also crash?
+ <youpi> sometimes
+ <youpi> usually when a configure scripts tries to find out how large a
+ command line can be
+ <youpi> (thus eating all memory)
diff --git a/open_issues/resource_management_problems/io_accounting.mdwn b/open_issues/resource_management_problems/io_accounting.mdwn
new file mode 100644
index 00000000..113b965a
--- /dev/null
+++ b/open_issues/resource_management_problems/io_accounting.mdwn
@@ -0,0 +1,49 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+IRC, freenode, #hurd, 2011-07-22
+
+ <braunr> an interesting question i've had in mind for a few weeks now is
+ I/O accounting
+ <braunr> what *is* I/O on a microkernel based system ?
+ <braunr> can any cross address space transfer be classified as I/O ?
+
+IRC, freenode, #hurd, 2011-07-29
+
+ < braunr> how does the hurd account I/O ?
+ < youpi> I don't think it does
+ < youpi> not an easy task, actually
+ < youpi> since gnumach has no idea about it
+ < braunr> yes
+ < braunr> another centralization issue
+ < braunr> does network access count as I/O on linux ?
+ < youpi> no
+ < braunr> not even nfs ?
+ < youpi> else you'd get 100% for servers :)
+ < braunr> right
+ < youpi> nfs goes through vfs first
+ < braunr> i'll rephrase my question
+ < youpi> I'd need to check but I believe it can check nfs
+ < braunr> does I/O accounting occur at the vfs level or block layer ?
+ < youpi> I don't know, but I beleive vfs
+ < youpi> (at least that's how I'd do it)
+ < braunr> i don't have any more nfs box to test that :/
+ < braunr> personally i'd do it at the block layer :)
+ < youpi> well, both
+ < youpi> so e2fsck can show up too
+ < braunr> yes
+ < youpi> it's just a matter of ref counting
+ < youpi> apparently nfs doesn't account
+ < youpi> find . -printf "" doesn't show up in waitio
+ < braunr> good
+ < youpi> well, depends on the point of view
+ < youpi> as a user, you'd like to know whether your processes are stuck on
+ i/o (be it disk or net)
+ < braunr> this implies clearly defining what io is
diff --git a/open_issues/resource_management_problems/pagers.mdwn b/open_issues/resource_management_problems/pagers.mdwn
new file mode 100644
index 00000000..4c36703c
--- /dev/null
+++ b/open_issues/resource_management_problems/pagers.mdwn
@@ -0,0 +1,322 @@
+[[!meta copyright="Copyright © 2011 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_gnumach]]
+
+[[!toc]]
+
+
+# IRC, freenode, #hurd, 2011-09-14
+
+Coming from [[translators_set_up_by_untrusted_users]], 2011-09-14 discussion:
+
+ <slpz> antrik: I think a tunable option for preventing non-root users from
+ creating pagers and attaching translators could also be desirable
+ <antrik> slpz: why would you want to prevent creating pagers and attaching
+ translators?
+ <tschwinge> Preventing resource exhaustion, I guess.
+ <slpz> antrik: security and (as tschwinge says) for prevent a rouge pager
+ from exhausting the system.
+ <slpz> antrik: without the ability to use translators for non-root users,
+ Hurd can provide (almost) the same level of resource protection than
+ other *nixes
+
+See also: [[translators_set_up_by_untrusted_users]],
+[[hurd/translator/tmpfs/tmpfs_vs_defpager]].
+
+ <braunr> the hurd is about that though
+ <slpz> there should be also a limit on the number of outstanding requests
+ that a task can have, and some other easily traceable values
+ <braunr> port messages queues have limits
+ <antrik> slpz: anything can exhaust the system. there are much more basic
+ limits that are missing... and I don't see how translators or pagers are
+ special in that regard
+ <slpz> braunr: that's what I said tunable. If I don't share my computer
+ with untrusted users, I want full functionality. Otherwise, I can enable
+ that limitation
+ <slpz> braunr: but I think those limits are on reception
+ <braunr> that's a wrong solution
+ <slpz> antrik: because pagers are external memory objects, and those are
+ treated differently
+ <braunr> compared to what ?
+ <braunr> and yes, the limit is on the message queue, on reception
+ <braunr> why is that a problem ?
+ <slpz> antrik: forbidding the use of translator was for security, to avoid
+ the problem of traversing an untrusted FS
+ <slpz> braunr: compared to anonymous memory
+ <slpz> braunr: because if the limit is on reception, a task can easily do a
+ DoS against a server
+ <braunr> hm actually, the problems we have with swap handling is that
+ anonymous memory is handled in a very similar way as other objects
+ <slpz> braunr: I want to limit the number of outstanding (unprocessed
+ messages in queues) requests
+ <braunr> slpz: the solution isn't about forbidding the use of translators,
+ but changing common code (libc i guess) not to use them, they can still
+ run beside
+ <slpz> braunr: that's because, currently, the external page limit is not
+ enforced
+ <braunr> i'm also not sure about DoS attacks
+ <braunr> if i'm right, there is often one port for each managed object,
+ which usually exist per client
+ <slpz> braunr: yes, that could an option too (for translators, not for
+ pagers)
+ <braunr> i don't see how pagers wouldn't be translators on the hurd
+ <slpz> braunr: all pagers are translators, but not all translators are
+ pagers ;-)
+ <braunr> so if it works for translators, it also works for pagers
+ <slpz> braunr: it would fix the security issue, but not the resource
+ exhaustion problem, with only affects to pagers
+ <braunr> i just don't see a point in implementing resource limits before
+ even fixing other fundamental issues
+ <braunr> the only way to avoid resource exhaustion is resource limits
+ <antrik> slpz: just not following untrusted translators is much more useful
+ than forbidding them alltogether
+ <braunr> and the main problem of mach is resource accounting
+ <braunr> so first, fix that, using the critique as a starting point
+
+[[hurd/critique]].
+
+ <slpz> braunr: i'm not saying that this should be implemented right now,
+ i'm just pointing out this possibility
+ <braunr> i think we're all mostly aware of it
+ <slpz> braunr: resource accounting, as it's expressed in the critique,
+ would be wonderful, but it's just too complex IMHO
+ <braunr> it requires carefully designed changes to the interface yes
+ <slpz> to the interface, to the internals, to user space tasks...
+ <braunr> the internals wouldn't be impacted that much
+ <braunr> user space tasks would mostly include hurd servers
+ <braunr> if the changes are centralized in libraries, it should be easy to
+ provide to the servers
+
+
+# IRC, freenode, #hurd, 2011-09-22
+
+ <slpz> antrik: I've also implemented a simple resource control on dirty
+ pages and changed pageout_scan to free external pages, and only touch
+ anonymous memory if it's really needed
+ <slpz> antrik: those combined make the system work better under heavy load
+ <slpz> antrik: 1.5 GB of RAM and another 1.5 GB of swap helps a lot, too
+ :-)
+ <antrik> hm... I'm not sure what these things mean exactly TBH... but I
+ wonder whether some of these could fix the performance degradation (and
+ ultimate crash) I described recently...
+
+[[/open_issues/default_pager]], [[system performance degradation
+(?)|performance/degradation]].
+
+ <antrik> care to explain them to a noob like me?
+ <slpz> probably not. During my tests, I've noticed that, at some points,
+ the system performance starts to degrade, and this doesn't change until
+ it's restarted
+ <slpz> but I wasn't able to create a test case to reproduce the bug...
+ <slpz> antrik: Sure. First, I've changed GNU Mach to:
+ <slpz> - Classify all pages from data_supply as external, and count them
+ in vm_page_external_count (previously, this variable was always zero)
+
+[[/open_issues/mach_vm_pageout]]
+
+ <slpz> - Count all pages for which a data_unlock has been requested as
+ potentially dirty pages
+ <antrik> there is one important bit I forgot to mention in my recent
+ report: one "reliable" way to cause growing swap usage is simply
+ installing a lot of debian packages (e.g. running an apt-get upgrade)
+ <antrik> some other kinds of I/O also seem to have such an effect, but I
+ wasn't able to pinpoint specific situations
+ <slpz> - Establish a limit on how many potentially dirty pages are
+ allowed. If it's reached, a notification (right now it's just a bogus
+ m_o_data_unlock, to avoid implementing a new RPC) it's sent to the pager
+ which has generated the page fault
+ <slpz> - Establish a hard limit on those dirt pages. If it's reached,
+ threads asking for a data_unlock are blocked until someone cleans some
+ pages. This should be improved with a forced pageout, if needed.
+ <slpz> - And finally, in vm_pageout_scan, run over the inactive queue
+ searching for clean, external pages, freeing them. If it's not possible
+ to free enough pages, or if vm_page_external_count is less than 10% of
+ system's memory, the "normal" pageout is used.
+ <slpz> I need to clean up things a little, but I want to send a preliminary
+ patch to bug-hurd ASAP, to have more people testing it.
+ <slpz> antrik: Do you thing that performance degradation can be related
+ with the number of threads of your ext2fs translators?
+ <antrik> slpz: hm... I didn't watch that recently; but in the past, I
+ observe that the thread count is pretty constant after it reaches
+ something like 14000 on heavy load...
+ <antrik> err... wait, 14000 was ports :-)
+ <antrik> I doubt my system would survive 14000 threads ;-)
+ <antrik> don't remember thread count... I guess I should start watching
+ this again
+ <slpz> antrik: I was thinking that 14000 threads sound like a lot :-)
+ <slpz> what I know for sure, is that when operating with large files, the
+ deactivation of all pages of the memory object which is done after every
+ operation really hurts to performance
+ <antrik> right now my root FS has 5100 ports and a mere 71 thread... but
+ then, it's almost freshly booted :-)
+ <slpz> that's why I've just commented that operation in my code, since it's
+ not really needed anymore :-)
+ <slpz> anyway, after submitting all my pending mails to bug-hurd, I'll try
+ to hunt that bug. Sounds funny.
+ <antrik> regarding your explanation, I'm still trying to wrap my head
+ around some of the details. I must admit that I don't remember what
+ data_unlock does... or maybe I never fully understood it
+ <antrik> the limit on dirty pages is global?
+ <slpz> yes, right now it's global
+ <marcusb> I try to find the old discussion of the thread storm stuff
+ <marcusb> there was some concern about deadlocks
+ <slpz> marcusb: yes, because we were talking about putting an static limit
+ for the server threads of a translators
+ <slpz> marcusb: and that was wrong (my fault, I was even dumber back then
+ :-P)
+ <marcusb> oh boy digging in old mail is no fun. first I see mistakes in my
+ english. then I see quite complicated pager stuff I don't ever remember
+ touching. but there is a patch, and it has my name on it
+ <marcusb> I think I lost a couple of the early years of my hurd hacking :)
+ <antrik> hm... I reread the chapter on locking, and it's still above me :-(
+ <marcusb> not sure what you are talking about, but if there are any
+ specific questions...
+ <antrik> marcusb: external pager interface
+
+[[microkernel/mach/external_pager_mechanism]].
+
+ <marcusb> uuuuh ;)
+ <antrik> memory_object_lock_request(), memory_object_lock_completed(),
+ memory_object_data_unlock()
+ <marcusb> is that from the mach manual?
+ <antrik> yes
+ <antrik> I didn't really understand that part when I first read it a couple
+ of years ago, and I still don't understand it now :-(
+ <marcusb> I am sure I didn't understand it either
+ <marcusb> and maybe I missed my window :)
+ <marcusb> let's see
+ <antrik> hehe
+ <antrik> slpz: what exactly do you mean by "the pager which has generated
+ the page fault"?
+ <antrik> marcusb: essentially I'm trying to understand the explanation of
+ the changes slpz did, but there are several bits totally obscure to me
+ :-(
+ <slpz> antrik: when a I/O operation is requested to ext2fs, it maps the
+ object in question to it's own space, and then memcpy's from/to there
+ <slpz> antrik: so the translator (which is also a pager) is the one who
+ generates the page fault
+ <marcusb> yeah
+ <marcusb> antrik: it's important to understand which messages are sent by
+ the kernel to the manager and which are sent the other way
+ <marcusb> if the dest port is memory_object_t, that indicates a msg from
+ kernel to manager. if it is memory_object_control_t, it's a msg from
+ manager to kernel
+ <slpz> antrik: m_o_lock_request it's used by the pager to "settle" the
+ status of a memory object, m_o_lock_completed is the answer from the
+ kernel when the lock has been completed (only if the client has requested
+ to be notified), and m_o_data_unlock is a request from the kernel to
+ change the level of protection for a page (it's called from vm_fault.c)
+ <marcusb> slpz: but it's not pagers generating page faults, but users of
+ the memory object on the other side
+ <antrik> marcusb: well, I think the direction is clear to me... but the
+ purpose not really :-)
+ <marcusb> ie a client that mapped a file
+ <slpz> antrik: in ext2fs, all pages are initially provided to the kernel
+ (via data_supply) write protected. When a write operation is done over
+ one of those pages, a page fault it's generated, which sends a
+ m_o_data_unlock to the pager, which answers (if convenient) which a
+ page_lock decreasing the protection level
+ <marcusb> antrik: one use of lock_request is when you want to shut down
+ cleanly and want to get the dirty pages written back to you from the
+ kernel.
+ <marcusb> antrik: the other thing may be COW strategies
+ <slpz> marcusb: well, pagers and clients are in the same task for most
+ translators, like ext2fs
+ <marcusb> slpz: oh.
+ <slpz> marcusb: but yes, a read operation in a mmap'ed file would trigger
+ the fault in a client user task
+ <marcusb> slpz: I think I forgot everything about pagers :)
+ <slpz> marcusb: pager-memcpy.c is the key :-)
+ <marcusb> slpz: what becomes of the fault then? the kernel sees it's a
+ mapped memory object. will it then talk to the manager or to a pager?
+ <antrik> slpz: the translator causes the faults itself when it handles
+ io_read()/io_write() requests I suppose, as opposed to clients accessing
+ mmap()ed objects which then generate the faults?...
+ <antrik> ah, that's actually what you already said above :-)
+ <slpz> marcusb: I'm not sure what do you mean by "manager"...
+ <marcusb> manager == memory object
+ <marcusb> mh
+ <slpz> marcusb: for all external objects, it will ask to their current
+ pager
+ <marcusb> slpz: I think I am missing a couple of details, so nevermind.
+ It's starting to come back to me, but I am a bit afraid of that ;)
+ <marcusb> what I love about the Hurd is how damn readable the code is
+ <marcusb> considering it's an object system, it's so much nicer to read
+ than gtk stuff
+ <slpz> when you get the big picture, it's actually somewhat fun to see how
+ data moves around just to fulfill a simple read()
+ <marcusb> you should make a diagram!
+ <marcusb> bonus point for animated video ;)
+
+[[hurd/IO_path]].
+
+ <slpz> marcusb: heh, take a look at the hurd specific parts of glibc... I
+ cry in pain every time a do that...
+ <marcusb> slpz: oh yeah, rdwr-internal.
+ <marcusb> oh man
+ <marcusb> slpz: funny thing, I just looked at them the other day because of
+ the security issue
+ <slpz> marcusb: I think there was one, maybe a slice from someone's
+ presentation...
+ <marcusb> I think I was always confused about the pager/memobj/kernel
+ interactions
+ <slpz> marcusb: I'm barely able to read Roland's glibc code. I think it's
+ out of my reach.
+ <antrik> marcusb: I think part of the problem is confusing terminology
+ <marcusb> it's good that you are instrumenting the mach kernel to see
+ what's actually going on in there. it was a black book for me, but neal
+ too a peek and got a much better understanding of the performance issues
+ than I ever did
+ <antrik> when talking about "pager", we usually mean the process doing the
+ paging; but in mach terminology this actually seems to be the "manager",
+ while a "pager" is an individual object in the manager process... or
+ something like that ;-)
+ <marcusb> antrik: I just never took a look at the big picture. I look at
+ the parts
+ <marcusb> I knew the tail, ears, and legs of the elephant.
+ <marcusb> it's a lot of code for a beginner
+ <antrik> I never understood the distinction between "pager" and "memory
+ object" though...
+ <antrik> maybe "pager" refers to the object in the external pager, while
+ "memory object" is the part managed in Mach itself?...
+ <marcusb> memory object is a real object, to which you can send messages.
+ it's implemented in the server
+ <antrik> hm... maybe it's the other way around then ;-)
+ <marcusb> there is also the default pager
+ <marcusb> I think the pager is just another name for the process that
+ serves the memory object (default pager == memory object for anonymous
+ memory == swap)
+ <marcusb> but!
+ <marcusb> there is also libpager
+
+[[hurd/libpager]]
+
+ <marcusb> and that's a more complicated beast
+ <antrik> actually, the correct term seems to be "default memory manager"...
+ <marcusb> yeah
+ <marcusb> from mach's pov
+ <marcusb> we always called it default pager in the Hurd
+ <antrik> marcusb: problem is that "pager" is sometimes used in the Mach
+ documentation to refer to memory object ports IIRC
+ <marcusb> isn't it defpager executable?
+ <marcusb> could be
+ <marcusb> it's the same thing, really
+ <antrik> indeed, the program implementing the default memory manager is
+ called "default pager"... so the terminology is really inconsistent
+ <marcusb> the hurd's pager library is a high level abstraction for mach's
+ external memory object interface.
+ <marcusb> i wouldn't worry about it too much
+ <antrik> I never looked at libpager
+ <marcusb> you should!
+ <marcusb> it's an important beast
+ <antrik> never seemed relevant to anything I did so far...
+ <antrik> though maybe it would help understanding
+ <marcusb> it's related to what you are looking now :)
diff --git a/Hurd/ZallocPanics.mdwn b/open_issues/resource_management_problems/zalloc_panics.mdwn
index 0b00d7ec..09710022 100644
--- a/Hurd/ZallocPanics.mdwn
+++ b/open_issues/resource_management_problems/zalloc_panics.mdwn
@@ -1,3 +1,18 @@
+[[!meta copyright="Copyright © 2005, 2007, 2008, 2010 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_gnumach open_issue_hurd]]
+
+Written by antrik / Olaf Buddenhagen, last updated: 12 Apr 2007.
+
The Hurd sometimes crashes with a kernel panic saying someting like: "Panic: zalloc failed: zone map exhausted".
These panics are generally caused by some kind of kernel resource exhaustion, but there are several differnt reasons for that.
@@ -39,5 +54,3 @@ I started various other experiments with creating child processes (fork bombs),
* After opening/leaking lots of ports to /dev/null (32768 it seems), the NULL translator somehow becomes disfunctional, and a new instance is started
While most of these Observations clearly show an exhaustion of kernel memory which is not surprising, some of the oddities seem to indicate problems that might deserve further investigation.
-
--- antrik (Last update: 12 Apr 2007)
diff --git a/open_issues/rework_gnumach_ipc_spaces.mdwn b/open_issues/rework_gnumach_ipc_spaces.mdwn
new file mode 100644
index 00000000..7c66776b
--- /dev/null
+++ b/open_issues/rework_gnumach_ipc_spaces.mdwn
@@ -0,0 +1,723 @@
+[[!meta copyright="Copyright © 2011 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_gnumach]]
+
+[[!toc]]
+
+
+# IRC, freenode, #hurd, 2011-05-07
+
+ <braunr> things that are referred to as "system calls" in glibc are
+ actually RPCs to the kernel or other tasks, those RPCs have too lookup
+ port rights
+ <braunr> the main services have tens of thousands of ports, looking up one
+ is slow
+
+There is a [[!FF_project 268]][[!tag bounty]] on this task.
+
+
+# IRC, freenode, #hurd, 2011-04-23
+
+ <braunr> youpi: is there any use of the port renaming facility ?
+ <youpi> I don't know
+ <braunr> at least, did you see such use ?
+ <braunr> i wonder why mach mach_port_insert_right() lets the caller specify
+ the port name
+ <youpi> ../hurd-debian/hurd/serverboot/default_pager.c: kr =
+ mach_port_rename( default_pager_self,
+ <braunr> mach_port_rename() is used only once, in the default pager
+ <braunr> so it's not that important
+ <braunr> but mach_port_insert_right() lets userspace task decide the port
+ name value
+ <youpi> just to repeat myself again, I don't know port stuff very much :)
+ <braunr> well you know that a port denotes a right, which denotes a port
+ <youpi> yes, but I don't have any real experience with it
+ <braunr> err
+ <braunr> port name
+ <braunr> the only reason I see is that the caller, say /hurd/exec running a
+ fork()
+ <braunr> hm
+ <braunr> no, i don't even see the reason here
+ <braunr> port names should be allocated by the kernel only, like file
+ descriptors
+ <youpi> you can choose file descriptor values too
+ <braunr> really ?
+ <youpi> with dup2, yes
+ <braunr> oh
+ <braunr> hm
+ <braunr> what's the data structure in current unices to store file
+ descriptors ?
+ <braunr> a hash table ?
+ <youpi> I don't know
+ <braunr> i'll have to look at that
+ <braunr> FYI, i'm asking these questions because i'm thinking of reworking
+ ipc spaces
+ <braunr> i believe the use of splay trees completely destroys performance
+ of tasks with many many port names such as the root file system
+ <youpi> that can be a problem yes
+ <youpi> since there are 3 ports per opened file, and like 3 per thread too
+ <braunr> + the page cache
+ <youpi> with a few thousand opened files and threads, that makes a lot
+ <youpi> by "opened file" I meant page cache actually
+ <braunr> i saw numbers up to 30k
+ <braunr> ok
+ <youpi> on buildds I easily see 100k ports
+ <braunr> for a single task ?
+ <braunr> wow
+ <youpi> yes
+ <youpi> the page cache is 4k files
+ <braunr> so that's definitely worth the try
+ <youpi> so that already makes 12k ports
+ <youpi> and 4k is not so big
+ <braunr> it's limited to 4K ?
+ <youpi> I haven't been able to check where the 100k come from yet
+ <youpi> braunr: yas
+ <braunr> could be leaks :/
+ <youpi> yes
+ <braunr> omg, a hard limit on the page cache ..
+ <youpi> vm/vm_object.c:int vm_object_cached_max = 4000; /* may
+ be patched*/
+ <braunr> mach is really old :(
+ <youpi> I've raised it
+ <youpi> before it was 200
+ <youpi> ...
+ <braunr> oO
+ <youpi> I tried to dro pthe limit, but then I was lacking memory
+ <youpi> which I believe have fixed the other day, but I have to test again
+ <braunr> that implementation doesn't know how to deal with memory pressure
+ <youpi> yes
+ <braunr> i saw your recent changes about adding warnings in such cases
+ <braunr> so, back to ipc spaces
+ <braunr> i think splay trees 1/ can get very unbalanced easily
+ <braunr> which isn't hard to imagine
+ <braunr> and 2/ make poor usage of the cpu caches because they're BST and
+ write a lot to memory
+ <youpi> maybe you could write a patch which would dump statistics on that?
+ <braunr> that's part of the job i'm assigning to myself
+ <youpi> ok
+ <braunr> i'd like to try replacing splay trees with radix trees
+ <youpi> I can run it on the buildds
+ <youpi> buildds are very good stress-tests :)
+ <braunr> :)
+ <youpi> 22h building -> 77k ports
+ <youpi> 26h building -> 97k ports
+ <youpi> the problem is that when I add leak debugging (backtraces), I'm
+ getting out of memory :)
+ <braunr> that will be a small summer of code outside the gsoc :p
+ <braunr> :/
+ <braunr> backtraces are very consuming
+ <youpi> but that's only because of hardcoded limits
+ <youpi> I'll have to test again with bigger limits
+ <braunr> again ..
+ <braunr> evil hard limits
+ <youpi> well, actually we could as well just drop them
+ <youpi> but we'd also need to easily get statistics on zone/vm_maps usage
+ <youpi> because else we don't see leaks
+ <youpi> (except that the machine eventually crashes)
+ <braunr> hm
+ <braunr> i haven't explained why i was asking my questions actually
+ <braunr> so, i want radix trees, because they're nice
+ <braunr> they reduce the paths lengths
+ <braunr> they don't get too unbalanced (they're invariant wrt the order of
+ operations)
+ <braunr> they don't need to write to memory on lookups
+ <braunr> the only drawback is that they can create much overhead if their
+ usage pattern isn't appropriate
+ <braunr> elements in such a structure should be close, so that they share
+ common nodes
+ <youpi> the common usage pattern in ext2fs is a big bunch of ever-open
+ ports :)
+ <braunr> if there is one entry per node, it's a big waste
+ <braunr> yes
+ <youpi> there are 3, actually
+ <braunr> but the port names have low values
+ <braunr> they're allocated sequentially, beginning at 0
+ <braunr> (or 1 actually)
+ <braunr> which is perfect for radix trees
+ <youpi> yes
+ <youpi> 97989: send
+ <braunr> but if anyone can rename
+ <braunr> this introduces a new potential weakness
+ <youpi> ah, if it's just a weakness it's probably not a problem
+ <youpi> I thought it was even a no-go
+ <braunr> i think so
+ <youpi> I guess port rename is very seldom
+ <braunr> but in a future version, it would be nice not to allow port
+ renaming
+ <braunr> unless there are similar issues in current unix kernels
+ <braunr> in which case i'd say it's acceptable
+ <youpi> there are
+ <braunr> of that order ?
+ <youpi> and it'd be useful for e.g. processing
+ tracing/debugging/tweaking/whatever
+ <youpi> it's also used to hide fds from a process
+ <braunr> port renaming you mean ?
+ <youpi> you allocate them very high
+ <youpi> yes
+ <braunr> ok
+ <youpi> choosing your port name, generally
+ <youpi> to match what the process expects for instance
+ <braunr> then it would be a matter of resource limiting (which we totally
+ lack afaik)
+ <braunr> along the number of maximum open files, you would have a number of
+ maximum rights
+ <braunr> does that seem fine to you ?
+ <youpi> if done throught rlimits, sure
+ <braunr> something similar yes
+ <youpi> (_no_ PORTS_MAX ;) )
+ <braunr> oh and, in addition, i remember gnumach has a special
+ configuration of the processor in which caching is limited
+ <braunr> like write-through only
+ <youpi> didn't I fix that recently ?
+ <braunr> i don't know :)
+ <braunr> CR0=e001003b
+ <braunr> i don't think it's fixed
+ <youpi> I mean, in the git
+ <braunr> ah
+ <youpi> not in the debian package
+ <braunr> didn't tried the git version yet
+ <braunr> last time i tried (which was a long time ago), it made the kernel
+ crash
+ <braunr> have you figured why ?
+ <youpi> I'm not aware of that
+ <braunr> anyway, splay trees write a lot, and most trees write a lot even
+ at insertion/removal to rebalance
+ <youpi> braunr: Mmm, there's no clearance of CD in the kernel actually
+ <braunr> with radix trees, even if caching can't be fully enabled, it would
+ make much better use of it
+ <braunr> so if port renaming isn't a true issue, i'll choose that data
+ structure
+ <youpi> that'd probably be better yes
+ <youpi> I'm surprised by the CD, I do remember fixing something like this
+ lately
+ <braunr> there are several levels where CD can be set
+ <braunr> the processors ORs all those if i'm right
+ <braunr> to determine if caching is enabled
+ <youpi> I know
+ <braunr> ok
+ <youpi> but in my memory that was at the CR* level, precisely
+ <braunr> maybe for xen only ?
+ <youpi> no
+ <braunr> well good luck if you hunt that one, i'm off, see you :)
+ <youpi> braunr: ah, no, it was the PGE flag that I had fixed
+
+ <antrik> braunr: explicit port naming is used for example to pass some
+ initial ports to a new task at well-known places IIRC
+ <antrik> braunr: but these tend to be low numbers, so I don't see a problem
+ there
+ <antrik> (I'm not familiar with radix trees... why would high numbers be a
+ problem?)
+
+ <youpi> braunr: iirc the ipc space is limited to ~192k ports
+
+ <braunr> antrik: in most cases i've seen, the insert_right() call is used
+ on task_self()
+ <braunr> and if there really are special ports (like the bootstrap or
+ device ports), they should have special names
+ <braunr> IIRC, these ports are given through command line expansion by the
+ kernel at boot time
+ <braunr> but it seems reasonable to think of port renaming as a potentially
+ useful feature
+ <braunr> antrik: the problem with radix trees isn't them being high, it's
+ them being sparse
+ <braunr> you get the most efficient trees when entries have keys that are
+ close to each other
+ <braunr> because radix trees are a type of tries (the path in the tree is
+ based on the elements composing the key)
+ <braunr> so the more common prefixes you have, the less external nodes you
+ need
+ <braunr> here, keys are port names, but they can be memory addresses or
+ offsets in memory objects (like in the page cache)
+ <braunr> the radix algorithm takes a few bits, say 4 or 6, at a time from a
+ key, and uses that as an index in a node
+ <braunr> if keys are sparse, there can be as little as one entry per node
+ <braunr> IIRC, the worst case (on entry per node with the maximum possible
+ number of nodes for a 32-bits key) is 2% entries
+ <braunr> the reste being null entries and almost-empty nodes containing
+ them
+ <braunr> so if you leave the ability to give port rights the names you
+ want, you can create such worst case trees
+ <braunr> which may consume several MiB of memory per tree
+ <braunr> tens of MiB i'd say
+ <braunr> on the other hand, in the current state, almost all hurd
+ applications use sequentially allocated port names, close to 0 (which
+ allows a nice optimization)
+ <braunr> so a radix ree would be the most efficient
+ <antrik> well, if some processes really feel they must use random numbers
+ for port names, they *ought* to be penalized ;-)
+
+
+# IRC, freenode, #hurd, 2011-04-27
+
+ <braunr> antrik: remember when you asked why high numbers would be a
+ problem with radix trees ?
+ <braunr> here is a radix tree with one entry, which key is around 5000
+ <braunr> [ 656.296412] tree height: 3
+ <braunr> [ 656.296412] index: 0, level: 0, height: 3, count: 1,
+ bitmap: 0000000000000002
+ <braunr> [ 656.296412] index: 1, level: 1, height: 2, count: 1,
+ bitmap: 0000000000004000
+ <braunr> [ 656.296412] index: 14, level: 2, height: 1, count: 1,
+ bitmap: 0000000000000080
+ <braunr> three levels, each with an external node (dynamically allocated),
+ for one entry
+ <braunr> so in the worst case of entries with keys close to the highest
+ values, the could be many external nodes with higher paths lengths than
+ when keys are close to 0
+ <braunr> which also brings the problem of port name allocation
+ <braunr> can someone with access to a buildd which has an uptime of at
+ least a few days (and did at least one build) show me the output of
+ portinfo 3 | tail ?
+ <braunr> port names are allocated linearly IIRC, like PIDs, and some parts
+ of the kernel may rely on them not being reused often
+ <braunr> but for maximum effifiency, they should be
+ <braunr> efficiency*
+ <braunr> 00:00 < braunr> can someone with access to a buildd which has an
+ uptime of at least a few days (and did at least one build) show me the
+ output of portinfo 3 | tail ?
+ <braunr> :)
+ <youpi> it's almost like wc -l
+ <youpi> 4905: receive
+ <youpi> vs 4647
+ <youpi> for /
+ <youpi> 52902: receive
+ <youpi> vs 52207
+ <youpi> for the chroot
+ <braunr> even after several builds ?
+ <braunr> and several days ?
+ <youpi> that's after 2 days
+ <youpi> it's not so many builds
+ <youpi> rossini is not so old
+ <youpi> (7h)
+ <youpi> but many builds
+ <youpi> 70927: send
+ <youpi> vs 70938
+ <braunr> ok
+ <braunr> so it seems port names are reused
+ <braunr> good
+ <youpi> yes they are clearly
+ <braunr> i think i remember a comment about why the same port name
+ shouldn't be reused too soon
+ <youpi> well, it could help catching programming errors
+ <braunr> that it helped catch bugs in applications that could
+ deallocate/reallote quickly
+ <braunr> reallocate*
+ <braunr> without carefuly synchronization
+ <braunr> careful
+ <braunr> damn, i'm tired :/
+ <youpi> but that's about debugging
+ <youpi> so we don't care about performance there
+ <braunr> yes
+ <braunr> i'll try to improve allocation performance too
+ <braunr> using e.g. bitmaps in each external node back to the root so that
+ unused slots are quickly found
+ <braunr> i thknk that's what idr does in linux
+ <antrik> braunr: idr?
+ <braunr> antrik: a data structure used to map integers to pointers
+ <braunr> http://fxr.watson.org/fxr/source/lib/idr.c?v=linux-2.6
+
+
+# IRC, freenode, #hurd, 2011-06-08
+
+ <braunr> hm, reverse space/port to name lookups also suck
+ <braunr> having separate types for simple ipc entries and splay tree
+ entries really makes many parts of the ipc code complicated
+ <braunr> and a global hash table for these operations is scary
+
+
+# IRC, freenode, #hurd, 2011-06-09
+
+ <braunr> hm nice, my radix tree code runs inside gnumach, along with the
+ original splay tree code and assertions making sure results are the same
+ <braunr> there is this "collision" thing i'm not sure to understand but
+ once this is solved, replacing the splay trees should be easy
+
+ <braunr> youpi: is there a way to easily know the number of send rights
+ associated to a port ?
+ <youpi> portinfo ?
+ <braunr> portinfo gives information in a space
+ <braunr> but this is specific to a port
+ <braunr> is there an option for that ?
+ <youpi> -v
+ <braunr> hm ok
+ <youpi> 25: send (refs: 550)
+ <braunr> nice
+ <braunr> youpi: if you have time, could you give me the min/max/avg numbers
+ of send rights referring to the same port on buildds ?
+ <braunr> i'm trying to estimate if it's better to have space->list_of_ports
+ or port->list_of_spaces to replace the global ipc hash table
+ <braunr> the latter seems better but there could be unexpected cases on
+ machines using large amounts of resources like the buildds
+ <youpi> max is 64k
+ <youpi> min is 1 of course :)
+ <braunr> 64k
+ <braunr> then it's not what i'm looking for
+ <youpi> avg is 55
+ <braunr> isn't this the number of urefs ?
+ <youpi> I don't know
+ <braunr> hmm
+ <braunr> what i'm looking for is the number of *pure send rights* for the
+ same port
+ <braunr> i don't think portinfo can give it
+ <braunr> there can only be one such send right per task for the same port
+ <braunr> 64k would mean there are 64k tasks
+ <youpi> ok, so it's more difficult
+ <youpi> it means using -t
+ <braunr> ahh
+ <youpi> and run n^2 portinfo over the n processes
+ <braunr> i see
+ <youpi> Mmm, that will however still show any duplicate send right
+ <youpi> but then by min/max/avg, you mean, over time ?
+ <braunr> i'll change the source code, simpler
+ <youpi> e.g. min would be right after boot?
+ <braunr> min is 1
+ <youpi> 1 what ?
+ <braunr> 1 send right to a port
+ <youpi> ah, 1 for a given port
+ <braunr> yes
+ <youpi> ok, it becomes really hairy to compute, I don't hav ethe time :)
+ <braunr> avg and max are more interesting :)
+ <braunr> no worries
+ <youpi> braunr: I wouldn't be surprised that max is the number of tasks
+ <youpi> e.g. for a send port to the proc server for instance
+ <braunr> youpi: it is, but i'm not looking for potential numbers
+ <youpi> I'm not talking about a potential number, but an actual number
+ that's almost always true
+ <braunr> for one port, yes
+ <braunr> but yes, ok for max
+ <braunr> this makes choosing an appropriate data structure difficult
+
+ <antrik> braunr: actually, min number of send rights to a port is 0... but
+ I'm sure you know that already :-)
+
+ <antrik> youpi: normally each client gets a separate port. I'm not sure
+ there are any ports with send rights distributed over many tasks...
+
+ <jkoenig> antrik, what about / ?
+
+ <youpi> antrik: not necessarily
+
+ <antrik> jkoenig: not sure... isn't the "/" port authenticated to the
+ specific user?
+
+ <jkoenig> antrik, I guess so, but a single user could still have many
+ tasks.
+ <jkoenig> (wrt /)
+ <antrik> jkoenig: well, in theory the tasks having exactly the same UIDs
+ and GITs could probably share an auth token... but that's not how things
+ are handled in general
+ <antrik> at least I don't think so
+ <antrik> tasks are authenticated, not users
+ <antrik> err... GIDs :-)
+ <jkoenig> antrik, still, my quick glance to the fork() code seemed to
+ indicate the port is inherited as-is, maybe authentication happens only
+ when something is actually looked up?
+ <jkoenig> hmm "rpctrace ls -d /" does not show any authentication calls,
+ only a lookup("") on the root which returns a different port
+ <jkoenig> so I guess the root port is "deauthenticated" or something when
+ the uid of a process is changed.
+ <antrik> too bad cfhammer isn't around, he digged into all this stuff...
+ <antrik> I know that there is a mechanism which reauths all FDs when the
+ IDs of a process change
+ <antrik> but I'm not sure the "/" port uses this mechanism
+
+ <braunr> antrik: but the radix tree codee is really used as is, which means
+ no locking, no preloading before locking, all of this because simple
+ locks don't exist on UP, and because the kernel isn't preemptible
+
+ <braunr> antrik: and yes, min number is 0, but in that case you don't need
+ (space, port) -> right lookups :)
+ <braunr> antrik: or put in another way, whichever reasonable structure you
+ use, when it's empty, you don't care much
+ <braunr> which also means that the min number has actually no value here
+ <braunr> because the same applies to 1
+
+ <braunr> then what seems to take most time is forks
+ <braunr> and i hope my upcoming kernel changes will help the situation a
+ bit
+ <pinotree> what are your incoming gnumach changes about?
+ <braunr> the ipc translation layer speed
+ <braunr> which basically means operating on port names (looking them up,
+ inserting, removing, renaming, looking up send rights to a specific
+ ports) will be faster
+ <braunr> and i believe forks are (one of) the most demanding use cases wrt
+ ipc space manipulation
+ <braunr> i'm really surprised how badly the splay trees are used
+ <braunr> the worst case for this data structure is traversal
+ <braunr> and this is done in many situations
+ <braunr> leaving the tree in its worst case shape
+ <braunr> and i didn't mentioned the bunch of memory writes occurring, event
+ for things like lookups or traversals
+ <braunr> this is slow and can disrupt many cpu cache lines
+ <braunr> and when there are 10k to 100+k (e.g. in some ext2fs instances on
+ buildds), just imagine the number of operations involved in those
+ operations
+ <braunr> a simple traversal_next involves a rotation *gasp*
+ <braunr> this means potentially writing on 3 different cache lines, for
+ *one* next operation
+ <pinotree> what are you replacing that splay tree with?
+ <braunr> radix trees
+ <braunr> much shorter paths
+ <braunr> extremely few memory writes
+ <braunr> locality of reference when traversing
+ <braunr> good cache usage (as many of the top nodes are reused)
+ <braunr> the two drawbacks are 1/ memory allocation for external nodes,
+ which means the tree must be preloaded before locking
+ <braunr> and 2/ high memory overhead if the keys are sparse
+ <braunr> but this isn't the case with port names, unless someone messes it
+ up by assigning random names to many rights
+
+ <antrik> braunr: so, when will we see the first performance comparision?
+ :-)
+ <braunr> antrik: that's a topic of itself, how to compare ?
+ <braunr> antrik: the thing is, my current gnumach patches only makes
+ assertions
+ <braunr> this is the best way i found to test my tree in real life
+ conditions
+ <braunr> much cleanup is needed
+ <braunr> and what i'd like to do is to completely replace all teh
+ translation layer structures with it
+ <braunr> which means removing much code, making sure it still works as
+ expected
+ <braunr> this is tedious
+ <braunr> so one month at least
+ <antrik> braunr: comparing shouldn't be too hard... the average configure
+ script does a lot of forking, which should be a good benchmark according
+ to your observations
+ <braunr> rough estimates are easy, yes
+ <braunr> but my observations my be wrong :p
+ <antrik> braunr: well, we don't really need precise numbers...
+ <antrik> unless you need to do some kind of fine-tuning?
+ <braunr> i don't know yet
+
+
+# IRC, freenode, #hurd, 2011-06-18
+
+ < braunr> hmm, i'm having a problem with integrating my radix tree code in
+ gnumach
+ < braunr> inserting into such a tree can trigger memory allocation
+ < braunr> so commonly, the tree i loaded with nodes before insertion,
+ usually if it requires strong locking
+ < braunr> ipc spaces are locked using "simple locks" (which are spin locks)
+ < braunr> but spin locks are noops on UP, and gnumach is always UP ..
+ < braunr> so, should i still include preloading code, even if it'll end up
+ dead code ?
+ < antrik> hm... I think we discussed this before; but isn't gnumach
+ supposed to be SMP-capable, minus bugs?...
+ < braunr> it is
+ < braunr> but ofc, if i choose not to include preloading, i'll write
+ #errors so that the day gnumach is built for SMP again, such support will
+ be included
+ < antrik> oh, sorry, I think I misread. what is UP?
+ < braunr> uniprocessor
+ < antrik> well, if it's just bugs forcing the current UP state, I think
+ saying that gnumach is always UP is a stretch...
+ < braunr> sure, but it's a practical consideration
+ < antrik> does the locking complicate stuff? or is it just performance
+ considerations?
+ < braunr> no it's about correctness and completeness
+ < braunr> if you don't preload a tree before locking
+ < braunr> and memory allocation occurs while you're holding a simple lock
+ < braunr> and memory allocation requires the kernel to sleep
+ < braunr> you're screwed
+ < braunr> but i hate the idea of including code that won't be used and
+ which won't be easy to test
+ < braunr> so i'm wondering if it's ok for now to just put this in a TODO
+ comment and write it when the time is right
+ < braunr> or if i should spens the week adding this and tweaking the
+ userspace implementation to "emulate" spin locks
+ < antrik> well, it's tricky situation. on one hand, it seems stupid to
+ include handling for something that presently isn't used, and it's not
+ clear when it will. on the other hand, I'd rather not see additional
+ problems introduced that will make fixing SMP even harder...
+ < braunr> that's why i'm asking here
+ < antrik> of course, you could resolve this question by fixing SMP
+ first... ;-)
+ < braunr> ew
+ < antrik> well, I guess it would be best first to make the code work... and
+ we can still decide about the locking thing before it goes mainline I'd
+ say?
+ < braunr> "make the code work" ?
+ < antrik> I mean make gnumach work with your radix tree code
+ < braunr> without preloading then
+ < antrik> yeah... as a first step... I guess adding it later won't be any
+ harder than adding it right now?
+ < braunr> not much
+ < braunr> testing is what requires time really
+
+
+# IRC, freenode, #hurd, 2011-06-27
+
+ < braunr> ok, here is the radix tree code:
+ http://git.sceen.net/rbraun/libbraunr.git/
+ < braunr> the preloading stuff will be added in the kernel only, as it's
+ really pointless and not easily doable in userspace
+ < youpi> preloading?
+ < braunr> youpi: yes, preloading
+ < braunr> radix trees allocate external nodes
+ < youpi> well, providing a url at some random time of some random day is
+ not a great way to get eyes on it :)
+ < braunr> and ipc spaces are locked when inserting/allocating names
+ < braunr> we normally don't need preloading in gnumach
+ < braunr> since there is no preemption nor SMP
+ < braunr> but in case someone changes that, i'd like the code to be mostly
+ ready
+ < braunr> and correctly handle those ugly simple locks
+ < braunr> youpi: is what i say clear enough or do you need more background
+ on what is done ?
+ < youpi> about preloading?
+ < braunr> yes
+ < youpi> I guess it means allocating nodes in advance?
+ < braunr> yes
+ < youpi> k
+ < braunr> before locking the ipc spaces
+
+
+# IRC, freenode, #hurd, 2011-06-28
+
+ < braunr> antrik: i think i won't write the code for the preloading stuff
+ actually
+ < braunr> antrik: it's not very difficult, but i really hate the idea of
+ not being able to reliably test it
+ < braunr> antrik: and i'd rather concentrate on integrating the radix tree
+ code in gnu mach now
+ < braunr> (i've already removed much code, even some files which weren't
+ actually used before my changes !)
+ < braunr> hmm, i won't be able not to write the preloading code after all
+ < antrik> braunr: not able not to write? how's that?
+ < braunr> antrik: it's actually required
+ < braunr> there are three functions, ipc_entry_get, ipc_entry_alloc, and
+ ipc_entry_grow_table
+ < braunr> ipc_entry_get cannot allocate memory
+ < braunr> if it fails, ipc_entry_grow_table is called, which will allocate
+ memory
+ < braunr> ipc_entry_alloc calls both of them depending on the result of
+ ipc_entry_get
+ < braunr> this is the equivalent of the preloading thing i had in mind
+ < braunr> not a bad thing after all
+ < braunr> the only thing i'm afraid of are the "optimized" version of those
+ ipc functions in te so-called fast paths
+ < braunr> i'm afraid if i don't deal right with those, the kernel may end
+ up using mostly slow paths
+ < braunr> but considering the purpose of those fast paths was merely to
+ avoid the overhead of function calls and some locking functions, it
+ shouldn't be that bad
+ < braunr> this is such a mess eh
+ < antrik> hurray microoptimisations ;-)
+ < braunr> there, the preload functions are done, easy :)
+ < antrik> braunr: seems you spent less time implementing it than pondering
+ whether you should implement it ;-)
+ < braunr> well, i couldn't implement it correctly before knowing what
+ should have been done exactly
+ < braunr> and there are still other problems :/
+ < braunr> and the other problems make me reconsider if this was useful at
+ all eh
+ < braunr> youpi: i'm unable to find where ipc tree entries are released
+ except in ipc_entry_alloc_name(), which could mean they're leaked ...
+ < braunr> youpi: would you have time to take a look ?
+ < youpi> they aren't in ipc_entry_dealloc() ?
+ < braunr> no .....
+ < youpi> it's not so unprobable that they're only freed when the task quits
+ < braunr> i don't see that either
+ < braunr> i only see them released in ipc_entry_alloc_name()
+ < braunr> so maybe they're reused
+ < braunr> but i'm not sure about that when reading the code
+ < braunr> oh wait, yes, they are :/
+ < braunr> my bad
+ < youpi> in the ipc_splay_tree_* fucntions I guess?
+ < braunr> yes
+ < braunr> it's just surprsing to see them allocated outside the tree code
+ only
+ < braunr> but released in both the entry and the splay tree code ...
+
+
+# IRC, freenode, #hurd, 2011-06-29
+
+ < braunr> hmm i missed an important thing :/
+ < braunr> and it's scary
+ < braunr> it looks like the splay tree is mainly used when names are
+ provided
+ < braunr> whereas the entry table is used when names are allocated
+ < braunr> which means the table is the main ipc data structure, even for
+ tasks with lots of rights
+ < braunr> i can make my root ext2fs have more than 10k rights, and i see
+ the ipc table table grow along that number ...
+ < braunr> now thetable has 15k+ entries
+ < braunr> IOW there is no point to put the radix tree code in gnumach :(
+ < antrik> braunr: what do you mean by "provided" and "allocated"?
+ < antrik> and what is that table you are talking about?
+ < braunr> antrik: provided means the user space tasks gives the name of the
+ new right
+ < braunr> antrik: allocated means the kernel generates it
+ < braunr> antrik: the table i'm talking about is is_table in struct
+ ipc_space
+ < braunr> 55 * Every space has a non-NULL is_table with
+ is_table_size entries.
+ < braunr> 56 * A space may have a NULL is_tree. is_tree_small
+ records the
+ < braunr> 57 * number of entries in the tree that, if the table were
+ to grow
+ < braunr> 58 * to the next larger size, would move from the tree to
+ the table.
+ < braunr> here is the description which mislead me (in addition of the
+ obscure code)
+ < braunr> 50 * Spaces hold capabilities for ipc_object_t's (ports
+ and port sets).
+ < braunr> 51 * Each ipc_entry_t records a capability. Most
+ capabilities have
+ < braunr> 52 * small names, and the entries are elements of a table.
+ < braunr> 53 * Capabilities can have large names, and a splay tree
+ holds
+ < braunr> 54 * those entries. The cutoff point between the table
+ and the tree
+ < braunr> 55 * is adjusted dynamically to minimize memory
+ consumption.
+ < antrik> ah, so the rights with a low name are in a linear table, and only
+ those with "random" high names are stored in the splay tree instead?
+ < antrik> seems a rather complex design... I guess though there isn't much
+ room for further optimisation there :-(
+ < antrik> (well, except for code size optimisation -- which could in fact
+ make a considerable difference...)
+ < braunr> well there are problems with this approach, but most don't
+ concern performance
+ < braunr> when the table gets big (close to the page size or more), it gets
+ remapped when reallocated
+ < braunr> which will incur some penalty because of the tlb
+ < braunr> but it's annoying even for small tables
+ < braunr> the initial table size is 4 entries, and from what i can see,
+ most tables are 128 entries wide when tasks are destroyed
+ < braunr> an obvious simple optimization is to set a larger default size
+ < braunr> the same applies for the dead name tables
+ < braunr> those reallocations are a pain, and they're due to this design
+ < braunr> they can also fail because of fragmentation
+ < braunr> there would be a point to radix trees if they would replace all
+ that, and not just the splay tree
+ < braunr> but this would cause a lot of changes in a lot of places, and in
+ particular the "optimized" fast paths i mentioned yesterday
+ < braunr> we'll see how they perform in x15 :>
+ < braunr> there is a slight noticeable improvement when increasing the
+ initial size of the entry table
+ < antrik> braunr: well, if you use them in a completely different
+ implementation, there will be no way of telling whether they make a
+ difference
+ < antrik> how did you test the improvement?
+ < braunr> antrik: no actually it's completely negligeable
+ < braunr> hm
+ < braunr> is that a valid word ? :)
+ < braunr> negligible
+ < braunr> youpi: did you see my comments about the ipc stuff this earlier
+ today ?
+ < braunr> youpi: well to make things short, when port names are allocated,
+ the right they refer to is allocated from the ipc table
+ < braunr> youpi: the splay tree is only used for user provided names
+ < braunr> youpi: i had tables as large as the number of rights in a space
+ (i could easily reach 20k)
+ < braunr> youpi: whereas the splay trees had at most ~40 entries ..
diff --git a/open_issues/rm_fr.mdwn b/open_issues/rm_fr.mdwn
new file mode 100644
index 00000000..aab52d97
--- /dev/null
+++ b/open_issues/rm_fr.mdwn
@@ -0,0 +1,39 @@
+[[!meta copyright="Copyright © 2011 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_hurd]]
+
+From: Samuel Thibault <samuel.thibault@gnu.org>
+Subject: rm -fr slowness
+
+I have always been surprised by the slowness of a mere rm -fr. Looking a
+bit inside, I see that diskfs_dirremove_hard() calls diskfs_file_update
+(dp, 1) (as does diskfs_truncate, diskfs_direnter_hard, and
+diskfs_dirrewrite_hard). diskfs_file_update then calls pager_sync on
+the pager, which thus writes back the whole ext2fs pager!
+
+This sounds a bit excessive to me, an unlink could just record it in
+memory and actually sync later. Also, the wait flag is set, so we
+really waits for all I/Os, which basically means strictly serializing
+file removals: remove one file, wait for the disk to have done it
+(~10ms), remove the next one, etc. I guess this is for safety reasons
+against crashes, but isn't the sync option there for such kind of
+
+
+# IRC, freenode, #hurd, 2011-07-23
+
+ <antrik> youpi: hm... async deletion does have one downside: I just removed
+ something to make space, and retried the other command immediately
+ afterwards, and it still said "no space left on device"... a few seconds
+ later (after the next regular sync I suppose?) it worked
+ <youpi> well, that's sorta expected, yes
+ <youpi> we get the same on Linux
+ <youpi> Mmm, on second thought, I'm not sure how that can happen
+ <youpi> the asynchronous thing is for disk writes, not cache writes
diff --git a/open_issues/rpc_to_self_with_rendez-vous_leading_to_duplicate_port_destroy.mdwn b/open_issues/rpc_to_self_with_rendez-vous_leading_to_duplicate_port_destroy.mdwn
new file mode 100644
index 00000000..9db92250
--- /dev/null
+++ b/open_issues/rpc_to_self_with_rendez-vous_leading_to_duplicate_port_destroy.mdwn
@@ -0,0 +1,163 @@
+[[!meta copyright="Copyright © 2011 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_hurd]]
+
+[RPC to self with rendez-vous leading to duplicate port
+destroy](http://lists.gnu.org/archive/html/bug-hurd/2011-03/msg00045.html)
+
+IRC, freenode, #hurd, 2011-03-14
+
+ <antrik> youpi: I wonder, why does the root FS call diskfs_S_dir_lookup()
+ at all?...
+ <youpi> errr, because a client asked for it?
+ <youpi> (problem with RPCs is you can't easily know where they come from :)
+ )
+ <youpi> (especially when it's the root fs...)
+ <antrik> ah, it's about a client request... didn't see that
+ <youpi> well, I just said "is called", yes
+ <antrik> I do not really understand though why it tries to reauthenticate
+ against itself...
+ <antrik> I fear my memory of the lookup mechanism grew a bit dim
+ <youpi> see the source
+ <youpi> it's about a translated entry
+ <antrik> (and I never fully understood some aspects anyways...)
+ <youpi> it needs to start the translated entry as another user, possibly
+ <antrik> yes, but a translated entry normally would be served by *another*
+ process?...
+ <youpi> sure, but ext2fs has to prepare it
+ <youpi> thus reauthenticate to prepare the correct set of rights
+ <antrik> prepare what?
+ <youpi> rights
+ <youpi> so the process is not root, doesn't have / opened as root, etc.
+ <antrik> rights for what?
+ <youpi> err, about everything
+ <antrik> IIRC the reauthentication is done by the parent FS on the port to
+ the *translated* node
+ <antrik> and the translated node should be a different process?...
+ <youpi> that's not what I read in the source
+ <youpi> fshelp_fetch_root
+ <youpi> ports[INIT_PORT_CRDIR] = reauth (getcrdir ());
+ <youpi> here, getcrdir() returns ext2fs itself
+ <antrik> well, perhaps the issue is that I have no idea what
+ fshelp_fetch_root() does, nor why it is called here...
+ <youpi> it notably starts the translator that dir_lookup is looking at, if
+ needed
+ <youpi> possibly as a different user, thus reauthentication of CRDIR
+ <antrik> so this is about a port that is passed to the translator being
+ started?
+ <youpi> no
+ <youpi> well, depends on what you mean by "port"
+ <youpi> it's about reauthenticating a port to be passed to the translator
+ being started
+ <youpi> and for that a rendez-vous port is needed for the reauthentication
+ <youpi> and that's the one at stake
+ <antrik> yeah, I meant the port that is reauthenticated
+ <antrik> what is CRDIR?
+ <youpi> current root dir ...
+ <antrik> so the parent translator passes it's own root dir to the child
+ translator; and the issue is that for the root FS the root dir points to
+ the root FS itself...
+ <youpi> yes
+ <antrik> OK, that makes sense
+ <youpi> (but that's only one example, rgrep mach_port_destroy hurd/ show
+ other potential issues)
+ <antrik> well, that's actually what I wanted to mention next... why is the
+ rendez-vous port destroyed, instead of just deallocating the port right
+ and letting reference counting to it's thing?...
+ <antrik> do its thing
+ <youpi> "just to make sure" I guess
+ <antrik> it's pretty obvious that this will cause trouble for any RPC
+ referencing itself...
+ <youpi> well, follow-up with that on the list
+ <youpi> with roland/tb in CC
+ <youpi> only they would know any real reason for destroy
+ <youpi> btw, if you knew how we could make _hurd_select()'s raw __mach_msg
+ call be interruptible by signals, that'll permit to fix sudo
+ <youpi> (damn, I need sleep, my tenses are all wrong)
+ <antrik> BTW, does this cause any actual trouble?...
+ <antrik> I don't know much about interruption... cfhammer might have a
+ better idea, he look into that stuff quite a bit AIUI
+ <antrik> looked
+ <antrik> (hehe, it's not only your tenses... guess there's something in the
+ ether ;-) )
+ <youpi> it makes sudo, mailq, etc. fail sometimes
+ <antrik> I mean the rendez-vous thing
+ <youpi> that's it, yes
+ <youpi> sudo etc. fail at least due to this
+ <antrik> so these are two different problems that both affect sudo?
+ <antrik> (rendez-vous and interruption I mean)
+ <youpi> yes
+ <youpi> with my patch the buildds have much fewer issues, but still some
+ <youpi> (my interrupt-related patch)
+ <youpi> I'm installing a s/destroy/deallocate/ version of ext2fs on the
+ buildds, we'll see how it behaves
+ <youpi> (it fixes my testcase at least)
+ <antrik> interrupt-related patch?
+ <antrik> only thing interrupt-related I remember was the reauthentication
+ race...
+ <youpi> that's what I mean
+ <antrik> well, cfhammer investigated this is quite some depth, explaining
+ quite well why the race is only mitigated but still exists... problem is
+ that we didn't know how to fix it properly
+ <antrik> because nobody seems to understand the cancellation code, except
+ perhaps for Roland and Thomas
+ <antrik> (and I'm not even entirely sure about them :-) )
+ <antrik> I think his findings and our conclusions are documented on the
+ ML...
+ <youpi> by "much fewer issues", I mean that some of the symptoms have
+ disappeared, others haven't
+ <antrik> BTW, couldn't the rendez-vous thing be worked around by simply
+ ignoring the errors from the failing deallocate?...
+ <youpi> no, failing deallocate are actually dangerous
+ <antrik> why?
+ <youpi> since the name might have been reused for something else in the
+ meanwhile
+ <youpi> that's the whole point of the warning I had added in the kernel
+ itself
+ <antrik> I see
+ <youpi> such things really deserve tracking, since they can have any kind
+ of consequence
+ <antrik> does Mach try to reuse names quickly, rather than only after
+ wrapping around?...
+ <youpi> it seems to
+ <antrik> OK, then this is a serious problem indeed
+ <youpi> (note: I rarely divine issues when there aren't actual frequent
+ symptoms :) )
+ <antrik> well, the problem with the warning is that it only shows in the
+ cases that do *not* cause a problem... so it's hard to associate them
+ with any specific issues
+ <youpi> well, most of the time the port is not reused quickly enough
+ <youpi> so in most case it shows up more often than causing problem
+
+IRC, freenode, #hurd, 2011-03-14
+
+ <youpi> ok, mach_port_deallocate actually can't be used
+ <youpi> since mach_reply_port() returns a receive right, not a send right
+ * youpi guesses he will really have to manage to understand all that port
+ stuff completely
+ <antrik> oh, right
+ <antrik> youpi: hm... now I'm confused though. if one client holds a
+ receive right, the other client (or in this case the same process) should
+ have a send or send-once right -- these should *not* share the same name
+ in my understanding
+ <antrik> destroying the receive right should turn the send right into a
+ dead name
+ <antrik> so unless I'm missing something, the destroy shouldn't be a
+ problem, and there must be something else going wrong
+ <antrik> hm... actually I'm probably wrong
+ <antrik> yeah, definitely wrong. receive rights and "ordinary" send rights
+ share the name. only send-once rights are special
+ <antrik> I wonder whether the problem could be worked around by using a
+ send-once right...
+ <antrik> mach_port_mod_refs(mach_task_self(), name,
+ MACH_PORT_RIGHT_RECEIVE, -1) can be used to deallocate only the receive
+ right
+ <antrik> oh, you already figured that out :-)
diff --git a/open_issues/runit.mdwn b/open_issues/runit.mdwn
new file mode 100644
index 00000000..659b81ea
--- /dev/null
+++ b/open_issues/runit.mdwn
@@ -0,0 +1,50 @@
+[[!meta copyright="Copyright © 2008, 2009, 2011 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]]
+
+The `runit` package doesn't work, even its test suite doesn't finish.
+
+[[Thomas_Schwinge|tschwinge]] once was having a look at that, but this very
+report is just from his memory, and his memory is dim... The problem *might*
+either be a time stamping issue (which might be fixed by now) or it *might* be
+the `select` call failing issue we're seeing from time to time. Or something
+else.
+
+[[Harish Badrinath|harishbadrinath]]
+Originally answered by Samuel Thibault:
+> 120->proc_dostop_request ( 138) = 0
+>
+> </snip>
+
+Usual issue with rpctrace: it does not support fork().
+
+ I've checked a backtrace in gdb, got this:
+
+ 0x0105af6c in mach_msg_trap ()
+ at /build/eglibc-jWVnRE/eglibc-2.13/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+ 1 0x0105b769 in __mach_msg (msg=0x1024af8, option=258, send_size=0, rcv_size=40, rcv_name=140,
+ timeout=1000020, notify=0) at msg.c:110
+ 2 0x01062251 in _hurd_select (nfds=2, pollfds=0x1024dc0, readfds=0x0, writefds=0x0, exceptfds=0x0,
+ timeout=0x1024bbc, sigmask=0x0) at hurdselect.c:324
+ 3 0x0114427b in __poll (fds=0x1024dc0, nfds=2, timeout=1000020) at ../sysdeps/mach/hurd/poll.c:48
+ 4 0x0804b770 in iopause (x=0x1024dc0, len=2, deadline=0x1024dd8, stamp=0x1024de8) at iopause.c:29
+ 5 0x08048efc in main (argc=2, argv=0x1024e94) at runsv.c:543
+
+ and main() shows up as:
+
+ sig_unblock(sig_term);
+ sig_unblock(sig_child);
+ -> iopause(x, 2 +haslog, &deadline, &now);
+ sig_block(sig_term);
+ sig_block(sig_child);
+
+So it simply looks like the known "signals don't interrupt select" bug.
diff --git a/open_issues/sa_siginfo_sa_sigaction.mdwn b/open_issues/sa_siginfo_sa_sigaction.mdwn
new file mode 100644
index 00000000..3b8edff7
--- /dev/null
+++ b/open_issues/sa_siginfo_sa_sigaction.mdwn
@@ -0,0 +1,94 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+[[!meta title="SA_SIGINFO, SA_SIGACTION"]]
+
+[[!tag open_issue_glibc]]
+
+Note: SA_SIGINFO has now been implemented by Jeremie Koenig. It will be uploaded in Debian eglibc 2.13-19.
+
+IRC, #hurd, August / September 2010:
+
+ <giselher> Hy, I came across SA_SIGINFO in cherokee, I have the void sighandler(int num) prototype but how do I add the sa_handler field?
+ <pinotree> if SA_SIGACTION is not defined, then you use sa_handler instead of sa_sigaction, and not add SA_SIGINFO in the sa_flags
+ <giselher> SA_SIGINFO is not defined
+ <pinotree> s/SA_SIGACTION/SA_SIGINFO/ above, yes
+ <giselher> K
+ <giselher> I am not sure if I fully understand this, there is the line "act.sa_flags = SA_SIGINFO" and how do I have to change that >_>
+ <pinotree> can you paste the source in a pastebin?
+ <giselher> k
+ <giselher> http://archhurd.pastebin.com/N8BCnG6g at line 790
+ <pinotree> something along the lines of http://www.archhurd.pastebin.com/tdpcFD5G
+ <pinotree> note that in the handler the siginfo_t parameter is used, which cannot be done if SA_SIGINFO is not defined
+ <pinotree> (that code still won't compile, yet)
+ <giselher> btw: is there a reason why SA_SIGINFO is not implemented?
+ <giselher> the guildlines only say "It's not implemented"
+ <azeem> 09:43 < azeem> signal stuff is tricky :-/
+ <azeem> basically it was pending on a complete rewrite by Roland, which never occured
+ <youpi> I have an almost complete implementation, just not finished yet
+ <youpi> (only the siginfo part)
+ <azeem> nobody really groked that code for years until youpi showed up, but he added partial support AFAIK, not having much time on his hand
+ <azeem> ah, he's here
+ <azeem> :)
+ <giselher> oh, should I just wait ?
+ <youpi> no
+ <giselher> k
+ <youpi> there are OSes which don't have SA_SIGINFO
+ <youpi> just cope with them: use sa_handler instead of sa_sigaction, and don't set SA_SIGINFO
+ <youpi> (i.e. replace with 0 in your example)
+ <giselher> ok
+ <youpi> when SA_SIGINFO becomes available, it'll just be used
+
+IRC, freenode, #hurd, 2011-08-20:
+
+ < youpi> erf, tcpwrappers will need si_pid
+ < jkoenig> I could implement it not too far away in the future, we just
+ need a version of msg_sig_post() with a siginfo argument or something.
+ < youpi> I can also see a lot of packages using SA_SIGINFO for no reason...
+ < youpi> (probably copy/pasty code)
+ < youpi> sa.sa_flags = SA_SIGINFO;
+ < youpi> sa.sa_handler = parse_config;
+ < youpi> void parse_config(int)
+ < youpi> yay
+ < youpi> if(siginf->si_signo == SIGXCPU)
+ < youpi> fprintf(stderr, "Exceeded CPU usage.\n");
+ < youpi> ...
+ < youpi> jkoenig: actually most package don't actually use the SA_SIGINFO
+ they request...
+ < youpi> jkoenig: si_pid should get us almost all actually used coverage
+ < youpi> I've seen only one example using si_errno
+ < jkoenig> ok
+ < youpi> oh, it's actually supported by your patch
+ < youpi> (errno)
+ < jkoenig> but I guess since implementing si_pid will require a new RPC, we
+ might as well plan for the rest
+ < youpi> jkoenig: indeed
+ < jkoenig> youpi, hmm I doubt it's properly filled in in all circumstances?
+ < youpi> ok, well, we'll see
+ < pinotree> jkoenig: if it can be of help, boost::unit_test queries various
+ fields of siginfo_t depending on the signal
+ < pinotree> jkoenig: also, pulseaudio uses siginfo_t for remapping faulting
+ memory on SIGBUS
+ < jkoenig> pinotree, oh ok good to know
+ < pinotree> *faulty
+ < youpi> jkoenig: well, I guess you had checked that the si_addr field is
+ correct in a few simple testcase :)
+ < jkoenig> hmm I think so, yes
+ < jkoenig> I ran like, "* (char *) 0x12345678;" or something IIRC
+ < youpi> ok
+ < jkoenig> I seem to remember mach generated SIGBUS instead of SIGSEGV
+ depending on the upper bit, or something (I can't quite remember)
+ < jkoenig> but when sigsegv was generated si_addr was right.
+ < pinotree> jkoenig: (see boost/test/impl/execution_monitor.ipp in boost
+ sources)
+ < pinotree> maybe you can try the unit tests for boost::unit_tests, if any
+ :)
+ < pinotree> (while src/pulsecore/memtrap.c in PA)
+ * pinotree stops doing MrObvious™
diff --git a/open_issues/sbcl.mdwn b/open_issues/sbcl.mdwn
new file mode 100644
index 00000000..4bbf92ef
--- /dev/null
+++ b/open_issues/sbcl.mdwn
@@ -0,0 +1,31 @@
+[[!meta copyright="Copyright © 2011 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]]
+
+IRC, freenode, #hurd, 2011-08-12
+
+ < zyg> did the segment registers had any purpose? I see fs is set equal to
+ others, but on linux fs is 0 (atleast on this x86 box).
+ < braunr> zyg: it can be used by special applications like wine, yes
+ < zyg> braunr: thanks.. I'm reading up on linux actually. It seems gs can
+ be used for TLS, fs in syscall to pass userspace.
+ < braunr> zyg: why are you interested in that ?
+ < zyg> a native compiler under linux places assumptions on fs register. So
+ I'm trying to find out what it should do under gnumach/hurd.
+ < braunr> what compiler ?
+ < zyg> braunr: it's sbcl
+ < braunr> ok
+ < youpi> zyg: the same, basically
+ < zyg> ok.. looking at the code, I've remarked where it sets up FS, because
+ /usr/include/asm/ldt.h:struct user_desc is missing. I must search for the
+ equiv.
+ < youpi> zyg: mach/i386/mach_i386.h
+ < youpi> the descriptor structure
diff --git a/open_issues/screen.mdwn b/open_issues/screen.mdwn
new file mode 100644
index 00000000..e0394f0d
--- /dev/null
+++ b/open_issues/screen.mdwn
@@ -0,0 +1,120 @@
+[[!meta copyright="Copyright © 2009, 2010 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]]
+
+Typing `C-c` (*SIGINT*) in a *screen* session (Debian package 4.0.3-14; -11 is
+fine):
+
+ * shell prompt: no reaction (nothing printed)
+ * `sleep 10` running: `^C` printed, but SIGINT is not sent.
+
+[[!debbug 522689#38]].
+
+---
+
+Revisit this issue: [[!debbug 97343]] -- special handling of `TIOCSCTTY`
+depending on `__GNU__`.
+
+---
+
+`#ifdef linux` and friends are used in quite a number of places.
+
+---
+
+All diffs are GNU/Linux vs. GNU/Hurd.
+
+ /*
+ * If your system supports BSD4.4's seteuid() and setegid(), define
+ * HAVE_SETEUID.
+ */
+ -/* #undef HAVE_SETEUID */
+ +#define HAVE_SETEUID 1
+
+TODO: check.
+
+---
+
+ /*
+ * define HAVE_SVR4_PTYS if you have a /dev/ptmx character special
+ * device and support the ptsname(), grantpt(), unlockpt() functions.
+ */
+ -#define HAVE_SVR4_PTYS 1
+ +/* #undef HAVE_SVR4_PTYS */
+
+ /*
+ * define HAVE_GETPT if you have the getpt() function.
+ */
+ #define HAVE_GETPT 1
+
+ /*
+ * define HAVE_OPENPTY if your system has the openpty() call.
+ */
+ -/* #undef HAVE_OPENPTY */
+ +#define HAVE_OPENPTY 1
+
+ /*
+ * define PTYRANGE0 and or PTYRANGE1 if you want to adapt screen
+ * to unusual environments. E.g. For SunOs the defaults are "qpr" and
+ * "0123456789abcdef". For SunOs 4.1.2
+ * #define PTYRANGE0 "pqrstuvwxyzPQRST"
+ * is recommended by Dan Jacobson.
+ */
+ -/* #undef PTYRANGE0 */
+ -/* #undef PTYRANGE1 */
+ +#define PTYRANGE0 "pq"
+ +#define PTYRANGE1 "0123456789abcdefghijklmnopqrstuv"
+
+TODO: check: `HAVE_SVR4_PTYS` is due to `configure.in` doing `test -c
+/dev/ptmx`. But: even if we don't have that file, we still have `ptsname`,
+`grantpt`, `unlockpt`.
+
+---
+
+ gcc -c -I. -I. -g -O2 -O2 -g -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers pty.c
+ +pty.c: In function 'OpenPTY':
+ +pty.c:323: warning: implicit declaration of function 'openpty'
+ +pty.c: At top level:
+ +pty.c:75: warning: 'PtyName' defined but not used
+ +pty.c:86: warning: 'PtyProto' defined but not used
+ +pty.c:87: warning: 'TtyProto' defined but not used
+
+TODO: check.
+
+---
+
+ --- linux/osdef.h 2009-10-06 18:43:53.000000000 +0200
+ +++ screen-4.0.3/osdef.h 2009-10-06 18:49:49.000000000 +0200
+ @@ -42,13 +42,19 @@
+ #endif
+
+ #ifdef SYSV
+ +extern char *strchr __P((char *, int));
+ +extern char *strrchr __P((char *, int));
+ +extern char *memset __P((char *, int, int));
+ +extern int memcmp __P((char *, char *, int));
+ #else
+ #endif
+
+ #ifndef USEBCOPY
+ # ifdef USEMEMCPY
+ +extern void memcpy __P((char *, char *, int));
+ # else
+ # ifdef USEMEMMOVE
+ +extern void memmove __P((char *, char *, int));
+ # else
+ # endif
+ # endif
+
+TODO: check.
+
+---
+
+ * [[screen_dead_session]]
diff --git a/open_issues/screen_dead_session.mdwn b/open_issues/screen_dead_session.mdwn
new file mode 100644
index 00000000..cdd3f322
--- /dev/null
+++ b/open_issues/screen_dead_session.mdwn
@@ -0,0 +1,45 @@
+[[!meta copyright="Copyright © 2010 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]]
+
+Comparing to GNU/Linux, on GNU/Hurd it happens much more often and easily for
+*screen* sessions to become *dead*. This is annoying, as it defeats one of
+*screen*'s main purposes.
+
+One reproducible scenario goes like this:
+
+ * `ssh [somewhere]`,
+
+ * start a *screen* session, and some long-running process *P* in there,
+
+ * at some point the link is forcefully terminated (also known as disconnect
+ after 24 hours with consumer DSL),
+
+ * *P* will continue to execute,
+
+ * at some point, *P* will terminate / hang (after having received some kind
+ of signal?), and the *screen* session will be reported as *dead*.
+
+Another one, not as often reproduced:
+
+ * `ssh [somewhere]`,
+
+ * start a *screen* session, and some long-running process *P* in there,
+
+ * at some point the link is forcefully terminated (also known as disconnect
+ after 24 hours with consumer DSL),
+
+ * `ssh [somewhere]`,
+
+ * `screen -x`, and notice that *P* will *immediatelly* terminate / hang
+ (after having received some kind of signal?), and the *screen* session will
+ *immediatelly* be reported as *dead*. (Perhaps the other way round: upon
+ re-attaching, the *screen* session goes bonkers and takes *P* with it?)
diff --git a/open_issues/secure_file_descriptor_handling.mdwn b/open_issues/secure_file_descriptor_handling.mdwn
new file mode 100644
index 00000000..45e983a7
--- /dev/null
+++ b/open_issues/secure_file_descriptor_handling.mdwn
@@ -0,0 +1,24 @@
+[[!meta copyright="Copyright © 2010, 2011 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_glibc]]
+
+`O_CLOEXEC`, `dup3` et al.; see
+<http://udrepper.livejournal.com/20407.html>. [[tschwinge]] once worked
+on this, posted patches to [[mailing_lists/libc-alpha]]. This works needs to
+be resumed
+and finished.
+
+---
+
+In <http://lwn.net/Articles/417421/> an interesting point is made: *you [may]
+want some [[unix/file_descriptor]] to still be open if 'exec' fails, but you
+don't want it to be open after the exec succeeds*. [[I|tschwinge]]'m not sure
+whether our current `O_CLOEXEC` implementation adheres to that.
diff --git a/open_issues/security.mdwn b/open_issues/security.mdwn
new file mode 100644
index 00000000..055c8bdc
--- /dev/null
+++ b/open_issues/security.mdwn
@@ -0,0 +1,34 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+There are [[several aspects to security|/security]] that are (mainly) relevant
+to the design space.
+
+There are also security issues in the implemenation space, for example using
+the correct coding paradigms.
+
+Large parts of our code base have not beed audited, either manually or in an
+automated fashion.
+
+[[Unit testing]] is one aspect: testing for reliably failing for invalid input.
+
+[[Code analysis]] is another aspect.
+
+All publically usable interfaces provide attacking targets. This includes all
+[[system call]]s and [[RPC]] interfaces.
+
+Fuzzing techniques can be use for locating possible issues.
+
+ * <http://lwn.net/Articles/414273/>
+
+ * Has already been used in the 70s / 80s (?) for testing [[UNIX]] command
+ line tools.
+
+ * <http://www.ece.cmu.edu/~koopman/ballista/>
diff --git a/open_issues/select.mdwn b/open_issues/select.mdwn
new file mode 100644
index 00000000..0f750631
--- /dev/null
+++ b/open_issues/select.mdwn
@@ -0,0 +1,34 @@
+[[!meta copyright="Copyright © 2010, 2011 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_glibc]]
+
+There are a lot of reports about this issue, but no thorough analysis.
+
+
+# `elinks`
+
+IRC, unknown channel, unknown date.
+
+ <paakku> This is related to ELinks... I've looked at the select()
+ implementation for the Hurd in glibc and it seems that giving it a short
+ timeout could cause it not to report that file descriptors are ready.
+ <paakku> It sends a request to the Mach port of each file descriptor and
+ then waits for responses from the servers.
+ <paakku> Even if the file descriptors have data for reading or are ready
+ for writing, the server processes might not respond immediately.
+ <paakku> So if I want ELinks to check which file descriptors are ready, how
+ long should the timeout be in order to ensure that all servers can
+ respond in time?
+ <paakku> Or do I just imagine this problem?
+
+---
+
+See also [[select_bogus_fd]] and [[select_vs_signals]].
diff --git a/open_issues/select_bogus_fd.mdwn b/open_issues/select_bogus_fd.mdwn
new file mode 100644
index 00000000..17aced4a
--- /dev/null
+++ b/open_issues/select_bogus_fd.mdwn
@@ -0,0 +1,55 @@
+[[!meta copyright="Copyright © 2011 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_glibc]]
+
+
+# Python
+
+IRC, freenode, #hurd, 2011-04-13
+
+ <abeaumont> ok, cause of first python testsuite failure located, now the
+ hard part, how to best fix it :)
+ <abeaumont> how to redesign the code to avoid the problem... that's the
+ hard part, mostly cause i lack contextual info
+ <abeaumont> tschwinge: the problem is pretty much summarized by this
+ comment in _hurd_select (in glibc): /* If one descriptor is bogus, we
+ fail completely. */
+ <pochu> does POSIX say anything about what to do if one fd is invalid?
+ <pochu> and the other question is why python is calling select() with an
+ invalid fd
+ <abeaumont> pochu: yep, it says it should not fail completelly
+ <pochu> then that's our bug :)
+ <pinotree> abeaumont: just note that (at least on debian) some tests may
+ hang forever or cause hurd/mach to die
+ <pinotree> abeaumont: see in the debian/rules of the packaging of each
+ pythonX.Y source
+ <pinotree> ... there's a list of the tests excluded from the test suite run
+ <abeaumont> well, to be precise, python has a configure check for
+ 'broken_poll' which hurd fails, and therefore python's select module is
+ not built, and anything depending on it fails
+ <abeaumont> broken_poll checks exactly for that posix requirement
+ <abeaumont> the reason for python using a non-existant
+ descriptor... unknown :D
+ <pochu> we should fix select to not fail miserably in that case
+ <pinotree> abeaumont: we have a patch to fix the broken poll check to
+ actually disable the poll module
+ <pochu> pinotree: but the proper fix is to fix select(), which is what
+ abeaumont is looking at
+ <abeaumont> pinotree: i'd say that's exactly what python's configure check
+ does itself -- disable building the select module
+ <pochu> abeaumont: what pinotree means is that the check is broken, see
+ http://patch-tracker.debian.org/patch/series/view/python2.6/2.6.6-8/hurd-broken-poll.diff
+ <pinotree> yes, the configure check for poll does the check, but not
+ everything of the poll module gets disabled (and you get a build failure)
+
+---
+
+See also [[select]] and [[select_vs_signals]].
diff --git a/open_issues/select_vs_signals.mdwn b/open_issues/select_vs_signals.mdwn
new file mode 100644
index 00000000..bbd69d00
--- /dev/null
+++ b/open_issues/select_vs_signals.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 2011 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_glibc]]
+
+
+# `sudo`
+
+`sudo [task]` hands after finishing `[task]`.
+
+IRC, freenode, #hurd, 2011-04-02
+
+ <youpi> the sudo bug is select() not being able to get interrupted by
+ signals
+
+---
+
+See also [[select]] and [[select_bogus_fd]].
diff --git a/open_issues/sendmsg_scm_creds.mdwn b/open_issues/sendmsg_scm_creds.mdwn
new file mode 100644
index 00000000..c613e21c
--- /dev/null
+++ b/open_issues/sendmsg_scm_creds.mdwn
@@ -0,0 +1,99 @@
+[[!meta copyright="Copyright © 2010, 2011 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_glibc]]
+
+IRC, unknown channel, unknown date.
+
+ <pinotree> Credentials: s_uid 1000, c_uid 1000, c_gid 100, c_pid 2722
+ <pinotree> 2722: Credentials: s_uid 1000, c_uid 1000, c_gid 100, c_pid 2724
+ <pinotree> \o/
+ <youpi> \o/
+ <pinotree> the patch is even short, after all: http://paste.debian.net/54795/
+ --- a/sysdeps/mach/hurd/sendmsg.c
+ +++ b/sysdeps/mach/hurd/sendmsg.c
+ @@ -18,6 +18,7 @@
+
+ #include <errno.h>
+ #include <string.h>
+ +#include <unistd.h>
+ #include <sys/socket.h>
+ #include <sys/un.h>
+
+ @@ -45,6 +46,7 @@
+ mach_msg_type_number_t amount;
+ int dealloc = 0;
+ int i;
+ + struct sockaddr_storage sa;
+
+ /* Find the total number of bytes to be written. */
+ len = 0;
+ @@ -122,6 +124,34 @@
+ err = EIEIO;
+ }
+
+ + memset (&sa, 0, sizeof (struct sockaddr_storage));
+ + if (addr)
+ + {
+ + memcpy (&sa, addr, addr_len);
+ + }
+ + else
+ + {
+ + getsockname (fd, (struct sockaddr *) &sa, &addr_len);
+ + }
+ + addr = (struct sockaddr_un *) &sa;
+ + if (message && (addr->sun_family == AF_LOCAL))
+ + {
+ + struct cmsghdr *cm;
+ + struct msghdr *m = (struct msghdr *) message;
+ + for (cm = CMSG_FIRSTHDR (m); cm; cm = CMSG_NXTHDR (m, cm))
+ + {
+ + if (cm->cmsg_level == SOL_SOCKET && cm->cmsg_type == SCM_CREDS)
+ + {
+ + struct cmsgcred *cred = (struct cmsgcred *) CMSG_DATA (cm);
+ + cred->cmcred_pid = __getpid ();
+ + cred->cmcred_uid = __getuid ();
+ + cred->cmcred_euid = __geteuid ();
+ + cred->cmcred_gid = __getgid ();
+ + cred->cmcred_ngroups = getgroups (sizeof (cred->cmcred_groups) / sizeof (gid_t), cred->cmcred_groups);
+ + }
+ + }
+ + }
+ +
+ err = HURD_DPORT_USE (fd,
+ ({
+ if (err)
+ <youpi> what checks that the pid is correct?
+ <youpi> and uid, etc.
+ <pinotree> hm?
+ <youpi> credential is not only about one claiming to the other his uid & such
+ <youpi> it's about the kernel or whatever authority tell to an end the identity of the other end
+ <pinotree> yep
+ <pinotree> but given that the data is then send to pflocal, this code is the last part that runs on the application side
+ <youpi> pflocal could as well just request the info from proc
+ <youpi> it will have to anyway, to check that it's true
+ <pinotree> hm
+ <pinotree> yeah, though about that, chose this approach as "quicker" (of course not definitive)
+ <youpi> well at least it shows we're able to transmit something :)
+ <pinotree> well it just manipulates the data which gets send nicely already ;)
+ <youpi> but really, it's most probably up to pflocal to check authentication from proc and give it to the other end
+ <youpi> the application sender part would be just the RPC authentication calls
+ <youpi> Mmm, just realizing: so receiver part already exists actually, right?
+ <youpi> (since it's just about letting the application reading from the message structure)
+ <pinotree> yep
+ <youpi> ok, good :)
+
+/!\ IRC, freenode, #hurd, 2011-08-11
+
+ < pinotree> (but that patch is lame)
+
+---
+
+See also [[pflocal_socket_credentials_for_local_sockets]] and [[pflocal_reauth]].
diff --git a/open_issues/serial_console.mdwn b/open_issues/serial_console.mdwn
new file mode 100644
index 00000000..ed6358a2
--- /dev/null
+++ b/open_issues/serial_console.mdwn
@@ -0,0 +1,52 @@
+[[!meta copyright="Copyright © 2010 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_documentation]]
+
+IRC, #hurdfr, 2010-09-20
+
+ <youpi> tu peux compiler ton gnumach pour qu'il utilise la console série, et tu
+ mets le port série sur la console qemu
+ <youpi> -AC_DEFINE([RCLINE], [-1], [com port for the remote console])
+ <youpi> +AC_DEFINE([RCLINE], [0], [com port for the remote console])
+ <youpi> dans i386/configfrag.ac
+ <manuel> grumpf, peu pratique :)
+ <youpi> ben après t'auras accès vraiment à ton gnumach
+ <youpi> messages de noyau etc.
+ <manuel> oui c'est sûr, mais j'ai aucune idée de comment je configure qemu &
+ co, ça va être sportif encore
+ <youpi> -serial vc
+ <manuel> je lance pas moi-même le qemu, donc j'imagine qqch comme -serial
+ tcp::qqch,server
+ <youpi> ben t'as pas accès à la console alors ?
+ <youpi> mais sinon via tcp ça devrait aller oui
+ <manuel> si, via telnet
+ <manuel> youpi: et après, tu fais comment pour envoyer le c-a-D toi ?
+ <manuel> (question sans doute bête)
+ <youpi> c'est un code différent via com1 iirc
+ <manuel> mmmmmmmmmhhhhhh
+ <youpi> (c'est pas bête: c-a-d c'est pas vraiment défini pour un port série)
+ <manuel> tu sais où je peux le trouver ?
+ <youpi> ah tiens non yena pas
+ <youpi> mais bon spa dur à ajouter
+ <manuel> bcp trop compliqué pour moi
+ <youpi> dans i386/i386at/com.c, à la première ligne ttyinput()
+ <youpi> tu compares c à ce que tu veux
+ <youpi> et dans ce cas tu appelles kdb_kintr
+ <youpi> (sans paramètre)
+ <youpi> mais sinon ya pas vraiment besoin d'appeller explicitement le
+ débuggueur hein
+ <manuel> ah ?
+ <youpi> dès que tu mets debug_all_traps à 1 dans traps.c, il sera invoqué lors
+ du segv
+ <manuel> ok
+ <youpi> pour xen j'ai mis £ comme raccourcis
+ <manuel> ça me paraît plus simple dans ce cas
+ <youpi> clin d'œil à la société anglaise :)
diff --git a/open_issues/sigpipe.mdwn b/open_issues/sigpipe.mdwn
new file mode 100644
index 00000000..0df3560e
--- /dev/null
+++ b/open_issues/sigpipe.mdwn
@@ -0,0 +1,345 @@
+[[!meta copyright="Copyright © 2011 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_glibc open_issue_hurd]]
+
+[[!GNU_Savannah_bug 461]]
+
+IRC, freenode, #hurd, 2011-04-20
+
+ <svante_> I found a problem from 2002 by Marcus Brinkmann that I think is
+ related to my problems: http://savannah.gnu.org/bugs/?461. He has a test
+ file called pipetest.c that shows that SIGPIPE is not triggered reliably.
+ <svante_> Cited from the bug report: The attached test program does not
+ trigger SIGPIPE reliably, because closing the read end of the pipe
+ happens asynchronously. The write can succeed because the read end might
+ not have been closed yet.
+ <svante_> I have debugged this program on both Hurd and Linux, and the
+ problem in Hurd remains:-(
+ <svante_> Anybody looked into the almost ten year old
+ bug:http://savannah.gnu.org/bugs/?461 this one is definitely related to
+ the build problems of e.g. ghc6 and ruby1.9.1. Should I mention this on
+ the ML?
+ <youpi> that could be it indeed
+ <youpi> does th bug still happen?
+ <azeem> depends on: new interface io_close
+ <azeem> which depends on: POSIX record locking
+ <svante_> youpi: Yes it does, I've tested the pipetest.c file submitted by
+ Marcus B on both Linux and Hurd
+ <azeem> that would've maybe been a nice GSOC task
+ <youpi> azeem: err, the contrary for posix record locking, non ?
+ <azeem> argh
+ <azeem> why would POSIX record locking depend on this?
+ <azeem> well anyway, then have POSIX record locking be a GSOC task :)
+ <azeem> I wasn't aware that would also fix ruby and ghc building :)
+ <youpi> http://permalink.gmane.org/gmane.os.hurd.devel.readers/265
+ <youpi> (for io_close stuff)
+ <youpi> http://comments.gmane.org/gmane.os.hurd.devel.readers/63 actually
+ <azeem> I guess if they didn't implement it/agreed on something back then
+ it'd be quite hard to do it now
+ <svante_> azeem: marcus recently showed up here. Maybe he can help out/has
+ ideas?
+ <azeem> well yeah
+ <azeem> but marcus was the junior guy back then
+ <azeem> <marcus> but it's a very hurdish solution (ie, complex, buggy, and
+ not implemented)
+ <azeem> maybe we can go for something simpler
+ <youpi> azeem: what is this quote about?
+ <azeem> don't remember
+ <azeem> not io_close I'd say
+
+2011-04-21
+
+ <antrik> svante_: why do you think the problem you see in ruby and ghc is
+ related to async close() ?
+
+2011-04-22
+
+ <svante_> Well: the test case I'm running on ruby is giving me an EBADF
+ after 8 successful loops, and tracing within eglibc points towards
+ __mutex_lock_solid or __spin_lock, __spin_lock_solid from
+ mach/lock-intern.h from cthreads.
+
+2011-04-23
+
+ <antrik> srs1: yeah, I saw it... but I still wonder what makes you think
+ this is related to async FD closing?
+ <srs1> antrik: Every test case showing the problems are related to fd.h and
+ the functions there, especially the ones used in the function:
+ _HURD_FD_H_EXTERN_INLINE struct hurd_fd *_hurd_fd_get (int fd) and so is
+ the pipetest from Marcus too.
+ <srs1> I have not yet been able to trace further with gdb since most
+ variables are optimized out and adding print statements does not work, at
+ least not yet. Now I'm trying to build eglibc with -O1 to see if the
+ optimized out variables are there or not.
+ <youpi> srs1: he means the ghc6 issue
+ <youpi> (and the ruby issue)
+ <srs1> youpi: Yes, the ghc6 and ruby ends at the functions I mentioned in
+ fd,h
+ <srs1> Both ghc6 and ruby programs are writing to a file when the error
+ happens. If they are using a pipeline or not I don't know yet, I think it
+ is a regular file write.
+ <srs1> I can send your the ruby program if you like: It is a c-file so
+ debugging is possible. ghc6 is worse, since that program cannot be
+ debugged directly with gdb.
+ <antrik> pipetest also results in the program hanging in locking stuff?...
+ <srs1> pipetest does not hang, but gives no output as it should. Running it
+ in gdb with single stepping shows the correct behavior, but then gdb
+ hangs if I try to single stepping further, continue at the right place
+ works!
+ <antrik> I haven't looked at the pipetest program. do you have the link
+ handy?
+ <antrik> never mind, got it
+ <antrik> srs1: that sounds like a GDB problem...
+ <youpi> most probably, yes
+ <youpi> (and I've always seen issues like this in gdb on hurd)
+ <antrik> actually I think it's expected... the RPC handling code has some
+ explicit GDB hooks AIUI; trying to single-step into this code is probably
+ expected to wreck havoc...
+ <youpi> well, it should have some sane behavior
+ <youpi> even if it's "skip to next point where it's debuggable"
+ <antrik> srs1: note that there is no BADF involved in the pipetest AIUI...
+
+2011-04-28
+
+ <antrik> what is the actual problem you are seeing BTW?
+ <gnu_srs1> antrik: in ruby the problem is: Exception `IOError' at
+ tool/mkconfig.rb:12 - closed stream
+ <gnu_srs1> Triggered by ruby:io.c:internal_read_func() calling
+ sysdeps/mach/hurd/read.c returning a negative number of bytes read.
+ <abeaumont> gnu_srs1: why do you think that error is locking related?
+ <gnu_srs1> This happens after 8 iterations of the read loop with 8192 bytes
+ read each time.
+ <abeaumont> but that doesn't involve locking at all, does it?
+ <gnu_srs1> I think it is, if there is a pipepline set up??
+ <gnu_srs1> Also the ghc6 hang ends up in hangs in sysdeps/mach/hurd/read.c
+ traced into fd.h where all things happen (including setting locks and
+ mutexes)
+ <braunr> what locking ?
+ <braunr> stdio locking is different from file locking
+ <braunr> and a pipe doesn't imply file locking at all
+ <abeaumont> read may block on pipes, but it's unrelated to flock
+ <gnu_srs1> Look into the file fd.h, maybe you can describe things
+ better. I'm not fluent in this stuff.
+ <gnu_srs1> Has a pipe has a file descriptor associated to it? What about a
+ file read/write?
+ <abeaumont> a pipe provides 2 file descriptors, one for reading and another
+ one for writting
+ <abeaumont> i may give a look at that if i manage to build glibc
+ succesfully...
+ <gnu_srs1> Take a look at the realevant code from fd.h:
+ http://pastebin.com/kesBpjy4
+ <abeaumont> the ruby error happens just trying to build ruby1.9?
+ <abeaumont> gnu_srs1: from what you said, the error occurs while reading,
+ so i don't see how it can be related to that code
+ <abeaumont> you already got a descriptor if you're reading from it
+ <gnu_srs1> I have not tried anything else than ruby1.9.1. I can send you
+ the ruby debug setup and files if you are interested.
+ <abeaumont> gnu_srs1: ok, i'll try to build ruby1.9.1 later... let's see if
+ i can build glibc first
+ <gnu_srs1> abeaumont: well, the read suddenly returns -1 bytes read,
+ resulting in a file descriptor of -1 (instead of +3).
+ <abeaumont> gnu_srs1: i see
+ <antrik> gnu_srs1: are you sure the hang really happens in _hurd_fd_get()?
+ could you give us a backtrace?
+ <antrik> gnu_srs1: there are many reasons why read() can return -1; errno
+ should indicate the reason. unfortunately, I can't make much out of
+ ruby's "translation" of the error :-)
+ <gnu_srs1> antrik: In the ruby case there is no hang: The steam is closed
+ by read() giving an error code !=0. This triggers things in the ruby
+ code: A negative number of bytes read and a negative fd results, and an
+ error error is triggered in the ruby code.
+ <gnu_srs1> antrik: See http://pastebin.com/eZmaZQJr
+ <antrik> gnu_srs1: yes, this all sounds perfectly right. the question is
+ *why* read() returns an error code. we'd need to know what error it is
+ exactly, and in what situation it occurs. tracing the libc code is not at
+ all useful here
+ <antrik> uhm... 1073741833 is errno?...
+ <gnu_srs1> BTW: I think the error code is EBADF (badfile descriptor?). The
+ integer version of it is 1073741833, see the pastebin i linked to.
+ <antrik> you could use perror() to get something more readable :-)
+ <antrik> or error() with the right arguments
+ <gnu_srs1> I used integer when printing, but looking into fd.h I think it
+ is EBADF (I did get this result once in gdb)
+ <antrik> fd.h won't tell you anything. most error codes are generated by
+ the server, not by libc
+ <antrik> BADF might be generated in libc when ruby tries to read on FD -1
+ <antrik> (no idea why it tries to do that... perhaps there is actually
+ something wrong/stupid in ruby's error handling)
+ <gnu_srs1> Well I single-stepped in fd.h using gdb and printing err gave
+ EBADf. err is declared as: error_t err in read.c
+ <antrik> at which point did you single-step? while fd was still 3?
+ <gnu_srs1> I don't think the problem is in ruby, it is in mach/hurd!
+ Similar problems with ghc, python-apt, etc
+ <gnu_srs1> Yes, fd=3 was not changed. I cannot trace into fd.h from
+ read.c. That is the problem with all cases! Need to leave for a while
+ now.
+ <antrik> sorry, I don't see *anything* similar in the ghc failure.
+ <antrik> I don't know about python-apt
+ <antrik> for the ghc case, I'd like to see a GDB backtrace from the point
+ where it is hanging
+ <antrik> just to be clear: anything I/O-related will involve fd.h
+ somewhere. that doesn't in any way indicate the problems are related. in
+ fact the symptoms you described are very different, and I'm pretty
+ certain these are completely different issues
+ <gnu_srs1> antrik: Here is a backtrace,
+ http://pastebin.com/wvCiXFjB. Numbers 6,7,8 are from the calling Haskell
+ functions. They cannot be debugged by gdb. Nice to see that somebody is
+ showing interest at last:-/
+ <antrik> hm... I wonder whether the _hurd_intr_rpc_msg_in_trap is a result
+ of the ^C?
+ <antrik> if so, it seems to be a "normal" bloking read() operation. so
+ again probably not related to libc code at all
+ <gnu_srs1> Where is this blocking read() code located mach/hurd?
+ <antrik> io_read() is implemented by whatever server handles the FD in
+ question
+ <antrik> I guess rpctrace will be more helpful here than GDB... to see what
+ the program is trying to do here
+ <gnu_srs1> Why don't I get there with gdb?
+ <antrik> err... the server is a different process
+ <antrik> you are only tracing the client code
+ <gnu_srs1> OK, here is a rpctrace for ruby:
+ http://pastebin.com/sdPiKGBW.Nice programs you have, no manual pages, and
+ the program hang
+ <gnu_srs1> s/http://pastebin.com/sdPiKGBW.Nice
+ /http://pastebin.com/sdPiKGBW. BTW: Nice/
+ <gnu_srs1> antrik: Do you want the rpctrace of the ghc hang too? If that is
+ the case, do you need the whole file. From the ruby case the last part
+ looked most interesting:
+ libpthread/sysdeps/generic/pt-mutex-timedlock.c: assert (mutex->owner !=
+ self);
+ <antrik> gnu_srs1: hm... you get that assertion only with rpctrace? guess
+ it doesn't work properly then :-(
+ <gnu_srs1> Is it visible on the client side?
+ <antrik> gnu_srs1: that assertion *is* from the client side. I'm just
+ surprised that apparently it's only triggered when you run it in rpctrace
+ <antrik> how did you invoke rpctrace?
+ <gnu_srs1> rpctrace "command with options" > rpctrace.out 2>&1
+ <antrik> well, I'd like to know the "command with options" part :-)
+ <gnu_srs1> OK: for ruby: ./miniruby ./ tool/mkconfig.rb as before.
+ <antrik> OK, so it just runs the ruby interpreter and no other processes
+ <gnu_srs1> No other processes involved!
+ <abeaumont> gnu_srs1: i can reproduce the ruby error, no let's dig in it :D
+ <antrik> gnu_srs1: rpctrace for ghc could be useful too... but if it's too
+ long, pasting only the last bit might suffice
+ <gnu_srs1> antrik: OK, will do that. Do you find anything interesting?
+ <gnu_srs1> abeaumont: Using gdb: gdb ./miniruby; (gdb) break io.c:569; c8;
+ break fd.h:72 or break read.c:27 and you are there. Beware of gdb
+ hanging, so you need another terminal to kill -9 gdb (sometimes a reboot
+ is needed :-(
+ <antrik> gnu_srs1: no, the ruby rpctrace is useless; apparently rpctrace
+ makes it break before reaching the relevant part :-(
+ <abeaumont> thanks gnu_srs1
+ <gnu_srs1> antrik: Hope for better luck with ghc:
+ http://pastebin.com/dgcrA05t
+ <antrik> hm... it hangs at proc_dostop() again... whatever that means
+
+2011-05-07
+
+ <gnu_srs> One question about ruby: I know where the problems occur in ruby
+ code. Can I switch to the kernel thread just before in gdb to single step
+ from there?
+ <youpi> you can put a breakpoint, can't you?
+ <antrik> gnu_srs: kernel thread?
+ <gnu_srs> Yes, but will single stepping from there lead me to the Hurd
+ code. I have not succeeded to do that yet!
+ <youpi> you mean the translator code?
+ <gnu_srs> Well, Roland did call it the signal thread, there are at least
+ two threads per process, a signal thread and a main (user) thread.
+ <youpi> then it's a thread in gdb
+ <youpi> just use the thread gdb commands to access it
+ <gnu_srs> I do find two threads in gdb, yes. But following only the user
+ thread does not lead me to the cause of the problems.
+ <gnu_srs> And following the other (signal thread) has not been successful
+ so far.
+ <youpi> multithreading debugging in gdb is painful yes
+ <youpi> single-step isn't really an option in it
+ <antrik> gnu_srs: well, as I said before, the cause is probably not in the
+ libc code anyways. it would be much more relevant to find out what the FD
+ in question is, and what "special" thing Ruby does to it to trigger the
+ problematic behaviour...
+ <youpi> it's simpler to put printfs etc.
+ <antrik> youpi: well, printf doesn't work in the FD code :-)
+ <youpi> you can make it work
+ <youpi> open /dev/mem, write to 0xb8000
+ <youpi> I'm not even joking
+ <gnu_srs> I have printfs in the ruby code. And at some parts in eglibc (but
+ it is not possible to put them at all places I want, as mentioned before)
+ <antrik> sure, there are ways to debug this code too... but I don't think
+ it's useful. so far there is no indication that this will help finding
+ the actual issue
+ <gnu_srs> The problem is not file descriptors. It is that an ongoing read
+ suddenly returns -1 bytes read. And then the ruby code assigns a negative
+ file descriptor in the exception handling.
+ <youpi> a *read* ?
+ <youpi> with errno == 0 ?
+ <gnu_srs> Yes, a read!
+ <youpi> how ruby comes to assigning a negative fd from that?
+ <youpi> does it somehow close the fd?
+ <gnu_srs> The errno reported from the read is EBADF!
+ <youpi> did you try to rpctrace it?
+ <gnu_srs> I don't bother too much about ruby exception handling. The error
+ has already happened in the read operation. And that lead me to eglibc
+ code.... and so on...
+ <youpi> do you know what kind of file this fd was supposed to be on?
+ <youpi> sure, that's debugging
+ <gnu_srs> Yes I did rpctrace, but that was not successful. rpctrace just
+ hang! Buggy code?
+ <antrik> youpi: I assume that's Ruby's way to indicate that the FD is not
+ valid anymore, after the previous error
+ <youpi> does the program fork?
+ <youpi> antrik: possibly
+ <youpi> rpctrace has known issues, yes
+ <youpi> gnu_srs: did you trace close()s by hand with printfs?
+ <gnu_srs> Ho w to find out if it forks?
+ <youpi> what does rpctrace stop on ?
+ <gnu_srs> Well, I don't remember. Antrik?
+ <antrik> proc_dostop() IIRC
+ <antrik> or something like that
+ <gnu_srs> I did not find any close() statements in the code I debugged.
+ <youpi> ok, proc_dostop() is typically a sign of fork()
+ <youpi> gnu_srs: that doesn't necessarily mean it's not called
+ <antrik> gnu_srs: I think his point is that something else might close the
+ FD, causing the error you see
+ <youpi> anything can happen in the wild :)
+ <antrik> gnu_srs: as I said before, the next step is to find out what this
+ FD is, and what happens to it...
+ <gnu_srs> antrik: Any ideas how to find out?
+ <youpi> what is the backtrace?
+ <gnu_srs> Well I know the fd number, it is either 3 or 5 in my tests. Does
+ the number matter?
+ <youpi> yes, it's not std{in,out,err}
+ <gnu_srs> How to get a backtrace of a program that does not hang?
+ <youpi> make it hang at the point of failure
+ <youpi> when read returns -1
+ <youpi> so you know who did the read
+ <gnu_srs> I have to run the loop several times before the number of bytes
+ read is -1.
+ <youpi> you mean running the program several times ?
+ <youpi> or just let the loop continue for some time?
+ <pinotree> if it's the latter, you can add breakpoints with conditions
+ <gnu_srs> No the read loop runs for 7 iterations, and fails the 8th time!
+ <youpi> then make it hang when read() returns -1
+ <Mr_Spock> could you paste your code somewhere?
+ <youpi> when debugging, you're allowed to do all kinds of ugly things, you
+ know ;)
+ <gnu_srs> OK, I'll try that.
+ <gnu_srs> MR_Spock: The easiest way would be to try to build
+ ruby1.9.1. Then I can help you from where it fails.
+ <gnu_srs> pinotree: How to give a breakpoint with a condition?
+ <pinotree> break where if condition
+ <youpi> see help break
+ <youpi> oh, there's even a thread condition nowadays, good
+ <gnu_srs> Thanks for the discussion. I have to get into the real world for
+ a while now. To be continued.
+ <antrik> gnu_srs: well, if you already know that the loop runs several
+ times before the error occurs, you apparently already looked at the
+ higher-level code that is relevant here...
+ <youpi> but it may be generic code, and not tell what calls it
diff --git a/open_issues/socat.mdwn b/open_issues/socat.mdwn
new file mode 100644
index 00000000..1961a9a8
--- /dev/null
+++ b/open_issues/socat.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 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]]
+
+`socat` needs porting. Some work has already been done in 2007, see
+<http://www.dest-unreach.org/socat/contrib/socat-hurd.html> or contact
+[[Thomas_Schwinge|tschwinge]].
diff --git a/hurd/todo.mdwn b/open_issues/some_todo_list.mdwn
index 2d65f0c8..1f6f5002 100644
--- a/hurd/todo.mdwn
+++ b/open_issues/some_todo_list.mdwn
@@ -1,12 +1,18 @@
-For how best to contribte, see [[contributing]].
+[[!meta copyright="Copyright © 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+Free Software Foundation, Inc."]]
-This todo is primarily targetted at the Hurd proper
-and applications that rely on the Hurd interfaces.
+[[!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]]."]]"""]]
-The canonical TODOs from the CVS archive:
+[[!tag open_issue_hurd]]
-* [TODO file](http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/hurd/hurd/TODO?rev=HEAD&content-type=text/plain)
-* [Task file](http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/hurd/hurd/tasks?rev=HEAD&content-type=text/plain)
+This todo is primarily targetted at the Hurd proper
+and applications that rely on the Hurd interfaces.
* psmisc
@@ -45,7 +51,6 @@ From Marcus, 2002:
* Are all inode numbers and link counts correct?
* We also should have a "make check" test suite. We can add this once Jeff finished his automake patches
* pick up the other things
- * pthread, definitely. Now that we are so close
* new console is basically done
* needs integration of course
* X switching support
diff --git a/open_issues/subhurd_error_messages.mdwn b/open_issues/subhurd_error_messages.mdwn
new file mode 100644
index 00000000..46b58fa4
--- /dev/null
+++ b/open_issues/subhurd_error_messages.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2010 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_hurd]]
+
+IRC, unknown channel, unknown date:
+
+ <antrik> BTW, many things in a subhurd print various error messages that are never visible on a normal Hurd...
diff --git a/open_issues/sync_but_still_unclean_filesystem.mdwn b/open_issues/sync_but_still_unclean_filesystem.mdwn
new file mode 100644
index 00000000..c8a37169
--- /dev/null
+++ b/open_issues/sync_but_still_unclean_filesystem.mdwn
@@ -0,0 +1,37 @@
+[[!meta copyright="Copyright © 2010, 2011 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_gnumach open_issue_hurd]]
+
+Also filed as [[!GNU_Savannah_bug 29292]].
+
+\#hurd, 2010, end of May / beginning of June
+
+ [runnign sync, but sill unclean filesystem at next boot]
+ <slpz> guillem: when libpager syncs an object, it sends an m_o_lock_request
+ and waits (if the synchronous argument was specified) for a
+ m_o_lock_completed. But m_o_lock_completed only means that dirty pages
+ have been sent to the translator, and this one still needs to write them
+ to the backing storage
+ <slpz> guillem: there's no problem if sync() returns before actually
+ writting the changes to disk, but this also happens when shutting down
+ the translator
+ <slpz> guillem: in theory, locking mechanisms in libpager should prevent
+ this from happening by keeping track of write operations, but this seems
+ to fail in some situations
+
+It helps a lot to run [[`syncfs --synchronous /`|hurd/syncfs]] before issuing
+the `halt` or `reboot` command. This will prevent most of the uncleanliness.
+Of course, [[hurd/translator/ext2fs]] is meant to be doing this to-disk
+synchronization internally upon translator shutdown, but evidently it doesn't
+in all cases.
+
+Apparently diskfs simply does not set filesystems as read-only:
+<http://lists.gnu.org/archive/html/bug-hurd/2011-08/msg00024.html>.
diff --git a/open_issues/syslog.mdwn b/open_issues/syslog.mdwn
new file mode 100644
index 00000000..5fec38b1
--- /dev/null
+++ b/open_issues/syslog.mdwn
@@ -0,0 +1,45 @@
+IRC, unknwon channel, unknown date.
+
+ <tschwinge> scolobb: In wiki edit 60accafa79f645ae61b578403f7fc0c11914b725
+ I see that you intend(ed) to use syslog for logging debug messages. I
+ thought I'd point you to
+ http://lists.gnu.org/archive/html/bug-hurd/2007-02/msg00042.html -- no
+ idea if that's still an issue or what went wrong at that time. Perhaps
+ you can have a look?
+ <scolobb> tschwinge: Thanks for information! Currently I'm logging some
+ debug messages to a simple file, but I'll now check whether the issue
+ you've pointed out is still present.
+ <scolobb> tschwinge: I am getting absolutely abnormal results: when I call
+ syslog() from a simple C program for the first time, the message goes to
+ the system log. However, any further calls to syslog() do just
+ nothing... I am able to send something to syslog only after reboot (it
+ doesn't help if I restart syslogd).
+
+
+IRC, freenode, #hurd, 2011-08-08
+
+ < pinotree> wow, `logger` + a simple C udp server can cause havoc
+ < pinotree> youpi: ever seen something like
+ http://paste.debian.net/hidden/72cf4b77/ ?
+ < pinotree> and then also other servers (like pflocal, pfinet, few more)
+ start becoming crazy (using 100% cpu)
+ < youpi> nope
+ < pinotree> iirc in one of the few tries i got the message "Resource lost."
+ from the closed ssh connection
+ < pinotree> i was trying to see why syslog doesn't work, but this basically
+ surprised me...
+ < pinotree> oh, i found an apparently working syslog daemon
+ < pinotree> dsyslog
+ < gg0> have you tried syslog-ng? IIRC it writes in /var/log/messages by
+ default.
+ < pinotree> yeah, it seems to stop receiving messages are few
+ < pinotree> gg0: are you using syslog-ng?
+ < gg0> pinotree: I should fire hurd vm up. I seem I kept dirty-patched
+ busybox syslog, I don't even know if it works, at least it starts
+ http://bugs.debian.org/636162
+ < pinotree> maintainer said "not really"
+ < gg0> well, if all other syslogs use shm and sems, they won't work too,
+ right?
+ < youpi> shm should work with the latest libc
+ < youpi> what won't is sysv sem
+ < youpi> (i.e. semget)
diff --git a/open_issues/system_call_mechanism.mdwn b/open_issues/system_call_mechanism.mdwn
new file mode 100644
index 00000000..5598148c
--- /dev/null
+++ b/open_issues/system_call_mechanism.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2011 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_gnumach]]
+
+IRC, freenode, #hurd, 2011-05-07
+
+ <braunr> very simple examples: system calls use old call gates, which are
+ the slowest path to kernel space
+ <braunr> modern processors have dedicated instructions now
diff --git a/open_issues/system_crash_nmap.mdwn b/open_issues/system_crash_nmap.mdwn
new file mode 100644
index 00000000..25d9a1c6
--- /dev/null
+++ b/open_issues/system_crash_nmap.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2010 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_gnumach]]
+
+IRC, unknown channel, unknown date:
+
+ <Casper_> Hmm, `nmap hurd -p 1-` seems to reliably make a hurd machine reboot.
diff --git a/open_issues/system_crash_pflocal_fifo.mdwn b/open_issues/system_crash_pflocal_fifo.mdwn
new file mode 100644
index 00000000..1dddc44e
--- /dev/null
+++ b/open_issues/system_crash_pflocal_fifo.mdwn
@@ -0,0 +1,41 @@
+[[!meta copyright="Copyright © 2010 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_gnumach]]
+
+IRC, unknown channel, unknown date:
+
+`cat < /dev/zero | cat > /dev/null` will eventually make the system crash,
+likewise when using a FIFO.
+
+ <antrik> hm... VM activity seems much higher when running fifo than pfinet... may be the cause
+ <antrik> "zero filled" and "page faults" are serveral times higher with pipe than with pfinet
+ <antrik> (cow faults however are about the same...)
+ <antrik> pflocal is about the same as fifo
+
+ <antrik> no, because it usually takes like 20 minutes until it crashes, sometimes much longer
+
+ <antrik> not sure, but the longest so far was in the range of hours IIRC
+
+ <antrik> I think I never tested what happens on "cat /dev/zero >/dev/null"... another thing yet to try
+
+ <antrik> Linux BTW seems to employ some major VM trickery in this case -- dd shows a transfer rate of 10 GB/s...
+
+ <antrik> no, no anomalies in vmstat
+ <antrik> the only observation I made is that number of page faults and some other number rise pretty quickly with pflocal and fifo, but not with pfinet
+ <antrik> I guess that's somehow related to the fact that pfinet doesn't crash -- though I guess the difference is simply that pfinet is way slower...
+ <antrik> (haven't checked that, though)
+
+ <antrik> BTW, I'm not sure you got it right: the test case is "cat /dev/zero|cat >/dev/null", *not* "cat /dev/zero >/dev/null"
+
+ <antrik> OK, "cat /dev/zero|tail -c 1" also crashes, so it's definitely not related to /dev/null
+ <antrik> "dd if=/dev/zero|tail -c 1" crashes as well
+ <antrik> but "tail -c 1 /dev/zero" doesn't seem to
+ <antrik> cool... running multiple instances of the pipe test also considerably speeds up the crash
diff --git a/open_issues/system_initialization.mdwn b/open_issues/system_initialization.mdwn
new file mode 100644
index 00000000..9048b615
--- /dev/null
+++ b/open_issues/system_initialization.mdwn
@@ -0,0 +1,24 @@
+[[!meta copyright="Copyright © 2011 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_hurd]]
+
+IRC, freenode, #hurd, 2011-03-30
+
+ <kilobug> init=/bin/sh hack doesn't work for GNU/Hurd ?
+ <antrik> kilobug: I don't think you can override init on Hurd. the init
+ server is actually involved in bootstrapping part of the system core
+ <antrik> at some point we discussed the possibility to reduce the Hurd init
+ server to *only* do that, and then pass on to standard sysv init... with
+ that it could actually work
+
+---
+
+ * [[systemd]], etc.
diff --git a/open_issues/systemd.mdwn b/open_issues/systemd.mdwn
new file mode 100644
index 00000000..1d774307
--- /dev/null
+++ b/open_issues/systemd.mdwn
@@ -0,0 +1,150 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]
+
+ * <http://www.freedesktop.org/wiki/Software/systemd>
+
+ * <http://0pointer.de/blog/projects/systemd.html>,
+ <http://0pointer.de/blog/projects/systemd-update.html>
+
+ * <http://lwn.net/Articles/389149/>
+
+Will need to have something like Linux'
+[*cgroups*](http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/cgroups/cgroups.txt;hb=HEAD).
+Introduction: [*Ressourcen-Verwaltung mit Control Groups (cgroups)*
+(german)](http://www.pro-linux.de/artikel/2/1464/ressourcen-verwaltung-mit-control-groups-cgroups.html),
+Daniel Gollub, Stefan Seyfried, 2010-10-14.
+
+Likely there's also some other porting needed.
+
+
+# IRC, OFTC, #debian-hurd, 2011-05-19
+
+ <pinotree> pochu: http://news.gmane.org/gmane.comp.gnome.desktop - the
+ "systemd as dependency" and all the messages in it don't give me a bright
+ future for gnome on hurd...
+ <pochu> yeah, I've read the thread
+ <pochu> it's only a proposal so far... hopefully it'll be rejected, or they
+ will only accept the interfaces that other OSes can implement...
+ <pochu> we'll see
+ <pinotree> you can always help me with kde on hurd, would be nice ;)
+ <pochu> hehe
+ <pinotree> pochu: well, even if the depenency is rejected, the whole «don't
+ give a damn about non-linux and only bless linux for the "gnome os"» is a
+ bit... worrying attitude
+ <pochu> yeah... it doesn't come from all the community though
+ <pochu> I'm sure some people have always thought that way
+ <tschwinge> Or we could get systemd going? :-)
+ <pochu> good luck with that :p
+ <guillem> tschwinge: haha!? :)
+ <tschwinge> That bad?
+ <guillem> tschwinge: if you mean by that forking indefinitely then maybe
+ <guillem> tschwinge: upstream has expressely stated multiple times, no
+ interest whatsoever in any kind of portability to anything non-Linux
+ <guillem> or even older Linux versions!
+ <guillem> to the point of rejecting patches, because they "clutter" the
+ source code...
+ <tschwinge> Well, then let's ``just'' implement the Linux interfaces. :-)
+ <guillem> tschwinge: then you'll be always playing catch up
+ <guillem> tschwinge: for example several of the Linux-only things upstream
+ makes heavy use of, are pretty recent Linux-only additions to the kernel,
+ but equivalents have been present on FreeBSD for years
+ <tschwinge> Yeah. I'm half-serious, half-joking.
+ <tschwinge> I haven't looked at the systemd code at all.
+ <guillem>
+ https://mail.gnome.org/archives/desktop-devel-list/2011-May/msg00447.html
+ for a list of its dependencies
+ <guillem> some are just glibc extensions though
+ <guillem> and some are IMO optional and should be conditionalized, but...
+ <guillem> pochu: I don't think that attitude is that old, there was a time
+ when Linux was not used widely, or even that functional, I think it has
+ been taking strength since the Linux Plumbers Cartel started :)
+ <guillem> as in one thing is not caring about anything non-Linux, the other
+ is outright rejecting portability fixes
+ <guillem> tschwinge: in any case, these "recent" events are "pissing me
+ off" to the point of having considered several times implementing
+ portable replacements for some of those Utopia projects, the problem as
+ always is time though :)
+ <guillem> tschwinge: and the issue is not only with systemd, upstart's
+ upstream has the same approach to portability, if you want to port it,
+ you'll have to maintain a fork
+ <pochu> let's create our own init system, make it better than anyone else,
+ and when people start switching to it, let's start using hurd-only APIs
+ :)
+ <tschwinge> We already had someone work on that. Like ten years ago. DMD.
+ Daemon Managing Daemons. <http://directory.fsf.org/project/DMD/>
+ <guillem> the real problem with that attitude is not the lack of care for
+ portabilty, the real problem is that these people are pushing for their
+ stuff all over the stack, and most of the time deprecating their own
+ stuff after a while when they have rewritten it from scratch, leaving the
+ burden of maintaining the old stuff to the other ports
+ <guillem> witness HAL, ConsoleKit, etc etc
+ <guillem> (anyway enough ranting I guess :)
+ <tschwinge> Yeah, it's true, though.
+ <pochu> agreed
+
+
+# Requires Interfaces
+
+In the thread starting
+[here](http://lists.debian.org/debian-devel/2011/07/threads.html#00269), a
+[message](http://lists.debian.org/debian-devel/2011/07/msg00281.html) has been
+posted that contains the following list (no claim for completeness) of
+interfaces that are used in (two source code files of) systemd:
+
+ * cgroups
+ * namespaces
+ * selinux
+ * autofs4
+ * capabilities
+ * udev
+ * oom score adjust
+ * RLIMIT_RTTIME
+ * RLIMIT_RTPRIO
+ * ionice
+ * SCHED_RESET_ON_FORK
+ * /proc/$PID/stat
+ * fanotify
+ * inotify
+ * TIOCVHANGUP
+ * IP_TRANSPORT
+ * audit
+ * F_SETPIPE_SZ
+ * CLONE_xxx
+ * BTRFS_IOC_DEFRAG
+ * PR_SET_NAME
+ * PR_CAPBSET_DROP
+ * PR_SET_PDEATHSIG
+ * PR_GET_SECUREBITS
+ * /proc/$PID/comm
+ * /proc/$PID/cmdline
+ * /proc/cmdline
+ * numerous GNU APIs like asprintf
+ * SOCK_CLOEXEC, O_CLOEXEC
+ * /proc/$PID/fd
+ * /dev/tty0
+ * TIOCLINUX
+ * VT_ACTIVATE
+ * TIOCNXCL
+ * KDSKBMODE
+ * /dev/random
+ * /dev/char/
+ * openat() and friends
+ * /proc/$PID/root
+ * waitid()
+ * /dev/disk/by-label/
+ * /dev/disk/by-uuid/
+ * /sys/class/tty/console/active
+ * /sys/class/dmi/id
+ * /proc/$PID/cgroup
+ * \033[3J
+ * /dev/rtc
+ * settimeofday() and its semantics
diff --git a/open_issues/term_blocking.mdwn b/open_issues/term_blocking.mdwn
new file mode 100644
index 00000000..19d18d0e
--- /dev/null
+++ b/open_issues/term_blocking.mdwn
@@ -0,0 +1,128 @@
+[[!meta copyright="Copyright © 2009, 2011 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_hurd]]
+
+There must be some blocking / dead-locking (?) problem in `term`.
+
+[[!toc]]
+
+
+# Original Findings
+
+ # w | grep [t]sch
+ tschwing p1 192.168.10.60: Tue 8PM 0:03 2172 /bin/bash
+ tschwing p2 192.168.10.60: Tue 4PM 40hrs 689 emacs
+ tschwing p3 192.168.10.60: 8:52PM 11:37 15307 /bin/bash
+ tschwing p0 192.168.10.60: 6:42PM 11:47 8104 /bin/bash
+ tschwing p8 192.168.10.60: 8:27AM 0:02 16510 /bin/bash
+
+Now open a new screen window, or login shell, or...
+
+ # ps -Af | tail
+ [...]
+ tschwinge 16538 676 p6 0:00.08 /bin/bash
+ root 16554 128 co 0:00.09 ps -Af
+ root 16555 128 co 0:00.01 tail
+
+`bash` is started (on `p6`), but newer makes it to the shell promt; doesn't
+even start to execute `.bash_profile` / `.bashrc`. The next shell started, on
+the next available pseudoterminal, will work without problems.
+
+The `term` on `p6` has already been running before:
+
+ # ps -Af | grep [t]typ6
+ root 6871 3 - 5:45.86 /hurd/term /dev/ptyp6 pty-master /dev/ttyp6
+
+In this situation, `w` will sometimes report erroneous values for *IDLE*
+for the process using that terminal.
+
+Killed that `term` instance, and things were fine again.
+
+
+All this reproducible happens while running the [[GDB testsuite|gdb]].
+
+---
+
+Have a freshly started shell blocking on such a `term` instance.
+
+ $ ps -F hurd-long -p 1766 -T -Q
+ PID TH# UID PPID PGrp Sess TH Vmem RSS %CPU User System Args
+ 1766 0 3 1 1 6 131M 1.14M 0.0 0:28.85 5:40.91 /hurd/term /dev/ptyp3 pty-master /dev/ttyp3
+ 0 0.0 0:05.76 1:08.48
+ 1 0.0 0:00.00 0:00.01
+ 2 0.0 0:06.40 1:11.52
+ 3 0.0 0:05.76 1:09.89
+ 4 0.0 0:05.42 1:06.74
+ 5 0.0 0:05.50 1:04.25
+
+... and after 5:45 h:
+
+ $ ps -F hurd-long -p 21987 -T -Q
+ PID TH# UID PPID PGrp Sess TH Vmem RSS %CPU User System Args
+ 21987 1001 676 21987 21987 2 148M 2.03M 0.0 0:00.02 0:00.07 /bin/bash
+ 0 0.0 0:00.02 0:00.07
+ 1 0.0 0:00.00 0:00.00
+
+ $ ps -F hurd-long -p 1766 -T -Q
+ PID TH# UID PPID PGrp Sess TH Vmem RSS %CPU User System Args
+ 1766 0 3 1 1 6 131M 1.14M 0.0 0:29.04 5:42.38 /hurd/term /dev/ptyp3 pty-master /dev/ttyp3
+ 0 0.0 0:05.76 1:08.48
+ 1 0.0 0:00.00 0:00.01
+ 2 0.0 0:06.41 1:11.90
+ 3 0.0 0:05.82 1:10.28
+ 4 0.0 0:05.52 1:07.06
+ 5 0.0 0:05.52 1:04.63
+
+ $ sudo gdb /hurd/term 1766
+ [sudo] password for tschwinge:
+ GNU gdb (GDB) 7.0-debian
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+ This is free software: you are free to change and redistribute it.
+ There is NO WARRANTY, to the extent permitted by law. Type "show copying"
+ and "show warranty" for details.
+ This GDB was configured as "i486-gnu".
+ For bug reporting instructions, please see:
+ <http://www.gnu.org/software/gdb/bugs/>...
+ Reading symbols from /hurd/term...Reading symbols from /usr/lib/debug/hurd/term...done.
+ (no debugging symbols found)...done.
+ Attaching to program `/hurd/term', pid 1766
+ [New Thread 1766.1]
+ [New Thread 1766.2]
+ [New Thread 1766.3]
+ [New Thread 1766.4]
+ [New Thread 1766.5]
+ [New Thread 1766.6]
+ Reading symbols from /lib/libhurdbugaddr.so.0.3...Reading symbols from /usr/lib/debug/lib/libhurdbugaddr.so.0.3...
+ [System doesn't respond anymore, but no kernel crash.]
+
+---
+
+The very same behavior is still observable as of 2011-03-24.
+
+Next: rebooted; on console started root shell, screen, a few spare windows; as
+user started GDB test suite, noticed the PTY it's using; in a root shell
+started GDB (the system one, for `.debug` stuff) on `/hurd/term`, `set
+noninvasive on`, attach to the *term* that GDB is using.
+
+
+[[2011-07-04]].
+
+
+# Formal Verification
+
+This issue may be a simple programming error, or it may be more complicated.
+
+Methods of [[formal_verification]] should be applied to confirm that there is
+no error in `/hurd/term`'s logic itself. There are tools for formal
+verification/[[code_analysis]] that can likely help here.
+
+There is a [[!FF_project 277]][[!tag bounty]] on this task.
diff --git a/open_issues/term_blocking/2011-07-04.mdwn b/open_issues/term_blocking/2011-07-04.mdwn
new file mode 100644
index 00000000..0f302409
--- /dev/null
+++ b/open_issues/term_blocking/2011-07-04.mdwn
@@ -0,0 +1,246 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+GDB testsuite makes a term process go bonkers. The testsuite is terminated.
+The term process remanins. Next, a new shell (bash) is started that connects
+to this term process -- and hangs.
+
+Hung bash process (27834), term (22634).
+
+ # portinfo -t 22634 27834
+ 5 => 58: receive
+ 11 => 18: receive
+ 21 => 53: receive
+ 26 => 51: receive
+ 27 => 56: receive
+ 28 => 48: receive
+ 30 => 54: receive
+
+GDB on bash:
+
+ #0 0x010ab12c in _hurd_intr_rpc_msg_in_trap (msg=0x102383c, option=3, send_size=44, rcv_size=2092, rcv_name=9, timeout=0, notify=0) at intr-msg.c:134
+ err = <value optimized out>
+ err = <value optimized out>
+ user_option = 3
+ user_timeout = 0
+ m = 0x102383c
+ msgh_bits = 5395
+ remote_port = 27
+ msgid = 21001
+ __PRETTY_FUNCTION__ = "_hurd_intr_rpc_mach_msg"
+ #1 0x01235195 in __io_read (io_object=27, data=0x1024148, dataCnt=0x102414c, offset=-1, amount=1) at /home/buildd/build/chroot-sid/home/buildd/byhand/eglibc-2.13/build-tree/hurd-i386-libc/hurd/RPC_io_read.c:138
+ Mess = {In = {Head = {msgh_bits = 5395, msgh_size = 1768, msgh_remote_port = 27, msgh_local_port = 9, msgh_seqno = 0, msgh_id = 21001}, offsetType = {msgt_name = 11, msgt_size = 64, msgt_number = 1, msgt_inline = 1, msgt_longform = 0, msgt_deallocate = 0,
+ msgt_unused = 0}, offset = -1, amountType = {msgt_name = 2, msgt_size = 32, msgt_number = 1, msgt_inline = 1, msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0}, amount = 1}, Out = {Head = {msgh_bits = 5395, msgh_size = 1768, msgh_remote_port = 27,
+ msgh_local_port = 9, msgh_seqno = 0, msgh_id = 21001}, RetCodeType = {msgt_name = 11, msgt_size = 64, msgt_number = 1, msgt_inline = 1, msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0}, RetCode = -1, dataType = {msgtl_header = {msgt_name = 255,
+ msgt_size = 255, msgt_number = 4095, msgt_inline = 1, msgt_longform = 1, msgt_deallocate = 1, msgt_unused = 1}, msgtl_name = 8194, msgtl_size = 4097, msgtl_number = 1},
+ data = "# /etc/inputrc - global inputrc for libreadline\n# See readline(3readline) and `info rluserman' for more information.\n\n# Be 8 bit clean.\nset input-meta on\nset output-meta on\n\n# To allow the use of 8bit"...}}
+ msg_result = <value optimized out>
+ msgh_size = <value optimized out>
+ #2 0x010afbb1 in readfd (port=27) at fd-read.c:34
+ nbytes = 0x9
+ nread = 40
+ data = 0x44 <Address 0x44 out of bounds>
+ offset = 12884901897
+ #3 0x010b5de5 in _hurd_ctty_input (port=26, ctty=27, rpc=0x1024154) at ctty-input.c:36
+ err = 19156808
+ #4 0x010af53e in _hurd_fd_read (fd=0x1244f48, buf=0x102420f, offset=-1) at fd-read.c:39
+ __ulink = {resource = {next = 0x0, prevp = 0x1244f4c}, thread = {next = 0x1024160, prevp = 0x1246c5c}, cleanup = 0x10b75a0 <_hurd_port_cleanup>, cleanup_data = 0x1a}
+ __ctty_ulink = {resource = {next = 0x0, prevp = 0x1244f5c}, thread = {next = 0x0, prevp = 0x1024180}, cleanup = 0x10b75a0 <_hurd_port_cleanup>, cleanup_data = 0x1b}
+ ctty = 27
+ crit = 0x1246808
+ __result = 16925048
+ port = <value optimized out>
+ err = <value optimized out>
+ data = 0x102420f ""
+ nbytes = 0x10241f8
+ nread = 1
+ #5 0x0116c080 in __libc_read (fd=DWARF-2 expression error: DW_OP_reg operations must be used either alone or in conjuction with DW_OP_piece or DW_OP_bit_piece.
+ ) at ../sysdeps/mach/hurd/read.c:27
+ descriptor = <error reading variable descriptor (DWARF-2 expression error: DW_OP_reg operations must be used either alone or in conjuction with DW_OP_piece or DW_OP_bit_piece.)>
+ err = <value optimized out>
+ #6 0x080cdaac in ?? ()
+ No symbol table info available.
+ #7 0x080cdf88 in ?? ()
+ No symbol table info available.
+ #8 0x080baff7 in ?? ()
+ No symbol table info available.
+ #9 0x080bb435 in ?? ()
+ No symbol table info available.
+ #10 0x080507e7 in ?? ()
+ No symbol table info available.
+ #11 0x0804fc36 in ?? ()
+ No symbol table info available.
+ #12 0x08052f22 in ?? ()
+ No symbol table info available.
+ #13 0x08055dab in ?? ()
+ No symbol table info available.
+ #14 0x0804d960 in ?? ()
+ No symbol table info available.
+ #15 0x0804da1f in ?? ()
+ No symbol table info available.
+ #16 0x0804dc65 in ?? ()
+ No symbol table info available.
+ #17 0x0804d215 in ?? ()
+ No symbol table info available.
+ #18 0x010b906b in __libc_start_main (main=0x804c450, argc=1, ubp_av=0x1024dd4, init=0x80d7ff0, fini=0x80d7fe0, rtld_fini=0xf330, stack_end=0x1024dcc) at libc-start.c:257
+ result = <value optimized out>
+ #19 0x0804b281 in ?? ()
+ No symbol table info available.
+
+GDB on term:
+
+ 5 Thread 22634.5 0x01089f6c in mach_msg_trap () at /home/buildd/build/chroot-sid/home/buildd/byhand/eglibc-2.13/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+ 4 Thread 22634.4 0x01089f6c in mach_msg_trap () at /home/buildd/build/chroot-sid/home/buildd/byhand/eglibc-2.13/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+ 3 Thread 22634.3 0x01089f6c in mach_msg_trap () at /home/buildd/build/chroot-sid/home/buildd/byhand/eglibc-2.13/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+ 2 Thread 22634.2 0x01089f6c in mach_msg_trap () at /home/buildd/build/chroot-sid/home/buildd/byhand/eglibc-2.13/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+ * 1 Thread 22634.1 0x01089f6c in mach_msg_trap () at /home/buildd/build/chroot-sid/home/buildd/byhand/eglibc-2.13/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+
+ Thread 5 (Thread 22634.5):
+ #0 0x01089f6c in mach_msg_trap () at /home/buildd/build/chroot-sid/home/buildd/byhand/eglibc-2.13/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+ No locals.
+ #1 0x0108a769 in __mach_msg (msg=0x129bf10, option=2050, send_size=0, rcv_size=8192, rcv_name=16, timeout=0, notify=0) at msg.c:110
+ ret = <value optimized out>
+ #2 0x0108ae24 in __mach_msg_server_timeout (demux=0x125fd1c, max_size=8192, rcv_name=16, option=2048, timeout=0) at msgserver.c:101
+ request = 0x129bf10
+ reply = 0x129df20
+ mr = <value optimized out>
+ __PRETTY_FUNCTION__ = "__mach_msg_server_timeout"
+ #3 0x01058e45 in thread_function (master=0) at /home/buildd/build/chroot-sid/home/buildd/byhand/hurd/./libports/manage-multithread.c:136
+ timeout = 0
+ err = <value optimized out>
+ hook = 0
+ global_timeout = 0
+ thread_timeout = 0
+ bucket = 0x805e1f0
+ lock = 0
+ totalthreads = 4
+ nreqthreads = 3
+ #4 0x01052b91 in cthread_body (self=0x8061460) at /home/buildd/build/chroot-sid/home/buildd/byhand/hurd/./libthreads/cthreads.c:300
+ t = 0x80619a8
+ #5 0x00000000 in ?? ()
+ No symbol table info available.
+
+ Thread 4 (Thread 22634.4):
+ #0 0x01089f6c in mach_msg_trap () at /home/buildd/build/chroot-sid/home/buildd/byhand/eglibc-2.13/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+ No locals.
+ #1 0x0108a769 in __mach_msg (msg=0x128df20, option=2050, send_size=0, rcv_size=8192, rcv_name=16, timeout=0, notify=0) at msg.c:110
+ ret = <value optimized out>
+ #2 0x0108ae24 in __mach_msg_server_timeout (demux=0x125fd1c, max_size=8192, rcv_name=16, option=2048, timeout=0) at msgserver.c:101
+ request = 0x128df20
+ reply = 0x128bf10
+ mr = <value optimized out>
+ __PRETTY_FUNCTION__ = "__mach_msg_server_timeout"
+ #3 0x01058e45 in thread_function (master=0) at /home/buildd/build/chroot-sid/home/buildd/byhand/hurd/./libports/manage-multithread.c:136
+ timeout = 0
+ err = <value optimized out>
+ hook = 0
+ global_timeout = 0
+ thread_timeout = 0
+ bucket = 0x805e1f0
+ lock = 0
+ totalthreads = 4
+ nreqthreads = 3
+ #4 0x01052b91 in cthread_body (self=0x805f800) at /home/buildd/build/chroot-sid/home/buildd/byhand/hurd/./libthreads/cthreads.c:300
+ t = 0x805f788
+ #5 0x00000000 in ?? ()
+ No symbol table info available.
+
+ Thread 3 (Thread 22634.3):
+ #0 0x01089f6c in mach_msg_trap () at /home/buildd/build/chroot-sid/home/buildd/byhand/eglibc-2.13/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+ No locals.
+ #1 0x0108a769 in __mach_msg (msg=0x127df20, option=2050, send_size=0, rcv_size=8192, rcv_name=16, timeout=0, notify=0) at msg.c:110
+ ret = <value optimized out>
+ #2 0x0108ae24 in __mach_msg_server_timeout (demux=0x125fd1c, max_size=8192, rcv_name=16, option=2048, timeout=0) at msgserver.c:101
+ request = 0x127df20
+ reply = 0x127bf10
+ mr = <value optimized out>
+ __PRETTY_FUNCTION__ = "__mach_msg_server_timeout"
+ #3 0x01058e45 in thread_function (master=0) at /home/buildd/build/chroot-sid/home/buildd/byhand/hurd/./libports/manage-multithread.c:136
+ timeout = 0
+ err = <value optimized out>
+ hook = 0
+ global_timeout = 0
+ thread_timeout = 0
+ bucket = 0x805e1f0
+ lock = 0
+ totalthreads = 4
+ nreqthreads = 3
+ #4 0x01052b91 in cthread_body (self=0x805ec30) at /home/buildd/build/chroot-sid/home/buildd/byhand/hurd/./libthreads/cthreads.c:300
+ t = 0x805ebb8
+ #5 0x00000000 in ?? ()
+ No symbol table info available.
+
+ Thread 2 (Thread 22634.2):
+ #0 0x01089f6c in mach_msg_trap () at /home/buildd/build/chroot-sid/home/buildd/byhand/eglibc-2.13/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+ No locals.
+ #1 0x0108a769 in __mach_msg (msg=0x126df20, option=3, send_size=32, rcv_size=4096, rcv_name=12, timeout=0, notify=0) at msg.c:110
+ ret = <value optimized out>
+ #2 0x0108ae99 in __mach_msg_server_timeout (demux=0x109b9d0 <msgport_server>, max_size=4096, rcv_name=12, option=0, timeout=0) at msgserver.c:151
+ request = 0x126ef30
+ reply = 0x126df20
+ mr = <value optimized out>
+ __PRETTY_FUNCTION__ = "__mach_msg_server_timeout"
+ #3 0x0108af6b in __mach_msg_server (demux=0x109b9d0 <msgport_server>, max_size=4096, rcv_name=12) at msgserver.c:196
+ No locals.
+ #4 0x0109b99f in _hurd_msgport_receive () at msgportdemux.c:68
+ No locals.
+ #5 0x01052b91 in cthread_body (self=0x805da48) at /home/buildd/build/chroot-sid/home/buildd/byhand/hurd/./libthreads/cthreads.c:300
+ t = 0x805d9d0
+ #6 0x00000000 in ?? ()
+ No symbol table info available.
+
+ Thread 1 (Thread 22634.1):
+ #0 0x01089f6c in mach_msg_trap () at /home/buildd/build/chroot-sid/home/buildd/byhand/eglibc-2.13/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+ No locals.
+ #1 0x0108a769 in __mach_msg (msg=0x125ba2c, option=2, send_size=0, rcv_size=24, rcv_name=10, timeout=0, notify=0) at msg.c:110
+ ret = <value optimized out>
+ #2 0x010516b8 in cproc_block () at /home/buildd/build/chroot-sid/home/buildd/byhand/hurd/./libthreads/cprocs.c:638
+ msg = {msgh_bits = 17345214, msgh_size = 18972660, msgh_remote_port = 17163428, msgh_local_port = 134764952, msgh_seqno = 19249824, msgh_id = 18935134}
+ waiter = 0x1240808
+ new = <value optimized out>
+ p = 0x805d988
+ #3 0x01053589 in hurd_condition_wait (m=0x805d89c) at /home/buildd/build/chroot-sid/home/buildd/byhand/hurd/./libthreads/cancel-cond.c:86
+ p = 0x805d988
+ cancel = <value optimized out>
+ __PRETTY_FUNCTION__ = "hurd_condition_wait"
+ c = 0x805e498
+ #4 0x08052abf in trivfs_S_io_read (cred=0x8084b78, reply=32, replytype=18, data=0x125bb44, datalen=0x125bb40, offset=-1, amount=1) at /home/buildd/build/chroot-sid/home/buildd/byhand/hurd/./term/users.c:695
+ cancel = <value optimized out>
+ i = <value optimized out>
+ max = <value optimized out>
+ cp = <value optimized out>
+ avail = <value optimized out>
+ #5 0x0104053b in _Xio_read (InHeadP=0x125dc70, OutHeadP=0x125bc60) at ioServer.c:234
+ dataCnt = 2048
+ msgh_simple = <value optimized out>
+ io_object = 0x8084b78
+ dataP = 0x125bc8c "\350\003"
+ #6 _Xio_read (InHeadP=0x125dc70, OutHeadP=0x125bc60) at ioServer.c:148
+ In0P = 0x125dc70
+ OutP = 0x125bc60
+ offsetCheck = {msgt_name = 11, msgt_size = 64, msgt_number = 1, msgt_inline = 1, msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0}
+ amountCheck = {msgt_name = 2, msgt_size = 32, msgt_number = 1, msgt_inline = 1, msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0}
+ #7 0x0104065e in trivfs_io_server (InHeadP=0x125dc70, OutHeadP=0x125bc60) at ioServer.c:2005
+ InP = 0x125dc70
+ OutP = 0x125bc60
+ routine = <value optimized out>
+ #8 0x01038f17 in trivfs_demuxer (inp=0x125dc70, outp=0x125bc60) at /home/buildd/build/chroot-sid/home/buildd/byhand/hurd/./libtrivfs/demuxer.c:32
+ No locals.
+ #9 0x080537a8 in demuxer (inp=0x125dc70, outp=0x125bc60) at /home/buildd/build/chroot-sid/home/buildd/byhand/hurd/./term/main.c:68
+ No locals.
+ #10 0x01059045 in internal_demuxer (inp=0x125dc70, outheadp=0x125bc60) at /home/buildd/build/chroot-sid/home/buildd/byhand/hurd/./libports/manage-multithread.c:101
+ err = <value optimized out>
+ spawn = <value optimized out>
+ status = <value optimized out>
+ pi = <value optimized out>
+ link = {thread = 3, next = 0x0, prevp = 0x8084b94, notifies = 0x0, interrupted_next = 0x0}
+ outp = 0x125bc60
+ __PRETTY_FUNCTION__ = "internal_demuxer"
+ [System crashed.]
diff --git a/open_issues/thread-cancel_c_55_hurd_thread_cancel_assertion___spin_lock_locked_ss_critical_section_lock.mdwn b/open_issues/thread-cancel_c_55_hurd_thread_cancel_assertion___spin_lock_locked_ss_critical_section_lock.mdwn
new file mode 100644
index 00000000..72af3f35
--- /dev/null
+++ b/open_issues/thread-cancel_c_55_hurd_thread_cancel_assertion___spin_lock_locked_ss_critical_section_lock.mdwn
@@ -0,0 +1,41 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="ext2fs.static: thread-cancel.c:55: hurd_thread_cancel: Assertion '! __spin_lock_locked (&ss->critical_section_lock)'"]]
+
+[[!tag open_issue_hurd]]
+
+<http://bugs.debian.org/46859>, <http://bugs.debian.org/195360>
+
+IRC, unknown channel, unknown date:
+
+ <youpi> azeem, marcus: ext2fs.static: thread-cancel.c:55: hurd_thread_cancel: Assertion '! __spin_lock_locked (&ss->critical_section_lock)' failed
+ <youpi> I actually don't understand this assertion
+ <youpi> it's just before __spin_lock (&ss->critical_section_lock);
+ <youpi> why should one check that a lock is free before taking it ?
+ <youpi> just the same in hurdexec.c
+ <youpi> (no, ss is not our own sigstate, so it's not safe to assume no other path can take it)
+ <youpi> there's another one in sysdeps/mach/hurd/spawni.c
+ <youpi> and jmp-unwind.c
+ <antrik> youpi: why do you think it's nonsense?... the fact that we take the lock (so we can't be interrupted) doesn't mean we are willing to wait for others to release the lock... maybe the code path should never be reached while others have a lock, or something
+ <youpi> then it's useless to take the lock
+ <youpi> "we take the lock (so we can't be interrupted)": no, it's not _our_ lock here, it's the lock of the thread we want to cancel
+ <antrik> what exactly is cancelling a thread?... (sorry, I don't really have experience with thread programming)
+ <youpi> ~= killing it
+ <antrik> well, we take the lock so nobody can mess with the thread while we are cancelling it, no?...
+ <youpi> yes
+ <youpi> that is fine
+ <youpi> but checking that the lock is free before taking it doesn't make sense
+ <youpi> why nobody should be able to take the lock ?
+ <youpi> and if nobody is, why do we take it ? (since nobody would be able to take it)
+ <antrik> well, maybe after taking the lock, we do some action that might result in others trying to take it...
+ <youpi> nope: look at the code :)
+ <youpi> or maybe the cancel_hook, but I really doubt it
+
diff --git a/open_issues/thread_numbering_of_ps_and_gdb.mdwn b/open_issues/thread_numbering_of_ps_and_gdb.mdwn
new file mode 100644
index 00000000..7058cfe2
--- /dev/null
+++ b/open_issues/thread_numbering_of_ps_and_gdb.mdwn
@@ -0,0 +1,21 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+It appears to [[me|tschwinge]] that `ps -T` enumerates thread IDs starting with
+zero, and GDB starting with one. This should be unified.
+
+Or instead of manually allocating numbers, some other handle should be used,
+that has a global meaning for the running GNU Mach kernel, or a process-wide
+meaning, for example a port number.
+
+[[!tag open_issue_hurd open_issue_gdb]]
+
+
+Also see [[GDB thread IDs]].
diff --git a/open_issues/threads_issues.mdwn b/open_issues/threads_issues.mdwn
new file mode 100644
index 00000000..aec216e0
--- /dev/null
+++ b/open_issues/threads_issues.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+List of issues w.r.t. the Hurd's many-threads paradigm.
+
+[[!tag open_issue_hurd]]
+
+ * [[fsync]]
diff --git a/open_issues/time.mdwn b/open_issues/time.mdwn
new file mode 100644
index 00000000..ab239aef
--- /dev/null
+++ b/open_issues/time.mdwn
@@ -0,0 +1,69 @@
+[[!meta copyright="Copyright © 2009, 2011 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]]
+
+Neither the `time` executable from the GNU time package work completely
+correctly, nor does the GNU Bash built-in one.
+
+ tschwinge@flubber:~ $ \time sleep 2
+ 0.00user 0.00system 9:38:00elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k
+ 0inputs+0outputs (0major+0minor)pagefaults 0swaps
+ tschwinge@flubber:~ $ \time sleep 4
+ 0.00user 0.00system 18:50:25elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k
+ 0inputs+0outputs (0major+0minor)pagefaults 0swaps
+ tschwinge@flubber:~ $ \time sleep 6
+ 0.00user 0.00system 28:00:53elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k
+ 0inputs+0outputs (0major+0minor)pagefaults 0swaps
+ tschwinge@flubber:~ $ time sleep 2
+
+ real 0m2.093s
+ user 0m0.000s
+ sys 0m0.011s
+ tschwinge@flubber:~ $ time sleep 4
+
+ real 0m4.083s
+ user 0m0.000s
+ sys 0m0.010s
+ tschwinge@flubber:~ $ time sleep 6
+
+ real 0m6.164s
+ user 0m0.000s
+ sys 0m0.010s
+
+GNU time's *elapsed* value is off by some factor.
+
+ $ \time factor 1111111111111111111
+ 1111111111111111111: 1111111111111111111
+ 0.00user 0.00system 52:39:24elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k
+ 0inputs+0outputs (0major+0minor)pagefaults 0swaps
+ $ time factor 1111111111111111111
+ 1111111111111111111: 1111111111111111111
+
+ real 0m11.424s
+ user 0m0.000s
+ sys 0m0.010s
+
+As above; also here all the running time should be attriuted to *user* time.
+This is probably a [[!taglink open_issue_gnumach]].
+
+
+# 2011-09-02
+
+Might want to revisit this, and take Xen [[!tag open_issue_xen]] into account
+-- I believe flubber has already been Xenified at that time.
+
+
+## IRC, freenode, #hurd, 2011-09-02
+
+While testing some [[performance/IPC_virtual_copy]] performance issues:
+
+ <tschwinge> And I can confirm that with dd if=/dev/zero of=/dev/null bs=4k
+ running, a parallel sleep 10 takes about 20 s (on strauss).
diff --git a/open_issues/tinyproxy.mdwn b/open_issues/tinyproxy.mdwn
new file mode 100644
index 00000000..9a4a0cfb
--- /dev/null
+++ b/open_issues/tinyproxy.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="Problem with using tinyproxy for tunneling HTTPS"]]
+
+`tinyproxy` works fine for HTTP connections, but fails to proxy HTTPS ones:
+
+ ERROR Jun 12 14:58:51 [20676]: relay_connection: select() error "Interrupted system call". Closing connection (client_fd:7, server_fd:8)
+
+This is supposedly due to the already known select bug, which is a [[!taglink
+open_issue_glibc]].
diff --git a/open_issues/translate_fd_or_port_to_file_name.mdwn b/open_issues/translate_fd_or_port_to_file_name.mdwn
new file mode 100644
index 00000000..485fb985
--- /dev/null
+++ b/open_issues/translate_fd_or_port_to_file_name.mdwn
@@ -0,0 +1,86 @@
+[[!meta copyright="Copyright © 2010, 2011 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_glibc open_issue_hurd]]
+
+[[!toc]]
+
+
+# IRC, freenode, #hurd, June (?) 2010
+
+ <pochu> is there a way (POSIX or Hurdish) to get the corresponding file name for a fd or a hurd port?
+ <marcusb> there is a way
+ <pochu> marcusb: which one would that be?
+ <marcusb> I forgot
+ <marcusb> there is an implementation in libc
+ <marcusb> realpath has a similar job
+ <marcusb> but that's not what I mean
+ <marcusb> pochu: maybe I am misremembering. But it was something where you keep looking up .. and list that directory, looking for the node with the ID of the node you had .. for
+ <marcusb> maybe it works only for directories
+ <marcusb> yeah
+ <marcusb> pochu: check the getcwd() implementation of libc
+ <marcusb> sysdeps/mach/hurd/getcwd.c
+ <marcusb> _hurd_canonicalize_directory_name_internal 
+ * pochu looks
+ <pochu> marcusb: interesting
+ <pochu> though that is for dirs, and doesn't seem to be extensible to files, as you cannot lookup for ".." under a file
+ <marcusb> right
+ <pochu> oh you already said that :)
+ <marcusb> actually, I am not sure that's correct
+ <marcusb> it's probably correct, but there is no reason why looking .. up on a file couldn't return the directory it's contianed in
+ <pochu> I don't know the interfaces or the Hurd internals very well yet, but it would look strange to me if you could do that
+ <marcusb> the hurd is strange
+ <pochu> it sounds like if you could `ls getcwd.c/..` to get sysdeps/mach/hurd/ :-)
+ <marcusb> yep
+ <pochu> ok. interesting
+ <marcusb> you wouldn't find "ls foo.zip/.." very strange, wouldn't you?
+ <pochu> I guess not if `ls foo.zip` listed the contents of foo.zip
+ <marcusb> there you go
+ <marcusb> or the other way round: would you be surprised if "cat somedir" would work?
+ <pochu> I think so. if it did, what would it do?
+ <marcusb> originally, cat dir would list the directory content!
+ <marcusb> in the old unix times
+ <pochu> I was surprised the first time I typed `vi somedir` by accident
+ <marcusb> and some early BSDs
+ * pochu feels young :-)
+ <marcusb> he don't worry, I didn't see those times either
+ <marcusb> technically, files and directories are implemented in the same way in the hurd, they both are objects implementing the fs.defs interface
+ <marcusb> which combines file and directory operations
+ <marcusb> of course, files and directories implement those functions differently
+ <antrik> marcusb: do you know why this behavior (cat on directories) was changed?
+
+
+# IRC, freenode, #hurd, 2011-07-13
+
+A related issue:
+
+ <braunr> rbraun@nordrassil:~$ vminfo $$ | wc -l
+ <braunr> 1039
+ <braunr> any idea why a shell would consume more than 1039 map entries ?
+ <braunr> (well, not more actually)
+ <braunr> even the kernel and ext2fs have around 100
+ <braunr> (the kernel has actually only 23, which is very good and expected)
+ <tschwinge> braunr: I agree that having some sort of debugging information
+ for memory objects et al. would be quite hand. To see where they're
+ coming from, etc.
+ <braunr> tschwinge: this would require naming objects at the mach level
+ <braunr> e.g. when creating an object
+ <braunr> giving it the path of a file for example
+ <tschwinge> braunr: I have recently seen something (due to youpi fixing a
+ bug) that bash is doing its own memory management. Perhaps all these are
+ such regions?
+ <tschwinge> braunr: For example, yes.
+ <braunr> what ?
+ <braunr> ?!
+ <tschwinge> braunr:
+ http://lists.gnu.org/archive/html/bug-bash/2011-04/msg00097.html
+ <braunr> i see
+
+Also see email thread starting at `id:"20110714082216.GA8335@sceen.net"`.
diff --git a/open_issues/translator_environment_variables.mdwn b/open_issues/translator_environment_variables.mdwn
new file mode 100644
index 00000000..cae5a494
--- /dev/null
+++ b/open_issues/translator_environment_variables.mdwn
@@ -0,0 +1,31 @@
+[[!meta copyright="Copyright © 2010 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_hurd]]
+
+IRC, unknown channel, unknown date.
+
+ <cfhammar> BTW, is settrans -a supposed to clear all env variables?
+ <cfhammar> or can I consider it a bug ;-)
+ <cfhammar> scolobb: yeah, seems the problem is in libfshelp
+ <scolobb> cfhammar: Are you talking about fshelp_start_translator_long?
+ <scolobb> (I can remember that it does something to the environment indeed)
+ <cfhammar> scolobb: yes, I think it's the culprit
+ <cfhammar> clearing the environment makes sense for passive translators I guess, but not active ones
+ <scolobb> Hm, searching ``env'' in hurd/libfshelp/start-translator-long.c gives me nothing :-(
+ <scolobb> I think the problem might be in the fact that fshelp_start_translator_long just doesn't copy the environment, but I may be wrong.
+ <cfhammar> scolobb: yeah, that's my guess also
+ <scolobb> Well, I don't know proc, but there might be a way to copy the environment to a task when you know its ID, what do you think?
+ <scolobb> I can see proc_set_arg_locations in process.defs, which sees to set something connected with environment, but I'm not sure whether it suits your needs.
+ <cfhammar> scolobb: it seems that the env isn't passed to file_exec in fshelp_start_translator_long
+ <scolobb> cfhammar: Yeah, that's right
+ <scolobb> I wonder what could the motivation for not passing the environment to a child process
+ <cfhammar> hmm... fshelp_start_translator_long parameterizes everything except env...
+ <cfhammar> perhaps there needs to be a fshelp_start_translator_longer ;-)
diff --git a/open_issues/translator_stdout_stderr.mdwn b/open_issues/translator_stdout_stderr.mdwn
new file mode 100644
index 00000000..e0828b28
--- /dev/null
+++ b/open_issues/translator_stdout_stderr.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2008, 2009, 2010 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_hurd]]
+
+Decide / implement / fix that (all?) running (passive?) translators' output
+should show up on the (Mach / Hurd) console / syslog.
diff --git a/open_issues/translators_O_NOTRANS_O_NOFOLLOW_namespace-based_selection.mdwn b/open_issues/translators_O_NOTRANS_O_NOFOLLOW_namespace-based_selection.mdwn
new file mode 100644
index 00000000..5d3c3aab
--- /dev/null
+++ b/open_issues/translators_O_NOTRANS_O_NOFOLLOW_namespace-based_selection.mdwn
@@ -0,0 +1,148 @@
+[[!meta copyright="Copyright © 2010 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_hurd open_issue_glibc]]
+
+bug-hurd email from 2010-07-28: *O_NOTRANS & O_NOFOLLOW*
+
+2010-07-29, #hurd
+
+ <antrik> cfhammar: I think that touches on a rather fundamental problem... it's always hard to decide how to handle translators, as the most useful approach depends a lot on context
+ <antrik> this was actually part of the idea behind namespace-based translator selection
+ <cfhammar> or perhaps we should just drop the whole O_NOFOLLOW == O_NOTRANS and only apply it for link like translators
+ <pochu> cfhammar: from what I read in [glibc]/hurd/lookup-retry.c, the problem is that some translators can lie about that
+ <antrik> cfhammar: at some point I considered the possibility of adding a couple of special flags describing translators ("link" and "device" being some, but also introducing a few new ones) to decide standard behaviour in various situations
+ <pochu> so you can't really know whether they are links without O_NOTRANS
+ <cfhammar> pochu: yeah, this would have to be considered carefully
+ <pochu> antrik: care to explain what namespace based translator selection means? :)
+ <antrik> pochu: the basic idea is that you add special suffixes to the file name during a lookup, which change the behaviour of lookups
+ <antrik> the most basic use would be adding a suffix that automatically runs an annonymous translator on the file
+ <cfhammar> antrik: doesn't stat cover most of those flags (except for firmlink i guess)
+ <antrik> (scolobb mostly implemented that part)
+ <antrik> but the idea was also to selectively activate/deactivate static translators based on patterns
+ <antrik> (this is implemented partially, but recursion is completely missing so far)
+ <antrik> cfhammar: some of them, yes. but I think there are some cases where the standard stat information is not enough to decide on useful handling
+ <antrik> let's take the example of a translator that mangles the underlying file -- like xmlfs, mboxfs etc.
+ <antrik> these aren't device file nor links, but should not really be handled like "normal" (store) filesystems either
+ <antrik> hm... is there any information in the stat that indicates mount points?
+ <antrik> I guess that would be good enough to flag "normal" filesystems
+ <pochu> I'm not sure I understand. you add a suffix during a lookup, based on what? whatever, including e.g. flags?
+ <antrik> pochu: well, an exmple would be "cat foo.gz,,u"
+ <antrik> where "u" would be a shorthand for "unzip"
+ <antrik> and it would launch a translator that uncompresses the underlying file
+ <pochu> what if there are a foo.gz and a foo.gz,,u files?
+ <antrik> (I think storeio with gzip store can do that... though some more generic translator might be useful, to cover other compression/archieve types as well)
+ <antrik> pochu: than you are SOL ;-)
+ <antrik> pochu: I chose ",," as the suffix after some careful examination that this is *extremely* unlikely to occur in normal use
+ <antrik> pochu: actually, we introduced an escaping scheme too, so it is still possible to access files with ",," in the name... but that's of limited use, as programs not aware of this will still break
+ <cfhammar> hmm i wonder why glibc handles O_NOFOLLOW to begin with, since the test it does presumes trust in the containing directory the fs could do it just as securely
+ <antrik> cfhammar: the FS could do what?
+ <pochu> another problem I've found is that an open(symlink, O_RDONLY | O_NOFOLLOW, 0) should fail with ELOOP according to POSIX, but it doesn't fail on Hurd
+ <antrik> pochu: yeah, saw that
+ <antrik> shouldn't be too hard to fix I hope?...
+ <cfhammar> antrik: libc test whether the node is a symlink or a (trusted) root owned translator, which it would follow
+ <pochu> antrik: probably not, though I haven't looked at it closely
+ <antrik> cfhammar: in what situation would the filesystem do the test?
+ <antrik> cfhammar: and what advantage would it have over the current approach?
+ <antrik> pochu: OK
+ <cfhammar> antrik: the point of the test is to approximate symlink vs. mount point but the fs seems to be in a better position to answer this
+ <antrik> cfhammar: why? I think this information should be fully available to glibc... if it's not, I'd consider this a bug, or at least a major omission
+ <cfhammar> antrik: well take fifos for instance, they should be considered part of the containing filesystem but would not by glibc
+ <cfhammar> antrik: we could make an exception in glibc for fifos but not for other future situations in new translators
+ <cfhammar> antrik: i mean, we could but this leaves control at the translators hand and let different translators handle things their own way
+ <cfhammar> generally, it seems more flexible to leave policy to servers rather than to bake it into the (implicit) protocol (which glibc implements)
+ <antrik> cfhammar: I don't see though why handling it in the filesystem would help here... if the filesystem has the information about how the translator should be handled, it can pass it to the clients
+ <antrik> hm... that's actually a tricky point. we have many situations where we have to choose between handling things in the client library or server-side... I'm haven't really formed an opinion yet which is preferable in general
+ <pochu> with cfhammar's proposal, you wouldn't need O_NOTRANS when you specify O_NOFOLLOW, right?
+ <cfhammar> pochu: i don't think my proposal would even work with O_NOTRANS
+ <antrik> cfhammar: hm, perhaps we are talking past each other. do you want the handling to be in the filesystem containing the underlying node, or in the actual translator implementing the node?
+ <antrik> hrm
+ <cfhammar> antrik: the containing filesystem
+ <cfhammar> (since this is a security issue)
+ <pochu> yeah, otherwise the trust issue would still be there
+ <antrik> then why wouldn't it work with O_NOTRANS?
+ <antrik> BTW, what security issue are you talking about? do you mean the fact that a translator can redirect the lookups to another file, but hide the fact that it's a link?
+ <pochu> antrik: I mean the O_NOTRANS & O_NOFOLLOW comment in [glibc]/hurd/lookup-retry.c
+ <cfhammar> antrik: because O_NOTRANS means don't follow translators (including symlinks) and O_NOFOLLOW means don't follow (any) link but do follow translators
+ <antrik> pochu: I must admit that I never fully understood what that one is about :-)
+ <cfhammar> antrik: i imagine O_NOTRANS|O_NOFOLLOW == O_NOTRANS
+ <antrik> cfhammar: I see
+ <antrik> cfhammar: but I guess that's totally orthogonal from handling in glibc vs. handling in the FS?...
+ <pochu> AFAIU, it's that if you do an open(translator, O_NOFOLLOW, 0), the translator can lie about it being a symlink. So you need to do an O_NOTRANS lookup
+ <pochu> hence hurd/hurdlookup.c adds O_NOTRANS if O_NOFOLLOW is present in flags
+ <antrik> ah, OK
+ <antrik> so the idea here is that instead of doing that, glibc would only pass on O_NOFOLLOW, and the filesystem would handle the O_NOTRANS part itself
+ <cfhammar> antrik: if you have O_NOTRANS the filesystem will never follow any translators including non-link ones, so it can't really handle O_NOFOLLOW to exclude link translators
+ <cfhammar> antrik: yeah
+ <antrik> AIUI the problem is that with the current scheme, using O_NOFOLLOW will also ignore non-link translators?
+ <cfhammar> antrik: exactly, including fifos
+ <cfhammar> antrik: of course, there's still the problem of determining that it is a non-link translator
+ <antrik> cfhammar: but why can't this be fixed keeping the current scheme? wouldn't it suffice for glibc to ask the filesystem whether there is a link (with O_NOTRANS), and if not, do the actual lookup without O_NOTRANS?...
+ <pochu> antrik: there's still the problem of translators lying about them being symlinks or not, right? so instead of a blacklist (is it a symlink?) you would need a whitelist
+ <antrik> pochu: sure. I just don't see how an implementation in the filesystem would do any better on that score than one in glibc
+ <cfhammar> antrik: the fs is better at maintaining the whitelist, e.g. you could have different whitelist for different translators
+ <cfhammar> antrik: the fs also knows who own the fs, so it could make exeptions for the owner's translators
+ <cfhammar> like glibc does for the root user, currently
+ <antrik> I'm not really convinced so far that having these policies in the filesystem is really preferable to having them in the client-side library...
+ <cfhammar> antrik: we want to put /hurd/fifo in the whitelist for all users but we can't determine whether an active translator on the underlying node is /hurd/fifo or not, but the FS can if it started the translator itself
+ <cfhammar> antrik: of course, this can also be done by hiding the /hurd/fifo translator so that glibc doesn't do the test in the first place
+ <cfhammar> antrik: but this isn't pretty, you'd have to proxy it afaics :-/
+ <antrik> cfhammar: TBH, I don't like the whole whilelisting idea
+ <antrik> seems to me this is really just another manifestation of the infamous firmlink problem
+ <antrik> as I said in past discussions, I tend to think that the only way to fix it *properly* is changing the way authentification is handled
+ <antrik> we actually discussed this at some point... when crossing translator boundries, the client shouldn't use it's full permissions on the new translator, but rather the intersection of it's own permissions and that of the parent translator
+ <antrik> this way, "secret" links should cease to be dangerous...
+ <cfhammar> yeah, but that'll take way too long for poor pochu ;-)
+ <antrik> cfhammar: true... but I'm not convinced that a whitelisting hack in the meantime is really worthwhile
+ <cfhammar> antrik: we already have a whitelisting hack (root user's translators), we're just moving it to the filesystem and adding /hurd/fifo
+ <antrik> cfhammar: nope, allowing all root translators is a general policy, not a whitelisting hack
+ <antrik> not elegant either, but a very different class
+ <cfhammar> antrik: i don't remember the details but fixing firmlink problem seemed to require some fundamental changes, it might even turn out to be unfeasible
+ <antrik> BTW, it's still not clear to my why the filesystem is supposed to have a better idea which translators to whitelist than glibc?...
+ <cfhammar> antrik: huh, i don't think i've seen that policy elsewhere, only for root clients not servers
+ <cfhammar> antrik: for one it can keep track of if the current active translator is the current passive one, and thus know which program it runs
+ <antrik> do I get it right that in the case of fifo, the client can't generally trust the user running the translator, and thus the idea is instead to trust the translator program?...
+ <cfhammar> O_NOFOLLOW implies that the client does not trust the file not to redirect it anywhere and we know /hurd/fifo will not do this
+ <antrik> cfhammar: was that a "yes"?...
+ <cfhammar> antrik: yes
+ <antrik> hm... I think I already said it in the context of object migration: I really don't like the idea of trust based on the program being executed...
+ <antrik> this workaround also has other shortcomings: what if the transaltor is started actively?
+ <cfhammar> hmm the owner of the translator could hijack it and the fs wouldn't know
+ <antrik> I must admit though that I don't see another short-term solution either :-(
+ <antrik> oh, right, that's another problem
+ <cfhammar> seems like the fs must implement the fifo itself (or atleast hide the /hurd/fifo translator behind a proxy)
+ <antrik> BTW, what is the specific manifestation of the problem with fifos being ignored on NOFOLLOW?
+ <pochu> there are two problems
+ <pochu> one is that with O_NOFOLLOW, it's ext2fs who checks the file permissions, and denies it (dunno the reason for that)
+ <pochu> the other one is that if you stat the fifo with O_NOFOLLOW and without it, the device will look different (and thus cp believes the file has changed and fails)
+ <pochu> that's because an stat on the fifo will return the fifo translator's PID as the device
+ <antrik> ah
+ <pochu> while one with O_NOFOLLOW will return the partition device
+ <antrik> so the specific problem here is that the stat info is differenet with the fifo translator than without
+ <pochu> I'm not sure whether it would be correct & possible to return the device of the parent translator in libtrivfs, instead of the PID
+ <pochu> yes
+ <pochu> that, and the permission one (they are different)
+ <pochu> though both would be solved if O_NOFOLLOW didn't imply O_NOTRANS :)
+ <antrik> what exactly do you mean by "device" here?
+ <pochu> I mean st_dev in struct stat
+ <antrik> well, I wonder whether the permission problem shouldn't actually be considered a bug in fifo. i sthere a good reason why the permissions are not propagated to the underlying node, as with most other translators?
+ <pochu> I don't think that's the problem
+ <antrik> what else?
+ <pochu> it's rather that if you open the fifo with O_NOTRANS, you don't get the underlying node, and then it's ext2fs (and so libdiskfs) who checks the permissions, and it denies them for whatever reason
+ <pochu> antrik: libdiskfs/dir-lookup.c has this:
+ <pochu> if (((type == S_IFSOCK || type == S_IFBLK || type == S_IFCHR)
+ <pochu> >------- && (flags & (O_READ|O_WRITE|O_EXEC)))
+ <pochu> >------- || (type == S_IFLNK && (flags & (O_WRITE|O_EXEC))))
+ <pochu> >-------error = EACCES;
+ <pochu> so it returns EACCES for the fifo
+ <pochu> I wonder whether there's a good reason (that I'm missing) for that
+ <cfhammar> pochu: i think the reason might be that ext2fs denies access because it does not implement those file types itself
+ <cfhammar> i.e. ext2fs expects them to be opened without O_NOTRANS
+ <cfhammar> (or opened exclusively for non rwx reasons such as stat or settrans)
diff --git a/open_issues/translators_set_up_by_untrusted_users.mdwn b/open_issues/translators_set_up_by_untrusted_users.mdwn
new file mode 100644
index 00000000..97f48bba
--- /dev/null
+++ b/open_issues/translators_set_up_by_untrusted_users.mdwn
@@ -0,0 +1,347 @@
+[[!meta copyright="Copyright © 2011 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_hurd]]
+
+
+# IRC, freenode, #hurd, 2011-07-17
+
+ <antrik> Reventlov: this is the so-called "firmlink issue" -- though AFAIK
+ it doesn't actually apply to firmlinks ;-)
+ <antrik> the problem is that any user can in theory create and set up a
+ special translator, which will redirect to another directory, without any
+ indication that it's a link
+ <braunr> but this doesn't supersede the file system permissions, does it ?
+ <antrik> as a result, if someone runs rm -r on the directory containing
+ that translator (which could be a world-writable one such as tmp), the rm
+ -r will descend into the directory, and thus remove it with the
+ permissions of the user who ran the rm -- not the one who set up the
+ translator
+ <braunr> oh i see, when tmp gets cleared by a script run as root, your home
+ is deleted ?
+ <antrik> right
+ <antrik> of course, the workaround is trivial: just don't follow
+ translators set up by untrusted users
+ <antrik> (which is precisely the default policy for FUSE BTW)
+ <braunr> which is the general policy around memory managers in general
+ <antrik> it's just nobody cared to implement this change
+ <youpi> antrik: does rm use O_NOTRANS ?
+ <antrik> youpi: I'm pretty sure it doesn't
+ <youpi> so it's still an issue for now
+ <antrik> yes, it's still an issue. it's just not a really fundamental
+ problem as macrus claimed it to be... [sigh]
+ <youpi> well, fix rm and then you can say it's not an issue any more
+ <braunr> does it only concern rm ?
+ <antrik> youpi: rm is just an example. the problem is much more generic: a
+ malicious translator can do all kinds of harm
+ <youpi> sure
+ <youpi> it's just about tools not blindly following things
+ <antrik> the only simple and effective answer is not to follow translators
+ from untrusted users by default
+ <youpi> antrik: but then /dev/null can't be non-root
+ <braunr> depends how "untrusted users" are identified
+ <antrik> we discussed a more sophisticated solution with cfhammer, that
+ would change the way reauthentication works in lookups, and should
+ prevent these kinds of permission escalation without preventing desirable
+ uses... but it still wouldn't address DOS issues, so it would be only a
+ partial solution
+ <antrik> youpi: why should it?
+ <manuel> (http://lists.gnu.org/archive/html/bug-hurd/2009-11/msg00231.html
+ for the most sophisticated solution)
+ <antrik> braunr: well, currently the permission system generally trusts
+ root and the own user. implementing something else might be tricky... not
+ sure
+ <antrik> manuel: yes, that's precisely the discussion I was referring
+ to... thanks for the link :-)
+ <youpi> antrik: depends what you mean by "follow"
+ <youpi> what DOS are you thinking of?
+ <antrik> youpi: a translator can generate endless amounts of "data"; a
+ translator can generate endless recursive directory tress; or it can just
+ never return from RPCs... all things that can do pretty much harm
+ depending on the situation
+ <antrik> filesystem clients generally trust filesystem operations to be
+ safe -- and that's just not true anymore with filesystems run by
+ untrusted users
+ <antrik> (be it Hurd translators or FUSE modules)
+ <antrik> this is a fundamental problem as marcus and neal rightly observed
+ <antrik> I just don't agree about the seriousness of the consequences
+ <antrik> I don't think not following untrusted translators really looses us
+ much
+ <youpi> EDOOMANYNEGATIONS
+ <youpi> s/D/T
+ <youpi> again, what do you mean by "following" ?
+ <youpi> always use O_NOTRANS ?
+ <tschwinge> Yes, I think.
+ <youpi> or never accept a REAUTH ?
+ <youpi> O_NOTRANS would mean ftpfs running as root, brrr
+ <youpi> it's not really true that clients always trust filesystem
+ operations
+ <youpi> the "not returning" case for instance, also appears with nfs mounts
+ <antrik> no, not always use O_NOTRANS. just be more selective about what
+ translators to follow. specifically, don't follow translators set up by
+ untrusted users. (unless explicitly requested)
+ <antrik> you can think of it as O_NO_UNTRUSTED_TRANS
+ <antrik> note that if you run ftpfs under a special user, who is not root
+ but trusted by root, this would still be fine. I hope it shouldn't be too
+ hard to implement that...
+ <antrik> as for NFS: clients generally do *not* try to catch possible
+ failures. if the NFS server doesn't return, the clients hang forever. but
+ the NFS server is generally trusted, so this is not much of a problem
+ <antrik> BTW, I guess not accepting reauth from untrusted translators would
+ also fix the privilege escalations (similar to the proposed modified
+ reauth mechanism, only more invasive); but it wouldn't fix the DoS issues
+ <ArneBab> antrik: would that also be an issue for a run translator, which
+ runs a command on read?
+ <ArneBab> youpi: couldn’t ftpfs have root drop priviledges?
+ <ArneBab> like a runas trans
+ <ArneBab> essertially su for translators to drop privs
+ <antrik> ArneBab: hm... if we can make sure that the translator was started
+ as root, and dropped privileges later, I guess that would be fine... not
+ sure how hard that is
+ <antrik> ArneBab: but I think it would be more elegant to start the
+ translators as trusted non-root users in the first place
+ <ArneBab> then i ph.avme to trust them
+ <ArneBab> deper hierarchy
+ <ArneBab> deeper
+ <ArneBab> but essertially the same
+ <ArneBab> if then someone mounted his home himself, would I be able to read
+ it?
+ <ArneBab> /home/user
+ <ArneBab> antrik: if not, that would be really non-nice
+ <antrik> ArneBab: sorry, but we simply *can't* trust a translator set up by
+ an untrusted user. if he controls it, he can make it behave maliciously
+ <antrik> we could in theory try to come up with a proxy that catches
+ problematic semantics, and presents a "safe" variant to the actual
+ clients... but that would be not-trivial, and I'm not sure how safe it
+ can be made
+ <antrik> ArneBab: of course you should always have the option to explicitly
+ say that you want to trust the translator, if you think the user doesn't
+ have malicious intentions :-)
+ <antrik> (I think nsmux would be a good way to achieve this...)
+ <braunr> unless it's really really necessary (and i don't see why it would
+ be), no design should force a process to start with privileges and drop
+ them
+ <braunr> having a set of trusted users (e.g. uid < 100) is a nice solution
+ to the problem imho
+ <braunr> or part of a group, 100 is a non-hurdish static limit
+ <ArneBab> What user is running a passive translator?
+ <braunr> passive translators are a pain for such things :/
+ <braunr> a command line and attach point are not enough to persistently
+ encode the execution context of the tranlator
+ <ArneBab> What user is running a passive translator?
+ <ArneBab> sorry
+ <braunr> the one owning the inode if i'm right
+ <ArneBab> so actually the orly problem are recursive commands, which also
+ are a problem with plain symlinks?
+ <braunr> i'm not sure
+ <ArneBab> Is thene any havoc a translator can wreak that a symlink can’t?
+ <braunr> well, as symlinks are translators, if a translator can damage
+ something, a symlink may too
+ <ArneBab> but not in Linux?
+ <braunr> err
+ <braunr> there are no translator in linux
+ <ArneBab> → commands could just treat translators as symlinks
+ <ArneBab> jepp, but it has symlinks
+ <braunr> no, this would defeat the purpose of translators :p
+ <braunr> and it's just no doable
+ <braunr> you would have recursion everywhere
+ <ArneBab> why?
+ <braunr> because every file access is sent to a translator
+ <ArneBab> hm, yes
+ <braunr> and we don't want to change commands
+ <braunr> we want to fix the design
+ <ArneBab> → only untrusted trans
+ <braunr> rather than considering them as symlinks, just consider them as
+ untrusted translators
+ <braunr> this doesn't change the semantics, only the action of accessing a
+ node or not
+ <braunr> but as antrik said, this has to be done :)
+ <braunr> the real problem would simplify to "how do you know if a
+ translator can be trusted", which is a matter of selecting the righ
+ identification strategy
+ <braunr> one strong strategy would be to have a port right copied to each
+ trusted task
+ <braunr> i wonder if one of the special ports could be used for that
+ <braunr> or if we have to add a new one
+ <ArneBab> so when I login, I would give port rights to trusted uids?
+ <braunr> no
+ <braunr> when a trusted translator starts a passive translator attached on
+ a node owned by root, it would copy its trusted right to the new task
+ <braunr> much like the device master port is passed to root tasks
+ <braunr> but i'm not sure this mechanism can be safely used to know if the
+ translator can be trusted
+ <braunr> the translator would be able to actively call services requiring
+ this capability
+ <braunr> but i guess client tasks would have to ask for the translator to
+ prove it's trusted
+ <braunr> which is a problem because the issue is to know if it can be
+ trusted before asking it anything
+ <braunr> another way is to register trusted tasks in another server, and
+ ask this server if the target translator is trusted
+ <braunr> i"m pretty sure these strategies already exist in some form on the
+ hurd
+ <ArneBab> hm
+ <braunr> does someone here have an idea why BSD-derived VMs account wiring
+ information at the high level vm_map instead of storing it in lower level
+ vm_page ?
+ <ArneBab> braunr: a translator anywhene in the FS can only be there, if the
+ creator had sufficient rights to the node, right?
+ <ArneBab> so wouldn’t it suffice to check the access rights?
+ <braunr> no
+ <braunr> ismple example: /dev/null is owned by root, but you have read
+ access to it
+ <braunr> hm that may not answer your question actually
+ <braunr> what access right would you check ?
+ <braunr> if someone creates a node with rights 777, do you still want to
+ access it ?
+ <ArneBab> no
+ <braunr> simple enough i hope :)
+ <ArneBab> arg…
+ <ArneBab> if I can write to it, I can give it a translaton
+ <ArneBab> translator
+ <braunr> but this doesn't tell you it can be trusted
+ <ArneBab> well, actually: yes, access, but not recurse
+ <braunr> the owner sets his own rights, and you can't trust the owner
+ <braunr> unless it's root, but you don't want all your translators to run
+ as root
+ <ArneBab> it can act as its owner?
+ <ArneBab> yes
+ <braunr> well, as i told you, a passive translator is started by its parent
+ translator (the one managing the file systeme node it's attached to)
+ <braunr> the new translator runs as the user owning the node
+ <braunr> (if i'm right)
+ <ArneBab> …and so on, till noot starts the first
+ <ArneBab> root
+ <braunr> ?
+ <ArneBab> root starts /, right?
+ <braunr> no
+ <braunr> gnumach starts /
+ <ArneBab> ah, right
+ <braunr> gnumach starts somefs.static
+ <braunr> which attaches at /
+ <braunr> and runs with root privileges
+ <braunr> keep in mind that unix permissions are implemented as capabilities
+ on the hurd
+ <ArneBab> → root has it / it’s root
+ <braunr> the rights you have aren't limited to those permissions
+ <ArneBab> jepp
+ <braunr> and it's not "until"
+ <ArneBab> so why should I not access a translator run by someone else? I
+ just don’t want to do any active command (recurse)… hm… can a translator
+ turn a read request into a write?
+ <braunr> that's the only problem
+ <ArneBab> program with my rights wants to read, but the translator makes it
+ write instead?
+ <braunr> no
+ <braunr> a translator can do pretty much anything with your request
+ <ArneBab> with my rights?
+ <braunr> no
+ <braunr> the most obvious example of DoS is simply not answering
+ <braunr> your process hangs
+ <braunr> considering some file system accesses, a translator could return
+ inconsistent data
+ <ArneBab> so if the translator tries to make me write instead of read, it
+ can do so only when the owner of the translaton can write to the file in
+ question?
+ <braunr> a well written application shouldn't have too much trouble dealing
+ with it but some aren't that well written
+ <braunr> this has *nothing* to do with read/write permissions
+ <braunr> you should read the critique :p
+
+[[hurd/critique]]
+
+ <ArneBab> ln -s /home/you /home/me → “why don’t you look into my home?”
+ <ArneBab> read it again, that is :)
+ <ArneBab> (has been some time since I read it)
+ <antrik> braunr: you just described the auth mechanism ;-)
+ <antrik> ArneBab: symlinks can do considerably less than translators; and
+ even these caused a lot of trouble when introduced (and still cause
+ sometimes)
+ <antrik> we can't make every application aware of translators
+ <antrik> indeed I believe we can a avoid many problems by presenting
+ various translators as symlinks -- but this is not approriate for all
+ translators
+ <antrik> it is something the translator itself decides, so it's not helpful
+ to solve security issues at all
+ <antrik> and as braunr already pointed out, this wouldn't help with DoS
+ problems
+
+
+# Linux kernel, Symlink/Hardlink Attack
+
+Even though not directly comparable, the issues described at [Symlink
+Protection](https://wiki.ubuntu.com/SecurityTeam/Roadmap/KernelHardening#Symlink_Protection)
+and [Hardlink
+Protection](https://wiki.ubuntu.com/SecurityTeam/Roadmap/KernelHardening#Hardlink_Protection)
+do bear some similarity with the issue we're discussing here.
+
+
+# IRC, freenode, #hurd, 2011-08-31
+
+ <antrik> I don't see any problems with following only translators of
+ trusted users
+ <youpi> where to store the list of trusted users?
+ <youpi> is there a way to access the underlying node, which for /dev
+ entries belongs to root?
+ <ArneBab> youpi: why a list of trusted users? Does it not suffice to
+ require /hurd/trust set by root or ourselves?
+ <youpi> ArneBab: just because that's what antrik suggests, so I ask him for
+ more details
+ <ArneBab> ah, ok
+ <antrik> youpi: probably make them members of a group
+ <antrik> of course that doesn't allow normal users to add their own trusted
+ users... but that's not the only limitation of the user-based
+ authentication mechanism, so I wouldn't consider that an extra problem
+ <antrik> ArneBab: we can't set a translator on top of another user's
+ translator in general
+ <antrik> root could, but that's not very flexible...
+ <antrik> the group-based solution seems more useful to me
+ <ArneBab> antrik: why can’t we?
+ <antrik> also note that you can't set passive translators on top of other
+ translators
+ <antrik> ArneBab: because we can only set translators on our own nodes
+ <ArneBab> active ones, too?
+ <antrik> yes
+ <ArneBab> antrik: I always thought I could…
+ <ArneBab> but did not test it
+ <ArneBab> antrik: so I need a subhurd to change nodes which do not belong
+ to me?
+ * ArneBab in that case finally understands why you like subhurds so much:
+ That should be my normal right
+ <antrik> it should be your normal right to change stuff not belonging to
+ you? that's an odd world view :-)
+ <antrik> subhurds don't really have anything to do with it
+ <ArneBab> change it in a way that only I see the changes
+ <antrik> you need local namespaces to allow making local modifications to
+ global resources
+ <youpi> it should be one's normal right to change the view one has of it
+ <antrik> we discussed that once actually I believe...
+ <antrik> err... private namespaces I mean
+
+IRC, freenode, #hurd, 2011-09-10:
+
+ <cjuner_> I am rereading Neal Walfield's and Marcus Brinkman's critique of
+ the hurd on mach. One of the arguments is that a file system may be
+ malicious (by DoS its clients with infinitely deep directory
+ hierarchies). Is there an answer to that that does not require programs
+ to be programmed defensively against such possibilities?
+
+IRC, freenode, #hurd, 2011-09-14:
+
+ <antrik> cjuner: regarding malicious filesystems: the answer is to do
+ exactly the same as FUSE on Linux: don't follow translators set up by
+ untrusted users by default
+ <cjuner> antrik, but are legacy programs somehow protected? What about
+ executing `find`? Or is GNU's find somehow protected from that?
+ <antrik> cjuner: I'm talking about a global policy
+ <cjuner> antrik, and who would implement that policy?
+ <antrik> cjuner: either glibc or the parent translators
+
+Continued discussion about [[resource_management_problems/pagers]].
diff --git a/open_issues/tty_activitiy_vs_disk_io.mdwn b/open_issues/tty_activitiy_vs_disk_io.mdwn
new file mode 100644
index 00000000..26382d56
--- /dev/null
+++ b/open_issues/tty_activitiy_vs_disk_io.mdwn
@@ -0,0 +1,81 @@
+[[!meta copyright="Copyright © 2011 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_hurd]]
+
+IRC, freenode, #hurd, 2011-07-25
+
+ < youpi> Mmm, typing something on the mach console triggers a write on the
+ disk
+ < youpi> because the /dev/console node gets updated
+ < youpi> I don't really see why
+ < youpi> (yes, just typing at the bash prompt, not even running something)
+ < youpi> typing during the sleep command (i.e. mere tty echo) doesn't
+ trigger it, however
+ < youpi> running bash's echo does trigger it
+ < braunr> during sleep, the glibc stream functions handle I/O, while with
+ bash, its readline takes care of it, right ?
+ < youpi> /bin/echo too
+ < youpi> during sleep it's the tty process which handles I/O
+ < braunr> the write may be due to a write time update on the inode
+ < braunr> modification* time
+ < youpi> probably yes, but how so?
+ < youpi> ext2fs is only supposed to pass the thing to the console
+ translator
+ < braunr> not sure
+ < youpi> actually, ext2fs even isn't supposed to come into play when it's
+ about typing at the bash prompt
+ < youpi> once it's opened, isn't the port for /dev/console supposed to be
+ directly to the translator there?
+ < braunr> i think so
+ < youpi> (s/tty/term/ in what I said)
+ < braunr> well, it's certain
+ < youpi> so I don't see how ext2fs can be triggered to write an atime or
+ mtime
+ < braunr> what does rpctrace say ?
+ < youpi> io_read_request and io_write_request
+ < youpi> braunr: it doesn't happen at the login prompt
+ < youpi> interestingly, atime is always 3-4 secs earlier than ctime & mtime
+ < youpi> doesn't happen with dash
+ < braunr> we should implement relatime and experiment with it
+ < braunr> it shouldn't be hard
+ < youpi> well, there's noatime already
+ < youpi> but my point is that this update shouldn't happen
+ < youpi> and I believe it's the source of the i_file_acl e2fsck warning
+ < braunr> i wasn't saying that concerning this problem, it was just a
+ separate idea (noatime is more problematic than relatime)
+ < braunr> and i agree, it shouldn't happen :)
+ < youpi> ok, it's set_node_times which gets called
+
+IRC, freenode, #hurd, 2011-07-27
+
+ < antrik> BTW, I'm not sure it's still relevant; but the reason accessing
+ translators such as the console modifies the underlying node is that most
+ stat information is generally passed through
+ < antrik> (in some cases it might be unintentional though, simply using the
+ default implementation from trivfs carelessly...)
+ < youpi> I know
+ < youpi> I've seen that in the code
+ < antrik> OK
+ < youpi> it is still relevant: I still find it useless to write it on the
+ disk
+ < youpi> though w uses it to show idle time over reboot
+ < braunr> is it useful to keep the information across reboots ?
+ < youpi> for some value of "useful" for w
+ < braunr> i wonder what would break if this was entierly kept in memory
+ < youpi> nothing, probably
+ < youpi> note that it doesn't overload ext2fs so much, it just adds a write
+ every ~5s
+ < youpi> (at worse, i.e. when keeping showing text, for instance)
+ < braunr> indeed, the behaviour seems the same on linux
+ < antrik> ah... that explains why the disk doesn't spin down while IRC is
+ active... always wondered about that :-)
+ < youpi> that's not very power-saving, yes
+ < youpi> well, we might want to put /dev on ram someday
diff --git a/open_issues/unit_testing.mdwn b/open_issues/unit_testing.mdwn
new file mode 100644
index 00000000..dd1e465c
--- /dev/null
+++ b/open_issues/unit_testing.mdwn
@@ -0,0 +1,94 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+This task may be suitable for [[community/GSoC]]:
+[[community/gsoc/project_ideas/testing_framework]]
+
+---
+
+A collection of thoughts with respect to unit testing.
+
+We definitely want to add unit test suites to our code base.
+
+We should select a tool that we like to use, and that is supported (not
+abandoned).
+
+ * [SC
+ Test](http://web.archive.org/web/20021204193607/sc-archive.codesourcery.com/sc_test)
+
+ * [DejaGnu](http://www.gnu.org/software/dejagnu/) /
+ [Expect](http://expect.nist.gov/)
+
+ * used by the [[GCC testsuite|gcc]], [[GDB testsuite|gdb]],
+ [[binutils testsuite|binutils]], etc.
+
+ * The [[glibc testsuite|glibc]] has a home-grown system (Makefile-based),
+ likewise does the [[Open_POSIX_Test_Suite]].
+
+ * [Kyua](http://code.google.com/p/kyua/) (and its predecessor [ATF](http://www.NetBSD.org/~jmmv/atf/)).
+
+ * Primarily used by NetBSD as its testing framework; FreeBSD is in the process of adopting it.
+
+ * Provides bindings to write tests in C, C++ and POSIX shell. Lua is planned.
+
+ * Builds and runs on many different Unix-based operating systems.
+
+ * [check](http://check.sourceforge.net/)
+
+ * used by some GNU packages, for example GNU PDF (Jose E. Marchesi)
+
+ * CodeSourcery's [QMTest](http://www.codesourcery.com/qmtest)
+
+ * useb by?
+
+ * documentation:
+
+ * <http://www.codesourcery.com/public/qmtest/whitepaper.pdf>
+
+ * <http://www.python.org/workshops/2002-02/papers/01/index.htm>
+
+ * <http://gcc.gnu.org/ml/gcc/2002-05/msg01978.html>
+
+ * <http://www.codesourcery.com/public/qmtest/qmtest-snapshot/share/doc/qmtest/html/tutorial/index.html>
+
+ * <http://www.codesourcery.com/public/qmtest/qmtest-snapshot/share/doc/qmtest/html/manual/index.html>
+
+ * [Git](http://git-scm.com/) has an elaborate unit testsuite, which is also
+ used in [Notmuch](http://notmuchmail.org/).
+
+ * [*[ANNOUNCE] ktest.pl: Easy and flexible testing script for Linux Kernel
+ Developers*](http://lwn.net/Articles/412302/) by Steven Rostedt,
+ 2010-10-28. [v2](http://lwn.net/Articles/414064/), 2010-11-08.
+
+ * <http://autotest.kernel.org/wiki/WhitePaper>
+
+
+# Related
+
+ * [[nightly_builds]]
+
+ * [[nightly_builds_deb_packages]]
+
+ * <http://www.phoronix-test-suite.com/> -- ``comprehensive testing and
+ benchmarking platform''. This one might be useful for [[performance]]
+ testing, too?
+
+ * <http://ltp.sourceforge.net/>
+
+ * [LaBrea](https://github.com/dustin/labrea/wiki), or similar tools can be
+ used for modelling certain aspects of system behavior (long response times,
+ for example).
+
+
+# Discussion
+
+See the [[GSoC project idea|community/gsoc/project_ideas/testing_framework]]'s
+[[discussion
+subpage|community/gsoc/project_ideas/testing_framework/discussion]].
diff --git a/open_issues/user-space_device_drivers.mdwn b/open_issues/user-space_device_drivers.mdwn
new file mode 100644
index 00000000..e929f2bf
--- /dev/null
+++ b/open_issues/user-space_device_drivers.mdwn
@@ -0,0 +1,202 @@
+[[!meta copyright="Copyright © 2009, 2011 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_gnumach open_issue_hurd]]
+
+This is a collection of resources concerning *user-space device drivers*.
+
+Also see [[device drivers and IO systems]].
+[[community/gsoc/project ideas/driver glue code]].
+
+[[!toc levels=2]]
+
+
+# Issues
+
+## IRQs
+
+ * Can be modeled using [[RPC]]s.
+
+ * Security considerations: IRQ sharing.
+
+ * *Omega0* paper defines an interface.
+
+ * As is can be read in the *Mach 3 Kernel Principles*, there is an *event
+ object* facility in Mach that can be used for having user-space tasks react
+ to IRQs. However, at least in GNU Mach, that code (`kern/eventcount.c`)
+ doesn't seem functional at all and isn't integrated properly in the kernel.
+
+ * IRC, freenode, #hurd, 2011-07-29
+
+ < antrik> regarding performance of userspace drivers, there is one
+ thing that really adds considerable overhead: interrupt
+ handling. whether this is relevant very much depends on the hardware
+ in question. when sending many small packets over gigabit ethernet,
+ it might be noticable; in most other cases it's irrelevant
+ < youpi> some cards support interrupt coalescin
+ < youpi> could be supported by DDE too
+
+## DMA
+
+ * Security considerations.
+
+ * I/O MMU.
+
+## I/O Ports
+
+ * Security considerations.
+
+## PCI and other buses
+
+ * Security considerations: sharing.
+
+## Latency of doing RPCs
+
+ * [[GNU Mach|microkernel/mach/gnumach]] is said to have a high overhead when
+ doing RPC calls.
+
+## System Boot
+
+IRC, freenode, #hurd, 2011-07-27
+
+ < braunr> btw, was there any formulation of the modifications required to
+ have disk drivers in userspace ?
+ < braunr> (which would obviously need something like
+ initrd/initramfs/whatever and may also need the root file system not to
+ be the first task started)
+ < braunr> hm actually, we may not need initrd
+ < braunr> the boot loader could just load more modules
+ < antrik> braunr: I have described all that in my thesis report... in
+ German :-(
+ < braunr> and the boot scripts could be adjusted to pass around the right
+ ports
+ < Tekk_> braunr: yeah, we could probably load a module that kciks us into
+ userspace and starts the disk driver
+ < braunr> modules are actualy userspace executables
+ < Tekk_> ah
+ < Tekk_> so what's the issue?
+ < Tekk_> oh! I'm thinking the ext2fs server, which is already in userspce
+ < braunr> change the file systems to tell them which underlying disk driver
+ to use
+ < Tekk_> mhm
+ < braunr> s/disk/storage/
+
+
+# Plan
+
+ * Examine what other systems are doing.
+
+ * L4
+
+ * Hurd on L4: deva, fabrica
+
+ * [[DDE]]
+
+ * Minix 3
+
+ * Start with a simple driver and implement the needed infrastructure (see
+ *Issues* above) as needed.
+
+ * <http://savannah.nongnu.org/projects/user-drivers/>
+
+ Some (unfinished?) code written by Robert Millan in 2003: PC keyboard
+ and parallel port drivers, using `libtrivfs`.
+
+
+# Documentation
+
+ * [An Architecture for Device Drivers Executing as User-Level
+ Tasks](http://portal.acm.org/citation.cfm?id=665603), 1993, David B. Golub,
+ Guy G. Sotomayor, Freeman L. Rawson, III
+
+ * [Performance Measurements of the Multimedia Testbed on Mach 3.0: Experience
+ Writing Real-Time Device Drivers, Servers, and
+ Applications](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.40.8685),
+ 1993, Roger B. Dannenberg, David B. Anderson, Tom Neuendorffer, Dean
+ Rubine, Jim Zelenka
+
+ * [User Level IPC and Device Management in the Raven
+ Kernel](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.57.3733),
+ 1993, D. Stuart Ritchie, Gerald W. Neufeld
+
+ * [Creating User-Mode Device Drivers with a
+ Proxy](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.26.3055),
+ 1997, Galen C. Hunt
+
+ * [The APIC Approach to High Performance Network Interface Design: Protected
+ DMA and Other
+ Techniques](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.56.1198),
+ 1997, Zubin D. Dittia, Guru M. Parulkar, Jerome R. Cox, Jr.
+
+ * [The Fluke Device Driver
+ Framework](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.7927),
+ 1999, Kevin Thomas Van Maren
+
+ * [Omega0: A portable interface to interrupt hardware for L4
+ system](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.21.5958),
+ 2000, Jork Löser, Michael Hohmuth
+
+ * [Userdev: A Framework For User Level Device Drivers In
+ Linux](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.3.4461),
+ 2000, Hari Krishna Vemuri
+
+ * [User Mode Drivers](http://www.linuxjournal.com/article/5442), 2002, Bryce
+ Nakatani
+
+ * [Towards Untrusted Device
+ Drivers](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.13.1725),
+ 2003, Ben Leslie, Gernot Heiser
+
+ * [Encapsulated User-Level Device Drivers in the Mungi Operating
+ System](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.6.1531),
+ 2004, Ben Leslie Nicholas, Nicholas FitzRoy-Dale, Gernot Heiser
+
+ * [Linux Kernel Infrastructure for User-Level Device
+ Drivers](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.10.1408),
+ 2004, Peter Chubb
+
+ * [Get More Device Drivers out of the
+ Kernel!](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.59.6333),
+ 2004, Peter Chubb
+
+ * <http://gelato.unsw.edu.au/IA64wiki/UserLevelDrivers>
+
+ * [Initial Evaluation of a User-Level Device
+ Driver](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.59.4531),
+ 2004, Kevin Elphinstone, Stefan Götz
+
+ * [User-level Device Drivers: Achieved
+ Performance](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.59.6766),
+ 2005, Ben Leslie, Peter Chubb, Nicholas FitzRoy-Dale, Stefan Götz, Charles
+ Gray, Luke Macpherson, Daniel Potts, Yueting Shen, Kevin Elphinstone,
+ Gernot Heiser
+
+ * [Virtualising
+ PCI](http://www.ice.gelato.org/about/oct06_presentations.php#pres14), 2006,
+ Myrto Zehnder, Peter Chubb
+
+ * [Microdrivers: A New Architecture for Device
+ Drivers](http://www.cs.rutgers.edu/~vinodg/papers/hotos2007/), 2007, Vinod
+ Ganapathy, Arini Balakrishnan, Michael M. Swift, Somesh Jha
+
+ * <http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.109.2623>
+ [[!tag open_issue_documentation]]
+
+ * <http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.146.2170>
+ [[!tag open_issue_documentation]]
+
+
+# External Projects
+
+ * [[DDE]]
+
+ * <http://ertos.nicta.com.au/research/drivers/uldd/>
+
+ * <http://gelato.unsw.edu.au/IA64wiki/UserLevelDrivers>
diff --git a/open_issues/viengoos_make_clean.mdwn b/open_issues/viengoos_make_clean.mdwn
new file mode 100644
index 00000000..af2920e7
--- /dev/null
+++ b/open_issues/viengoos_make_clean.mdwn
@@ -0,0 +1,22 @@
+[[!meta copyright="Copyright © 2010 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_viengoos]]
+
+IRC, unknown channel, unknown date.
+
+ <neal> tschwinge: If I do a make clean n the root directory, follow that with a configure, configure fails with: configure: error: C compiler cannot create executables
+ <neal> this is in config.log: /home/neal/src/hurd-l4/build/lib/gcc/i686-pc-viengoos-gnu/4.2.2/../../../../i686-pc-viengoos-gnu/bin/ld: cannot find -lc
+ <neal> rt
+ <tschwinge> neal: Should make clean also remove srcdir/gcc/gcc and binutils, as you do it with newlib?
+ <neal> I'd prefer it not to
+ <neal> as I use make clean to prep the tree for new configure changes
+ <neal> and build gcc takes a long time
+ <neal> (as does newlib, but newlib in this case needs to be rebuilt)
diff --git a/open_issues/viengoos_tls_gcc.mdwn b/open_issues/viengoos_tls_gcc.mdwn
new file mode 100644
index 00000000..92499903
--- /dev/null
+++ b/open_issues/viengoos_tls_gcc.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2010 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_viengoos]]
+
+IRC, unknown channel, unknown date.
+
+ <neal> tschwinge : I'm trying to enable tls for viengoos. This requires compiling gcc with --enable-tls, which enables threading, which pulls in libpthread, which requires newlib headers.
+ <neal> tschwinge : Unfortunately, I don't see how to install the newlib headers without having gcc
+ <neal> tschwinge : Have you got any ideas?
diff --git a/open_issues/virtual_square_view-os.mdwn b/open_issues/virtual_square_view-os.mdwn
new file mode 100644
index 00000000..dcc98785
--- /dev/null
+++ b/open_issues/virtual_square_view-os.mdwn
@@ -0,0 +1,55 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+All the following is based only on a first, and quick glance only.
+
+We may want to have a look at Virtual Square / View-OS, and evaluate in which
+ways this is related / implemented / implementable / usable / useful in a Hurd
+environment, and even ;-) strive to collaborate with them.
+
+[[I|tschwinge]] found this project very much by chance: on LinkedIn, they
+posted a proposal for [DevRoom on Virtualization
+Technologies](http://www.linkedin.com/groupItem?view=&gid=27213&type=member&item=31720076)
+for [[community/meetings/FOSDEM_2011]]. LinkedIn sends out such posts in very
+opaque emails from time to time (probably they'd look less opaque with a HTML
+mail user agent), and I even bothered to have a look at it, and follow the link
+to the web page, and not delete it straightway.
+
+So, I had a quick look at the project:
+
+This seems to be an amalgamation / combination of various virtualization
+mechanisms / projects / ideas. Virtualization is here meant in a broad sense,
+including file system namespaces: our `chroot` / `settrans --chroot`;
+networking configurations: our pfinet override stuff; system configuration:
+subhurds?; current time, devices: likewise?; executable interpreter: our exec
+server override stuff; "stat" virtualization: fakeroot; etc. -- They seem to
+do a lot of stuff that we also try to do / could do / can do.
+
+In fact, this looks a bit like they're trying to bring some more of the Hurd's
+[[hurd/concepts]] over to Unix / Linux, more than only the *usual VFS stuff*
+(translators / FUSE).
+
+Perhaps start reading with the *slides* linked below.
+
+ * <http://virtualsquare.org/>
+
+ * <http://wiki.virtualsquare.org/>
+
+ * <http://sourceforge.net/projects/view-os/>
+
+ * Renzo Davoli, [*Virtual
+ Square*](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.108.9106),
+ 2005
+
+ * Renzo Davoli, Michael Goldweber, [*View-OS: Change your View on
+ Virtualization*](http://www.cs.unibo.it/~renzo/view-os-lk2009.pdf),
+ Proc. of Linux Kongress, 2009
+
+ * [slides](http://www.cs.unibo.it/~renzo/view-os-lk2009-slides.pdf)
diff --git a/open_issues/virtualbox.mdwn b/open_issues/virtualbox.mdwn
new file mode 100644
index 00000000..9440284f
--- /dev/null
+++ b/open_issues/virtualbox.mdwn
@@ -0,0 +1,99 @@
+[[!meta copyright="Copyright © 2011 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_gnumach]]
+
+Running GNU Mach in VirtualBox crashes during initialization.
+
+IRC, freenode, #hurd, 2011-08-15
+
+ <BlueT_> HowTo Reproduce: 1) Use `reboot` to reboot the system. 2) Once
+ you see the Grub menu, turn off the debian hurd box. 3) Let the box boot
+ normally, and wait for the error/crash/reboot. 4) The error/crash will
+ happen twice and it's reboot automatically. The 3rd boot will success.
+
+ <BlueT_> root@dhurd:/boot# addr2line -f -e gnumach-1.3.99-486-dbg-copy 0x106c93 0x1556a5 0x152c54
+ <BlueT_> copyoutmsg
+ <BlueT_> /home/buildd/build/chroot-sid/home/buildd/byhand/gnumach/build-dbg/../i386/i386/locore.S:1289
+ <BlueT_> exec_load
+ <BlueT_> /home/buildd/build/chroot-sid/home/buildd/byhand/gnumach/build-dbg/../kern/elf-load.c:80
+ <BlueT_> user_bootstrap
+ <BlueT_> /home/buildd/build/chroot-sid/home/buildd/byhand/gnumach/build-dbg/../kern/bootstrap.c:756
+
+ i386/i386/locore.S:1289 is
+
+ movl $USER_DS,%eax /* use user data segment for accesses */
+ => mov %ax,%es
+
+ State is
+
+ cs: 0x8
+ ds: 0x10
+ es: 0x10
+ fs: 0
+ gs: 0
+ ss: 0x10
+ eax: 0x1f
+ ecx: 0x8048000
+ edx: 0x15fb7f
+ ebx: 0x1001000
+ esp: 0x75e47e08
+ ebp: 0x75e47e6c
+ esi: 0x1002000
+ edi: 0x8048000
+ eip: 0x106c93
+ efl: 0x10206
+
+ <youpi> oh, wait, it's not even the data access which poses problem
+ <youpi> but the use of $USER_DS
+ <youpi> ew
+ <youpi> looks like a gdt initialization emulation issue in virtualbox...
+
+
+ <BlueT_> just found that at the second crash, the address is different
+ <BlueT_> 2nd time:
+ <BlueT_> addr2line -f -e gnumach-1.3.99-486-dbg-copy 0x1068bd 0x152c74
+ <BlueT_> _kret_popl_es
+ <BlueT_> /home/buildd/build/chroot-sid/home/buildd/byhand/gnumach/build-dbg/../i386/i386/locore.S:527
+ <BlueT_> user_bootstrap
+ <BlueT_> /home/buildd/build/chroot-sid/home/buildd/byhand/gnumach/build-dbg/../kern/bootstrap.c:765
+
+ i386/i386/locore.S:527 is:
+
+ _return_from_kernel:
+ _kret_popl_gs:
+ popl %gs /* restore segment registers */
+ _kret_popl_fs:
+ popl %fs
+ _kret_popl_es:
+ => popl %es
+ _kret_popl_ds:
+
+ cs: 0x8
+ ds: 0x10
+ es: 0x10
+ fs: 0
+ gs: 0
+ ss: 0x10
+ eax: 0x106c95
+ ecx: 0x6aab096c
+ edx: 0x106cec
+ ebx: 0x75e47f04
+ esp: 0x75e47f0c
+ ebp: 0x75e47fac
+ esi: 0x75e47f8c
+ edi: 0x7fffff3c
+ eip: 0x1068bd
+ efl: 0x10216
+
+ <youpi> looks again like a $USER_DS issue
+ <youpi> what's interesting is that that one means that $USER_DS did load in
+ %es fine at least once
+ <youpi> and it's the reload that fails
diff --git a/open_issues/virtualization.mdwn b/open_issues/virtualization.mdwn
new file mode 100644
index 00000000..343f624a
--- /dev/null
+++ b/open_issues/virtualization.mdwn
@@ -0,0 +1,46 @@
+[[!meta copyright="Copyright © 2010 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_hurd]]
+
+An index of things to work on w.r.t. virtualization.
+
+ * [[/virtualization]]
+
+ * [[hurd/virtualization|hurd/virtualization]]
+
+ * [[GSoC project proposal|community/gsoc/project_ideas/virtualization]]
+
+ * [[hurd/subhurd]] / [[hurd/neighborhurd]]
+
+<!--
+
+ * There's talking about *collectives* in the Hurd RM, on [[/advantages]] and
+ [[unsorted/hurd-migr]] ([[!taglink open_issue_documentation]]).
+
+-->
+
+ * [[Implementing_Hurd_On_Top_of_Another_System]]
+
+ * Unix / Linux
+
+ * [[Capsicum]]
+
+ * [[Virtual_Square_View-OS]]
+
+ * [Namespace file descriptors](http://lwn.net/Articles/407495/),
+ 2010-09-29
+
+ * [Divorcing namespaces from
+ processes](http://lwn.net/Articles/377109/), 2010-03-03
+
+ * [[File_Systems]]
+
+ * [[Networking]]
diff --git a/open_issues/virtualization/capsicum.mdwn b/open_issues/virtualization/capsicum.mdwn
new file mode 100644
index 00000000..44503e34
--- /dev/null
+++ b/open_issues/virtualization/capsicum.mdwn
@@ -0,0 +1,22 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+*Capsicum - practical capabilities for UNIX*
+
+<http://www.cl.cam.ac.uk/research/security/capsicum/>
+
+<http://www.lightbluetouchpaper.org/2010/08/12/capsicum-practical-capabilities-for-unix/>
+(server disappeared; [Google
+cache](http://webcache.googleusercontent.com/search?q=cache:cCAqjWOhhksJ:www.lightbluetouchpaper.org/2010/08/12/capsicum-practical-capabilities-for-unix/))
+
+<http://lackingrhoticity.blogspot.com/2010/10/process-descriptors-in-freebsd-capsicum.html>
+
+<http://www.cl.cam.ac.uk/research/security/capsicum/slides/20100811-usenix-capsicum.pdf>
+/ <http://www.youtube.com/watch?v=raNx9L4VH2k>
diff --git a/open_issues/virtualization/file_systems.mdwn b/open_issues/virtualization/file_systems.mdwn
new file mode 100644
index 00000000..a12ea10d
--- /dev/null
+++ b/open_issues/virtualization/file_systems.mdwn
@@ -0,0 +1,24 @@
+[[!meta copyright="Copyright © 2010 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_hurd]]
+
+Of course, it is possible to use commodity file systems on [[virtualized
+systems|virtualization]], like [[hurd/translator/ext2fs]] or
+[[hurd/translator/nfs]], but there are also other possibilities which ought to
+be explored.
+
+ * [[network_file_system_by_just_forwarding_RPCs]]
+
+ * Linux saw a patch for [*generic name to handle and open by handle
+ syscalls*](http://thread.gmane.org/gmane.linux.file-systems/46648) posted,
+ which in turn can be beneficial for a [[QEMU]] emulation of a 9P file
+ system. LWN's Jonathan Corbet covered this [*open by
+ handle*](http://lwn.net/Articles/375888/) functionality on 2010-02-23.
diff --git a/open_issues/virtualization/networking.mdwn b/open_issues/virtualization/networking.mdwn
new file mode 100644
index 00000000..7a6474a1
--- /dev/null
+++ b/open_issues/virtualization/networking.mdwn
@@ -0,0 +1,30 @@
+[[!meta copyright="Copyright © 2010 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_hurd]]
+
+Collection about stuff that is relevant for *virtualization* and *networking*.
+
+ * [[Virtual_Square_View-OS]]
+
+ * [*Virtual Networks*](http://virtualsquare.org/vn.html)
+
+ * [User Level Networking](http://uln.sourceforge.net/)
+
+ * [Virtual Distributed Ethernet](http://vde.sourceforge.net/)
+
+ * [Application Level
+ Environment4Networking](http://sourceforge.net/projects/ale4net/)
+
+ *Ale4NET used dyn library call diversion to define networking at process
+ level.* -- what we're doing with our approach for overriding the default
+ [[hurd/translator/pfinet]] by setting environment variables.
+
+ Project is now part of [[Virtual_Square_View-OS]].
diff --git a/open_issues/wine.mdwn b/open_issues/wine.mdwn
new file mode 100644
index 00000000..65e6c584
--- /dev/null
+++ b/open_issues/wine.mdwn
@@ -0,0 +1,69 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]
+
+On 2010-11-28, Austin English contacted us, stating that he's working on
+porting [Wine](http://winehq.org/) to the GNU/Hurd.
+
+It is not yet clear how difficult this is going to be, what sort of
+requirements Wine has: only libc / POSIX / etc., or if there are
+*advanced* things like [[system_call]] trapping involved, too.
+
+[[Samuel|samuelthibault]] suspects that *there's some need for LDT table
+allocation. There is kernel support for this,* however.
+
+
+IRC, freenode, #hurd, 2011-08-11
+
+ < arethusa> I've been trying to make Wine work inside a Debian GNU/Hurd VM,
+ and to that end, I've successfully compiled the latest sources from Git
+ after installing the libc (devel) packages from experimental and
+ personally patching Wine with http://pastebin.com/rg6dx09G
+
+[[rg6dx09G.patch]]
+
+ < arethusa> my question is, when trying to launch Wine, I'm seeing "wine
+ client error:0: sendmsg: (os/kern) invalid address" from the client side,
+ whereas the wineserver seems to be starting and running correctly, how
+ could I debug this issue further? using rpctrace doesn't seem to help, as
+ the trace just hangs when run on the Wine loader instead of yielding
+ insight
+ < kilobug> arethusa: isn't there a wine debuguer that can start a gdb when
+ wine encounters an error or something like that ?
+ < arethusa> it's too early for that
+ < kilobug> or least give you a full traceback of the wine code where the
+ error occur ?
+ < arethusa> the error is happening during initial connect to the
+ wineserver, in dlls/ntdll/server.c
+ < arethusa> but that doesn't help me figure out why sendmsg would error out
+ in this way
+ < arethusa>
+ http://source.winehq.org/git/wine.git/blob/HEAD:/dlls/ntdll/server.c#l361
+ < azeem_> arethusa: probably some of the msghdr entries are not supported
+ by the Hurd's glib
+ < azeem_> c
+ < pinotree> haha, socket credentials, which we don't support yet
+ < azeem_> yep
+ < pinotree> youpi: ↑ another case ;)
+ < azeem_> arethusa: just implement those and it should work
+ < kilobug> in pflocal ? or glibc ?
+ < pinotree> pflocal
+ < arethusa> azeem_: hmm, okay, thanks
+ < pinotree> arethusa: their lack is a known issue, and makes things like
+ dbus and gamin not work
+ < arethusa> it's
+ https://www.gnu.org/software/hurd/open_issues/sendmsg_scm_creds.html and
+ related links I assume?
+
+[[sendmsg_scm_creds]]
+
+ < youpi> yes
+ < pinotree> (but that patch is lame)
diff --git a/open_issues/wine/rg6dx09G.patch b/open_issues/wine/rg6dx09G.patch
new file mode 100644
index 00000000..510ff23f
--- /dev/null
+++ b/open_issues/wine/rg6dx09G.patch
@@ -0,0 +1,116 @@
+diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c
+index 42b3639..7484608 100644
+--- a/dlls/ntdll/directory.c
++++ b/dlls/ntdll/directory.c
+@@ -3145,14 +3145,14 @@ static void WINAPI read_changes_user_apc( void *arg, IO_STATUS_BLOCK *io, ULONG
+ static NTSTATUS read_changes_apc( void *user, PIO_STATUS_BLOCK iosb, NTSTATUS status, void **apc )
+ {
+ struct read_changes_info *info = user;
+- char data[PATH_MAX];
++ char data[4096];
+ NTSTATUS ret;
+ int size;
+
+ SERVER_START_REQ( read_change )
+ {
+ req->handle = wine_server_obj_handle( info->FileHandle );
+- wine_server_set_reply( req, data, PATH_MAX );
++ wine_server_set_reply( req, data, 4096 );
+ ret = wine_server_call( req );
+ size = wine_server_reply_size( reply );
+ }
+diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c
+index 6c8e8e2..e949227 100644
+--- a/dlls/ntdll/signal_i386.c
++++ b/dlls/ntdll/signal_i386.c
+@@ -180,6 +180,36 @@ __ASM_GLOBAL_FUNC(vm86_enter,
+
+ #endif /* linux */
+
++#ifdef __GNU__
++
++typedef ucontext_t SIGCONTEXT;
++
++#define EAX_sig(context) ((context)->uc_mcontext.gregs[REG_EAX])
++#define EBX_sig(context) ((context)->uc_mcontext.gregs[REG_EBX])
++#define ECX_sig(context) ((context)->uc_mcontext.gregs[REG_ECX])
++#define EDX_sig(context) ((context)->uc_mcontext.gregs[REG_EDX])
++#define ESI_sig(context) ((context)->uc_mcontext.gregs[REG_ESI])
++#define EDI_sig(context) ((context)->uc_mcontext.gregs[REG_EDI])
++#define EBP_sig(context) ((context)->uc_mcontext.gregs[REG_EBP])
++#define ESP_sig(context) ((context)->uc_mcontext.gregs[REG_ESP])
++
++#define CS_sig(context) ((context)->uc_mcontext.gregs[REG_CS])
++#define DS_sig(context) ((context)->uc_mcontext.gregs[REG_DS])
++#define ES_sig(context) ((context)->uc_mcontext.gregs[REG_ES])
++#define SS_sig(context) ((context)->uc_mcontext.gregs[REG_SS])
++#define FS_sig(context) ((context)->uc_mcontext.gregs[REG_FS])
++#define GS_sig(context) ((context)->uc_mcontext.gregs[REG_GS])
++
++#define EFL_sig(context) ((context)->uc_mcontext.gregs[REG_EFL])
++#define EIP_sig(context) ((context)->uc_mcontext.gregs[REG_EIP])
++#define TRAP_sig(context) ((context)->uc_mcontext.gregs[REG_TRAPNO])
++#define ERROR_sig(context) ((context)->uc_mcontext.gregs[REG_ERR])
++
++#define FPU_sig(context) ((FLOATING_SAVE_AREA *)&(context)->uc_mcontext.fpregs.fp_reg_set.fpchip_state)
++#define FPUX_sig(context) NULL
++
++#endif /* __GNU__ */
++
+ #ifdef BSDI
+
+ #include <machine/frame.h>
+diff --git a/dlls/shell32/shfldr_unixfs.c b/dlls/shell32/shfldr_unixfs.c
+index 9649df8..cdd1798 100644
+--- a/dlls/shell32/shfldr_unixfs.c
++++ b/dlls/shell32/shfldr_unixfs.c
+@@ -369,7 +369,7 @@ static inline BOOL UNIXFS_is_pidl_of_type(LPCITEMIDLIST pIDL, SHCONTF fFilter) {
+ static BOOL UNIXFS_get_unix_path(LPCWSTR pszDosPath, char *pszCanonicalPath)
+ {
+ char *pPathTail, *pElement, *pCanonicalTail, szPath[FILENAME_MAX], *pszUnixPath, has_failed = 0, mb_path[FILENAME_MAX];
+- WCHAR wszDrive[] = { '?', ':', '\\', 0 }, dospath[PATH_MAX], *dospath_end;
++ WCHAR wszDrive[] = { '?', ':', '\\', 0 }, dospath[MAX_PATH], *dospath_end;
+ int cDriveSymlinkLen;
+ void *redir;
+
+diff --git a/dlls/winex11.drv/xrender.c b/dlls/winex11.drv/xrender.c
+index ad8e08b..a8d6329 100644
+--- a/dlls/winex11.drv/xrender.c
++++ b/dlls/winex11.drv/xrender.c
+@@ -2440,8 +2440,8 @@ void X11DRV_XRender_UpdateDrawable(X11DRV_PDEVICE *physDev)
+ return;
+ }
+
+-BOOL XRender_AlphaBlend( X11DRV_PDEVICE *devDst, X11DRV_PDEVICE *devSrc,
+- struct bitblt_coords *dst, struct bitblt_coords *src, BLENDFUNCTION blendfn )
++BOOL XRender_AlphaBlend( X11DRV_PDEVICE *devDst, struct bitblt_coords *dst,
++ X11DRV_PDEVICE *devSrc, struct bitblt_coords *src, BLENDFUNCTION blendfn )
+ {
+ FIXME("not supported - XRENDER headers were missing at compile time\n");
+ return FALSE;
+diff --git a/libs/wine/ldt.c b/libs/wine/ldt.c
+index 3098061..b3fee13 100644
+--- a/libs/wine/ldt.c
++++ b/libs/wine/ldt.c
+@@ -96,6 +96,11 @@ static inline int set_thread_area( struct modify_ldt_s *ptr )
+ #include <i386/user_ldt.h>
+ #endif
+
++#ifdef __GNU__
++#include <mach/i386/mach_i386.h>
++#include <mach/mach_traps.h>
++#endif
++
+ /* local copy of the LDT */
+ #ifdef __APPLE__
+ struct __wine_ldt_copy wine_ldt_copy = { { 0, 0, 0 } };
+@@ -203,6 +208,9 @@ static int internal_set_entry( unsigned short sel, const LDT_ENTRY *entry )
+ #elif defined(__APPLE__)
+ if ((ret = i386_set_ldt(index, (union ldt_entry *)entry, 1)) < 0)
+ perror("i386_set_ldt");
++#elif defined(__GNU__)
++ if ((ret = i386_set_ldt(mach_thread_self(), sel, (descriptor_list_t)entry, 1)) != KERN_SUCCESS)
++ perror("i386_set_ldt");
+ #else
+ fprintf( stderr, "No LDT support on this platform\n" );
+ exit(1); \ No newline at end of file
diff --git a/open_issues/wrong_reply_message_id.mdwn b/open_issues/wrong_reply_message_id.mdwn
new file mode 100644
index 00000000..e84e2571
--- /dev/null
+++ b/open_issues/wrong_reply_message_id.mdwn
@@ -0,0 +1,23 @@
+[[!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]]."]]"""]]
+
+[[!meta title="(ipc/mig) wrong reply message ID"]]
+
+[[!tag open_issue_gnumach open_issue_mig open_issue_glibc]]
+
+ <tschwinge> # settrans -P -a /servers/socket/2 /hurd/pfinet -i eth0 -a 192.168.10.61 -g 192.168.10.1 -m 255.255.255.0
+ <tschwinge> Translator pid: 2289
+ <tschwinge> Pausing...
+ <tschwinge> pfinet: /build/buildd/hurd-20080607/build-tree/hurd/libports/create-internal.c:115: _ports_create_port_internal: Unexpected error: (ipc/mig) wrong reply message ID.
+ <neal> it would be nice to print out the id when those sorts of errors occur.
+
+This error code is `MIG_REPLY_MISMATCH` and can be returned in GNU Mach's
+`kern/exception.c (exception_parse_reply)`, in MIG-generated code, see `user.c
+(WriteCheckIdentity)`, and in glibc's `sysdeps/mach/hurd/ioctl.c (__ioctl)`.
diff --git a/open_issues/xattr.mdwn b/open_issues/xattr.mdwn
new file mode 100644
index 00000000..40222f78
--- /dev/null
+++ b/open_issues/xattr.mdwn
@@ -0,0 +1,36 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta title="xattr: extended attributes"]]
+
+[[!tag open_issue_glibc open_issue_hurd]]
+
+IRC, freenode, #hurd, 2011-06-01
+
+ <gnu_srs> Another thing: the lsattr and chattr programs seems to be bogus
+ on Hurd. Are they present since they are part of e2fsprogs?
+ <youpi> I don't think the Hurd has an interface for it
+ <tschwinge> gnu_srs, youpi: lsattr/chattr are extended attributes, right?
+ We do have some patches from years ago for adding some support in glibc,
+ but they're not yet integrated. And also we do have a plan for using
+ these instead of our Hurd-specific passive translator information in
+ inodes.
+
+If interested in working on this, talk to [[tschwinge]], and see these resources:
+
+ * [[!GNU_Savannah_task 5503]], [[!GNU_Savannah_patch 5126]]
+
+ * <http://lists.gnu.org/archive/html/bug-hurd/2006-02/threads.html#00115>,
+ <http://lists.gnu.org/archive/html/bug-hurd/2006-01/threads.html#00180>,
+ <http://lists.gnu.org/archive/html/bug-hurd/2006-05/threads.html#00042>
+
+ * <http://www.spinics.net/lists/linux-ext4/msg07260.html>,
+ <http://www.spinics.net/lists/linux-ext4/msg07259.html>,
+ <http://www.spinics.net/lists/linux-ext4/msg07261.html>
diff --git a/open_issues/xen_crash_copy-size_le_page_size.mdwn b/open_issues/xen_crash_copy-size_le_page_size.mdwn
new file mode 100644
index 00000000..f2d8081e
--- /dev/null
+++ b/open_issues/xen_crash_copy-size_le_page_size.mdwn
@@ -0,0 +1,104 @@
+[[!meta copyright="Copyright © 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_xen]]
+
+`/dev/hd2` is 2 GiB in size (backed by LVM), unformatted.
+
+ # mkfs.ext2 -o hurd /dev/hd2
+ mke2fs 1.41.7 (29-June-2009)
+ hd2 count 1
+ re-open, hd2 count 2
+ ext2fs_check_if_mount: Can't check if filesystem is mounted due to missing mtab file while determining whether /dev/hd2 is mounted.
+ re-open, hd2 count 3
+ re-open, hd2 count 4
+ re-open, hd2 count 5
+ Filesystem label=
+ OS type: Hurd
+ Block size=4096 (log=2)
+ Fragment size=4096 (log=2)
+ 131072 inodes, 524288 blocks
+ 26214 blocks (5.00%) reserved for the super user
+ First data block=0
+ Maximum filesystem blocks=536870912
+ 16 block groups
+ 32768 blocks per group, 32768 fragments per group
+ 8192 inodes per group
+ Superblock backups stored on blocks:
+ 32768, 98304, 163840, 229376, 294912
+
+ Assertion `copy->size <= PAGE_SIZE' failed in file "../gnumach-1-branch-Xen-branch/xen/block.c", line 536
+ Kernel Breakpoint trap, eip 0x20020a77
+ Stopped at 0x20020a76: int $3
+ db> trace
+ 0x20020a76(2006abc1,2006ba03,2006782c,218,2e2be8d4)
+ 0x20020ace(2006ba03,2006782c,218,2e3629a0,32000)
+ 0x2003e9d5(2de04764,2e2be0b8,12,0,3fff80)
+ 0x200476e6(2de5ad54,2e2db010,2e30a9a0,2de3a854,2de5ad44)
+ 0x20021ed4(2de5ad44,2e2bb2e0,2e2bb2a0,0,0)
+ 0x2005309d(129b8f0,3,38,28,e)
+ 0x20006838(129b8f0,3,38,28,e)
+ >>>>> user space <<<<<
+
+
+ $ addr2line -i -f -e /boot/gnumach-xen 0x20020a76 0x20020ace 0x2003e9d5 0x200476e6 0x20021ed4 0x2005309d 0x20006838
+ Debugger
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/debug.c:105
+ Assert
+ ??:0
+ device_write
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/xen/block.c:537
+ _Xdevice_write
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/device/device.server.c:253
+ ipc_kobject_server
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/ipc_kobject.c:201
+ mach_msg_trap
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/ipc/mach_msg.c:1367
+ mach_call_call
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/i386/i386/locore.S:1083
+
+GDB on `mkfs.ext2`:
+
+ raw_write_blk (channel=0x80829d8, data=0x8082a40, block=524272, count=8, buf=0x80a0a60) at ../../../git/lib/ext2fs/unix_io.c:272
+ 272 actual = write(data->dev, buf, size);
+ (gdb) print size
+ $4 = 32768
+ (gdb) bt
+ #0 raw_write_blk (channel=0x80829d8, data=0x8082a40, block=524272, count=8, buf=0x80a0a60) at ../../../git/lib/ext2fs/unix_io.c:272
+ #1 0x080635fc in unix_write_blk64 (channel=0x80829d8, block=524272, count=8, buf=0x80a0a60) at ../../../git/lib/ext2fs/unix_io.c:673
+ #2 0x0806373c in unix_write_blk (channel=0x80829d8, block=524272, count=8, buf=0x80a0a60) at ../../../git/lib/ext2fs/unix_io.c:705
+ #3 0x0805e87d in ext2fs_zero_blocks (fs=0x8082940, blk=524272, num=16, ret_blk=0x15ffb1c, ret_count=0x0)
+ at ../../../git/lib/ext2fs/mkjournal.c:182
+ #4 0x0804ec56 in main (argc=131072, argv=0x80000) at ../../git/misc/mke2fs.c:2032
+
+Discussion:
+
+ <tschwinge> I had a look at the code, but unfortunately don't really know
+ how this data transfers between Xen and the domU work.
+ <tschwinge> Well, I know how it roughly works, but not the implementation
+ deatils.
+ <youpi> well here it's not about the xen/domU transfers
+ <youpi> it's about copying data to align it
+ <youpi> i.e. when offset is not aligned, I need to copy it
+ <tschwinge> Yes-
+ <youpi> I was lazy, just implemented it for things smaller than a page
+ <youpi> it just needs to be extended into copying several pages
+ <tschwinge> youpi: Hmm, do we need to copy all the data to shift away the
+ offset or is there a better way?
+ <youpi> the blkbackend needs data to be sector-aligned
+ <youpi> just aligning on a page makes offset computation simpler
+ <youpi> as it's rare that's not a problem
+ <tschwinge> And a sector is the usual 512 bytes there, I assume?
+ <tschwinge> But then we do need to copy all of it?
+ <youpi> let me check
+ <youpi> the sector is the granularity you can't go below
+ <youpi> sector is the sector_size reported by the backend
+ <youpi> but for sector_number and first/last_sect it's 512
+ <youpi> yes, that's weird
diff --git a/open_issues/xen_domu_with_ro_hd.mdwn b/open_issues/xen_domu_with_ro_hd.mdwn
new file mode 100644
index 00000000..efbd2d18
--- /dev/null
+++ b/open_issues/xen_domu_with_ro_hd.mdwn
@@ -0,0 +1,35 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="Xen domU with a read-only HD"]]
+
+[[!tag open_issue_xen]]
+
+read-only hd3
+
+ foobar:~# e2fsck /dev/hd3
+ e2fsck 1.40.11 (17-June-2008)
+ re-open, hd3 count 5
+ re-open, hd3 count 6
+ /dev/hd3 was not cleanly unmounted, check forced.
+ Pass 1: Checking inodes, blocks, and sizes
+ Pass 2: Checking directory structure
+ Pass 3: Checking directory connectivity
+ Pass 4: Checking reference counts
+ Pass 5: Checking group summary information
+ /dev/hd3: 2729/262144 files (0.2% non-contiguous), 34116/524288 blocks
+ Error writing block 1 (Attempt to write block from filesystem resulted in short write). Ignore error<y>? yes
+
+ foobar:~# e2fsck /dev/hd3
+ e2fsck 1.40.11 (17-June-2008)
+ re-open, hd3 count 7
+ re-open, hd3 count 8
+ e2fsck: Attempt to read block from filesystem resulted in short read while trying to open /dev/hd3
+ Could this be a zero-length partition?
diff --git a/persistency.mdwn b/persistency.mdwn
index 5bd4f524..d45ebacc 100644
--- a/persistency.mdwn
+++ b/persistency.mdwn
@@ -1,18 +1,42 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2010, 2011 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
A persistent object is an object that survives reboot.
-On Unix, files and directories are persistent but
-processes and file descriptors are not. EROS is
+On [[Unix]], files and directories are persistent but
+processes and [[unix/file_descriptor]]s are not. [[microkernel/EROS]] is
an example of an orthogonally persistent system:
-processes and capabilities also survive reboot. To a
+processes and [[capabilities|capability]] also survive reboot. To a
process, it generally only looks as if it had not been
scheduled for a long time; the rest of its environment
remains essentially the indistinguishable.
+
+
+# GNU/Hurd
+
+The GNU/Hurd is not a persistent system: there are no persistent
+[[capabilities|capability]]. All data that is stored in files in the file
+system, is serialized.
+
+
+# Further Reading
+
+[[!toggleable id=shapiro_capintro_1999 text="""[[!template id=note
+text="*[[shapiro\_capintro\_1999|capability]]*:
+{{$capability#shapiro_capintro_1999}}.
+{{$capability#shapiro_capintro_1999_text}}."]]"""]]
+
+ * Section *Writing Things Down* in [[!toggle id=shapiro_capintro_1999
+ text="[shapiro\_capintro\_1999]"]].
+
+
+[[!tag open_issue_documentation]] <!--
+<http://www.eros-os.org/essays/Persistence.html>
+-->
diff --git a/policy.mdwn b/policy.mdwn
index f0a414f2..1bc3c527 100644
--- a/policy.mdwn
+++ b/policy.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
A policy is a rule that define what may or may not happens, not
how it happens. The latter is referred to as [[mechanism]].
diff --git a/principal.mdwn b/principal.mdwn
index 897c0436..c9b952ec 100644
--- a/principal.mdwn
+++ b/principal.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
A principal is an accountable entity. A principal may be
a user. On some computer systems, users are represented by their
diff --git a/public_hurd_boxen.mdwn b/public_hurd_boxen.mdwn
index 377bc403..5a281368 100644
--- a/public_hurd_boxen.mdwn
+++ b/public_hurd_boxen.mdwn
@@ -1,51 +1,58 @@
-[[meta copyright="Copyright © 2006, 2007, 2008 Free Software Foundation,
-Inc."]]
+[[!meta copyright="Copyright © 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-Here are some Hurd boxes that users have made available to the public:
+[[!tag stable_URL]]
-[[table class="table_style_1" data="""
-"Host Name","Operator","Access","Distro","Machine Specs","Comments"
-"flubber.bddebian.com","[[Barry_de_Freese|bddebian]]","ssh; port 2250","Debian","PII 550 MHz; 384 MiB","used for the wiki, and a bit short on disk space, so please don't use for general work"
-"clubber.bddebian.com","[[Barry_de_Freese|bddebian]]","ssh; port 2251","Debian","PIII 1 GHz; 384 MiB"
-"gnubber.bddebian.com","[[Barry_de_Freese|bddebian]]","ssh; port 2254","Debian","PII 733 MHz; 384 MiB"
-"goober.bddebian.com","[[Barry_de_Freese|bddebian]]","ssh; port 2255","Debian","?"
-"hurd.nipl.net","[[AlastairPoole]]","ssh; port 24","GNU","AMD Sempron 2800 MHz","not sure if this machine is still alive"
-"""]]
-
-To request an account on the `*.bddebian.com` machines either contact
-*bddebian* or *tschwinge* (other people might also be able to help) in [[IRC]]
-or send email to <hurd-shell-account@gnu.org>. Also use these contact
-addresses for requesting support with respect to software installations, etc.
-
-For the `hurd.nipl.net` host, please see <http://www.nipl.net/>.
+There are GNU/Hurd boxes that we're offering shell accounts on. These are
+generally available for everyone interested in [[contributing]], or just having
+a look at a GNU/Hurd system.
+An alternative to online shell access may be using a [[QEMU
+image|hurd/running/qemu]].
----
+[[!table class="table_style_1" data="""
+"Hoster","Name","Distribution","Machine Specs","Comments"
+"[[bddebian]]","blubber","Debian GNU/Hurd","Celeron 2.2 GHz; 222 MiB","Xen domU on [[zenhost]]; for experimental stuff; deactivated until needed again (apart from [[tschwinge]], only [[scolobb]] has an account, but is not active at the moment)"
+"[[bddebian]]","clubber","Debian GNU/Hurd","PIII 1 GHz; 384 MiB"
+"[[bddebian]]","flubber","Debian GNU/Hurd","Celeron 2.2 GHz; 666 MiB","Xen domU on [[zenhost]]"
+"[[bddebian]]","snubber","Debian GNU/Hurd","Celeron 2.2 GHz; 243 MiB","Xen domU on [[zenhost]]; web server"
+"[[bddebian]]","gnubber","Debian GNU/Hurd","PII 733 MHz; 384 MiB"
+"[[bddebian]]","goober","Debian GNU/Hurd","?"
+"[[bddebian]]","grubber","Debian GNU/Hurd","Celeron 2.2 GHz; 554 MiB","Xen domU on [[zenhost]]; for experimental stuff"
+"[[bddebian]]","[[zenhost]]","Debian GNU/Linux","Celeron 2.2 GHz","Xen dom0 for several hosts"
+"Debian","[strauss.debian.net](http://strauss.debian.net/ssh)","Debian GNU/Hurd",,"all Debian Developers have access"
+"""]]
-/!\ SSH access to the machines is very instable at the moment. This is
-probably due to problems with the [[hurd/translator/pfinet]] server.
+To request an account on the *[[bddebian]]* machines either contact
+*tschwinge* (other people might also be able to help) in [[IRC]]
+or send email to <hurd-shell-account@gnu.org> (please include your desired user
+name and public SSH key). Also use these contact
+addresses for requesting support with respect to software installations, etc.
- * <http://lists.gnu.org/archive/html/bug-hurd/2008-07/msg00052.html>
----
+For easy access, you should append your public SSH key(s)
+to `~/.ssh/authorized_keys` on the remote machine.
+Also, add the [[!toggle id=bddebian_ssh_config text="following stanza (click
+here to toggle display)"]] to the `~/.ssh/config` file of the machine you're
+connecting from.
-To be able to use just `ssh [machine]`, you should append your public SSH key
-to `~/.ssh/authorized_keys` on the remote machine.
+[[!toggleable id=bddebian_ssh_config text="""
-And if you don't want to worry about the machines's IP addresses changing (due
-to dial-up connection) or the host keys changing every now and then (when the
-machines are re-installed), put something like the following into
-`~/.ssh/config` of the machine you connect from:
+ # Stanza from <http://www.gnu.org/software/hurd/public_hurd_boxen.html>,
+ # 2010-12-15.
+ Host blubber.bddebian.com blubber
+ HostName blubber.bddebian.com
+
Host clubber.bddebian.com clubber
HostName clubber.bddebian.com
Port 2251
@@ -62,8 +69,24 @@ machines are re-installed), put something like the following into
HostName goober.bddebian.com
Port 2255
- Host *.bddebian.com clubber flubber gnubber goober
+ Host grubber.bddebian.com grubber
+ HostName grubber.bddebian.com
+
+ Host snubber.bddebian.com snubber
+ HostName snubber.bddebian.com
+
+ Host zenhost.bddebian.com zenhost
+ HostName zenhost.bddebian.com
+ Port 2260
+
+ Host blubber.bddebian.com blubber grubber.bddebian.com grubber snubber.bddebian.com snubber
+ ProxyCommand ssh zenhost socat - TCP4:%h:%p
+
+ Host *.bddebian.com blubber clubber flubber gnubber goober grubber snubber zenhost
CheckHostIP no
- UserKnownHostsFile /dev/null
- StrictHostKeyChecking no
- User [username]
+ User [user name]
+
+The `CheckHostIP` statement is for not having to worry about the machines's IP
+addresses changing (due to being behind a dial-up connection).
+
+"""]]
diff --git a/public_hurd_boxen/bddebian.mdwn b/public_hurd_boxen/bddebian.mdwn
new file mode 100644
index 00000000..82fb0b8c
--- /dev/null
+++ b/public_hurd_boxen/bddebian.mdwn
@@ -0,0 +1,21 @@
+[[!meta copyright="Copyright © 2009, 2010 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]]."]]"""]]
+
+# IP addresses
+
+ * [[zenhost]]: 192.168.10.60
+ * blubber: 192.168.10.61
+ * flubber: 192.168.10.50
+ * grubber: 192.168.10.63
+ * snubber: 192.168.10.62
+
+At least anything in the .60 range can be used.
+
+Registered in zenhost's `/etc/hosts`.
diff --git a/public_hurd_boxen/installation.mdwn b/public_hurd_boxen/installation.mdwn
new file mode 100644
index 00000000..4f612a83
--- /dev/null
+++ b/public_hurd_boxen/installation.mdwn
@@ -0,0 +1,128 @@
+[[!meta copyright="Copyright © 2009, 2010 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]]."]]"""]]
+
+This page documents how installation of a new machine is being done on
+[[zenhost]].
+
+This method uses
+*[install_crosshurd](http://git.savannah.gnu.org/cgit/hurd/incubator.git/log/?h=install_crosshurd)*.
+
+Another option might be switching to <http://www.informatik.uni-koeln.de/fai/>
+or a equivalent system.
+
+Steps for *install_crosshurd*:
+
+ * Enable loggin with screen (`C-a H`).
+
+ * \# lvcreate ...
+
+ * machines/[MACHINE]
+
+ * \# MACHINE=[MACHINE] TARGET=/dev/zenhost/[MACHINE]-root ./install_crosshurd
+
+ * \# sudo umount /tmp/*/target
+
+ * /etc/xen/[MACHINE]
+
+ * \# xm create -c [MACHINE]
+
+ * \# /install
+
+ * TODO
+
+ Unpacking debconf (from .../debconf_1.5.28_all.deb) ...
+ + debconf-set-selections
+ warning: Unknown type error, skipping line 9
+
+ * TODO
+
+ Unpacking bash (from .../bash_4.1-3_hurd-i386.deb) ...
+ The bash upgrade discovered that your /bin/sh link points to dash.
+ As bash for Debian is destined to provide a working /bin/sh (pointing to
+ /bin/bash) your link will be overwritten by a default link.
+
+ If you don't want further upgrades to overwrite your customization, please
+ read /usr/share/doc/bash/README.Debian.gz for a more permanent solution.
+
+ [Press RETURN to continue]
+
+ That file doesn't say anything about it.
+
+ * TODO; related to the *debconf-set-selections* thing above
+
+ Setting up libpam-runtime (1.1.1-6) ...
+ debconf: unable to initialize frontend: Dialog
+ debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 75.)
+ debconf: falling back to frontend: Readline
+ debconf: unable to initialize frontend: Readline
+ debconf: (Can't locate Term/ReadLine.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7.)
+ debconf: falling back to frontend: Teletype
+ Configuring libpam-runtime
+ --------------------------
+
+ Pluggable Authentication Modules (PAM) determine how authentication,
+ authorization, and password changing are handled on the system, as well as
+ allowing configuration of additional actions to take when starting user
+ sessions.
+
+ Some PAM module packages provide profiles that can be used to automatically
+ adjust the behavior of all PAM-using applications on the system. Please
+ indicate which of these behaviors you wish to enable.
+
+ 1. Unix authentication
+
+ (Enter the items you want to select, separated by spaces.)
+
+ PAM profiles to enable:
+
+ * if it's a Xen domU:
+
+ # sudo apt-get --purge install libc0.3-xen libc0.3-i686-
+
+ * As needed:
+
+ # mkfs.ext2 -I 128 -b 4096 /dev/hd2 # TAKE CARE!
+ # settrans /media/data /hurd/ext2fs /dev/hd2
+ # mkdir /media/data/home
+ # rmdir /home && ln -s media/data/home /
+
+ # mkfs.ext2 -I 128 -b 4096 /dev/hd3 # TAKE CARE!
+ # settrans /media/var /hurd/ext2fs /dev/hd3
+ # mv /var /media/var/
+ # ln -s media/var/var /
+
+ * If needed: restore (parts of) some files
+
+ * /etc/{passwd,shadow,group,gshadow}
+
+ * \# adduser ... sudo
+
+ * \# passwd root
+
+ * (`mkdir /etc/ssh`), restore `/etc/ssh/ssh_host_*key*`
+
+ * \# syncfs -s && halt
+
+ * \# xm create -c [MACHINE]
+
+ * \# /install_packages
+
+ * Until [[open_issues/screen]] is fixed:
+
+ * Install `flubber:~tschwinge/screen_4.0.3-11_hurd-i386.deb` instead.
+
+ * \# printf 'screen\thold\n' | dpkg --set-selections
+
+ * add line to zenhost's `/etc/hosts`
+
+ * system-specific:
+
+ * [[flubber]]
+ * [[snubber]]
diff --git a/public_hurd_boxen/installation/flubber.mdwn b/public_hurd_boxen/installation/flubber.mdwn
new file mode 100644
index 00000000..5ef0d314
--- /dev/null
+++ b/public_hurd_boxen/installation/flubber.mdwn
@@ -0,0 +1,53 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+# additional packages
+
+ikiwiki
+
+
+# SSH Daemon
+
+`/etc/ssh/sshd_config`
+
+ Port 2250
+
+
+# Git Daemon
+
+`/etc/rc.local`
+
+ # runit doesn't work yet...
+ LC_ALL=C date >> /var/log/git-daemon
+ git daemon --verbose --user-path >> /var/log/git-daemon 2>&1 &
+
+Should [[fix runit|open issues/runit]] and use Debian's `git-daemon-run`
+package instead.
+
+
+# *polipo*
+
+`/etc/polipo/config`
+
+ # local begin
+
+ # TODO: "::0" doesn't work, at least not with a a PF_INET6 translator.
+ proxyAddress = "0.0.0.0"
+
+ # Size to which on-disk objects are truncated.
+ #diskCacheTruncateSize integer 1048576
+ # Time after which on-disk objects are truncated.
+ #diskCacheTruncateTime time 4d12h
+ diskCacheTruncateTime = 50d
+ # Time after which on-disk objects are removed.
+ #diskCacheUnlinkTime = 32d
+ diskCacheUnlinkTime = 100d
+
+ # local end
diff --git a/public_hurd_boxen/installation/snubber.mdwn b/public_hurd_boxen/installation/snubber.mdwn
new file mode 100644
index 00000000..68e0d619
--- /dev/null
+++ b/public_hurd_boxen/installation/snubber.mdwn
@@ -0,0 +1,66 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+# Additional Packages
+
+Before 2010-08-12, we've been using apache2-mpm-worker, but that brought
+the system to its knees too often, leading to a un-syncable rootfs, etc.
+Let's see how apache2-mpm-prefork behaves.
+
+ apache2-mpm-prefork build-essential git-core gitweb ikiwiki inetutils-inetd
+ less libtext-csv-perl netcat nullmailer perlmagick screen texinfo
+
+Yet more:
+
+ * libemail-send-perl (for my *sendmail vs. ikiwiki* patch)
+
+ * libsearch-xapian-perl xapian-omega (for ikiwiki's search plugin)
+
+ * libyaml-perl (for ikiwiki's YAML field plugins)
+
+
+## [[open_issues/syslog]]
+
+ $ find /etc/rc*/ | grep syslog | sudo xargs rm
+
+
+# `~hurd-web/`
+
+ $ mkdir hurd-web && GIT_DIR=hurd-web git init
+
+
+# `~tschwinge/`
+
+ $ mkdir tmp/backup && chmod 0733 tmp/backup
+
+
+# `/var/www/robots.txt`
+
+This file used to contain:
+
+ User-agent: *
+ Disallow: /gitweb/
+ Disallow: /cgi-bin/
+
+... which I've now changed to:
+
+ User-agent: *
+ Disallow: /
+
+The goal is that robots rather index the official pages,
+<http://www.gnu.org/software/hurd/>, instead of the staging area on
+<http://www.bddebian.com:8888/~hurd-web/>.
+
+
+# Restore Backup
+
+## `/etc/apache2/mods-enabled/`
+
+`rewrite.load`, `userdir.conf`, `userdir.load`
diff --git a/public_hurd_boxen/xen_handling.mdwn b/public_hurd_boxen/xen_handling.mdwn
new file mode 100644
index 00000000..47d92c43
--- /dev/null
+++ b/public_hurd_boxen/xen_handling.mdwn
@@ -0,0 +1,49 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+# listing running domUs
+
+ $ sudo xm list
+
+ $ sudo xm top
+
+# handling running domUs
+
+Forcefully killing a domU (that has crashed or is busy-looping, etc.):
+
+ $ sudo xm destroy [domU]
+
+As for (re-)starting a domU, read below in *domU consoles*.
+
+Using `xm shutdown [domU]` to gracefully shut down a running domU does not yet
+work -- this is not yet implemented in the [[Xen port of GNU
+Mach|microkernel/mach/gnumach/ports/xen]] ([[!taglink open_issue_xen]]).
+
+# domU consoles
+
+To avoid any complications with people trying to use the same console at the
+same time, please use this command for attaching to a domU's console (this
+command line will also start the domU in case that it isn't running already):
+
+ $ host=[domU] && sudo screen -DRRS console-$host sh -c "xm console $host || xm create -c $host"
+
+Otherwise, if one attaches to the same console twice, the second instance will
+in fact forward input to the domU (possibly infering with what the person is
+doing on the first instance), but the output won't be sent back to the second
+instance.
+
+After having typed this once, Bash's `reverse-search-history` (`C-r`), followed
+by typing in `host=flubber`, for example, will be enough to get access to
+that machine's console.
+
+/!\ TODO: How does one get the environment variables `COLUMNS` and `LINES` set
+properly when using `xm console`? This is relevant for everything using
+`(n)curses` -- for interactive console applications. Using `export COLUMNS=143
+LINES=44` does work, but is a manual process.
diff --git a/public_hurd_boxen/zenhost.mdwn b/public_hurd_boxen/zenhost.mdwn
new file mode 100644
index 00000000..b828b8e9
--- /dev/null
+++ b/public_hurd_boxen/zenhost.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 2009, 2010 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]]."]]"""]]
+
+*zenhost* is a Xen dom0 (hosted by [[bddebian]]) which is hosting several domUs
+(see the table on [[public hurd boxen]] for a list).
+
+
+[[!inline pages=public_hurd_boxen/xen_handling feeds=no]]
+
+
+# [[Installation of new machines|installation]]
diff --git a/purify_html b/purify_html
new file mode 100755
index 00000000..9c3a7862
--- /dev/null
+++ b/purify_html
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+# Mangle the rendered files to cause fewer differences after re-rendering.
+
+# Written by Thomas Schwinge <thomas@schwinge.name>.
+
+# Un-mangle mailto links: convert HTML character entities to real characters.
+find ./ -name \*.html -print0 \
+ | xargs -0 --no-run-if-empty -n 1 \
+ perl -e \
+ 'BEGIN {
+ $file = $ARGV[0];
+ $discard = 1;
+ $replacing = 0;
+
+ # TODO: could use a proper temporary file.
+ open(OUT, ">$file.new") or die "open: $file: $!";
+ select(OUT) or die "select: $file: $!";
+ }
+
+ while (<>) {
+ # The replacing-toggling logic is a bit rough, but so is life.
+ $replacing = 1 if /<a href="mailto:/;
+ s%\&#(x?)([^;]*);%$discard = 0; chr(length($1) ? hex($2) : $2);%eg if $replacing;
+ $replacing = 0 if /<\/a>/;
+ } continue {
+ print or die "print: $file: $!";
+ }
+
+ END {
+ if ($discard) {
+ unlink("$file.new") or die "unlink: $file: $!";
+ } else {
+ rename("$file.new", $file) or die "rename: $file: $!";
+ }
+ }'
+
+# Compared to using ``perl -p -i -l'', this solution maintains the files'
+# original timestamps unless they're actually modified.
diff --git a/qemu.mdwn b/qemu.mdwn
new file mode 100644
index 00000000..d7cea5ad
--- /dev/null
+++ b/qemu.mdwn
@@ -0,0 +1,36 @@
+[[!meta copyright="Copyright © 2005, 2007, 2008, 2009, 2010 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]]."]]"""]]
+
+QEMU is free software written by Fabrice Bellard that implements a fast
+processor [[emulator|emulation]], allowing a user to run one operating system
+within another one. It is similar to projects such as [[Bochs]] and VMware
+Workstation, but has several features these lack, including increased speed and
+support for multiple architectures. By using dynamic translation it achieves a
+reasonable speed while being easy to port on new host CPUs.
+
+QEMU has two operating modes:
+
+ * User mode emulation: QEMU can launch Linux processes compiled for one CPU
+ on another CPU. Linux [[system call]]s are converted because of endianness
+ and 32/64 bit mismatches. Wine and Dosemu are the main targets for QEMU.
+
+ * System mode emulation: QEMU emulates a full system, including a processor
+ and various peripherials. It enables easier testing and debugging of
+ system code. It can also be used to provide virtual hosting of several
+ virtual PCs on a single server.
+
+The majority of the program is under the [[LGPL]], with the system mode
+emulation under the [[GPL]].
+
+# External Links
+
+ * <http://www.nongnu.org/qemu/>
+ * [Qemu on Windows](http://www.h7.dion.ne.jp/~qemu-win/)
diff --git a/recent_changes.mdwn b/recent_changes.mdwn
index 708e4588..594a0390 100644
--- a/recent_changes.mdwn
+++ b/recent_changes.mdwn
@@ -1,14 +1,14 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="Recent Changes"]]
+[[!meta title="Recent Changes"]]
-[[inline pages="internal(recent_changes/change_*)" template=recentchanges
+[[!inline pages="internal(recent_changes/change_*)" template=recentchanges
show=0]]
diff --git a/render_locally b/render_locally
index 153e7e8a..ca7856f5 100755
--- a/render_locally
+++ b/render_locally
@@ -1,35 +1,88 @@
#!/bin/sh
-# Render the pages of this repository for your local browsing pleasure.
+# Render the pages of this repository.
-# We use ``--no-usedirs'' here, because when browsing local files, the web
-# browsers don't display `index.html' files by default when a hyperlink
-# referencing a directory is being opened.
+# Written by Thomas Schwinge <tschwinge@gnu.org>.
-# Written by Thomas Schwinge <tschwinge@gnu.org>
+# See `contributing/web_pages' for further information.
+export ROOT && ROOT=$(readlink -f "$(dirname "$0")") &&
-# Need a symlink-free path.
-src=$(readlink -f "$(dirname "$0")") &&
-dest=$src.rendered &&
+# Don't translate.
+export LC_MESSAGES && LC_MESSAGES=C &&
+
+case $1 in
+ # Use this for rendering the set of pages which are to be installed under
+ # <http://www.gnu.org/software/hurd/>.
+ --official)
+ shift &&
+
+ export TZ && TZ=UTC &&
+ export DESTDIR && DESTDIR=$ROOT.rendered.official &&
+
+ # Use ``--no-usedirs'' here, so that not too many separate directories have
+ # to be created.
+ #
+ # Use ``--gettime --plugin update_mtimes'' to reset pages' / files' mtimes
+ # according to the RCS information when using --refresh mode.
+ set x \
+ --set wikistatedir="$ROOT"/.ikiwiki-official \
+ --url http://www.gnu.org/software/hurd \
+ --no-usedirs \
+ --gettime --plugin reset_mtimes \
+ "$@" &&
+ shift;;
+
+ --w3m-wrapper)
+ shift &&
+
+ export NO_MSG && NO_MSG=y &&
+
+ # Disable the configured VCS, as the CGI wrapper together with using the
+ # anonok plugin inhibits the propagation of authorship information.
+ set x \
+ --cgi --wrapper ~/.ikiwiki/wrappers/hurd-web.cgi \
+ --plugin anonok \
+ --rcs norcs \
+ "$@" &&
+ shift &&
+
+ exec \
+ "$0" \
+ --w3m \
+ "$@";;
+
+ --w3m)
+ shift &&
+
+ export DESTDIR && DESTDIR=$ROOT.rendered.w3m &&
+
+ set x \
+ --set wikistatedir="$ROOT"/.ikiwiki-w3m \
+ --cgiurl hurd-web.cgi --w3mmode \
+ "$@" &&
+ shift &&
+
+ exec \
+ "$0" \
+ "$@";;
+
+ *)
+ # Use ``--no-usedirs'' here, because when browsing local files, the web
+ # browsers don't display `index.html' files by default when a hyperlink
+ # referencing a directory is being opened.
+ set x \
+ --no-usedirs \
+ "$@" &&
+ shift;;
+esac &&
ikiwiki \
- --verbose \
- --wikiname GNU\ Hurd\ wiki \
- --templatedir "$src"/.templates \
- --userdir user \
- --no-usedirs \
- --plugin favicon \
- --plugin goodstuff \
- --plugin html \
- --plugin sidebar \
- --plugin table \
- --libdir "$src"/.library \
- --plugin copyright \
- --plugin license \
- --plugin texinfo \
- ${1+"$@"} \
- "$src" "$dest" &&
-
-echo &&
-echo Now\ open\ \`"$dest"/index.html\'' to browse the wiki pages.'
+ --setup "$ROOT"/ikiwiki.setup \
+ --refresh \
+ "$@" &&
+
+if [ ${NO_MSG-n} = y ]; then :; else
+ echo &&
+ echo Now\ open\ \`"${DESTDIR-"$ROOT".rendered}"/index.html\'' to browse the web pages.'
+fi
diff --git a/rpc.mdwn b/rpc.mdwn
index e60254d1..176197dd 100644
--- a/rpc.mdwn
+++ b/rpc.mdwn
@@ -1,11 +1,19 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
RPC stands for remote procedure call.
+
+
+# See Also
+
+ * [[Mach RPC|microkernel/mach/rpc]]s
+
+ * the [[Hurd's rpctrace|hurd/debugging/rpctrace]]
diff --git a/rules.mdwn b/rules.mdwn
index d1a544e0..6f6f9e2f 100644
--- a/rules.mdwn
+++ b/rules.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
* [[Source_repositories]]
* [[Savannah_group]]
diff --git a/rules/savannah_group.mdwn b/rules/savannah_group.mdwn
index 317ec49f..9ade863e 100644
--- a/rules/savannah_group.mdwn
+++ b/rules/savannah_group.mdwn
@@ -1,12 +1,13 @@
-[[meta copyright="Copyright © 2006, 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2006, 2007, 2008, 2009, 2011 Free Software
+Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
<http://savannah.gnu.org/projects/hurd/>
@@ -16,5 +17,13 @@ There is no need to be a formal member of the GNU Hurd Savannah group in order
to be able to contribute to the system. In fact, if we added every single soul
that was interested in the Hurd to the Savannah group it'd probably have
exploded by now. We have the policy of adding people as soon as they are
-beginning to make substantial contributions. Simply use the [[mailing_lists]]
+beginning to make substantial contributions. Simply use the [[mailing lists]]
for sending your contributions, for asking questions, and so on.
+
+Have a look at the page for [[contributing]]. Also be sure to have a look at
+the [[contributing/questionnaire]].
+
+## List of members
+
+The list of members can be seen at
+<http://savannah.gnu.org/project/memberlist.php?group=hurd>.
diff --git a/rules/source_repositories.mdwn b/rules/source_repositories.mdwn
index 2ecc6fe6..8215af3b 100644
--- a/rules/source_repositories.mdwn
+++ b/rules/source_repositories.mdwn
@@ -1,100 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-CVS repositories on Savannah, see <http://savannah.gnu.org/cvs/?group=hurd>.
-
-# Branches
-
-Members of the Hurd Savannah group,
-<http://savannah.gnu.org/project/memberlist.php?group=hurd>, are allowed to
-create branches without formal permission...
-
-* named *SAVANNAH_LOGIN-WHATEVER-branch* for general-purpose branches, or
-
-* named *BASE_BRANCH-WHATEVER-branch* for topic-branches basing on
- *BASE_BRANCH*.
-
-*WHATEVER* shall be a suitable tag.
-
-Examples:
-
-* GNU Mach
-
- * *gnumach-1-branch-Xen-branch*
- * *gnumach-1-branch-gdb-branch*
-
-* GNU Hurd
-
- * *miles-orphaned-changes*
- * *hammy-libchannel-branch*
- * *mmenal-soc2006-nfs-branch*
-
-Also, create helper tags for merging mainline changes into your branches.
-
-Examples:
-
-* GNU Mach
-
- * *gnumach-1-branch-Xen-branch*: *gnumach-1-branch-Xen-branch-merge_helper*
- * *gnumach-1-branch-gdb-branch*: *gnumach-1-branch-gdb-branch-merge_helper*
-
-* GNU Hurd
-
- * *hammy-libchannel-branch*: *hammy-libchannel-branch-base*
- * *mmenal-soc2006-nfs-branch*: *mmenal-soc2006-nfs-branch-base*
-
-## Merging
-
-Merging between CVS branches is not trivial. Unless you really know what
-you're doing, please talk to [[Thomas_Schwinge|tschwinge]] or
-[[Samuel_Thibault|samuelthibault]], to avoid cluttering the repositories
-unintendedly.
-
-# Tags
-
-Equivalent rules apply.
-
-# Behavior
-
-## ... on your branches
-
-Most branches are to be eventually be merged back into the mainline branch. To
-faciliate (and also to help other contributors) we'd like you to write a short
-summary log in a top-level (or wherever else appropriate) `ChangeLog.WHATEVER`
-file.
-
-Examples:
-
-* GNU Mach
-
- * *gnumach-1-branch-Xen-branch*: `ChangeLog.Xen`
- * *gnumach-1-branch-gdb-branch-merge_helper*: `ChangeLog.gdb`
-
-* GNU Hurd
-
- * *hammy-libchannel-branch-base*: `channelio/ChangeLog`, `libchannel/ChangeLog`
- * *mmenal-soc2006-nfs-branch-base*: `nfs/ChangeLog`
-
-This need not be a full-fledged [GNU-style *ChangeLog*
-file](http://www.gnu.org/prep/standards/html_node/Change-Logs.html). E.g.,
-don't waste time writing *ChangeLog* entries for debugging stuff that will be
-removed again before merging back into mainline. But please do write
-something. Short notes.
-
-## ... in general
-
-Try to not introduce spurious, unneeded changes, e.g., whitespace changes.
-
-Adhere to the already-used coding conventions. These are usually the [GNU
-Coding Standards](http://www.gnu.org/prep/standards/html_node/) for stuff
-written by ourselves, including new files, of course.
-
-GNU Mach code is largely based on external code. Don't GNU-ify it, as this
-would make merging external patches unnecessarily difficult.
+[[!meta redir=/source_repositories]]
diff --git a/sandbox.mdwn b/sandbox.mdwn
index def5fae7..b90e8160 100644
--- a/sandbox.mdwn
+++ b/sandbox.mdwn
@@ -6,7 +6,7 @@ There even is a [[subsandbox]].
Here's a paragraph.
-Here's another one with *emphasised* text.
+Here's another one with *emphasized* text.
# Header
diff --git a/security.mdwn b/security.mdwn
index ae925f74..222c4a68 100644
--- a/security.mdwn
+++ b/security.mdwn
@@ -1,12 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
Alan Karp [identifies][1] 11 security questions:
@@ -58,3 +59,7 @@ Online non-overt channels (both covert & side) are auditory:
Offline non-overt channels are olfactory:
* Bob can smell that Kilroy was here, even if Kilroy is asleep or dead.
+
+---
+
+[[Open Issues related to security|open_issues/security]].
diff --git a/set_mtimes b/set_mtimes
new file mode 100755
index 00000000..7157e7f5
--- /dev/null
+++ b/set_mtimes
@@ -0,0 +1,56 @@
+#!/bin/sh
+
+# Set the checked-out files' mtimes according to their last Git revision.
+
+# Written by Thomas Schwinge <tschwinge@gnu.org>
+
+trap '
+ if [ x"$tmp_dir" = x ]; then :; else
+ rm -rf -- "$tmp_dir"
+ fi
+' EXIT &&
+
+# TODO: handle arguments meaning to only process a subset (directories / files)
+# of the repository.
+if [ x"$#" = x0 ]; then :; else
+ echo >&2 No command line arguments expected.
+ exit 1
+fi &&
+
+tmp_dir=$(mktemp -d) &&
+
+tmp_ignore=$tmp_dir/ignore &&
+# TODO: have to add more flags?
+git ls-files \
+ > "$tmp_ignore" \
+ -d -m &&
+while read file; do
+ echo >&2 "*** WARNING: file <$file> locally changed or deleted, not touching"
+done < "$tmp_ignore" &&
+
+tmp_known=$tmp_dir/known &&
+git ls-files \
+ > "$tmp_known" \
+ -c &&
+
+tmp_consider=$tmp_dir/consider &&
+grep \
+ < "$tmp_known" \
+ > "$tmp_consider" \
+ -f "$tmp_ignore" -x -v &&
+
+while read file; do
+ # TODO: use %ci? TODO: can we optimize this to not have to invoke git log
+ # individually for every single file?
+ date_git=$(git log -1 --pretty=format:%ai -- "$file") &&
+ date_git=$(date --rfc-3339=ns -d "$date_git") &&
+ date_file=$(date --rfc-3339=ns -r "$file") &&
+ if [ x"$date_git" = x"$date_file" ]; then :; else
+ echo >&2 "*** INFO: file $file: mtime <$date_file> -> <$date_git>"
+ touch -m -d "$date_git" "$file"
+ fi \
+ || {
+ echo >&2 "*** ERROR: file <$file>, date_git <$date_git>, date_file <$date_file>"
+ exit 1
+ }
+done < "$tmp_consider"
diff --git a/sfi.mdwn b/sfi.mdwn
index 1a987290..4b57d7c6 100644
--- a/sfi.mdwn
+++ b/sfi.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
SFI stands for Software-Based Fault Isolation. SFI is an [[isolation]]
technique described by Wahbe et al. in their 1993 paper [Effcient
diff --git a/shortcuts.mdwn b/shortcuts.mdwn
index 19368aab..563bbe08 100644
--- a/shortcuts.mdwn
+++ b/shortcuts.mdwn
@@ -1,78 +1,87 @@
-[[if test="enabled(shortcut)"
+[[!if test="enabled(shortcut)"
then="This wiki has shortcuts **enabled**."
else="This wiki has shortcuts **disabled**."]]
Some examples of using shortcuts include:
- \[[google foo]]
- \[[wikipedia War_of_1812]]
- \[[debbug 12345]]
+ \[[!google foo]]
+ \[[!wikipedia War_of_1812]]
+ \[[!debbug 12345]]
+ Check the \[[!cia ikiwiki desc="CIA page for %s"]].
This page controls what shortcut links the wiki supports.
-* [[shortcut name=google url="http://www.google.com/search?q=%s"]]
-* [[shortcut name=archive url="http://web.archive.org/*/%S"]]
-* [[shortcut name=gmap url="http://maps.google.com/maps?q=%s"]]
-* [[shortcut name=gmsg url="http://groups.google.com/groups?selm=%s"]]
-* [[shortcut name=wikipedia url="http://en.wikipedia.org/wiki/%s"]]
-* [[shortcut name=wikitravel url="http://wikitravel.org/en/%s"]]
-* [[shortcut name=debbug url="http://bugs.debian.org/%s" desc="bug #%s"]]
-* [[shortcut name=deblist url="http://lists.debian.org/debian-%s" desc="debian-%s@lists.debian.org"]]
-* [[shortcut name=debpkg url="http://packages.debian.org/%s"]]
-* [[shortcut name=debpts url="http://packages.qa.debian.org/%s"]]
-* [[shortcut name=debmsg url="http://lists.debian.org/msgid-search/%s"]]
-* [[shortcut name=debrt url="https://rt.debian.org/Ticket/Display.html?id=%s"]]
-* [[shortcut name=debss url="http://snapshot.debian.net/package/%s"]]
- * Usage: `\[[debss package]]`, `\[[debss package#version]]`, or `\[[debss package/version]]`. See http://snapshot.debian.net for details.
-* [[shortcut name=fdobug url="https://bugs.freedesktop.org/show_bug.cgi?id=%s" desc="freedesktop.org bug #%s"]]
-* [[shortcut name=fdolist url="http://lists.freedesktop.org/mailman/listinfo/%s" desc="%s@lists.freedesktop.org"]]
-* [[shortcut name=gnomebug url="http://bugzilla.gnome.org/show_bug.cgi?id=%s" desc="GNOME bug #%s"]]
-* [[shortcut name=linuxbug url="http://bugzilla.kernel.org/show_bug.cgi?id=%s" desc="Linux bug #%s"]]
-* [[shortcut name=mozbug url="https://bugzilla.mozilla.org/show_bug.cgi?id=%s" desc="Mozilla bug #%s"]]
-* [[shortcut name=gnulist url="http://lists.gnu.org/mailman/listinfo/%s" desc="%s@gnu.org"]]
-* [[shortcut name=marcmsg url="http://marc.info/?i=%s"]]
-* [[shortcut name=marclist url="http://marc.info/?l=%s"]]
-* [[shortcut name=gmane url="http://dir.gmane.org/gmane.%s" desc="gmane.%s"]]
-* [[shortcut name=gmanemsg url="http://mid.gmane.org/%s"]]
-* [[shortcut name=cpan url="http://search.cpan.org/search?mode=dist&query=%s"]]
-* [[shortcut name=ctan url="http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=%s"]]
-* [[shortcut name=hoogle url="http://haskell.org/hoogle/?q=%s"]]
-* [[shortcut name=iki url="http://ikiwiki.info/%S/"]]
-* [[shortcut name=ljuser url="http://%s.livejournal.com/"]]
-* [[shortcut name=rfc url="http://www.ietf.org/rfc/rfc%s.txt" desc="RFC %s"]]
-* [[shortcut name=c2 url="http://c2.com/cgi/wiki?%s"]]
-* [[shortcut name=meatballwiki url="http://www.usemod.com/cgi-bin/mb.pl?%s"]]
-* [[shortcut name=emacswiki url="http://www.emacswiki.org/cgi-bin/wiki/%s"]]
-* [[shortcut name=haskellwiki url="http://haskell.org/haskellwiki/%s"]]
-* [[shortcut name=dict url="http://www.dict.org/bin/Dict?Form=Dict1&Strategy=*&Database=*&Query=%s"]]
-* [[shortcut name=imdb url="http://imdb.com/find?q=%s"]]
-* [[shortcut name=gpg url="http://pgpkeys.mit.edu:11371/pks/lookup?op=vindex&exact=on&search=0x%s"]]
-* [[shortcut name=perldoc url="http://perldoc.perl.org/search.html?q=%s"]]
-* [[shortcut name=whois url="http://reports.internic.net/cgi/whois?whois_nic=%s&type=domain"]]
-* [[shortcut name=cve url="http://cve.mitre.org/cgi-bin/cvename.cgi?name=%s"]]
-* [[shortcut name=cia url="http://cia.vc/stats/project/%s"]]
-* [[shortcut name=ciauser url="http://cia.vc/stats/user/%s"]]
-* [[shortcut name=flickr url="http://www.flickr.com/photos/%s"]]
+* [[!shortcut name=google url="http://www.google.com/search?q=%s"]]
+* [[!shortcut name=archive url="http://web.archive.org/*/%S"]]
+* [[!shortcut name=gmap url="http://maps.google.com/maps?q=%s"]]
+* [[!shortcut name=gmsg url="http://groups.google.com/groups?selm=%s"]]
+* [[!shortcut name=wikipedia url="http://en.wikipedia.org/wiki/%S"]]
+* [[!shortcut name=wikitravel url="http://wikitravel.org/en/%s"]]
+* [[!shortcut name=wiktionary url="http://en.wiktionary.org/wiki/%s"]]
+* [[!shortcut name=debbug url="http://bugs.debian.org/%S" desc="Debian bug #%s"]]
+* [[!shortcut name=deblist url="http://lists.debian.org/debian-%s" desc="debian-%s@lists.debian.org"]]
+* [[!shortcut name=debpkg url="http://packages.debian.org/%s"]]
+* [[!shortcut name=debpkgsid url="http://packages.debian.org/sid/%s"]]
+* [[!shortcut name=debpts url="http://packages.qa.debian.org/%s"]]
+* [[!shortcut name=debmsg url="http://lists.debian.org/msgid-search/%s"]]
+* [[!shortcut name=debrt url="https://rt.debian.org/Ticket/Display.html?id=%s"]]
+* [[!shortcut name=debss url="http://snapshot.debian.net/package/%s"]]
+ * Usage: `\[[!debss package]]`, `\[[!debss package#version]]`, or `\[[!debss package/version]]`. See http://snapshot.debian.net for details.
+* [[!shortcut name=debwiki url="http://wiki.debian.org/%s"]]
+* [[!shortcut name=fdobug url="https://bugs.freedesktop.org/show_bug.cgi?id=%s" desc="freedesktop.org bug #%s"]]
+* [[!shortcut name=fdolist url="http://lists.freedesktop.org/mailman/listinfo/%s" desc="%s@lists.freedesktop.org"]]
+* [[!shortcut name=gnomebug url="http://bugzilla.gnome.org/show_bug.cgi?id=%s" desc="GNOME bug #%s"]]
+* [[!shortcut name=linuxbug url="http://bugzilla.kernel.org/show_bug.cgi?id=%s" desc="Linux bug #%s"]]
+* [[!shortcut name=mozbug url="https://bugzilla.mozilla.org/show_bug.cgi?id=%s" desc="Mozilla bug #%s"]]
+* [[!shortcut name=gnulist url="http://lists.gnu.org/mailman/listinfo/%s" desc="%s@gnu.org"]]
+* [[!shortcut name=marcmsg url="http://marc.info/?i=%s"]]
+* [[!shortcut name=marclist url="http://marc.info/?l=%s"]]
+* [[!shortcut name=gmane url="http://dir.gmane.org/gmane.%s" desc="gmane.%s"]]
+* [[!shortcut name=gmanemsg url="http://mid.gmane.org/%s"]]
+* [[!shortcut name=cpan url="http://search.cpan.org/search?mode=dist&query=%s"]]
+* [[!shortcut name=ctan url="http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=%s"]]
+* [[!shortcut name=hoogle url="http://haskell.org/hoogle/?q=%s"]]
+* [[!shortcut name=iki url="http://ikiwiki.info/%S/"]]
+* [[!shortcut name=ljuser url="http://%s.livejournal.com/"]]
+* [[!shortcut name=rfc url="http://www.ietf.org/rfc/rfc%s.txt" desc="RFC %s"]]
+* [[!shortcut name=c2 url="http://c2.com/cgi/wiki?%s"]]
+* [[!shortcut name=meatballwiki url="http://www.usemod.com/cgi-bin/mb.pl?%s"]]
+* [[!shortcut name=emacswiki url="http://www.emacswiki.org/cgi-bin/wiki/%s"]]
+* [[!shortcut name=haskellwiki url="http://haskell.org/haskellwiki/%s"]]
+* [[!shortcut name=dict url="http://www.dict.org/bin/Dict?Form=Dict1&Strategy=*&Database=*&Query=%s"]]
+* [[!shortcut name=imdb url="http://imdb.com/find?q=%s"]]
+* [[!shortcut name=gpg url="http://pgpkeys.mit.edu:11371/pks/lookup?op=vindex&exact=on&search=0x%s"]]
+* [[!shortcut name=perldoc url="http://perldoc.perl.org/search.html?q=%s"]]
+* [[!shortcut name=whois url="http://reports.internic.net/cgi/whois?whois_nic=%s&type=domain"]]
+* [[!shortcut name=cve url="http://cve.mitre.org/cgi-bin/cvename.cgi?name=%s"]]
+* [[!shortcut name=cia url="http://cia.vc/stats/project/%s"]]
+* [[!shortcut name=ciauser url="http://cia.vc/stats/user/%s"]]
+* [[!shortcut name=flickr url="http://www.flickr.com/photos/%s"]]
+* [[!shortcut name=man url="http://linux.die.net/man/%s"]]
+* [[!shortcut name=ohloh url="http://www.ohloh.net/projects/%s"]]
To add a new shortcut, use the `shortcut`
-[[ikiwiki/PreprocessorDirective]]. In the url, "%s" is replaced with the
-text passed to the named shortcut, after url-encoding it, and '%S' is
-replaced with the raw, non-encoded text. The optional `desc` parameter
-controls the description of the link.
+[[ikiwiki/directive]]. In the url, "%s" is replaced with the
+text passed to the named shortcut, after [[!wikipedia url_encoding]]
+it, and '%S' is replaced with the raw, non-encoded text. The optional
+`desc` parameter controls the description of the link.
Remember that the `name` you give the shortcut will become a new
-[[ikiwiki/PreprocessorDirective]]. Avoid using a `name` that conflicts
-with an existing directive.
+[[ikiwiki/directive]]. Avoid using a `name` that conflicts
+with an existing directive. These directives also accept a `desc`
+parameter that will override the one provided at definition time.
If you come up with a shortcut that you think others might find useful,
-consider contributing it to the [[iki shortcuts]] page on the ikiwiki
-ikiwiki, so that future versions of ikiwiki will include your shortcut
-in the standard underlay.
+consider contributing it to the [shortcuts page on the ikiwiki
+wiki](http://ikiwiki.info/shortcuts/), so that future versions of
+ikiwiki will include your shortcut in the standard underlay.
# Local stuff
-* [[shortcut name=source_gnumach-1-branch url="http://cvs.savannah.gnu.org/viewvc/gnumach/%S?view=log&root=hurd&pathrev=gnumach-1-branch"]]
-* [[shortcut name=GNU_Savannah_bug url="http://savannah.gnu.org/bugs/?%s" desc="GNU Savannah bug #%s"]]
-* [[shortcut name=GNU_Savannah_patch url="http://savannah.gnu.org/patch/?%s" desc="GNU Savannah patch #%s"]]
-* [[shortcut name=GNU_Savannah_task url="http://savannah.gnu.org/task/?%s" desc="GNU Savannah task #%s"]]
+* [[!shortcut name=source_gnumach-1-branch url="http://cvs.savannah.gnu.org/viewvc/gnumach/%S?view=log&root=hurd&pathrev=gnumach-1-branch"]]
+* [[!shortcut name=GNU_Savannah_bug url="http://savannah.gnu.org/bugs/?%s" desc="GNU Savannah bug #%s"]]
+* [[!shortcut name=GNU_Savannah_patch url="http://savannah.gnu.org/patch/?%s" desc="GNU Savannah patch #%s"]]
+* [[!shortcut name=GNU_Savannah_task url="http://savannah.gnu.org/task/?%s" desc="GNU Savannah task #%s"]]
+
+* [[!shortcut name=FF_project url="http://www.fossfactory.org/project/p%s" desc="FOSS Factory bounty (p%s)"]]
diff --git a/sidebar.mdwn b/sidebar.mdwn
index 88723432..0d239310 100644
--- a/sidebar.mdwn
+++ b/sidebar.mdwn
@@ -1,35 +1,46 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009, 2010, 2011 Free Software
+Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-[[img hurd/logo/boxes-redrawn.png link=/hurd/logo]]
+Welcome to... [[!img /logo/boxes-redrawn.png link=/logo]] ... the GNU Hurd!
-* **[[Home|/index]]**
-* **[[Community]]**
-* **[[Documentation]]**
-* **[[Hurd/Getting_Help]]**
+---
+
+ * **[[Home|/index]]**
+ * **[[Community]]**
+ * [[Contact_Us]]
+ * **[[Donate]]**
+ * **[[Contributing]]**
+ * [[Public_Hurd_Boxen]]
+ * [[QEMU Images|hurd/running/qemu]]
+ * [[Getting Help]]
+ * [[Open Issues]]
+ * **[[Documentation]]**
+ * [[FAQ]]
---
-* **[[Hurd]]**[[if test="destpage(hurd*)" then="
- * *[[About|Hurd/TheGnuHurd]]*
- * *[[Hurd/Documentation]]*
- * *[[hurd/Running]]*"]]
-* **[[microkernel/Mach]]**[[if test="destpage(microkernel/mach*)" then="
- * *[[GNU_Mach|microkernel/mach/gnumach]]*
- * *[[microkernel/mach/Documentation]]*"]]
+ * **[[Hurd]]**[[!if test="destpage(hurd*)" then="
+ * [[Hurd/Documentation]]
+ * [[hurd/Running]]"]]
+ * **[[microkernel/Mach]]**[[!if test="destpage(microkernel/mach*)" then="
+ * [[microkernel/mach/Documentation]]
+ * [[GNU Mach|microkernel/mach/gnumach]]"]]
+ * [[microkernel/mach/MIG]][[!if test="destpage(microkernel/mach/mig*)" then="
+ * [[microkernel/mach/mig/GNU MIG]]"]]
---
-* **[[Debian_GNU/Hurd|hurd/running/debian]]**
-* **[[GNU_system|hurd/running/gnu]]**
+ * **[[Debian GNU/Hurd|hurd/running/debian]]**
+ * **[[GNU System|hurd/running/gnu]]**
---
-* **[[HurdNG|hurd/ng]]**
+ * **[[Hurd NG|hurd/ng]]**
diff --git a/source_repositories.mdwn b/source_repositories.mdwn
new file mode 100644
index 00000000..9f2f2e71
--- /dev/null
+++ b/source_repositories.mdwn
@@ -0,0 +1,259 @@
+[[!meta copyright="Copyright © 2007, 2008, 2009, 2010, 2011 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]]."]]"""]]
+
+This page is meant to give some guidelines. Please use good sense or ask on
+[[mailing_lists/bug-hurd]] if there are any questions.
+
+
+[[!toc levels=3]]
+
+
+# Git repositories on Savannah
+
+<http://git.savannah.gnu.org/cgit/hurd>
+
+ * hurd.git -- Hurd meta package; no real content yet
+ * [[hurd/glibc.git|glibc]] -- [[/glibc]] maintenance
+ * hurd/gnumach.git -- [[GNU Mach|microkernel/mach/gnumach]]
+ ([[microkernel/mach/gnumach/building]])
+ * hurd/hurd.git -- [[/Hurd]] ([[hurd/building]])
+ * [[hurd/incubator.git|incubator]] -- the great next stuff
+ * hurd/libpthread.git -- [[POSIX threading library|libpthread]]
+ * hurd/mig.git -- [[microkernel/mach/MIG]]
+ ([[microkernel/mach/mig/gnu_mig/building]])
+ * hurd/procfs.git -- [[hurd/translator/procfs]]
+ * hurd/unionfs.git -- [[hurd/translator/unionfs]]
+ * hurd/viengoos.git -- [[microkernel/Viengoos]]
+ ([[microkernel/viengoos/building]])
+ * hurd/web.git -- [[contributing/Web_pages]]
+
+
+## Branches
+
+Members of the [[Hurd Savannah group|rules/savannah group]] are allowed to create
+branches without formal permission:
+
+ * named `SAVANNAH_LOGIN/BASE_BRANCH[-TOPIC]` or
+ `SAVANNAH_LOGIN/TOPIC/BASE_BRANCH` for private general-purpose or
+ topic branches, respectively, or
+ * named `BASE_BRANCH-TOPIC` or `TOPIC/BASE_BRANCH` for public topic branches
+ basing on
+ `BASE_BRANCH`.
+
+`TOPIC` shall be a suitable tag describing the branch's main concern. These
+tags can be applied recursively (`TOPIC/SUBTOPIC/BASE_BRANCH`, like
+`pfinet_rewrite/use_lwIP/master`, for example).
+
+*private* vs. *public* does, of course, in this scenario not mean visibility
+(all branches are externally visible),
+but instead authority: *private* branches are those that the user
+`SAVANNAH_LOGIN` has authority over, whereas *public* branches are open for
+every committer to install changes on. The private branches are those that you
+would typically host on your own machine and publish through your own web
+server, but we offer that you can instead do this from the centralized Savannah
+repository, as a number of people don't have an always-accessible web server
+running on their own machines.
+
+
+### Subprojects
+
+Some repositories hold a bunch of independent subprojects, first and foremost
+the [[incubator]] repository.
+
+Even though we've been doing differently in the past, branches in there shall
+be named like this:
+
+ * `SUBPROJECT/master` for the `master` branch;
+ * `SUBPROJECT/SAVANNAH_LOGIN/BASE_BRANCH[-TOPIC]` or
+ `SUBPROJECT/SAVANNAH_LOGIN/TOPIC/BASE_BRANCH` for private general-purpose
+ or topic branches, respectively, or
+ * `SUBPROJECT/BASE_BRANCH-TOPIC` or `SUBPROJECT/TOPIC/BASE_BRANCH` for public
+ topic branches basing on `SUBPROJECT/BASE_BRANCH`.
+
+That is, we introduce a top-level `SUBPROJECT` hierarchy, where distinct
+per-subproject Git repositories could have been used instead.
+
+
+### Examples
+
+ * GNU Mach
+
+ * `master` -- the mainline branch
+ * `master-oskit` -- port to OSKit; branched off of `master` at some point
+ * `master-gdb_stubs` -- add support for GDB stubs; branched off of
+ `master` at some point
+
+ * libpthread
+
+ * `master` -- the mainline branch
+ * `master-viengoos` -- port to Viengoos; branched off of `master` at some
+ point
+ * `master-viengoos-on-bare-metal` -- port to Viengoos running on bare
+ metal; branched off of `master-viengoos` at some point
+
+ * incubator
+
+ * `master` -- not to be used
+ * `tarfs/master` -- `master` branch of the `tarfs` subproject
+
+ * unionfs
+
+ * `master` -- the mainline branch
+ * `master-unionmount` -- develop `unionmount` based on `unionfs`' master
+ branch
+
+To give a concrete example, the latter one was created like this:
+
+ $ git clone --no-checkout ssh://git.savannah.gnu.org/srv/git/hurd/unionfs.git
+ $ cd unionfs/
+ $ git checkout -b master-unionmount origin/master
+ $ ...
+ $ git push master-unionmount
+
+### Merging
+
+Merging between Git branches is trivial, at least as long as no conflicts
+arise.
+
+Due to this, you are encouraged to freely make use of separate branches for
+different working topics, as this really faciliates concentrating on one
+specific working topic.
+
+You are encouraged to regularely merge from the respective mainline branches
+(`BASE_BRANCH`; should be `master` in most cases) into your working branches,
+and ensure that your modifications are still fine in the context of new
+mainline changes.
+
+Merging from working branches into the mainline branches will usually be done
+by one of the project administrators, unless negotiated otherwise. For this to
+happen, the copyright of your changes has to be assigned to the Free Software
+Foundation; read about the [[contributing/copyright_assignment]] process.
+
+It is explicitly encouraged to *merge* changes from working branches into the
+mainline branches (as opposed to *rebase* them on top), as the former mode
+easily allows to determine the context under which a patch has been developed.
+
+## Tags
+
+Equivalent rules apply.
+
+## Behavior
+
+Try to not introduce spurious, unneeded changes, e.g., whitespace changes.
+
+Adhere to the coding conventions that are already used. These are usually the
+[GNU Coding Standards](http://www.gnu.org/prep/standards/html_node/) for stuff
+written by ourselves, including new files, of course.
+
+GNU Mach code is largely based on external code. Don't GNU-ify it, as this
+would make merging external patches unnecessarily difficult.
+
+### Commit messages
+
+We no longer maintain parallel `ChangeLog` and commit messages. When needed,
+the `ChangeLog` files can be created automatically from the commit messages.
+
+Commit messages have this mandatory format:
+
+ One-line summary.
+ Blank line.
+ ChangeLog-like list of changes, but without leading tabs.
+
+The header line of each former `ChangeLog` snippet (DATE NAME EMAIL) is no
+longer to be included in the commit message, and instead the author and
+committer of a change, together with the dates, will be maintained natively by
+Git.
+
+Example:
+
+ commit 3054666a46e0142cacef895c13edb4391435c722
+ Author: Some One <someone@example.com>
+ AuthorDate: Thu Jun 11 15:59:55 2005 +0000
+ Commit: Some One <someone@example.com>
+ CommitDate: Thu Jun 11 15:59:55 2005 +0000
+
+ Frobnicate the foo.
+
+ * frob.c (foo): Frob it.
+ * oldfoo.c [OLD] (oldfoo): Likewise.
+ [OLD_OLD_FOO] (oofoo): Permute every second word with itself, and
+ beginning with the tenth line, every third one also. Pure
+ nonsense.
+
+Read about how to write [GNU-style `ChangeLog`
+messages](http://www.gnu.org/prep/standards/html_node/Change-Logs.html).
+
+Don't waste time writing exhaustive `ChangeLog`-like commit messages for, e.g.,
+debugging stuff that will be removed again before merging your development
+branch into the mainline. Sometimes the one-line summary might already
+suffice. But please do write something.
+
+### Behavior on *private* branches
+
+Even though you are said to be the owner of branches tagged with your
+`SAVANNAH_LOGIN`, it is generally nevertheless good to not do history-rewriting
+stuff and the like (`git rebase` and friends), as others may in turn be basing
+their work on your private branches.
+
+We could establish a branch-tagging policy for branches that others should
+expect their history possibly to be rewritten. This may be useful for branches
+that are only meant for aggregating the changes of (several) development
+branches, like an imaginary
+`rewrite_pfinet/for_master_and_proposed_for_general_testing` branch.
+
+
+# Git repositories on flubber
+
+[[flubber|public hurd boxen]] is
+[[configured|public_hurd_boxen/installation/flubber]] in a way so that users
+can publish Git repositories from their home directories. The only thing to do
+is to put an empty `.git/git-daemon-export-ok` (cf. [*git daemon*'s manual
+page](http://www.kernel.org/pub/software/scm/git/docs/git-daemon.html)) into
+the repository, or just `git-daemon-export-ok` for
+[*bare*](http://www.kernel.org/pub/software/scm/git/docs/git-init.html)
+repositories.
+
+For example, the [[contributing/web pages]] repository is made available like
+this: `~hurd-web/hurd-web` is a bare repository; there is an empty
+`~hurd-web/hurd-web/git-daemon-export-ok` file. Users can clone the repository
+like this:
+
+ $ git clone git://flubber.bddebian.com/~hurd-web/hurd-web
+
+Another example, [[Thomas Schwinge|tschwinge]] has a checkout of
+[[libpthread]] in `~tschwinge/tmp/hurd/libpthread/`, the
+`~tschwinge/tmp/hurd/libpthread/.git/git-daemon-export-ok` file exists. If you
+really need to, you can clone it like this:
+
+ $ git clone git://flubber.bddebian.com/~tschwinge/tmp/hurd/libpthread
+
+## List of Interesting Repositories
+
+ * web pages: git://flubber.bddebian.com/~hurd-web/hurd-web
+
+
+# Git repositories on grubber
+
+## List of Interesting Repositories
+
+ * [[binutils]]
+ * [[Boehm_GC]]
+ * [[GCC]]
+
+
+# Debian Git repositories
+
+IRC, #hurd, 2010-07-31
+
+ <tschwinge> git-buildpackage is to be used to build these new Debian repositories, I guess?
+ <youpi> well, the Vcs-Git control header is about everything people need to know, I believe :)
+ <youpi> git-buildpackage is just mostly an easy way to build the .orig.tar.Gz from the tag
+ <youpi> http://honk.sigxcpu.org/projects/git-buildpackage/manual-html/gbp.html
diff --git a/source_repositories/binutils.mdwn b/source_repositories/binutils.mdwn
new file mode 100644
index 00000000..52053b97
--- /dev/null
+++ b/source_repositories/binutils.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+There is a repository for maintenance of [[/binutils]] for the Hurd's needs:
+`grubber:~tschwinge/tmp/binutils/git`.
+
+This repository uses [[TopGit]] and is based on
+<http://sourceware.org/git/?p=binutils.git;a=summary>.
diff --git a/source_repositories/boehm_gc.mdwn b/source_repositories/boehm_gc.mdwn
new file mode 100644
index 00000000..5fba0709
--- /dev/null
+++ b/source_repositories/boehm_gc.mdwn
@@ -0,0 +1,22 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+There is a repository for maintenance of [[/boehm_gc]] for the Hurd's needs:
+`grubber:~tschwinge/tmp/boehm-gc/git`.
+
+This repository uses [[TopGit]] and is a `git cvsimport` of the SourceForge CVS
+repository.
+
+ git \
+ cvsimport \
+ -d :pserver:anonymous@bdwgc.cvs.sourceforge.net:/cvsroot/bdwgc \
+ -r upstream \
+ -k \
+ bdwgc
diff --git a/source_repositories/gcc.mdwn b/source_repositories/gcc.mdwn
new file mode 100644
index 00000000..899adc30
--- /dev/null
+++ b/source_repositories/gcc.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+There is a repository for maintenance of [[/GCC]] for the Hurd's needs:
+`grubber:~tschwinge/tmp/gcc/git`.
+
+This repository uses [[TopGit]] and is based on
+<http://gcc.gnu.org/wiki/GitMirror>.
diff --git a/source_repositories/gdb.mdwn b/source_repositories/gdb.mdwn
new file mode 100644
index 00000000..76b82534
--- /dev/null
+++ b/source_repositories/gdb.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+There is a repository for maintenance of [[/GDB]] for the Hurd's needs:
+`grubber:~tschwinge/tmp/gdb/git`.
+
+This repository uses [[TopGit]] and is based on
+<http://sourceware.org/git/?p=gdb.git;a=summary>.
diff --git a/source_repositories/glibc.mdwn b/source_repositories/glibc.mdwn
new file mode 100644
index 00000000..fabd7cab
--- /dev/null
+++ b/source_repositories/glibc.mdwn
@@ -0,0 +1,93 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+There is a repository for maintenance of [[/glibc]] for the Hurd's needs:
+<http://git.savannah.gnu.org/cgit/hurd/glibc.git/>.
+
+This repository uses [[TopGit]].
+
+*A plan for the Hurd-specific glibc repository*, thread
+[begins](http://lists.gnu.org/archive/html/bug-hurd/2010-01/msg00062.html),
+[continues](http://lists.gnu.org/archive/html/bug-hurd/2010-02/msg00021.html).
+
+
+# Usage
+
+## Clone
+
+ $ git init
+ $ git remote add savannah git://git.sv.gnu.org/hurd/glibc.git
+ $ git remote update
+ $ tg remote --populate savannah
+ tg: Remote savannah can now follow TopGit topic branches.
+ tg: Populating local topic branches from remote 'savannah'...
+ From git://git.sv.gnu.org/hurd/glibc
+ * [new branch] refs/top-bases/t/_dl_random -> savannah/top-bases/t/_dl_random
+ * [new branch] refs/top-bases/t/accept4 -> savannah/top-bases/t/accept4
+ [...]
+ * [new branch] refs/top-bases/tschwinge/Roger_Whittaker -> savannah/top-bases/tschwinge/Roger_Whittaker
+ tg: Adding branch t/_dl_random...
+ tg: Adding branch t/accept4...
+ [...]
+ tg: Adding branch tschwinge/Roger_Whittaker...
+ tg: The remote 'savannah' is now the default source of topic branches.
+
+## Use tschwinge's Working Branch
+
+ $ git checkout tschwinge/Roger_Whittaker
+
+## Integrate a New Branch
+
+A new (TopGit) branch has been published upstream:
+
+ $ tg remote --populate savannah
+ tg: Remote savannah can now follow TopGit topic branches.
+ tg: Populating local topic branches from remote 'savannah'...
+ remote: Counting objects: 28, done.
+ remote: Compressing objects: 100% (19/19), done.
+ remote: Total 20 (delta 13), reused 1 (delta 0)
+ Unpacking objects: 100% (20/20), done.
+ From git://git.sv.gnu.org/hurd/glibc
+ * [new branch] t/unwind-resume.c -> savannah/t/unwind-resume.c
+ * [new branch] refs/top-bases/t/unwind-resume.c -> savannah/top-bases/t/unwind-resume.c
+ tg: Skipping branch t/____longjmp_chk: Already exists
+ [...]
+ tg: Skipping branch t/tlsdesc.sym: Already exists
+ tg: Adding branch t/unwind-resume.c...
+ tg: Skipping branch t/verify.h: Already exists
+ tg: Skipping branch tschwinge/Roger_Whittaker: Already exists
+ tg: The remote 'savannah' is now the default source of topic branches.
+
+Make `tschwinge/Roger_Whittaker` (the current branch) depend on it:
+
+ $ tg depend add t/unwind-resume.c
+ [tschwinge/Roger_Whittaker 63f11ff] New TopGit dependency: t/unwind-resume.c
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+ tg: Updating base with t/unwind-resume.c changes...
+ Auto-merging .topdeps
+ Auto-merging .topmsg
+ Merge made by recursive.
+ nptl/sysdeps/pthread/Makefile | 12 ++----------
+ sysdeps/gnu/Makefile | 18 ++++++++++++++++--
+ .../pthread => sysdeps/gnu}/rt-unwind-resume.c | 0
+ .../pthread => sysdeps/gnu}/unwind-resume.c | 4 ++--
+ 4 files changed, 20 insertions(+), 14 deletions(-)
+ rename {nptl/sysdeps/pthread => sysdeps/gnu}/rt-unwind-resume.c (100%)
+ rename {nptl/sysdeps/pthread => sysdeps/gnu}/unwind-resume.c (93%)
+ tg: The tschwinge/Roger_Whittaker head is up-to-date wrt. its remote branch.
+ tg: Updating tschwinge/Roger_Whittaker against new base...
+ Merge made by recursive.
+ nptl/sysdeps/pthread/Makefile | 12 ++----------
+ sysdeps/gnu/Makefile | 18 ++++++++++++++++--
+ .../pthread => sysdeps/gnu}/rt-unwind-resume.c | 0
+ .../pthread => sysdeps/gnu}/unwind-resume.c | 4 ++--
+ 4 files changed, 20 insertions(+), 14 deletions(-)
+ rename {nptl/sysdeps/pthread => sysdeps/gnu}/rt-unwind-resume.c (100%)
+ rename {nptl/sysdeps/pthread => sysdeps/gnu}/unwind-resume.c (93%)
diff --git a/source_repositories/incubator.mdwn b/source_repositories/incubator.mdwn
new file mode 100644
index 00000000..51f64c17
--- /dev/null
+++ b/source_repositories/incubator.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+There is a repository for *this*, and *that*, and *everything* -- the
+*incubator*: <http://git.savannah.gnu.org/cgit/hurd/incubator.git/>.
diff --git a/system_call.mdwn b/system_call.mdwn
new file mode 100644
index 00000000..197889cb
--- /dev/null
+++ b/system_call.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+In an [[UNIX]]-like system, a *system call* (*syscall*) is used to request all
+kinds of functionality from the operating system kernel.
+
+A [[microkernel]]-based system typically won't offer a lot of system calls --
+apart from one central one, and that is *send message* -- but instead [[RPC]]s
+will be used instead.
+
+In the [[GNU Hurd|hurd]], a lot of what is traditionlly considered to be a UNIX
+system call is implemented (primarily by means of [[RPC]]) inside [[glibc]].
diff --git a/systemtap.mdwn b/systemtap.mdwn
new file mode 100644
index 00000000..ba64c0d4
--- /dev/null
+++ b/systemtap.mdwn
@@ -0,0 +1,34 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta title="SystemTap"]]
+
+[[!tag open_issue_hurd open_issue_gnumach]]
+
+# Overview
+
+ * {{$wielaard_fosdem_2010}}
+
+
+# Related
+
+ * [[community/gsoc/project_ideas/dtrace]]
+
+ * [[LTTng]]
+
+
+[[!ymlfront data="""
+
+wielaard_fosdem_2010:
+
+ "[*Interview with Mark
+ Wielaard*](http://fosdem.org/2010/interview/mark-wielaard) for FOSDEM 2010"
+
+"""]]
diff --git a/tag.mdwn b/tag.mdwn
new file mode 100644
index 00000000..7f8f38db
--- /dev/null
+++ b/tag.mdwn
@@ -0,0 +1,75 @@
+[[!meta copyright="Copyright © 2009, 2010, 2011 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]]."]]"""]]
+
+The following [[!iki ikiwiki/directive/tag desc=tags]] are actively used at the
+moment:
+
+[[!map
+pages="tag/* and !tag/*/*"
+show=title]]
+
+Most of them should be self-explanatory, and for the others, here are the
+explanations:
+
+ * *bounty*
+
+ {{$bounty}}
+
+ * *fixed_in_debian*
+
+ {{$fixed_in_debian}}
+
+ * *open_issue_documentation*
+
+ {{$open_issue_documentation}}
+
+ * *open_issue_porting*
+
+ {{$open_issue_porting}}
+
+ * *stable_URL*
+
+ {{$stable_URL}}
+
+
+[[!ymlfront data="""
+
+bounty:
+
+ There is a *bounty* put on these issues! Typically, these are handled via
+ [[FOSS Factory|donate#FOSS_Factory]].
+
+fixed_in_debian:
+
+ This tag is used to tag items that have been fixed in the [[Debian
+ GNU/Hurd|hurd/running/debian]] distribution, but not yet in the upstream
+ sources.
+
+open_issue_documentation:
+
+ Used for tagging pages / items that need to be handled / improved for
+ documentation purposes.
+
+open_issue_porting:
+
+ A list of open issues in porting software to run on GNU/Hurd systems. This
+ list also includes [[toolchain]]-level items, items that are either already
+ solved in [[Debian GNU/Hurd|hurd/running/debian]] systems (tagged
+ *fixed_in_debian*) or being worked around, so if you're out for working on
+ application-level porting issues, then perusing through the list of [[Debian
+ packages that need porting|hurd/running/debian/porting]] may be better.
+
+stable_URL:
+
+ These pages are tagged as having a *stable URL*. That is, they're linked to
+ from external pages, and their locations should not be changed needlessly.
+
+"""]]
diff --git a/tag/bounty.mdwn b/tag/bounty.mdwn
new file mode 100644
index 00000000..ae19814b
--- /dev/null
+++ b/tag/bounty.mdwn
@@ -0,0 +1,23 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta title="bounty"]]
+
+{{$tag#bounty}}
+
+[[!map
+pages="tagged(bounty)"
+show=title]]
+
+We're always looking for donators, for developers who are hunting bounties, and
+for new project ideas!
+
+Please read about how to start [[working on a task and/or suggesting a new
+task|donate#FOSS_Factory]].
diff --git a/tag/fixed_in_debian.mdwn b/tag/fixed_in_debian.mdwn
new file mode 100644
index 00000000..4d946fd4
--- /dev/null
+++ b/tag/fixed_in_debian.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="fixed_in_debian"]]
+
+{{$tag#fixed_in_debian}}
+
+[[!map
+pages="tagged(fixed_in_debian)"
+show=title]]
diff --git a/tag/open_issue_binutils.mdwn b/tag/open_issue_binutils.mdwn
new file mode 100644
index 00000000..b0fd7b08
--- /dev/null
+++ b/tag/open_issue_binutils.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="open_issue_binutils"]]
+
+[[!map
+pages="tagged(open_issue_binutils)"
+show=title]]
diff --git a/tag/open_issue_documentation.mdwn b/tag/open_issue_documentation.mdwn
new file mode 100644
index 00000000..f0d1cb4c
--- /dev/null
+++ b/tag/open_issue_documentation.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="open_issue_documentation"]]
+
+{{$tag#open_issue_documentation}}
+
+[[!map
+pages="tagged(open_issue_documentation)"
+show=title]]
diff --git a/tag/open_issue_gcc.mdwn b/tag/open_issue_gcc.mdwn
new file mode 100644
index 00000000..b880d152
--- /dev/null
+++ b/tag/open_issue_gcc.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="open_issue_gcc"]]
+
+[[!map
+pages="tagged(open_issue_gcc)"
+show=title]]
diff --git a/tag/open_issue_gdb.mdwn b/tag/open_issue_gdb.mdwn
new file mode 100644
index 00000000..02363dd5
--- /dev/null
+++ b/tag/open_issue_gdb.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="open_issue_gdb"]]
+
+[[!map
+pages="tagged(open_issue_gdb)"
+show=title]]
diff --git a/tag/open_issue_glibc.mdwn b/tag/open_issue_glibc.mdwn
new file mode 100644
index 00000000..5e0a7a39
--- /dev/null
+++ b/tag/open_issue_glibc.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+[[!meta title="open_issue_glibc"]]
+
+There is a [[!FF_project 269]] on some glibc tasks.
+
+[[!map
+pages="tagged(open_issue_glibc)"
+show=title]]
diff --git a/tag/open_issue_gnumach.mdwn b/tag/open_issue_gnumach.mdwn
new file mode 100644
index 00000000..e0ea81bc
--- /dev/null
+++ b/tag/open_issue_gnumach.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+[[!meta title="open_issue_gnumach"]]
+
+There is a [[!FF_project 265]] on some GNU Mach tasks.
+
+[[!map
+pages="tagged(open_issue_gnumach)"
+show=title]]
diff --git a/tag/open_issue_hurd.mdwn b/tag/open_issue_hurd.mdwn
new file mode 100644
index 00000000..a28b3200
--- /dev/null
+++ b/tag/open_issue_hurd.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+[[!meta title="open_issue_hurd"]]
+
+There is a [[!FF_project 269]] on some GNU Hurd tasks.
+
+[[!map
+pages="tagged(open_issue_hurd)"
+show=title]]
diff --git a/tag/open_issue_libpthread.mdwn b/tag/open_issue_libpthread.mdwn
new file mode 100644
index 00000000..b4b7723e
--- /dev/null
+++ b/tag/open_issue_libpthread.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="open_issue_libpthread"]]
+
+[[!map
+pages="tagged(open_issue_libpthread)"
+show=title]]
diff --git a/tag/open_issue_llvm.mdwn b/tag/open_issue_llvm.mdwn
new file mode 100644
index 00000000..7fb11473
--- /dev/null
+++ b/tag/open_issue_llvm.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta title="open_issue_llvm"]]
+
+[[!map
+pages="tagged(open_issue_llvm)"
+show=title]]
diff --git a/tag/open_issue_mig.mdwn b/tag/open_issue_mig.mdwn
new file mode 100644
index 00000000..79ef3acb
--- /dev/null
+++ b/tag/open_issue_mig.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="open_issue_mig"]]
+
+[[!map
+pages="tagged(open_issue_mig)"
+show=title]]
diff --git a/tag/open_issue_porting.mdwn b/tag/open_issue_porting.mdwn
new file mode 100644
index 00000000..efa488b7
--- /dev/null
+++ b/tag/open_issue_porting.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="open_issue_porting"]]
+
+{{$tag#open_issue_porting}}
+
+[[!map
+pages="tagged(open_issue_porting)"
+show=title]]
diff --git a/tag/open_issue_viengoos.mdwn b/tag/open_issue_viengoos.mdwn
new file mode 100644
index 00000000..6f564e06
--- /dev/null
+++ b/tag/open_issue_viengoos.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="open_issue_viengoos"]]
+
+[[!map
+pages="tagged(open_issue_viengoos)"
+show=title]]
diff --git a/tag/open_issue_xen.mdwn b/tag/open_issue_xen.mdwn
new file mode 100644
index 00000000..fbe40652
--- /dev/null
+++ b/tag/open_issue_xen.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="open_issue_xen"]]
+
+[[!map
+pages="tagged(open_issue_xen)"
+show=title]]
diff --git a/tag/stable_URL.mdwn b/tag/stable_URL.mdwn
new file mode 100644
index 00000000..ff4067f6
--- /dev/null
+++ b/tag/stable_URL.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="stable_URL"]]
+
+{{$tag#stable_URL}}
+
+[[!map
+pages="tagged(stable_URL)"
+show=title]]
diff --git a/tcb.mdwn b/tcb.mdwn
index d321a954..f6018dae 100644
--- a/tcb.mdwn
+++ b/tcb.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
TCB stands for trusted computed base. Unqualified, the trusted
computing base referrers to the set of components programs
diff --git a/templates/highlight.mdwn b/templates/highlight.mdwn
new file mode 100644
index 00000000..c8da1377
--- /dev/null
+++ b/templates/highlight.mdwn
@@ -0,0 +1,3 @@
+<div class="infobox">
+<TMPL_VAR text>
+</div>
diff --git a/toolchain.mdwn b/toolchain.mdwn
new file mode 100644
index 00000000..26144cc3
--- /dev/null
+++ b/toolchain.mdwn
@@ -0,0 +1,33 @@
+[[!meta copyright="Copyright © 2007, 2008, 2010, 2011 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]]."]]"""]]
+
+ * [[binutils]]
+
+ * [[GCC]]
+
+ * [[glibc]]
+
+ * [[libpthread]]
+
+
+Before beginning to work on the inner parts of the GNU/Hurd toolchain, it's
+always profitable to also know how things are done on other systems. Compare,
+for example, how things are done differently for GNU/Hurd than they are done
+for GNU/Linux.
+
+
+---
+
+ * [[ELFOSABI_GNU]]
+
+---
+
+ * [[cross-gnu]]
diff --git a/toolchain/cross-gnu.mdwn b/toolchain/cross-gnu.mdwn
new file mode 100644
index 00000000..280569ae
--- /dev/null
+++ b/toolchain/cross-gnu.mdwn
@@ -0,0 +1,218 @@
+[[!meta copyright="Copyright © 2007, 2008, 2010, 2011 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 stable_URL]]
+
+[[Thomas_Schwinge|tschwinge]] has written a shell script for building a
+complete cross-build environment for GNU/Hurd systems.
+
+Find it in the [[source_repositories/incubator]], *cross-gnu/master* branch.
+
+
+# Using
+
+Read through it. Understand it. Only then use it by following the next steps.
+
+
+# Status
+
+/!\ Please note that these cross toolchains does not yet encompass all of the
+functionality that native toolchains provide. For example, there is only
+support for C and C++ so far, but not for other languages. A bunch of fixes /
+enhancements of [[glibc]] are missing. We're working towards minimizing these
+differences, as well as towards pushing all patches upstream.
+
+
+## Supported Versions of Source Packages
+
+/!\ This is outdated. Contact [[tschwinge]].
+
+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`|binutils]]
+
+ * CVS `binutils-2_20-branch`
+
+ $ mkdir binutils-2_20-branch
+ $ cd binutils-2_20-branch/
+ $ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/src ↩
+ co -r binutils-2_20-branch binutils
+
+ The sources are rooted in `binutils-2_20-branch/src/`. Also use the above
+ commands for updating, instead of the usual `cvs update`.
+
+ * Release of the 2.20 series from <ftp://ftp.gnu.org/gnu/binutils/>
+ should also be fine.
+
+ * [[`src/gcc`|gcc]]
+
+ * SVN `gcc-4_5-branch`
+
+ $ svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_5-branch
+
+ Patches:
+
+ * <http://gcc.gnu.org/ml/gcc-patches/2010-04/msg00602.html>
+
+ Prepare:
+
+ $ ( cd gcc-4_5-branch/ && contrib/gcc_update --touch )
+
+ * SVN `gcc-4_4-branch`
+
+ $ svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_4-branch
+
+ Patches:
+
+ * <http://gcc.gnu.org/ml/gcc-patches/2010-04/msg00602.html>
+
+ Prepare:
+
+ $ ( cd gcc-4_4-branch/ && contrib/gcc_update --touch )
+
+ * Releases of the 4.5 and 4.4 series from <ftp://ftp.gnu.org/gnu/gcc/>
+ should also be fine, but need the same set of patches as the
+ `gcc-4_5-branch` needs.
+
+ * [[`src/gnumach`|microkernel/mach/gnumach]]
+
+ * Git `master` branch
+
+ $ git clone ↩
+ git://git.sv.gnu.org/hurd/gnumach.git gnumach
+
+ Prepare:
+
+ $ ( cd gnumach/ && autoreconf -vi )
+
+ * [[`src/mig`|microkernel/mach/mig/gnu_mig]]
+
+ * Git `master` branch
+
+ $ git clone ↩
+ git://git.sv.gnu.org/hurd/mig.git mig
+
+ Prepare:
+
+ $ ( cd mig/ && autoreconf -vi )
+
+ * [[`src/hurd`|hurd]]
+
+ * Git `master` branch
+
+ $ git clone ↩
+ git://git.sv.gnu.org/hurd/hurd.git hurd
+
+ * [[`src/libpthread`|libpthread]]
+
+ * Git `tschwinge/Peter_Herbolzheimer` branch
+
+ $ git clone --no-checkout ↩
+ git://git.sv.gnu.org/hurd/libpthread.git libpthread
+ $ cd libpthread/
+ $ git checkout origin/tschwinge/Peter_Herbolzheimer
+
+ Prepare:
+
+ $ ( cd libpthread/ && autoreconf -vi )
+
+ * [[`src/glibc`|glibc]]
+
+ * Git `tschwinge/Roger_Whittaker` branch
+
+ $ git clone --no-checkout ↩
+ git://git.sv.gnu.org/hurd/glibc.git glibc
+ $ cd glibc/
+ $ git checkout origin/tschwinge/Roger_Whittaker
+
+<!--
+
+ * [[`src/gdb`|gdb]]
+
+ This is optional and will only be compiled if present.
+
+ * CVS `gdb_6_6-branch`
+
+ $ 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.
+
+-->
+
+
+## Preparation
+
+The raw source code trees are about 1 GiB.
+
+Unpack the tarballs if you downloaded any.
+
+Create a directory where the cross build shall be rooted in, and a `src`
+subdirectory in there. Then create symbolic links for every of the above
+packages: from `src/PACKAGE` to where you stored or unpacked it. If you don't
+intend to build several cross compilers or use the source trees otherwise, you
+can also directly store the source trees in `src/`. The source trees can be
+shared between multiple cross build trees since the packages' build systems are
+supposed not to modify the files in the source trees. Not all packages adhere
+to that, but they fail to do so only for pre-processed documentation, etc.
+
+Either make sure that `cross-gnu-env` and `cross-gnu` are found in `$PATH`
+(`~/bin/`, for example) or alternatively remember to use their full paths in
+the following.
+
+The system you're running the script on (the *build* system) needs to have
+basic development tools installed, that is, a C compiler with libraries,
+`make`, and several more packages. If anything is missing, the *cross-gnu*
+build will abort, and you have to install the missing dependencies and resume
+the *cross-gnu* build.
+
+
+## Setting Up the Environment
+
+Do this every time you intend to use the cross compiler:
+
+ $ ROOT=to/the/cross/build/root
+ $ . cross-gnu-env
+
+This will set several environment variables, which are later used by (a) the
+`cross-gnu` script and (b) by you, the user of the cross compiler. `$TARGET`
+will be set by the script, `$PATH` will be adjusted, etc. See the
+`cross-gnu-env` file for all environment variables that are set, as well as
+their default values. `$ROOT` will be made an absolute path if it isn't
+already.
+
+Later, you'll be able to do things like `../configure --host="$TARGET"`, and the
+cross compiler will be found automatically.
+
+
+## Creating the Cross Build Environment
+
+This will need an additional 2 GiB.
+
+After setting up the environemt, just run `cross-gnu` and watch the messages
+flow by. In the end you should see a message: *[...]/cross-gnu: Everything
+should be in place now.*
+
+
+## Staying Up-To-Date
+
+You can re-run `cross-gnu` to rebuild the parts of the sources that have
+changed since the last run. This will save a lot of time compared to starting
+from scratch again. Also, it is especially useful if you aren't working with
+unpacked tarballs, but on CVS's / SVN's / Git's branches or want to quickly get
+a new toolchain
+with patches you applied to the source trees. However: do *not* use this
+technique when doing major changes to the source trees, like switching from GCC
+4.4 to GCC 4.5.
diff --git a/toolchain/elfosabi_gnu.mdwn b/toolchain/elfosabi_gnu.mdwn
new file mode 100644
index 00000000..16b7d342
--- /dev/null
+++ b/toolchain/elfosabi_gnu.mdwn
@@ -0,0 +1,40 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!meta title="ELFOSABI_GNU"]]
+
+GNU/Hurd uses the `ELFOSABI_GNU` value for operating system/ABI identification.
+This is shared with GNU/Linux.
+
+
+# Open Issues
+
+The [[/glibc]] patch is currently to be found in [[Savannah
+glibc|source_repositories/glibc]] TopGit branch `t/elfosabi_gnu`.
+
+
+# History
+
+ * [[!debbug 630180]], [[!debbug 632686]]
+ * [sourceware bug
+ 12913](http://sourceware.org/bugzilla/show_bug.cgi?id=12913)
+ * [libc-alpha
+ thread](http://sourceware.org/ml/libc-alpha/2011-06/threads.html#00087)
+ ([continues](http://sourceware.org/ml/libc-alpha/2011-07/threads.html#00031))
+ * [bug-hurd
+ thread](http://lists.gnu.org/archive/html/bug-hurd/2011-06/threads.html#00060)
+ ([continues](http://lists.gnu.org/archive/html/bug-hurd/2011-07/threads.html#00020))
+ * [generic-abi
+ thread](http://groups.google.com/group/generic-abi/browse_frm/thread/194697b94a189063)
+ * [binutils
+ thread](http://sourceware.org/ml/binutils/2011-06/threads.html#00218)
+ ([continues](http://sourceware.org/ml/binutils/2011-07/threads.html#00033))
+ * [GDB thread](http://sourceware.org/ml/gdb-patches/2011-07/msg00088.html)
+ * [GCC thread](http://gcc.gnu.org/ml/gcc-patches/2011-07/threads.html#00252)
diff --git a/topgit.mdwn b/topgit.mdwn
new file mode 100644
index 00000000..fb374337
--- /dev/null
+++ b/topgit.mdwn
@@ -0,0 +1,37 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+[[!meta title="TopGit"]]
+
+<http://repo.or.cz/w/topgit.git>
+
+ * David Bremner: [*A topgit
+ testimonial*](http://www.cs.unb.ca/~bremner/blog/posts/topgit_testimonial/),
+ [*So your topgit patch was merged
+ upstream*](http://www.cs.unb.ca/~bremner/blog/posts/so_your_topgit_patch_was_merged/),
+ [more](http://www.cs.unb.ca/~bremner/tags/topgit/).
+ * Pete Hopkins: [*topgit Means Never Having to Wait for
+ Reviews*](http://blog.grogmaster.com/2008/12/topgit-means-never-having-to-wait-for.html)
+ * Christoph Egger: [*Git repository's and
+ topgit*](http://lists.debian.org/debian-devel-games/2008/11/msg00109.html)
+
+We're using this for some packages, where we're maintaining long-lived
+development branches, for example [[source_repositories/binutils]] or
+[[source_repositories/glibc]]. The latter one has usage examples, too.
+
+
+# Running it on GNU/Hurd
+
+Nothing special to that, technically, *only* that our [[I/O system's (non-)
+performance|community/gsoc/project_ideas/disk_io_performance]] will render this
+unbearably
+slow for anything but simple test cases. So don't try to run it on the [[GCC]]
+or [[glibc]] repositories. Talk to [[tschwinge]] about how he's using it on a
+GNU/Linux machine and push the resulting trees to GNU/Hurd systems.
diff --git a/trackers.mdwn b/trackers.mdwn
index cb1d9c89..c8fe913e 100644
--- a/trackers.mdwn
+++ b/trackers.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
A number of different trackers are available at the [GNU Savannah Hurd
Group](http://savannah.gnu.org/projects/hurd).
@@ -25,3 +25,8 @@ Group](http://savannah.gnu.org/projects/hurd).
# Patches
<http://savannah.gnu.org/patch/?group=hurd>
+
+
+# Related
+
+ * [[Contact_us]].
diff --git a/trust.mdwn b/trust.mdwn
index 46c762f0..2bf0a9ae 100644
--- a/trust.mdwn
+++ b/trust.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
The word trust is used in a number of contexts with different technical meanings.
Sometimes it is used to confuse, for instance trusted computing is rarely about
@@ -18,7 +18,7 @@ user.
When we say that a program trusts another, we mean that [[correctness]] of the
former depends on the cooperation of the latter. For instance, when a user runs
ssh, the user's intention is that all communication is encrypted. In this case,
-the user trusts that the ssh binary respects this intent. In Unix, a program's
+the user trusts that the ssh binary respects this intent. In [[Unix]], a program's
[[tcb]] consists not only of the kernel (and all the drivers,
file systems and protocol stacks that it contains) but every program running
under the same UID; it is impossible to protect against
diff --git a/unix.mdwn b/unix.mdwn
new file mode 100644
index 00000000..8694f7b0
--- /dev/null
+++ b/unix.mdwn
@@ -0,0 +1,80 @@
+[[!meta copyright="Copyright © 2008, 2010 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]]."]]"""]]
+
+[[!meta title="UNIX"]]
+
+*UNIX* is a [[kernel]] implementation.
+
+
+# Concepts
+
+ * [[file_descriptor]]
+
+ * [[process]]
+
+ * [[signal]]
+
+ * [[system_call]]
+
+
+# External
+
+ * Wikipedia page about [[!wikipedia UNIX]].
+
+ * [*Standardizing
+ UNIX*](http://www.informit.com/articles/printerfriendly.aspx?p=691503), an
+ article by David Chisnall.
+
+ * The first in the series, {{$2010_brown_ghosts_1}} introduces the concepts
+ of [[file_descriptor]]s and the single, hierarchical [[namespace]].
+
+ Next, {{$2010_brown_ghosts_2}} discusses issues with *conflated designs*
+ such as the `mount` command (a problem we have partly solved / solved
+ differently with our [[hurd/translator]] approach and the
+ [[hurd/virtual_file_system]]), and the plethora of flags that can be passed
+ to the `open` [[system_call]].
+
+ In {{$2010_brown_ghosts_3}}, he deals with *unfixable designs*, such as
+ UNIX [[signal]]s and the *UNIX permission model* (which is
+ clearly inferior to a [[capability]]-based system).
+
+ * [*UNIX File Permissions*](http://www.greenend.org.uk/rjk/2004/perms.html)
+ (2004) by Richard Kettlewell. ([[!taglink open_issue_documentation]]<!--
+ TODO: split out UNIX permission stuff into unix/file_permissions or
+ something. -->)
+
+
+[[!ymlfront data="""
+
+djb_self-pipe:
+
+ D. J. Bernstein's [*self-pipe trick*](http://cr.yp.to/docs/selfpipe.html)
+
+rjk_fork:
+
+ Richard Kettlewell's suggestions about [*how fork(2) ought to
+ be*](http://www.greenend.org.uk/rjk/fork.html)
+
+2010_brown_ghosts_1:
+
+ "Neil Brown's 2010-10-27 article [*Ghosts of Unix Past: a historical search
+ for design patterns*](http://lwn.net/Articles/411845/)"
+
+2010_brown_ghosts_2:
+
+ "Neil Brown's 2010-11-04 article [*Ghosts of Unix past, part 2: Conflated
+ designs*](http://lwn.net/Articles/412131/)"
+
+2010_brown_ghosts_3:
+
+ "Neil Brown's 2010-11-16 article [*Ghosts of Unix past, part 3: Unfixable
+ designs*](http://lwn.net/Articles/414618/)"
+
+"""]]
diff --git a/unix/file_descriptor.mdwn b/unix/file_descriptor.mdwn
new file mode 100644
index 00000000..b40db67f
--- /dev/null
+++ b/unix/file_descriptor.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]]
+
+A *file descriptor* is a [[concept]] of [[UNIX]], and represents a
+non-[[persistent|persistency]] handle to an object (a file, for example). With
+respect to specific aspects, it is comparable to a [[capability]].
+This is detailed in {{$capability#wikipedia_capability-based_security}}.
+
+In a GNU Hurd system, the concept of file descriptors is based on object
+handles (through [[Mach ports|microkernel/mach/port]]), and is [[implemented in
+glibc|glibc/file_descriptor]].
diff --git a/unix/process.mdwn b/unix/process.mdwn
new file mode 100644
index 00000000..21fbfc69
--- /dev/null
+++ b/unix/process.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+A *UNIX process* is TODO.
+
+Generally, especially in [[microkernel]]-based systems, the [[kernel]]'s idea
+of a task is not as encompassing as a UNIX process, and will use additional
+effort to enhance the kernel's primitive to a full-fledged UNIX model.
+
+A [[Mach task|microkernel/mach/task]] implements a part of a UNIX process.
+
+In the GNU/Hurd, processes are based on [[Mach task|microkernel/mach/task]]s,
+but are [[enhanced by the glibc|glibc/process]].
diff --git a/unix/signal.mdwn b/unix/signal.mdwn
new file mode 100644
index 00000000..084f7f2a
--- /dev/null
+++ b/unix/signal.mdwn
@@ -0,0 +1,34 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+*[[UNIX]] signals* are a means to asynchronously invoke a specific function
+(*signal handler*) in a [[process]]. It's a rather limited form of doing
+[[IPC]].
+
+Signalling may impact on [[system call]]s that are executing at the same time
+in that they may be completely aborted, return incomplete results, scheduled
+for restarting, or cause signal delivery to be blocked upon the system call's
+completion.
+
+An explanation can be found in the relevant standards, an overview, including
+UNIX signals' deficiencies is given in {{$unix#2010_brown_ghosts_3}}, for
+example.
+
+In a GNU/Hurd system, the signalling system is [[implemented in
+glibc|glibc/signal]].
+
+
+# Further Reading
+
+ * [[!wikipedia Signal_(computing)]]
+
+ * {{$unix#djb_self-pipe}}.
+
+ * {{$unix#rjk_fork}}.
diff --git a/unsorted/BochsFAQ.mdwn b/unsorted/BochsFAQ.mdwn
index d446f695..474bbed5 100644
--- a/unsorted/BochsFAQ.mdwn
+++ b/unsorted/BochsFAQ.mdwn
@@ -1,7 +1,5 @@
# <a name="GNU_pre0_3_J2_for_Bochs_mini_FAQ"> </a> GNU pre0.3-J2 for Bochs mini-FAQ
-%TOC%
-
----
## <a name="What_do_you_mean_GNU_the_GNU_Hur"> </a> What do you mean "GNU", the GNU Hurd?
diff --git a/unsorted/BootProcess.mdwn b/unsorted/BootProcess.mdwn
deleted file mode 100644
index 17f7bba7..00000000
--- a/unsorted/BootProcess.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-Describes the GNU/Hurd boot process.
-
-# <a name="Bootloader"> Bootloader </a>
-
-[GRUB](http://www.gnu.org/software/grub/) (GRand Unified Bootloader) is the default (and as far as I know the only supported ) bootloader for GNU/Hurd and is the initial process.
-
-GRUB can be used for booting multiple Operating Systems on a given machine. Device naming convention for GRUB is different than that of the Hurd. Where the first partition on the primary IDE drive in GNU/Hurd is hd0s1, in GRUB it is (hd0,0). In the case of GNU/Hurd, the first thing that GRUB loads is kernel image.
-
-Here is a copy of GNU/Hurd multi-user entry from menu.lst. The first two lines are primarily informational and are what get displayed on the GRUB boot menu.
-
- # Entry 2: 1st partition on first HDD
- title GNU/Hurd (IDE 1st partition - hd0s1 multi-user)
- root (hd0,0)
- kernel /boot/gnumach.gz root=device:hd0s1
- module /hurd/ext2fs.static --multiboot-command-line=${kernel-command-line} \
- --host-priv-port=${host-port} \
- --device-master-port=${device-port} \
- --exec-server-task=${exec-task} \
- -T typed ${root} $(task-create) $(task-resume)
- module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
-
-**_N.B. the escaped new lines above should end in only a back slash, no spaces!_**
-
-The line "root (hd0,0)" tells GRUB where to look for the root partition. Notice that the (hd0,0) is using GRUB naming conventions.
-
-The next line loads the gnumach kernel image itself. Notice here the root=device:hd0s1 argument. This is now using GNU/Hurd device naming convention, telling the Hurd where the root partition exists.
-
-----
-
--- [[Main/BarryDeFreese]] - 29 May 2003
-
-Minor formatting and edit check.
-
-On a side note. The actual description of the GNU/Hurd boot process is a good idea but keeping duplicated information to a bare minimum must be the guide line for a "book" like this. See other topics for more information on Grub configuration for instance.
-
--- [[Main/JoachimNilsson]] - 30 May 2003
diff --git a/Hurd/BuildingHurdLiveCD.mdwn b/unsorted/BuildingHurdLiveCD.mdwn
index 8ff8eb61..e2082268 100644
--- a/Hurd/BuildingHurdLiveCD.mdwn
+++ b/unsorted/BuildingHurdLiveCD.mdwn
@@ -30,7 +30,7 @@ That was the recipe for using a floppy image. If you use the `-t hd` switch of `
* A [stage2\_eltorito](http://mycelium.dyndns.org/stage2_eltorito) from [grub 0.95](http://www.gnu.org/software/grub)
* A [base system](http://www.update.uu.se/~ams/gnu/gnu-2004-12-04.tar.bz2)
-* [iso9660fs.static](http:///mycelium.dyndns.org/iso9660fs.static) or just build your own, it should work with CVS
+* [iso9660fs.static](http:///mycelium.dyndns.org/iso9660fs.static) (this link is bought the farm) or just build your own, it should work with CVS
### <a name="HowTo"> HowTo </a>
diff --git a/Mach/BuildingOskitMach.mdwn b/unsorted/BuildingOskitMach.mdwn
index 334b0669..9eee80d3 100644
--- a/Mach/BuildingOskitMach.mdwn
+++ b/unsorted/BuildingOskitMach.mdwn
@@ -1,13 +1,6 @@
## <a name="HowTo_Build_OSKit_Mach"> </a> HowTo Build OSKit-Mach
-<table align="center" width="75%">
- <tr>
- <td width="50%"> %TOC% </td>
- <td width="50%">
- <p><nop></nop></p>
<h3><a name="Introduction"> Introduction </a></h3> This is a brief "<nop>HowTO build OSKit-Mach" (a.k.a GNUmach 2.0). It covers everything from getting the latest sources of both the <a href="http://www.cs.utah.edu/flux/oskit/" target="_top">OSKit</a> and the GNUmach kernel, down to building and debugging them. <p> To be able to actually make use of your recently checked out CVS version of the GNUMach kernel &amp;amp; c:o you need a GNU system of <a href="ftp://ftp.funet.fi/pub/gnu/alpha/gnu/hurd/contrib/marcus/gnu-20020816.tar.gz" target="_top">gnu-20020816.tar.gz</a> or later. See [[Distrib/TarballNotesHome]] for more info. </p></nop></td>
- </tr>
-</table>
## <a name="Getting_your_hands_on_the_source"> Getting your hands on the source </a>
diff --git a/Mach/BuildingOskitMach/modules-light.x86.pc b/unsorted/BuildingOskitMach/modules-light.x86.pc
index 07818cc5..07818cc5 100644
--- a/Mach/BuildingOskitMach/modules-light.x86.pc
+++ b/unsorted/BuildingOskitMach/modules-light.x86.pc
diff --git a/Mach/BuildingOskitMach/modules.x86.pc b/unsorted/BuildingOskitMach/modules.x86.pc
index bb27aca3..bb27aca3 100644
--- a/Mach/BuildingOskitMach/modules.x86.pc
+++ b/unsorted/BuildingOskitMach/modules.x86.pc
diff --git a/Hurd/CrossHurd.mdwn b/unsorted/CrossHurd.mdwn
index d33d2a00..d33d2a00 100644
--- a/Hurd/CrossHurd.mdwn
+++ b/unsorted/CrossHurd.mdwn
diff --git a/Hurd/DebianX.mdwn b/unsorted/DebianX.mdwn
index 00692ca8..6d65a140 100644
--- a/Hurd/DebianX.mdwn
+++ b/unsorted/DebianX.mdwn
@@ -1,9 +1,5 @@
# <a name="Setting_up_X_on_Debian_GNU_Hurd"> </a> Setting up X on Debian GNU/Hurd
-#### <a name="Table_Of_Contents"> Table Of Contents </a>
-
-%TOC%
-
This is a brief helper on how to setup X-Windows on Debian GNU/Hurd.
Obviously this text is taken from the page <http://hurd.gnufans.org/bin/view/Hurd/Xfree86> but I was making such drastic changes, I didn't want to hack up that page.
@@ -88,16 +84,6 @@ You may also enable the Emulate3Buttons option, but nothing else will work.
**_WARNING:_** I cannot verify as of yet whether it was the "Emulate3Buttons" setting or the "ZAxisMapping" setting but I had to disable both in order to be able to move and resize windows.
-### <a name="Dynamic_Linking"> Dynamic Linking </a>
-
-The Hurd does not use `ld.so.conf`, it is necessary to add the following to `/etc/profile` to be sure that the libraries are found:
-
- LD_LIBRARY_PATH=/X11R6/lib:$LD_LIBRARY_PATH
-
-"This is a linker issue. GNU/Hurd expects that \`RPATH' is used, however, Debian takes certain measures to avoid this. Note that this does not cut it for suid binaries because of security implications. We expect to rectify this by using \`RUNPATH', which is specified in the new ELF standard." -- [Why does X not work?](http://www.gnu.org/software/hurd/faq.en.html#q4-8)
-
-**_CAVEAT 12/28/2004:_** I did not have to do this so can someone verify that this still needs to be done or was it fixed? Thanks!
-
### <a name="Starting_X"> Starting X </a>
Finally, run `startx`
diff --git a/Hurd/DebianXorg.mdwn b/unsorted/DebianXorg.mdwn
index 26e990fb..a1d77903 100644
--- a/Hurd/DebianXorg.mdwn
+++ b/unsorted/DebianXorg.mdwn
@@ -1,9 +1,5 @@
# <a name="Setting_up_Xorg_on_Debian_GNU_Hu"> </a> Setting up Xorg on Debian GNU/Hurd
-#### <a name="Table_Of_Contents"> Table Of Contents </a>
-
-%TOC%
-
This is a brief helper on how to setup Xorg on Debian GNU/Hurd.
Obviously this text is taken from the page <http://hurd.gnufans.org/bin/view/Hurd/DebianX> but I was making such drastic changes, I didn't want to hack up that page.
@@ -186,7 +182,7 @@ However, there are several caveats to be aware of:
**_WARNING:_** If you get an error about opening the display or a permissions issue, you may need to run the following:
- # dpkg-reconfigure xserver-common
+ # dpkg-reconfigure x11-common
change from "Console Users Only" to "Anybody"
diff --git a/Hurd/DistributedServers.mdwn b/unsorted/DistributedServers.mdwn
index cb2dd5bc..cb2dd5bc 100644
--- a/Hurd/DistributedServers.mdwn
+++ b/unsorted/DistributedServers.mdwn
diff --git a/Hurd/ExtTwoSize.mdwn b/unsorted/ExtTwoSize.mdwn
index ec39781f..ec39781f 100644
--- a/Hurd/ExtTwoSize.mdwn
+++ b/unsorted/ExtTwoSize.mdwn
diff --git a/Hurd/FlashHurd.mdwn b/unsorted/FlashHurd.mdwn
index a6288afc..a6288afc 100644
--- a/Hurd/FlashHurd.mdwn
+++ b/unsorted/FlashHurd.mdwn
diff --git a/Hurd/FunnyHurd.mdwn b/unsorted/FunnyHurd.mdwn
index 1653ec77..1653ec77 100644
--- a/Hurd/FunnyHurd.mdwn
+++ b/unsorted/FunnyHurd.mdwn
diff --git a/Hurd/FunnyHurd/CrystalAwards.jpg b/unsorted/FunnyHurd/CrystalAwards.jpg
index 2daac850..2daac850 100644
--- a/Hurd/FunnyHurd/CrystalAwards.jpg
+++ b/unsorted/FunnyHurd/CrystalAwards.jpg
Binary files differ
diff --git a/Hurd/FunnyHurd/HurdCarDeal.jpg b/unsorted/FunnyHurd/HurdCarDeal.jpg
index 9f533384..9f533384 100644
--- a/Hurd/FunnyHurd/HurdCarDeal.jpg
+++ b/unsorted/FunnyHurd/HurdCarDeal.jpg
Binary files differ
diff --git a/Hurd/FunnyHurd/HurdExchange.gif b/unsorted/FunnyHurd/HurdExchange.gif
index bbbb4844..bbbb4844 100644
--- a/Hurd/FunnyHurd/HurdExchange.gif
+++ b/unsorted/FunnyHurd/HurdExchange.gif
Binary files differ
diff --git a/Hurd/FunnyHurd/HurdLodge.jpg b/unsorted/FunnyHurd/HurdLodge.jpg
index d13562f5..d13562f5 100644
--- a/Hurd/FunnyHurd/HurdLodge.jpg
+++ b/unsorted/FunnyHurd/HurdLodge.jpg
Binary files differ
diff --git a/Hurd/FunnyHurd/HurdMagician.jpg b/unsorted/FunnyHurd/HurdMagician.jpg
index 5ef6509a..5ef6509a 100644
--- a/Hurd/FunnyHurd/HurdMagician.jpg
+++ b/unsorted/FunnyHurd/HurdMagician.jpg
Binary files differ
diff --git a/Hurd/FunnyHurd/hurd-windows.gif b/unsorted/FunnyHurd/hurd-windows.gif
index 5ca7dd74..5ca7dd74 100644
--- a/Hurd/FunnyHurd/hurd-windows.gif
+++ b/unsorted/FunnyHurd/hurd-windows.gif
Binary files differ
diff --git a/Hurd/GNUstep.mdwn b/unsorted/GNUstep.mdwn
index 95b2a622..95b2a622 100644
--- a/Hurd/GNUstep.mdwn
+++ b/unsorted/GNUstep.mdwn
diff --git a/Hurd/GrantBowHurdPage.mdwn b/unsorted/GrantBowHurdPage.mdwn
index 89af3ada..89af3ada 100644
--- a/Hurd/GrantBowHurdPage.mdwn
+++ b/unsorted/GrantBowHurdPage.mdwn
diff --git a/Hurd/GrantBowHurdPage/diagram.png b/unsorted/GrantBowHurdPage/diagram.png
index c8b29047..c8b29047 100644
--- a/Hurd/GrantBowHurdPage/diagram.png
+++ b/unsorted/GrantBowHurdPage/diagram.png
Binary files differ
diff --git a/Hurd/GrantBowHurdPage/diagram.xcf b/unsorted/GrantBowHurdPage/diagram.xcf
index 76396410..76396410 100644
--- a/Hurd/GrantBowHurdPage/diagram.xcf
+++ b/unsorted/GrantBowHurdPage/diagram.xcf
Binary files differ
diff --git a/unsorted/HurdDevelopers.mdwn b/unsorted/HurdDevelopers.mdwn
new file mode 100644
index 00000000..1a43a2b8
--- /dev/null
+++ b/unsorted/HurdDevelopers.mdwn
@@ -0,0 +1,120 @@
+Here's an unofficial list of Hurd developers and what they are working on. This is very unofficial.
+
+* [Marcus Brinkmann](http://www.marcus-brinkmann.de) - GNU Hurd Project maintainer, Debian GNU/Hurd Port Manager, fakeroot, oskit console
+* [Thomas Bushnell, BSG](http://www.mit.edu/~tb/) - Primary architect, design issues and debugging help
+* [Roland McGrath](http://www.frob.com), [resum�](http://www.apocalypse.org/pub/u/roland/resume.html) - GLibC, GCC-3.1, fakeroot (with fakeauth and settrans --chroot)
+* Jeff Bailey - turtle autobuilder, gcc-3.1
+* [Igor Khavkine](http://alcor.concordia.ca/~i_khavki/)
+* [Gordon Matzigkeit](http://www.fig.org/gord/)
+
+* Alexandra "[Bunny](http://www.hurd-bunny.tk)" - graphic designer, Hurd promotion
+* Alfred M. Szmidt (ams) -
+* Daniel (Chillywilly) Baumann - GNU Enterprise Application Server, GNU Common C++
+* [[Main/GrantBow]] - TWiki, promotion
+* Jae - fatfs, possibly smbfs
+* [[Main/JoachimNilsson]], [[Hurd/JoachimNilssonHurdPage]] - TWiki, OSKit upgrades (currently ATA-100 patches).
+* [[Main/JamesAMorrison]] - porting, kernel interface cleanups, [hurd-extras](http://savannah.gnu.org/projects/hurdextras/)
+* Neal Walfield - pthreads, documentation, debugging, #hurd admin, log &amp; bot maintainer
+* [[Main/NickRusnov]] - mtab &amp; [[Distrib/PortingIssues]]
+* Niels M�ller - kernel debugging
+* [[Main/OgnyanKulev]] - [[ExtTwoSize]] patch
+* Paul Emsley - [Kernel Cousin Debian Hurd](http://kt.zork.net/debian-hurd/latest.html)
+* Philip Charles - [ISO CD-images](http://www.copyleft.co.nz/hurd.html)
+* Ryan Golbeck - porting.
+* [[Main/SamLauzon]] (Indes) - Installer, Sound(!), Bunny mocking
+* [[Main/SimonLaw]] - [Kernel Cousin Debian Hurd](http://kt.zork.net/debian-hurd/latest.html) and [[Hurd/KernelCousinDebianHurd]]
+* [[Main/WolfgangJ]] - documentation, promotion
+* [[Main/DerekDavies]] - OSKit work
+* [Daniel Wagner](http://www.vis.ethz.ch/~wagi/) (wagi) - [pcmcia support for OSKit](http://savannah.nongnu.org/projects/oskit/)
+
+If we got any names wrong, please accept our apologies.
+
+
+---
+
+<A NAME="contents"><H1>Acknowledgements</H1></A>
+
+<P>We wish a warm ``Thank GNU'' to everybody who has helped in the
+development of the Hurd. Here is a categorized list of people who
+made significant contributions. If we have omitted anybody, we
+apologize... please let us know so that we can update this list!
+
+<DL>
+<DT>Hurd software</DT>
+<DD><DL>
+ <DT>Mark Kettenis</DT>
+ <DD>many GNU C library and Hurd bug fixes and updates</DD>
+ <DT>Miles Bader</DT>
+ <DD>paid by the FSF to help make the Hurd usable as a standalone system,
+ wrote several important translators</DD>
+ <DT>OKUJI Yoshinori</DT>
+ <DD>many gnumach bug fixes and updates</DD>
+ <DT>Roland McGrath</DT>
+ <DD>paid by the FSF to design and implement the GNU C library for the Hurd,
+ as well as many Hurd features, current Hurd C library maintainer</DD>
+ <DT>Thomas Bushnell, BSG (formerly Michael I. Bushnell)</DT>
+ <DD>paid by the FSF as primary architect of the Hurd, current Hurd maintainer</DD>
+ <DT>UCHIYAMA Yasushi</DT>
+ <DD>ported XFree86 to the Hurd</DD>
+ </DL></DD>
+
+<DT>Debian GNU/Hurd</DT>
+<DD><DL>
+ <DT>Gordon Matzigkeit</DT>
+ <DD>paid by the FSF as a liason from GNU to Debian</DD>
+ <DT>Marcus Brinkmann</DT>
+ <DD>bootstrapped the Debian GNU/Hurd base set and many packages, liason
+ from Debian to GNU</DD>
+ <DT>Santiago Vila</DT>
+ <DD>support for cross-compiling Debian packages</DD>
+ </DL></DD>
+
+<DT>Documentation</DT>
+<DD><DL>
+ <DT>Derek Upham</DT>
+ <DD>wrote the original GNU&nbsp;Hurd FAQ</DD>
+ <DT>Gordon Matzigkeit</DT>
+ <DD>reorganized and updated the GNU&nbsp;Hurd Reference Manual for release 0.3</D
+D>
+ <DT>Matthew C. Vernon</DT>
+ <DD>wrote the ``Idiot's Guide'' for getting started with the Hurd</DD>
+ <DT>Matthias Pfisterer</DT>
+ <DD>reorganized and updated the web site in early 1999</DD>
+ <DT>Stephen L. Favor</DT>
+ <DD>current FAQ maintainer</DD>
+ <DT>Trent Fisher</DT>
+ <DD>wrote the original version of the Hurd pages</DD>
+ </DL></DD>
+</DL>
+
+Copyright (C) 1999, 2007 Free Software Foundation, Inc.,
+59 Temple Place - Suite 330, Boston, MA 02111, USA
+
+Verbatim copying and distribution of this entire article is
+permitted in any medium, provided this notice is preserved.
+
+---
+
+Thank GNU to everybody who has contributed to the Hurd's development!
+
+<UL>
+ <LI><A HREF="http://www.rr.iij4u.or.jp/~kkojima/">kaz Kojima</A>
+ ported the Hurd to the <A
+ HREF="http://www.rr.iij4u.or.jp/~kkojima/hurdmips.html">MIPS
+ R3000 and R4000</A> processors.
+
+ <LI><A HREF="http://www-mbi3.kuicr.kyoto-u.ac.jp/~okuji/">
+ OKUJI Yoshinori</A> maintains a set of <A
+ HREF="http://www-mbi3.kuicr.kyoto-u.ac.jp/~okuji/hurd.html">Japanese
+ Hurd pages</A>.
+
+ <LI><A HREF="http://f77.nop.or.jp/">UCHIYAMA Yasushi</A> has ported
+ XFree86 to the Hurd.
+
+</UL>
+
+Copyright (C) 1998 Free Software Foundation, Inc.,
+59 Temple Place - Suite 330, Boston, MA 02111, USA
+
+Verbatim copying and distribution of this entire article is
+permitted in any medium, provided this notice is preserved.
diff --git a/unsorted/HurdWikiCopyrightDiscuss.mdwn b/unsorted/HurdWikiCopyrightDiscuss.mdwn
deleted file mode 100644
index ffa0b17b..00000000
--- a/unsorted/HurdWikiCopyrightDiscuss.mdwn
+++ /dev/null
@@ -1,69 +0,0 @@
-How about that notice from [[Main/PeterThoeny]]? Why don't we change the [[Hurd/WebPreferences]] for the Hurd web to say "Copyright (c) 2002 Free Software Foundation", instead of the usual "... the contributing authors". I think that would make the information we put in here easier to move around among different webs (not only Wikified ones...). Perhaps also add a notice on licensing? Like this:
-
- "Copyright (C) 2001, 2002 Free Software Foundation, Inc.,
- 59 Temple Place - Suite 330, Boston, MA 02111, USA
-
- Verbatim copying and distribution of this entire article is
- permitted in any medium, provided this notice is preserved."
-
- Submitting material to the Hurd Wiki not only assigns the copyrights
- to the Free Software Foundation it also put the material itself under
- the GNU FDL, http://www.gnu.org/licenses/fdl.html
-
--- [[Main/JoachimNilsson]] - 14 May 2002
-
-Don't do this - the material will not be assigned to the FSF until every contributor signed a paper form and filed it with the FSF.
-
-So simply claiming something is (C) FSF will not make it to be so, and it will not only have no effect, but also be confusing.
-
-Wiki has authentication, this is good. However, unless you have paper forms, all contributions remain with the original author.
-
-And if you had papers, you would have to disallow or moderate guest account contributions and either filter them out or change the copyright notice when they are filled in. This makes reusing Wiki-evolved content in free software projects by the FSF difficult btw, so don't expect major wiki-evolved content to be included in FSF manuals or so (this is not a problem, as long as everyone is aware of this limitation and keeps it in mind).
-
--- Marcus Brinkmann (no, not a Wiki-Name :)
-
-So what you are saying is basically this:
-
-1. We cannot assign the copyright to the FSF without the _paper_ work.
-2. We _can_ use content from the FSF (as long as we keep all copyright information, of course), but any content evolved from this is unusable for GNU manuals.
-3. Even if every newly registered user (and [[Main/TWikiGuest]] is disabled completely for the Hurd Web) agrees to our terms that agreement is useless without the _paper_ work.
-
-Oh, there is of course all the RCS diffs ... would that help, if we would like to have the Wiki content in GNU manuals?
-
--- [[Main/JoachimNilsson]] - 14 May 2002
-
-If you have papers signed by the contributors, then any Guest added words (less than 10 lines?) can be filtered out of the Wiki using RCS. This is acceptable for GNU code, if I recall correctly. You may have to re-writen certain portions of the Wiki to use FSF contributed work only, though.
-
--- [[Main/SimonLaw]] - 16 May 2002
-
-There seems to be a confusion of FDL vis-a-vis copyright-assignment here. FDL is like the all-important Step 1 which protects this content from being non-free. Copyright assignment is an Optional Step 2.
-
-Step2's not being feasible does not mean that we can't take Step 1.
-
-90% of GPL'ed software out there does not take Step 2. Step 2 helps by involving FSF in case someone violates our Step 1--the copyright itself. But i don't see why we cannot take Step 1 atleast.
-
--- [[Main/DeepakGoel]] - 01 Oct 2002
-
-After an email discussion a while ago now between myself, Grant Bowman, RMS and Marcus Brinkmann the following results where achieved:
-
-* Copyright assignment can indeed be done without the extensive paperwork.
-
-* To implement this on a Wiki some provisions must be fulfilled:
- * The user must **_actively_** select a checkbox or similar.
- * The text to the checkbox can be _"I approve to also assign the copyrights of my work to the FSF"_
-
-* This practise can be implemented today in the U.S., but in the EU there are still some things that need to be ironed out. Different countries still have differences in copyright law. However, the Swedish laws, where the Hurd wiki is located, do allow such a practise.
-
-The first step, mentioned above by [[Main/DeepakGoel]] we have now taken. The Hurd wiki is now licensed under the GNU FDL. The second step, assigning copyright will take a bit longer since the Perl scripts making out the TWiki engine must be altered. Also, we must first make sure that we all want to take the second step - we will also need to get the approval of assigning copyright of older material by those editors.
-
--- [[Main/JoachimNilsson]] - 01 Jan 2003
-
-I don't feel taking the next step of copyright assignment is necessary, but I'm not opposed to it either. My concerns revolve around encouraging a wider participation and not actively putting up more barriers. Not many folks contribute as it is, unfortunately.
-
--- [[Main/GrantBow]] - 03 Jan 2003
-
-Good, I've been hesitating too. Then there's no need for me to rush into getting the architecture of it working just yet.
-
-As it is right now, with at least the licensing (the FDL) in place, I'm quite content.
-
--- [[Main/JoachimNilsson]] - 03 Jan 2003
diff --git a/unsorted/HurdWikiMove.mdwn b/unsorted/HurdWikiMove.mdwn
deleted file mode 100644
index 084e0ff2..00000000
--- a/unsorted/HurdWikiMove.mdwn
+++ /dev/null
@@ -1,55 +0,0 @@
-Many thanks to [[Main/JoachimNilsson]] for his work to establish and help update this Hurd Wiki! You have been extremely kind with your efforts in creating the new GNU skin and all of the expected and unexpected administrative work that's been needed to establish this Wiki.
-
-Now that the site is established, the traffic levels are growing and the value of the site is evident. This will affect the current host since its bandwidth is quite limited. Therefore a new permanent host must be located. We would like it to offer the following:
-
-* Free bandwidth
-* At least one GiB of quota
-* Availability 24/7
-* Shell access for at least one person for administrational purposes
-* Possibly in the U.S. due to "click-n-approve" copyright assignment of material to the FSF (see [[HurdWikiCopyrightDiscuss]]).
-* Regular backups
-* Other?
-
-Comment on this page or email the maintainer <joachim@gnufansNOSPAM.org>
-
-Potential places to move Hurd Twiki to in order of preference:
-
-* savannah.gnu.org
-* Some other \*.gnu.org site
-* Other site in the U.S. or country with similar copyright laws.
-
-----
-
-I favor removing gnu.org from the above list. There are copyright issues that are technically impossible to address in the way that RMS wants copyright assigned to all content hosted on gnu.org. While we probably could bend over backwards to accomodate it, fundamentally I think that this and other potential problems are not worth the effort of making this Hurd Twiki an official part of the GNU project.
-
-Technically I think that savannah.gnu.org might be possible but I will defer to others for a decision from this perspective. Assuming it's possible, I think we may have similar problems as above.
-
-I favor looking for another solution, an "other".
-
--- [[Main/GrantBow]] - 22 Sep 2002
-
-Refactoring and updating.
-
-The copyright issues we have to straighten out anyway. If someone wants to make a CD set of the "manual" we have created here and that content later on gets misused we need to defend our rights. Using the GNU [[GNU/FreeDocumentationLicense]] and assigning the copyright to the FSF will help us achieve this. The FSF can fight for us instead of all the writers trying to get together.
-
--- [[Main/JoachimNilsson]] - 23 Oct 2002
-
-Joachim, how are we doing on bandwidth usage? Is it growing, decreasing, about the same? What measure should we be looking at to keep an eye on the situation? I am sure lots of people really appreciate your hosting this site for free. I'm of course one of them!
-
--- [[Main/GrantBow]] - 01 Jan 2003
-
-I have [the statistics](http://hurd.gnufans.org/webalizer/) under observation and thus far it looks very good. There really isn't much traffic at all, [compared to](http://vmlinux.org/webalizer/) the machine we host gnufans.org on. One tenth of the traffic to vmlinux.org.
-
-Occasionally I talk to one of the guys at [QuickNet](http://www.quicknet.se) about the hosting and our (vmlinux.org's) bandwidth usage. He has assured me that there is no problem at all, in fact, they have increased the overall capacity of their hosting capabilites, so now our traffic is no more than a drop in the ocean to them. :)
-
-I'll keep you (all) informed if there is any change in status of the hosting.
-
-Furthermore, I've been looking into the copyright assignment issues we talked about a while ago now. It seems RMS is right. At least in Sweden transfer of copyright can be made by a user in the way he descibed in the email conversation we had. The provision is that the user must **_actively_** select a checkbox or similar which says something like:
-
-* _"I hereby assign the copyrights of my work to the FSF"_
-
-This means that the copyright is also owned by the FSF, the original author can never lose his rights to a work. The copyright assignment is useful when there is a license violation, bacause then the FSF can fight on behalf of the copyright owners without having to ask them all.
-
-Well, this post somewhat "nullifies" many of the claims made at the beginning of this topic. Maybe I should refactor it a bit to better suit the current circumstances?
-
--- [[Main/JoachimNilsson]] - 01 Jan 2003
diff --git a/unsorted/HurdWnpp.mdwn b/unsorted/HurdWnpp.mdwn
deleted file mode 100644
index 49e069de..00000000
--- a/unsorted/HurdWnpp.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-While Debian Developers and users use the official [WNPP](http://www.debian.org/devel/wnpp/) (Work Needed and Prospective Packages) page, a system of special bugs in the [Debian Bug Tracking System](http://bugs.debian.org/), this page is intended to give another location (and method) for giving feedback and provide status for developers of the Hurd. Please simply add a package name, the person's name sho's porting it, possibly with URL or as a separate page if you have relevant notes on the package.
-
-This data is for porting purposes only. Any conflict between the Debian BTS data and the data here should be resolved in favor of the Debian BTS. It's hoped this page will allow people to keep notes on packages that need some care.
-
-Packages in need of porting help:
-
-* Ported packages up for adoption
-
-* Ported orphaned packages
-
-* Packages currently being ported
-
-* Rewritten/replaced packages
- * fakeroot - [status](http://mail.gnu.org/pipermail/bug-hurd/2002-May/008322.html)
-
-* Requested packages
- * [Entropy Gathering Daemon](http://bugs.debian.org/145498) - Mako Hill
-
--- created 19 May 2002
diff --git a/unsorted/InstallNotes.mdwn b/unsorted/InstallNotes.mdwn
index 49dcd53d..f3ac58d1 100644
--- a/unsorted/InstallNotes.mdwn
+++ b/unsorted/InstallNotes.mdwn
@@ -2,10 +2,6 @@ Items of interest during install not mentioned elsewhere include the following.
**_Currently, [Debian's installation instructions](http://www.debian.org/ports/hurd/hurd-install) are the most up-to-date._**<br /> Note the mirrors mentioned on debian.org have no hurd iso's. The iso's can be found [Here](http://ftp.gnuab.org/pub/gnu.iso)
-## <a name="Table_of_Contents"> Table of Contents </a>
-
-%TOC%
-
## <a name="1_Overview_Where_we_are_going"> 1. Overview - Where we are going </a>
There are currently four methods to install GNU
@@ -47,7 +43,7 @@ You can always install GRUB onto your hard drive at a later date.
For instructions on using GRUB, see either the info documentation or the quick reference notes on this wiki:
-* [[Distrib/GrubNotes]] - quick reference
+* [[GRUB]] - quick reference
## <a name="4_Cross_Install_Cross_Installing"> </a> 4. Cross Install - Cross Installing GNU
@@ -198,7 +194,6 @@ See [[DebianAfterInstall]] for complete, up to date instructions.
* Run `passwd` to give the root user a password. By default, root does not have one.
* Run `adduser` to give yourself a user account. _Do not_ use root indiscriminately.
* Run `MAKEDEV` to create devices in `/dev` for your hard disk and other required devices.
- * Since the Hurd does not use `ld.so.conf`, you will want to specify where the X Window System keeps its libraries. Do this by adding the following line to your `/etc/profile`: <br />`export LD_LIBRARY_PATH='/lib:/usr/X11R6/lib'`
* run `/etc/cron.daily/find` to allow `locate` to function.
* [[GetNetworkRunning]]
diff --git a/unsorted/InstallTips.mdwn b/unsorted/InstallTips.mdwn
index a735fbf7..262ec741 100644
--- a/unsorted/InstallTips.mdwn
+++ b/unsorted/InstallTips.mdwn
@@ -1,9 +1,5 @@
Before reading these instructions, be sure you are familiar with the [[InstallNotes]].
-## <a name="Table_of_Contents"> Table of Contents </a>
-
-%TOC%
-
## <a name="1_Setting_up_the_filesystems"> 1. Setting up the filesystems </a>
You will need to boot a linux capable of internet access and creating/mounting ext2 partitions. I recommend [tomsrtbt](http://www.toms.net/rb/) linux which fits nicely onto a floppy and although a bit old will work well.
@@ -60,7 +56,7 @@ now mount the floppy and copy the files to your partition
you may also wish to put my menu.lst file in your grub directory which can be obtained here <ftp://firethroat.com/hurd/menu.lst> you will need to edit it to include a -s at the end of the line starting with kernel. Be sure modify the partition numbers, my system is using the third partition of the second harddrive.
-More detailed samples for grub config files can be found at the [[GrubNotes]]
+More detailed samples for GRUB config files can be found at the [[GRUB]] page.
To install grub reboot using the grub floppy and issue:
diff --git a/Hurd/InteractiveTranslators.mdwn b/unsorted/InteractiveTranslators.mdwn
index 9a0ca7e2..9a0ca7e2 100644
--- a/Hurd/InteractiveTranslators.mdwn
+++ b/unsorted/InteractiveTranslators.mdwn
diff --git a/Hurd/JoachimNilssonHurdPage.mdwn b/unsorted/JoachimNilssonHurdPage.mdwn
index e4dde2b9..163d6845 100644
--- a/Hurd/JoachimNilssonHurdPage.mdwn
+++ b/unsorted/JoachimNilssonHurdPage.mdwn
@@ -1,15 +1,3 @@
-<table width="100%">
- <tr>
- <td>
- </td>
- <td align="right"><a href="http://hurd.gnufans.orghttp://LOCATIONHurd/JoachimNilssonHurdPage" target="_top">Edit this page</a></td>
- </tr>
- <tr>
- <td align="right"> %ATTACHURL%/patch_kit.jpg </td>
- <td align="left"><nop><h2><a name="Table_of_Contents"> Table of Contents </a></h2> %TOC% </nop></td>
- </tr>
-</table>
-
## <a name="Introduction"> Introduction </a>
This page serves as a simple project page for me. I use it to list my personal Hurd related projects, currently only OSKit related. If you wish to comment on my work, do so in [[TWiki/GoodStyle]], preferably at the bottom of this page.
diff --git a/Hurd/JoachimNilssonHurdPage/patch_kit.jpg b/unsorted/JoachimNilssonHurdPage/patch_kit.jpg
index da5cc147..da5cc147 100644
--- a/Hurd/JoachimNilssonHurdPage/patch_kit.jpg
+++ b/unsorted/JoachimNilssonHurdPage/patch_kit.jpg
Binary files differ
diff --git a/Hurd/KernelCousinDebianHurd.mdwn b/unsorted/KernelCousinDebianHurd.mdwn
index 1ff8a698..1ff8a698 100644
--- a/Hurd/KernelCousinDebianHurd.mdwn
+++ b/unsorted/KernelCousinDebianHurd.mdwn
diff --git a/Hurd/KnownHurdLimits.mdwn b/unsorted/KnownHurdLimits.mdwn
index 51d66b50..4e7b7620 100644
--- a/Hurd/KnownHurdLimits.mdwn
+++ b/unsorted/KnownHurdLimits.mdwn
@@ -9,10 +9,6 @@
There are needed by OpenSSH.
* In progress, see [[translator/random]]
-* No DHCP client
- * promising information [Jan 2005](http://lists.gnu.org/archive/html/bug-hurd/2005-01/msg00025.html), needs an update
- * See [[DhcpClient]] - need to update TCP/IP server.
-
* Missing bits of POSIX
* See [[Distrib/SystemAPILimits]]
diff --git a/Hurd/MakeImage.mdwn b/unsorted/MakeImage.mdwn
index 95b928c4..95b928c4 100644
--- a/Hurd/MakeImage.mdwn
+++ b/unsorted/MakeImage.mdwn
diff --git a/unsorted/NewMachHistory.mdwn b/unsorted/NewMachHistory.mdwn
deleted file mode 100644
index 562d1cac..00000000
--- a/unsorted/NewMachHistory.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-# <a name="Table_of_Contents"> Table of Contents </a>
-
-%TOC%
-
-# <a name="Early_beginnings"> Early beginnings </a>
-
-GNUMach is based on Mach4 from University of Utah, which in turn is based on Mach3 from Carnegie-Mellon University. The last release of Mach4 was the [UK22 release](http://www.cs.utah.edu/flux/mach4-i386/html/mach4-UK22.html).
-
-The oskit-mach version of GNU Mach was presented in November 1999 by Roland McGrath. <http://mail.gnu.org/pipermail/bug-hurd/1999-November/003554.html> The purpose of the port was to get better hardware support through new drivers and platform code available in the OSKit.
-
-On May 27 2002, after the Gnumach 1.3 release, Roland McGrath merged OSKit-Mach onto the HEAD of CVS making it the Gnumach 2.x mainline.
-
-# <a name="Status_of_the_project"> Status of the project </a>
-
-GNU Mach 1.3 was released in May 2002, and features advanced boot script support, support for large disks (&gt;= 10GB) and an improved console.
-
-GNU Mach is used as the default microkernel in the GNU/Hurd system. It is compatible with other popular Mach distributions. The device drivers for block devices and network cards are taken from Linux 2.0.x kernel versions, and so a broad range of common hardware is supported.
-
-However, the Linux device drivers have been improved greatly since the 2.0.x version, and a new version of GNU Mach based on the OSKit library is being worked on, which uses newer drivers and in general has cleaner machine specific support code.
-
-----
-
-Copyright (C) 2001 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA
-
-Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
-
--- [[Main/JoachimNilsson]] - 24 Oct 2002
diff --git a/Mach/OskitMach.mdwn b/unsorted/OskitMach.mdwn
index c28f2d89..0f7dfa54 100644
--- a/Mach/OskitMach.mdwn
+++ b/unsorted/OskitMach.mdwn
@@ -22,7 +22,7 @@ concentrate on completely different microkernels (Coyotos being the current
favourite), as well as on improving the original GNU Mach 1.x codebase. (See
also [[microkernel/mach/gnumach/projects]].)
-The [[mailing_lists]], or the [[IRC]] is, like always, the best source of more
+The [[mailing lists]], or the [[IRC]] is, like always, the best source of more
current information.
There also exist other efforts:
@@ -37,7 +37,7 @@ First you need to get the latest OSKit release and, preferrably, the latest CVS
## <a name="Starting"> Starting </a>
-You start Oskit-Mach almost the same way as the old 1.x version of GNUmach. Using [[Hurd/GrubNotes]] an entry can look like this:
+You start Oskit-Mach almost the same way as the old 1.x version of GNUmach. Using [[GRUB]] an entry can look like this:
title GNUmach 1.90 (CVS)
root (hd0,1)
diff --git a/Mach/OskitMachPatches.mdwn b/unsorted/OskitMachPatches.mdwn
index c1e1b068..c1e1b068 100644
--- a/Mach/OskitMachPatches.mdwn
+++ b/unsorted/OskitMachPatches.mdwn
diff --git a/Mach/OskitMachPatches/patch-gnumach_softclock-wagi.diff.gz b/unsorted/OskitMachPatches/patch-gnumach_softclock-wagi.diff.gz
index 3d57b43a..3d57b43a 100644
--- a/Mach/OskitMachPatches/patch-gnumach_softclock-wagi.diff.gz
+++ b/unsorted/OskitMachPatches/patch-gnumach_softclock-wagi.diff.gz
Binary files differ
diff --git a/Mach/OskitMachPatches/patch-gnumach_softint-wagi.diff.gz b/unsorted/OskitMachPatches/patch-gnumach_softint-wagi.diff.gz
index 215706b3..215706b3 100644
--- a/Mach/OskitMachPatches/patch-gnumach_softint-wagi.diff.gz
+++ b/unsorted/OskitMachPatches/patch-gnumach_softint-wagi.diff.gz
Binary files differ
diff --git a/Mach/OskitMachStatusList.mdwn b/unsorted/OskitMachStatusList.mdwn
index f62e0686..f62e0686 100644
--- a/Mach/OskitMachStatusList.mdwn
+++ b/unsorted/OskitMachStatusList.mdwn
diff --git a/Mach/OskitPatches.mdwn b/unsorted/OskitPatches.mdwn
index d189bb6d..b0cb646a 100644
--- a/Mach/OskitPatches.mdwn
+++ b/unsorted/OskitPatches.mdwn
@@ -1,7 +1,3 @@
-## <a name="Table_of_Contents"> Table of Contents </a>
-
-%TOC%
-
## <a name="Flux_OS_Toolkit"> Flux OS Toolkit </a>
[The OSKit](http://www.cs.utah.edu/flux/oskit/) is a framework and a set of libraries for building and extending operating systems developed by [the Flux Project](http://www.cs.utah.edu/flux/).
diff --git a/Mach/OskitPatches/patch-oskit-0.97-eepro.diff.gz b/unsorted/OskitPatches/patch-oskit-0.97-eepro.diff.gz
index 80d94f3f..80d94f3f 100644
--- a/Mach/OskitPatches/patch-oskit-0.97-eepro.diff.gz
+++ b/unsorted/OskitPatches/patch-oskit-0.97-eepro.diff.gz
Binary files differ
diff --git a/Mach/OskitPatches/patch-oskit-0.97-i_khavki.diff.gz b/unsorted/OskitPatches/patch-oskit-0.97-i_khavki.diff.gz
index 2e322de9..2e322de9 100644
--- a/Mach/OskitPatches/patch-oskit-0.97-i_khavki.diff.gz
+++ b/unsorted/OskitPatches/patch-oskit-0.97-i_khavki.diff.gz
Binary files differ
diff --git a/Mach/OskitPatches/patch-oskit-0.97-jon_arney.diff.gz b/unsorted/OskitPatches/patch-oskit-0.97-jon_arney.diff.gz
index aaf1475a..aaf1475a 100644
--- a/Mach/OskitPatches/patch-oskit-0.97-jon_arney.diff.gz
+++ b/unsorted/OskitPatches/patch-oskit-0.97-jon_arney.diff.gz
Binary files differ
diff --git a/Mach/OskitPatches/patch-oskit-0.97-kkraemer.diff.gz b/unsorted/OskitPatches/patch-oskit-0.97-kkraemer.diff.gz
index 7d75a34e..7d75a34e 100644
--- a/Mach/OskitPatches/patch-oskit-0.97-kkraemer.diff.gz
+++ b/unsorted/OskitPatches/patch-oskit-0.97-kkraemer.diff.gz
Binary files differ
diff --git a/Mach/OskitPatches/patch-oskit-0.97-sbrk_hack.diff.gz b/unsorted/OskitPatches/patch-oskit-0.97-sbrk_hack.diff.gz
index 2fef6632..2fef6632 100644
--- a/Mach/OskitPatches/patch-oskit-0.97-sbrk_hack.diff.gz
+++ b/unsorted/OskitPatches/patch-oskit-0.97-sbrk_hack.diff.gz
Binary files differ
diff --git a/unsorted/PortingIssues.mdwn b/unsorted/PortingIssues.mdwn
deleted file mode 100644
index 87d2154b..00000000
--- a/unsorted/PortingIssues.mdwn
+++ /dev/null
@@ -1,278 +0,0 @@
-## <a name="Table_of_Contents"> Table of Contents </a>
-
-%TOC%
-
-## <a name="Overview"> Overview </a>
-
-This is a recompilation of common porting problems and their solutions. Information is gathered from the following sources:
-
-* [Debian GNU/Hurd port guidelines](http://www.debian.org/ports/hurd/hurd-devel-debian)
-
-* [James Morrison's GNU/Hurd pages](http://hurd.dyndns.org/)
-
-as well as other misc. sources.
-
-First of all, see [[BtsFiling]] if you need instructions on manipulating [Debian](http://www.debian.org/) source packages and submitting patches to their [Bug Tracking System](http://bugs.debian.org/).
-
-## <a name="System_API_limitations"> </a> System API limitations
-
-Sometimes building or running a program will fail due to bugs in the system API implementation (in Glibc and the Hurd). Make sure you check this list and know them before porting, otherwise you'll end up debugging something just to find out its an already known bug.
-
-We maintain a separate Wiki page for information on these bugs, see [[Distrib/SystemAPILimits]]
-
-If you think you can fix any of them and send a patch to the debian BTS, that'd be much appreciated. You may ask in <bug-hurd@gnuNOSPAM.org> for details or questions on the bug.
-
-## <a name="Undefined_bits_confname_h_tt_mac"> Undefined `bits/confname.h` macros (`PIPE_BUF`, ...) </a>
-
-If macro `XXX` is undefined, but macro `_SC_XXX` or `_PC_XXX` is defined in `bits/confname.h`, you probably need to use `sysconf`, `pathconf` or `fpathconf` to obtain it dynamicaly.
-
-The following macros have been found in this offending situation (add more if you find them): `PIPE_BUF`
-
-An example with `sysconf`: (when you find a `sysconf` offending macro, put a better example)
-
- #ifndef XXX
- #define XXX sysconf(_SC_XXX)
- #endif
- /* offending code using XXX follows */
-
-An example with `fpathconf`:
-
- #ifdef PIPE_BUF
- read(fd, buff, PIPE_BUF - 1);
- #else
- read(fd, buff, fpathconf(fd, _PC_PIPE_BUF) - 1);
- #endif
- /* note we can't #define PIPE_BUF, because it depends
- on the "fd" variable */
-
-## <a name="Bad_File_Descriptor"> Bad File Descriptor </a>
-
-If you get Bad File Descriptor error when trying to read from a file (or accessing it at all), check the `open()` invocation. The second argument is the access method. If it is a hard coded number instead of a symbol defined in the standard header files, the code is screwed and should be fixed to either use `O_RDONLY`, `O_WRONLY` or `O_RDWR`. This bug was observed in the `fortunes` and `mtools` packages for example.
-
-## <a name="PATH_MAX_tt_MAX_PATH_tt_MAXPATHL"> `PATH_MAX` / `MAX_PATH` / `MAXPATHLEN` </a>
-
-Every unconditionalized use of `PATH_MAX`, `MAX_PATH` or `MAXPATHLEN` is a POSIX incompatibility. If there is no upper limit on the length of a path (as its the case for GNU), this symbol is not defined in any header file. Instead, you need to either use a different implementation that does not rely on the length of a string or use `sysconf()` to query the length at runtime. If `sysconf()` returns -1, you have to use `realloc()` to allocate the needed memory dynamically.
-
-## <a name="ARG_MAX"> `ARG_MAX` </a>
-
-Same as `PATH_MAX`. There is no limit on the number of arguments.
-
-## <a name="IOV_MAX"> `IOV_MAX` </a>
-
-Same as `PATH_MAX`. There is no limit on the number of iovec items.
-
-## <a name="MAXHOSTNAMELEN_tt_"> `MAXHOSTNAMELEN` </a>
-
-Same as `PATH_MAX`. When you find a `gethostname()` function, which acts on a static buffer, you can replace it with Neal's [xgethostname function](http://ftp.walfield.org/pub/people/neal/xgethostname/) which returns the hostname as a dynamic buffer. For example:
-
-Buggy code:
-
- char localhost[MAXHOSTNAMELEN];
- ...
- gethostname(localhost, sizeof(localhost));
-
-Fixed code:
-
- #include "xgethostname.h"
- ...
- char *localhost;
- ...
- localhost = xgethostname();
- if (! localhost)
- {
- perror ("xgethostname");
- return ERROR;
- }
- ...
- /* use LOCALHOST. */
- free (localhost);
-
-## <a name="NOFILE_tt_"> `NOFILE` </a>
-
-Replace with `getrlimit(RLIMIT_NOFILE,...)`
-
-## <a name="GNU_specific_define_tt_"> </a> GNU specific `#define`
-
-If you need to include specific code for GNU/Hurd using `#if` ... `#endif`, then you can use the `__GNU__` symbol to do so. But think (at least) thrice! before doing so. In most situations, this is completely unnecessary and will create more problems than it may solve. Better ask on the mailing list how to do it right if you can't think of a better solution.
-
-## <a name="sys_errlist_tt_vs_strerror_tt_"> `sys_errlist[]` vs. `strerror()` </a>
-
-If a program has only support for `sys_errlist[]` you will have to do some work to make it compile on GNU, which has dropped support for it and does only provide `strerror()`. Steinar Hamre writes about `strerror()`:
-
-`strerror()` should be used because:
-
-* It is the modern, POSIX way.
-* It is localized.
-* It handles invalid signals/numbers out of range. (better errorhandling and not a buffer-overflow-candidate/security risk)
-
-`strerror()` should always be used if it is available. Unfortunaly there are still some old non-POSIX systems that do not have `strerror()`, only `sys_errlist[]`.
-
-Today, only supporting `strerror()` is far better than only supporting `sys_errlist[]`. The best (from a portability viewpoint), however is supporting both. For configure.in, you will need:
-
- AC_CHECK_FUNCS(strerror)
-
-To `config.h.in`, you need to add:
-
- #undef HAVE_STRERROR
-
-Then something like:
-
- #ifndef HAVE_STRERROR
- static char *
- private_strerror (errnum)
- int errnum;
- {
- extern char *sys_errlist[];
- extern int sys_nerr;
-
- if (errnum > 0 && errnum <= sys_nerr)
- return sys_errlist[errnum];
-
- return "Unknown system error";
- }
- #define strerror private_strerror
- #endif /* HAVE_STRERROR */
-
-You can for example look in the latest coreutils (the above is a simplified version of what I found there.) Patches should of course be sent to upstream maintainers, this is very useful even for systems with a working `sys_errlist[]`.
-
-Of course, if you don't care about broken systems (like MS-DOG) not supporting `strerror()` you can just replace `sys_errlist[]` directly (upstream might not accept your patch, but debian should have no problem)
-
-## <a name="C++_error_t"> C++, `error_t` and `E*` </a>
-
-On the Hurd, `error_t` is an enumeration of the `E*` constants. However, C++
-does not like `E*` integer macros being directly assigned to that enumeration. In short, replace
-
- error_t err = EINTR;
-
-by
-
- error_t err = error_t(EINTR);
-
-## <a name="Filenames_ending_in_a_slash_"> Filenames ending in a slash \`/' </a>
-
-Those are evil if they don't exist and you want to name a directory this way. For example, `mkdir foobar/` will not work on GNU. This is POSIX compatible. POSIX says that the path of a directory may have slashes appended to it. But the directory does not exist yet, so the path does not refer to a directory, and hence trailing slashes are not guaranteed to work. Just drop the slashes, and you're fine.
-
-## <a name="Missing_termio_h_tt_"> Missing `termio.h` </a>
-
-Change it to use `termios.h` (check for it properly with autoconf `HAVE_TERMIOS_H` or the `__GLIBC__` macro)
-
-Also, change calls to `ioctl(fd, TCGETS, ...)` and `ioctl(fd, TCSETS, ...)` with `tcgetattr(fd, ...)` and `tcsetattr(fd, ...)`.
-
-## <a name="AC_HEADER_TERMIO_tt_"> `AC_HEADER_TERMIO` </a>
-
-The autoconf check for `AC_HEADER_TERMIO` tryes to check for termios, but it's only really checking for termio in `termios.h`. It is better to use `AC_CHECK_HEADERS(termio.h termios.h)`
-
-## <a name="_IOT"> missing `_IOT` </a>
-
-This comes from ioctls. Fixing this is easy if the structure members can be expressed by using the _IOT() macro, else it's simply impossible... See `bits/termios.h` for an instance:
-
-`#define _IOT_termios /* Hurd ioctl type field. */ \
- _IOT (_IOTS (tcflag_t), 4, _IOTS (cc_t), NCCS, _IOTS (speed_t), 2)`
-
-because `struct termios` holds 4 members of type `tcflag_ts`, then `NCCS`
-members of type `cc_tsi` and finaly 2 members of type `speed_ts`.
-
-As you can see, this limits the number of kinds of members to 3, and in
-addition to that (see the bitfield described in `ioctls.h`), the third
-kind of member is limited to 3 members. However, since at the API
-compatibility layer you are generally allowed to reorder fields in
-structures, you can usually manage to fit into these limits.
-
-Note: if a field member is a pointer, then the ioctl can't be expressed
-this way, and that makes sense, since the server you're talking to
-doesn't have direct access to your memory. Ways other than ioctls must
-then be found.
-
-## <a name="SA_SIGINFO"> `SA_SIGINFO` </a>
-
-Not implemented, packages may be fixed for working around this: use void sighandler(int num) prototype and sa_handler field.
-
-## <a name="MSG_NOSIGNAL"> `MSG_NOSIGNAL` </a>
-
-Not implemented yet: [Savannah bug](https://savannah.gnu.org/bugs/?18218)
-
-## <a name="IPV6_PKTINFO"> `IPV6_PKTINFO` </a>
-
-Not fixed yet: [Glibc bug](http://sourceware.org/bugzilla/show_bug.cgi?id=3906)
-
-## <a name="SOL_IP"> `SOL_IP` </a>
-
-Not implemented yet.
-
-## <a name="HZ"> `HZ` </a>
-
-Linuxish and doesn't even make sense since the value may vary according to the running kernel. Should use `sysconf(_SC_CLK_TCK)` or `CLK_TCK` instead.
-
-## <a name="SIOCDEVPRIVATE"> `SIOCDEVPRIVATE` </a>
-
-Oh, we should probably provide it.
-
-## <a name="MAP_NORESERVE"> `MAP_NORESERVE` </a>
-
-Not POSIX, but we could implement it.
-
-## <a name="O_DIRECT"> `O_DIRECT` </a>
-
-Long story to implement.
-
-## <a name="PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP"> `PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP` </a>
-
-We could easily provide it;
-
-## <a name="PTHREAD_STACK_MIN"> `PTHREAD_STACK_MIN` </a>
-
-We should actually provide it.
-
-## <a name="types"> `linux/types.h` or `asm/types.h` </a>
-
-These are not POSIX, `sys/types.h` and `stdint.h` should be used instead.
-
-## <a name="iopl"> `iopl` </a>
-
-Not supported. Try to replace with `ioperm(0, 65536, 1)` (conditionned with `__GNU__` as that will not work in Linux).
-
-## <a name="iopl"> `semget`, `sem_open` </a>
-
-Not implemented, will always fail. Use `sem_init()` instead if possible.
-
-## <a name="net/..."> `net/if_arp.h`, `net/ethernet.h`, etc. </a>
-
-Not implemented, not POSIX. Try to disable the feature in the package.
-
-## <a name="broken_libc6_dependency"> broken libc6 dependency </a>
-
-Some packages use an erroneous dependency on `libc6-dev`. This is incorrect because `libc6` is specific to GNU/Linux. The corresponding package for GNU is `libc0.3-dev` but other OSes will have different ones. You can locate the problem in the `debian/control` file of the source tree. Typical solutions include detecting the OS using `dpkg-architecture` and hardcoding the soname, or better, use a logical OR. eg: `libc6-dev | libc0.3-dev | libc-dev`. The `libc-dev` is a virtual package that works for any soname but you have to put it only as the last option.
-
-----
-
-## <a name="ChangeLog"> ChangeLog </a>
-
--- [[Main/TWikiGuest]] - 13 Jan 2005
-
-Fix xgethostname example. - Neal
-
--- [[Main/RobertMillan]] - 22 Jul 2002
-
-Formatting and minor grammatical fixes.
-
--- [[Main/JoachimNilsson]] - 09 Sep 2002
-
-Added more examples and misc semantical fixes.
-
--- [[Main/RobertMillan]] - 05 Oct 2002
-
-Added `xgethostname` example.
-
--- [[Main/RobertMillan]] - 15 Nov 2002
-
-Added broken libc6 dependency
-
--- [[Main/RobertMillan]] - 21 Nov 2002
-
-Text formatting.
-
--- Ognyan Kulev - 12 Mar 2003
-
-Added `ioctl` entry.
-
--- [[Main/RobertMillan]] - 19 Mar 2003
diff --git a/Mach/PosixSemaphores.mdwn b/unsorted/PosixSemaphores.mdwn
index be5586bd..be5586bd 100644
--- a/Mach/PosixSemaphores.mdwn
+++ b/unsorted/PosixSemaphores.mdwn
diff --git a/Hurd/PosixThreads.mdwn b/unsorted/PosixThreads.mdwn
index f031b56f..f031b56f 100644
--- a/Hurd/PosixThreads.mdwn
+++ b/unsorted/PosixThreads.mdwn
diff --git a/unsorted/QEMU.mdwn b/unsorted/QEMU.mdwn
deleted file mode 100644
index 27086257..00000000
--- a/unsorted/QEMU.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-QEMU is free software written by Fabrice Bellard that implements a fast processor emulator, allowing a user to run one operating system within another one. It is similar to projects such as Bochs and VMware Workstation, but has several features these lack, including increased speed and support for multiple architectures. By using dynamic translation it achieves a reasonable speed while being easy to port on new host CPUs.
-
-QEMU has two operating modes:
-
-* User mode emulation: QEMU can launch Linux processes compiled for one CPU on another CPU. Linux system calls are converted because of endianness and 32/64 bit mismatches. Wine and Dosemu are the main targets for QEMU.
-
-* System mode emulation: QEMU emulates a full system, including a processor and various peripherials. It enables easier testing and debugging of system code. It can also be used to provide virtual hosting of several virtual PCs on a single server.
-
-The majority of the program is under the [[LGPL]], with the system mode emulation under the [[GPL]].
-
-## <a name="External_links"> External links </a>
-
-* <http://fabrice.bellard.free.fr/qemu/>
-* <http://kidsquid.com/cgi-bin/moin.cgi> QEMU Wiki
-* [Qemu on Windows](http://www.h7.dion.ne.jp/~qemu-win/)
diff --git a/Mach/RemoteDebugOskitMach.mdwn b/unsorted/RemoteDebugOskitMach.mdwn
index c260ce25..bb5b9006 100644
--- a/Mach/RemoteDebugOskitMach.mdwn
+++ b/unsorted/RemoteDebugOskitMach.mdwn
@@ -1,9 +1,5 @@
# <a name="Remote_Debug_GNUmach"> </a> Remote Debug GNUmach
-# <a name="Table_of_Contents"> Table of Contents </a>
-
-%TOC%
-
# <a name="Booting_oskit_mach_with_a_serial"> Booting oskit-mach with a serial console </a>
**Original Author:** Igor Khavkine **Last Updated:** Mon Jul 30 17:58:55 EDT 2001
diff --git a/Hurd/RequirementsForLiveCD.mdwn b/unsorted/RequirementsForLiveCD.mdwn
index 03bd3884..03bd3884 100644
--- a/Hurd/RequirementsForLiveCD.mdwn
+++ b/unsorted/RequirementsForLiveCD.mdwn
diff --git a/unsorted/SavannahProjects.mdwn b/unsorted/SavannahProjects.mdwn
index 3024ed64..b1111ed5 100644
--- a/unsorted/SavannahProjects.mdwn
+++ b/unsorted/SavannahProjects.mdwn
@@ -7,6 +7,7 @@
* [pthreads](http://savannah.gnu.org/projects/pthreads) - porting of thread library for glibc
* [hurd-iso](http://savannah.gnu.org/projects/hurd-iso) - CD-ROM images
* [gnumach-alpha](http://savannah.gnu.org/projects/gnumach-alpha) - port for Alpha processor machines
+* [hurd-alpha](http://savannah.gnu.org/projects/hurd-alpha) - provide a working implementation for the Alpha architecture
* [[Hurd/THUG]] - Toronto Area GNU/Hurd User Group and their [documentation page](http://www.freesoftware.fsf.org/thug/docs.html)
* [francine](http://savannah.gnu.org/projects/francine) - "secure, colourful and themeable login program"
diff --git a/Hurd/SeenHurd.mdwn b/unsorted/SeenHurd.mdwn
index be9e1aba..92be4224 100644
--- a/Hurd/SeenHurd.mdwn
+++ b/unsorted/SeenHurd.mdwn
@@ -1,9 +1,5 @@
# <a name="Hurd_Sightings"> Hurd Sightings </a>
-#### <a name="Table_Of_Contents"> Table Of Contents </a>
-
-%TOC%
-
## <a name="Hurd_People_Sightings"> Hurd People Sightings </a>
<dl>
@@ -12,9 +8,6 @@
<dt>[[IRC]]</dt>
<dd>
</dd>
- <dt>[[WhoRunsGNU]]</dt>
- <dd>
- </dd>
<dt>[[HurdDevelopers]]</dt>
<dd> Who's who? </dd>
<dt>[[PersonalHurdPages]]</dt>
diff --git a/Hurd/SeenHurd/lmf10_1999.jpg b/unsorted/SeenHurd/lmf10_1999.jpg
index 85332658..85332658 100644
--- a/Hurd/SeenHurd/lmf10_1999.jpg
+++ b/unsorted/SeenHurd/lmf10_1999.jpg
Binary files differ
diff --git a/Hurd/SerialConsole.mdwn b/unsorted/SerialConsole.mdwn
index e4e5324d..e4e5324d 100644
--- a/Hurd/SerialConsole.mdwn
+++ b/unsorted/SerialConsole.mdwn
diff --git a/Hurd/Shopping.mdwn b/unsorted/Shopping.mdwn
index d9806e93..d9806e93 100644
--- a/Hurd/Shopping.mdwn
+++ b/unsorted/Shopping.mdwn
diff --git a/unsorted/SystemAPILimits.mdwn b/unsorted/SystemAPILimits.mdwn
deleted file mode 100644
index 8930ef9c..00000000
--- a/unsorted/SystemAPILimits.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-## <a name="API_Limitations_of_the_GNU_syste"> </a> API Limitations of the GNU system
-
-----
-
-Sometimes building or running a program will fail due to bugs in the system API implementation (in Glibc and the Hurd). Make sure you check this list and know them before porting, otherwise you'll end up debugging something just to find out its an already known bug.
-
-Taken from the bug lists in debian BTS. If you find more of them (and it is clear in the bug log that it is a bug), please add them to the list below. See:
-
-* <http://bugs.debian.org/hurd> ([source](http://packages.qa.debian.org/h/hurd.html) and [binary](http://packages.debian.org/hurd) debs not synchronized)
-* <http://bugs.debian.org/hurd-dev> ([binary](http://packages.debian.org/hurd-dev))
-* <http://bugs.debian.org/libc0.3> ([source](http://packages.qa.debian.org/g/glibc.html) &amp; [binary](http://packages.debian.org/libc0.3) debs)
-* <http://bugs.debian.org/libc0.3-dev> ([binary](http://packages.debian.org/libc0.3-dev))
-
-----
-
-These are the known system API limits that have porting implications.
-
-**_[\#47998](http://bugs.debian.org/47998): `msgget` IPC not implemented_**
-
-**_[\#184565](http://bugs.debian.org/184565): libc0.3: missing shm\* functions (from `<sys/shm.h>`)_**<br />**breaks:** cdrtools<br />**error:** warning: shm\* is not implemented and will always fail
-
-**_[\#190581](http://bugs.debian.org/190581): nice() doesn't work_**<br />**breaks:** coreutils<br />**error:** `nice()` doesn't take effect on some situations
-
-**_[\#187391](http://bugs.debian.org/187391): libc0.3-dev: `sockaddr_un.sun_path` can't be assigned a `const char *` when compiling with g++_**<br />**breaks:** fam, gail<br />**status:** maybe this should be in [[PortingIssues]] (see _long_ bug log)
-
-**_[\#190367](http://bugs.debian.org/190367): libc0.3-dev: `fcntl` `F_GETLK` not implemented (`ENOSYS`)_**<br />**breaks:** gnome-session (and others) from running<br />**error:** misc lock-related errors
-
--- [[Main/RobertMillan]] - 01 May 2003
-
-Text formatting.<br /> -- [[Main/OgnyanKulev]] - 02 May 2003
diff --git a/Hurd/WebHome/hurd_sm_mf.png b/unsorted/WebHome/hurd_sm_mf.png
index 26bb78b5..26bb78b5 100644
--- a/Hurd/WebHome/hurd_sm_mf.png
+++ b/unsorted/WebHome/hurd_sm_mf.png
Binary files differ
diff --git a/Hurd/XattrHurd.mdwn b/unsorted/XattrHurd.mdwn
index d3856c1b..d3856c1b 100644
--- a/Hurd/XattrHurd.mdwn
+++ b/unsorted/XattrHurd.mdwn
diff --git a/Hurd/Xfree86.mdwn b/unsorted/Xfree86.mdwn
index 617508e5..6fffff81 100644
--- a/Hurd/Xfree86.mdwn
+++ b/unsorted/Xfree86.mdwn
@@ -1,9 +1,5 @@
# <a name="Setup_XFree86_in_GNU"> </a> Setup XFree86 in GNU
-#### <a name="Table_Of_Content"> Table Of Content </a>
-
-%TOC%
-
This is a brief helper on how to setup X-Window on GNU.
### <a name="Mouse_amp_Keyboard"> Mouse &amp; Keyboard </a>
@@ -70,14 +66,6 @@ You may also enable the Emulate3Buttons option, but nothing else will work.
Option "Emulate3Buttons" "true"
-### <a name="Dynamic_Linking"> Dynamic Linking </a>
-
-The Hurd does not use `ld.so.conf`, it is necessary to add the following to `/etc/profile` to be sure that the libraries are found:
-
- LD_LIBRARY_PATH=/X11R6/lib:$LD_LIBRARY_PATH
-
-"This is a linker issue. GNU/Hurd expects that \`RPATH' is used, however, Debian takes certain measures to avoid this. Note that this does not cut it for suid binaries because of security implications. We expect to rectify this by using \`RUNPATH', which is specified in the new ELF standard." -- [Why does X not work?](http://www.gnu.org/software/hurd/faq.en.html#q4-8)
-
### <a name="Starting_X"> Starting X </a>
Finally, run
diff --git a/unsorted/byte-letter.txt b/unsorted/byte-letter.txt
new file mode 100644
index 00000000..20fa61a0
--- /dev/null
+++ b/unsorted/byte-letter.txt
@@ -0,0 +1,25 @@
+Byte magazine published this in the `Letters' section
+of the March '96 issue:
+
+ Where's the GNU Hurd?
+
+ The November 1995 articles "NT Roars
+ on the 604" and "CPU scorecards" were
+ quite welcome. But the Special Report on
+ operating systems did not mention GNU
+ Hurd. This OS is based on the Mach mi-
+ crokernel, and thus it has been essentially
+ ported to a wide variety of hardware plat-
+ forms--nearly as many as NetBSD. To
+ learn more about the Hurd, and especially
+ about its binary portability, visit http://
+ www.cs.pdx.edu/~trent/gnu/hurd/. Con-
+ trary to what you say in the text box "Op-
+ erating-System Research: Dim or Bright
+ Future?" (page 116), microkernel tech-
+ nology has not been exploited to its max-
+ imum capability, as the Hurd philosophy
+ demonstrates.
+
+ Todd Hutchinson
+ jasper@terra.3rdplanet.com
diff --git a/unsorted/changelogs.html b/unsorted/changelogs.html
new file mode 100644
index 00000000..299ef281
--- /dev/null
+++ b/unsorted/changelogs.html
@@ -0,0 +1,107 @@
+[[meta copyright="Copyright © 2001, 2002, 2006, 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]]."]]"""]]
+
+<H3>ChangeLogs</H3>
+<P>
+As the Hurd sources are kept and maintained in a CVS repository that
+is accessible via the web, you can follow the progress of development
+closely. We maintain ChangeLogs, in which we record every change to
+the source code at the time it is committed. The links below lead you
+directly to the ChangeLog files in the Hurd and its associated packages.
+<P>
+If you want to follow the development of the Hurd closely, we suggest
+that you subscribe to the <A
+HREF="http://lists.gnu.org/mailman/listinfo/commit-hurd/">commit-hurd mailing
+list</A> to which notifications about changes to the Hurd source code
+are sent. The <A HREF="/software/hurd/download.html">complete source
+code</A> is also available, of course.
+</P>
+<H4>The Hurd</H4>
+<P>
+The Hurd source tree contains many independent parts, and therefore
+has one ChangeLog for each directory. There is one <A
+HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/ChangeLog">ChangeLog
+in the main directory</A>, and one in each of the following
+subdirectories:
+</P>
+<UL>
+<LI>Translators and other servers:
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/auth/ChangeLog">auth</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/exec/ChangeLog">exec</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/ext2fs/ChangeLog">ext2fs</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/ftpfs/ChangeLog">ftpfs</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/hostmux/ChangeLog">hostmux</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/init/ChangeLog">init</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/isofs/ChangeLog">isofs</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/mach-defpager/ChangeLog">mach-defpager</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/nfs/ChangeLog">nfs</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/nfsd/ChangeLog">nfsd</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/pfinet/ChangeLog">pfinet</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/pflocal/ChangeLog">pflocal</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/proc/ChangeLog">proc</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/storeio/ChangeLog">storeio</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/term/ChangeLog">term</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/tmpfs/ChangeLog">tmpfs</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/trans/ChangeLog">trans</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/ufs/ChangeLog">ufs</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/usermux/ChangeLog">usermux</A>
+<LI>Utilities:
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/benchmarks/ChangeLog">benchmarks</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/boot/ChangeLog">boot</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/bsdfsck/ChangeLog">bsdfsck</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/fstests/ChangeLog">fstests</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/sutils/ChangeLog">sutils</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/ufs-fsck/ChangeLog">ufs-fsck</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/ufs-utils/ChangeLog">ufs-utils</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/utils/ChangeLog">utils</A>
+<LI>Boot code and system programs:
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/login/ChangeLog">login</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/config/ChangeLog">config</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/daemons/ChangeLog">daemons</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/serverboot/ChangeLog">serverboot</A>
+<LI>Release scripts and packaging:
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/debian/ChangeLog">debian</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/release/ChangeLog">release</A>
+<LI>Documentation:
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/doc/ChangeLog">doc</A>
+<LI>Interface definitions:
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/hurd/ChangeLog">hurd</A>
+<LI>Support libraries:
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libdiskfs/ChangeLog">libdiskfs</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libfshelp/ChangeLog">libfshelp</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libftpconn/ChangeLog">libftpconn</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libhurdbugaddr/ChangeLog">libhurdbugaddr</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libihash/ChangeLog">libihash</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libiohelp/ChangeLog">libiohelp</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libnetfs/ChangeLog">libnetfs</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libpager/ChangeLog">libpager</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libpipe/ChangeLog">libpipe</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libports/ChangeLog">libports</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libps/ChangeLog">libps</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libshouldbeinlibc/ChangeLog">libshouldbeinlibc</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libstore/ChangeLog">libstore</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libthreads/ChangeLog">libthreads</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libtrivfs/ChangeLog">libtrivfs</A>
+</UL>
+<H4>GNU&nbsp;Mach</H4>
+The <A
+HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/gnumach/ChangeLog">GNU
+Mach ChangeLog</A> covers all changes to GNU&nbsp;Mach and <A
+HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/gnumach/ChangeLog?rev=1.128.2">GNU
+Mach 1 branch ChangeLog</A> those on the <SAMP>gnumach-1-branch</SAMP>.
+Changes before March 1997 are listed in <A
+HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/gnumach/ChangeLog.0">ChangeLog.0</A>
+and <A
+HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/gnumach/ChangeLog.00">ChangeLog.00</A>.
+<H4>MIG</H4>
+The <A
+HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/mig/ChangeLog">MIG ChangeLog</A>
+covers all changes to MIG.
diff --git a/unsorted/hurd-fs-org b/unsorted/hurd-fs-org
new file mode 100644
index 00000000..ba515623
--- /dev/null
+++ b/unsorted/hurd-fs-org
@@ -0,0 +1,219 @@
+From: mib@duality.gnu.ai.mit.edu (Michael I. Bushnell, p/BSG)
+Newsgroups: gnu.misc.discuss
+Subject: Re: GNU vs. Linux FSSTND conflict?
+Date: 13 Aug 1995 22:31:18 GMT
+Organization: Free Software Foundation, Cambridge, MA
+In-reply-to: Rick Niles's message of 13 Aug 1995 16:20:29 GMT
+
+In article <40l8od$ia9@news4.digex.net> Rick Niles <niles@axp745.gsfc.nasa.gov>
+ writes:
+
+ Is there a conflict between the GNU Filesystem Structure and
+ the Linux Filesystem Structure (FSSTND)?
+
+What you point out is the trivial difference; there are significant
+lossages in FSSTND, such as the absence of libexec...
+
+ I've heard on this newsgroup that the GNU std. is to elminate
+ the use of /usr. So:
+
+ I guess the first question is: Is this true?
+
+Yes.
+
+ If it is how do you answer those who say the root part. should
+ be small and only enough to boot the system? And
+ the rest of the system should be on a separate part. (/usr)
+
+In GNU the directory /bin will be an amalgam of several directories;
+this well be done by the use of a translator in the Hurd. (It will be
+similar to BSD shadow filesystems.)
+
+So we have no need to confuse users by putting binaries in two
+different places. We can put different binaries in different physical
+locations without either forcing them to appear in different places or
+creating a forest of symlinks.
+
+But the FSSTND's arguments are bogus even for Unixoid systems which do
+force differently located files to have different directory names:
+
+ o It is often mounted from very small media. For example, many Linux
+ users install and recover systems by mounting root off a RAM disk,
+ which is copied from a single 1.44M or 1.2M floppy disk.
+
+This is a non-issue. Obviously a floppy can only have a small number
+of files, but that's totally irrelevant in deciding what should be on
+root on a fully loaded system.
+
+ o The root filesystem has many system-specific configuration files in
+ it. Possible examples include a kernel that is specific to the
+ system, a different hostname, etc. This means that the root
+ filesystem isn't always shareable between networked systems.
+ Keeping it small on networked systems minimizes the amount of space
+ lost on servers to unshareable files. It also allows workstations
+ with smaller local hard drives.
+
+It should be possible to require only the etc directory to be
+per-system; there is no reason that bin and such should be non-shared
+at all.
+
+ o While you may have the root filesystem on a large partition, and
+ may be able to fill it to your heart's content, there will be
+ people with smaller partitions. If you have more files installed,
+ you may find incompatibilities with other systems using root
+ filesystems on smaller partitions. If you are a developer then you
+ may be turning your assumption into a problem for a large number of
+ users.
+
+This is totally incoherent, as far as I can tell. If someone can tell
+me what it means, then maybe I could help. What sort of
+incompatibilities are expected?
+
+Michael
+
+
+
+From: gord@enci.ucalgary.ca (Gord Matzigkeit)
+Newsgroups: gnu.misc.discuss
+Subject: Re: GNU vs. Linux FSSTND conflict?
+Date: 14 Aug 1995 18:55:20 -0600
+In-reply-to: mib@duality.gnu.ai.mit.edu's message of 13 Aug 1995 22:31:18 GMT
+
+-----BEGIN PGP SIGNED MESSAGE-----
+
+Hi!
+
+>>>>> "mib" == Michael I Bushnell, p/BSG <mib@duality.gnu.ai.mit.edu> writes:
+
+ mib> In article <40l8od$ia9@news4.digex.net> Rick Niles
+ mib> <niles@axp745.gsfc.nasa.gov> writes:
+[hack & slice]
+
+ >> If it is how do you answer those who say the root
+ >> part. should be small and only enough to boot the system? And
+ >> the rest of the system should be on a separate part. (/usr)
+
+ mib> In GNU the directory /bin will be an amalgam of several
+ mib> directories; this well be done by the use of a translator in the
+ mib> Hurd. (It will be similar to BSD shadow filesystems.)
+
+This is what I figured... my reply didn't get posted to USENET,
+though, because our NNTP server has been down for the last day or two.
+
+ mib> So we have no need to confuse users by putting binaries in two
+ mib> different places. We can put different binaries in different
+ mib> physical locations without either forcing them to appear in
+ mib> different places or creating a forest of symlinks.
+
+This is grand! One of my ideas that I mentioned to Rick was that I'm
+currently using depot, and I see that the GNU union/shadowfs could
+replace that.
+
+What depot does is manages symlinks for a "software environment" (a
+more restricted version of what you have described).
+
+The way I think I'll be setting up my Hurd machine is to have all the
+physical disks mounted under "/disk", each containing a fragment of
+the filesystem.
+
+Now, my only concerns are:
+
+1) control files, as far as determining precedence, and what can and
+cannot be shadowed (for collision resolution), and what is just
+auxilliary info (like CVS directories in the site package, which
+should not be mapped onto the software environment)
+
+2) packages. Is there some slick way to divide the filesystem into
+"package pieces", like depot does?
+
+One suggestion to get (2), is that I could create an intermediate
+directory, say "/package", that would be the union of various mounted
+physical disks (under /disk), and would contain things like:
+
+emacs-19.30/bin
+emacs-19.30/lib...
+gcc-2.7.3/bin...
+fileutils-5.8/man...
+site/sbin/useful_perl_script
+
+et al. Then I would unionfs all the directories in the /package dir
+onto the root filesystem.
+
+This would have most of the advantages I'm getting from depot, namely,
+the ability to specify different precedences on different machines,
+so that I can try out emacs-19.31 on one workstation without
+disrupting the others.
+
+Is there a better way to do this? I do like the idea of three
+different hierarchies for files (under /disk, where I can see what is
+on each server; under /package, where I can see what is in each
+package; the GNU standard dirs, where I actually use the files), but I
+am hoping that there is something more elegant. Hmm. Maybe not.
+
+ mib> It should be possible to require only the etc directory to be
+ mib> per-system; there is no reason that bin and such should be
+ mib> non-shared at all.
+
+This is one point (for security), that would mandate the use of config
+files, so that the unionfs doesn't map /etc/some_important_file from
+another server.
+
+This is yet another thing that I'm looking forward to. Thanks. ;)
+
+- --Gordon
+
+- --
+Gordon Matzigkeit | Heck, it was only a TOASTER... lighten up!
+gord@enci.ucalgary.ca | PGP mail preferred... finger me for my key.
+Keyprint: D5 66 08 E0 4D F4 D7 7B 8A C8 8A 9C 7F 39 25 A7 - ID 339ABEB9
+
+
+-----BEGIN PGP SIGNATURE-----
+Version: 2.6.2
+Comment: Processed by Mailcrypt 3.3, an Emacs/PGP interface
+
+iQCVAwUBMC/wcyFsfCEzmr65AQHubwP7BGVHqs9ACB8hFUqDdF2oWu/lLq1hW/Oa
+qra2ZfcKfIZq9hIM4tLRJ0qCaiOVm5MGLgH7Yax+ZyOPb4K0fCObzk1XY5b0enhV
+9SR70UZ7Qm7MXj+PFCp5lxvrNiaFXMbil0EN5FQEvH9kUp0ed1NWcaXGqTK6gezm
+YBUumt2Zadk=
+=6f2c
+-----END PGP SIGNATURE-----
+
+
+
+
+From: mib@duality.gnu.ai.mit.edu (Michael I. Bushnell, p/BSG)
+Newsgroups: gnu.misc.discuss
+Subject: Re: GNU vs. Linux FSSTND conflict?
+Date: 16 Aug 1995 14:43:47 GMT
+In-reply-to: gord@enci.ucalgary.ca's message of 14 Aug 1995 18:55:20 -0600
+
+In article <npka8gj893.fsf@enci.ucalgary.ca> gord@enci.ucalgary.ca (Gord Matzig
+keit) writes:
+
+ The way I think I'll be setting up my Hurd machine is to have all the
+ physical disks mounted under "/disk", each containing a fragment of
+ the filesystem.
+
+Our idea is to do something roughly like this.
+
+ 1) control files, as far as determining precedence, and what can and
+ cannot be shadowed (for collision resolution), and what is just
+ auxilliary info (like CVS directories in the site package, which
+ should not be mapped onto the software environment)
+
+Yes, the relevant translator will support a *rich* set of semantics
+for this kind of things specified by a control file.
+
+ 2) packages. Is there some slick way to divide the filesystem into
+ "package pieces", like depot does?
+
+We're going to do this; rms and I have worked out a usable scheme that
+meets all the necessary goals.
+
+The physical location of files has to be reflected by sharing rules
+(see the GNU makefile standards); users have to be able to see all the
+files relevant to a particular program easily; programs have to be
+easily de-installed. We have a scheme that meets these three.
+
+Michael
diff --git a/unsorted/hurd-migr b/unsorted/hurd-migr
new file mode 100644
index 00000000..ce36c86c
--- /dev/null
+++ b/unsorted/hurd-migr
@@ -0,0 +1,141 @@
+Path: usenet.ee.pdx.edu!cs.uoregon.edu!sgiblab!swrinde!howland.reston.ans.net!E
+U.net!Germany.EU.net!netmbx.de!sietec.de!news!jh
+From: jh@poseidon.sietec.de (Jochen Roger Hayek)
+Newsgroups: gnu.misc.discuss
+Subject: HURD & migration facilities
+Date: 24 Oct 1994 15:12:34 GMT
+Organization: Sietec Systemtechnik, Berlin
+Lines: 16
+Distribution: world
+Message-ID: <JH.94Oct24161234@poseidon.sietec.de>
+Reply-To: Jochen.Roger.Hayek@sietec.de
+NNTP-Posting-Host: sunmiet3.sietec.de
+
+I read an article from acm's sigops vol. 28, number 4 this weekend, having the
+title:
+
+ a brief survey of systems providing
+ process or object migration facilities
+ by Mark Nuttall
+
+I found it very instructive.
+
+I think process / object migration should be considered for HURD, too,
+and it's important to look at that before supporting / emulating
+UNIX's fork and inherited open file descriptors,
+because those features might get contradictory if not carefully designed.
+
+Regards esp. to the HURD folks
+
+JH
+
+Path: usenet.ee.pdx.edu!cs.uoregon.edu!sgiblab!spool.mu.edu!bloom-beacon.mit.ed
+u!ai-lab!life.ai.mit.edu!mib
+From: mib@churchy.gnu.ai.mit.edu (Michael I Bushnell)
+Newsgroups: gnu.misc.discuss
+Subject: Re: HURD & migration facilities
+Date: 24 Oct 1994 18:10:25 GMT
+Organization: Free Software Foundation, Cambridge, MA
+Lines: 27
+Distribution: world
+Message-ID: <MIB.94Oct24141025@churchy.gnu.ai.mit.edu>
+References: <JH.94Oct24161234@poseidon.sietec.de>
+NNTP-Posting-Host: churchy.gnu.ai.mit.edu
+In-reply-to: jh@poseidon.sietec.de's message of 24 Oct 1994 15:12:34
+ GMT
+
+In article <JH.94Oct24161234@poseidon.sietec.de> jh@poseidon.sietec.de (Jochen
+Roger Hayek) writes:
+
+ I think process / object migration should be considered for HURD, too,
+ and it's important to look at that before supporting / emulating
+ UNIX's fork and inherited open file descriptors,
+ because those features might get contradictory if not carefully designed.
+
+Process migration is not a problem for the Hurd--it's a problem for
+Mach. If a Mach task can be correctly migrated, then there is no
+problem.
+
+However, I want to do more than that with the Hurd; I want to have a
+collection of machines (I think I'll call it a ``Collective'') appear
+as a single machine. (Shades of amoeba here.)
+
+This is the first (and harder) task--making a single global space of
+pids, etc.
+
+The second (and easier) task is migration.
+
+ -mib
+--
++1 617 623 3248 (H) | En arche en ho logos,
++1 617 253 8568 (W) -+- kai ho logos en pros ton theon,
+1105 Broadway | kai theos en ho logos.
+Somerville, MA 02144 | Kai ho logos sarx egeneto,
+mib@gnu.ai.mit.edu | kai eskenosen en hemin.
+
+Newsgroups: gnu.misc.discuss
+Path: usenet.ee.pdx.edu!cs.uoregon.edu!reuter.cse.ogi.edu!psgrain!agora!hermes.
+rdrop.com!erich
+From: erich@uruk.org (Erich Boleyn)
+Subject: Re: HURD & migration facilities
+Sender: news@agora.rdrop.com (David Greenman)
+Nntp-Posting-Host: uruk.org
+Organization: RainDrop Laboratories
+Message-ID: <ERICH.94Oct29093537@uruk.org>
+References: <JH.94Oct24161234@poseidon.sietec.de>
+ <MIB.94Oct24141025@churchy.gnu.ai.mit.edu>
+In-Reply-To: mib@churchy.gnu.ai.mit.edu's message of 24 Oct 1994 18:10:25 GMT
+Date: Sat, 29 Oct 1994 16:35:37 GMT
+Lines: 50
+
+
+In article <MIB.94Oct24141025@churchy.gnu.ai.mit.edu> mib@churchy.gnu.ai.mit.ed
+u (Michael I Bushnell) writes:
+
+ Process migration is not a problem for the Hurd--it's a problem for
+ Mach. If a Mach task can be correctly migrated, then there is no
+ problem.
+
+ However, I want to do more than that with the Hurd; I want to have a
+ collection of machines (I think I'll call it a ``Collective'') appear
+ as a single machine. (Shades of amoeba here.)
+
+Great! (I think we talked about this before...)
+
+ This is the first (and harder) task--making a single global space of
+ pids, etc.
+
+This point seems somewhat questionable. Maybe we're thinking about
+the same idea in the long run, but I don't think that migrating
+data about the whole system around would be very useful...
+I mean, you still want a very large collective to work, though it
+could well get bogged down by the details of huge amounts of info.
+
+I think a more optimal (and more practical) approach would be to:
+
+Create a model of a "user context" that keeps track across multiple
+machines what resources and programs a user is working with.
+
+There would also be publically known "services" that would be advertised.
+Note that "advertising" is a specific activity that is usually not
+performed, unless one desires to do so.
+
+Anything else is really of little or no concern except to a local group of
+machines (for resource-balancing issues). So machines would automatically
+keep in touch with other nearby machines, but it would be modulated by
+distance.
+
+The big question is this (and for that matter, other models) is that
+of authentication in some kind of reasonably reliable manner.
+
+ The second (and easier) task is migration.
+
+Agreed.
+
+Erich
+
+--
+Erich Stefan Boleyn \ Mad Genius wanna-be, CyberMuffin
+Mathematician, Software Engineer \ slavering computer nerd
+Internet E-mail: <erich@uruk.org> \ "Forget Artificial Intelligence,
+Motto: "I'll live forever or die trying" \ I want the real thing!"
diff --git a/user.mdwn b/user.mdwn
new file mode 100644
index 00000000..9c965af2
--- /dev/null
+++ b/user.mdwn
@@ -0,0 +1,21 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+[[!meta title="User Pages"]]
+
+[[!inline
+pages=none
+show=-1
+feeds=no
+actions=yes
+rootpage="user" postformtext="Add a new user page titled:"]]
+
+[[!map pages="user/* and !user/*/*"
+show=title]]
diff --git a/user.old/AaaaaAaaaaAaa.mdwn b/user.old/AaaaaAaaaaAaa.mdwn
deleted file mode 100644
index 0fba0124..00000000
--- a/user.old/AaaaaAaaaaAaa.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: aaaaa aaaaa aaa
-* Email: <aaa@millionsofitemsNOSPAM.com>
-* Company Name: eee
-* Company URL: <http://aa.com>
-* Location: [[TokyoOffice]]
-* Country: Chile
-* Comment: www
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AaronHawley.mdwn b/user.old/AaronHawley.mdwn
deleted file mode 100644
index 88084c98..00000000
--- a/user.old/AaronHawley.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Aaron Hawley
-* Email: <aaron.hawley@beeman.k12.vtNOSPAM.us>
-* Company Name: RNESU
-* Company URL: <http://www.rnesu.org/>
-* Location: [[HurdUser]]
-* Country: USA
-* Other Wikis: [EmacsWiki](http://www.emacswiki.org/cgi-bin/emacs-en/AaronHawley)
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AdityaGupta.mdwn b/user.old/AdityaGupta.mdwn
deleted file mode 100644
index 003cb013..00000000
--- a/user.old/AdityaGupta.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: aditya gupta
-* Email: <adityasware1@indiatimesNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: India
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AdrianFifteen.mdwn b/user.old/AdrianFifteen.mdwn
deleted file mode 100644
index a240997e..00000000
--- a/user.old/AdrianFifteen.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: adrian 15
-* Email: <adrian15@rauleteNOSPAM.net>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Spain
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AidenWestlund.mdwn b/user.old/AidenWestlund.mdwn
deleted file mode 100644
index d2240abb..00000000
--- a/user.old/AidenWestlund.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Location: [[LondonOffice]]
-* Email: <Aiden@dokument-business.netNOSPAM.ru>
-* Company Name: <http://dokument-business.net.ru>
-* Country: Central African Republic
-* Name: Aiden Westlund
-* Company URL: <http://dokument-business.net.ru>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AlanMcIntyre.mdwn b/user.old/AlanMcIntyre.mdwn
deleted file mode 100644
index 5281bae1..00000000
--- a/user.old/AlanMcIntyre.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Alan [[McIntyre]]
-* Email: <fusion@thuule.pairNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AlaskaSubedi.mdwn b/user.old/AlaskaSubedi.mdwn
deleted file mode 100644
index 3bbadcc9..00000000
--- a/user.old/AlaskaSubedi.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Alaska Subedi
-* Email: <asubedi@depauwNOSPAM.edu>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AlastairPoole.mdwn b/user.old/AlastairPoole.mdwn
deleted file mode 100644
index e07a9d4a..00000000
--- a/user.old/AlastairPoole.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Alastair Poole
-* Email: <alastair@niplNOSPAM.net>
-* Company Name: NIPL
-* Company URL: <http://www.nipl.net>
-* Location: (Please specify office location)
-* Country: Australia
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AlejandroSanchez.mdwn b/user.old/AlejandroSanchez.mdwn
deleted file mode 100644
index 45c40c96..00000000
--- a/user.old/AlejandroSanchez.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: [[AlejandroS]]�nchez
-* Email: <raciel@x0undNOSPAM.net>
-* Company Name: Mono Hispano
-* Company URL: <http://mono.es.gnome.org>
-* Location: (Please specify office location)
-* Country: Spain
-* Comment: <http://www.ultimaorbita.com/raciel> <http://x-ezine.todolinux.com/users/raciel> <http://www.x-ezine.tk>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AlexBroot.mdwn b/user.old/AlexBroot.mdwn
deleted file mode 100644
index acf0e068..00000000
--- a/user.old/AlexBroot.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Alex Broot
-* Email: <alexsantr@yahooNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AlexLambert.mdwn b/user.old/AlexLambert.mdwn
deleted file mode 100644
index 036dedc8..00000000
--- a/user.old/AlexLambert.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Alex Lambert
-* Email: <aml111@york.acNOSPAM.uk>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: United Kingdom
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AlexanderPetry.mdwn b/user.old/AlexanderPetry.mdwn
deleted file mode 100644
index 85de71f6..00000000
--- a/user.old/AlexanderPetry.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Alexander Petry
-* Email: [a\_petry@informatik.uni-klNOSPAM.de](mailto:a_petry@informatik.uni-klNOSPAM.de)
-* Company Name: University of Kaiserslautern
-* Company URL: <http://www.uni-kl.de>
-* Location: [[HurdUser]]
-* Country: Germany
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AlexandreBuisse.mdwn b/user.old/AlexandreBuisse.mdwn
deleted file mode 100644
index 4092784b..00000000
--- a/user.old/AlexandreBuisse.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Alexandre Buisse
-* Email: <Nattfodd@gmailNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: France
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AlexandreDulaunoy.mdwn b/user.old/AlexandreDulaunoy.mdwn
deleted file mode 100644
index 542294cb..00000000
--- a/user.old/AlexandreDulaunoy.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Alexandre Dulaunoy
-* Email: <adulau@fooNOSPAM.be>
-* Company Name:
-* Company URL: <http://www.foo.be/>
-* Location: [[HurdUser]]
-* Country: Belgium
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AlfredHeimsoth.mdwn b/user.old/AlfredHeimsoth.mdwn
deleted file mode 100644
index 2063c391..00000000
--- a/user.old/AlfredHeimsoth.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Alfred Heimsoth
-* Email: <alfred.heimsoth@dormaNOSPAM.com>
-* Company Name: dorma
-* Company URL:
-* Location: [[SanJoseOffice]]
-* Country: Germany
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AmarionOttey.mdwn b/user.old/AmarionOttey.mdwn
deleted file mode 100644
index 2a932f1e..00000000
--- a/user.old/AmarionOttey.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Location: [[VirtualOffice]]
-* Email: <Amarion@prosto-buddism.netNOSPAM.ru>
-* Company Name: <http://prosto-buddism.net.ru>
-* Country: Germany
-* Name: Amarion Ottey
-* Company URL: <http://prosto-buddism.net.ru>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AnandChhatpar.mdwn b/user.old/AnandChhatpar.mdwn
deleted file mode 100644
index ff55e9d2..00000000
--- a/user.old/AnandChhatpar.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Anand Chhatpar
-* Email: <anandvcGETTHECAPSOUT@hotmailNOSPAM.com>
-* Company Name:
-* Company URL: <http://www.anandvc.com>
-* Location: [[HurdUser]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AndersBreindahl.mdwn b/user.old/AndersBreindahl.mdwn
deleted file mode 100644
index aafc0ca8..00000000
--- a/user.old/AndersBreindahl.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Anders Breindahl
-* Email: <skrewz@skrewzNOSPAM.dk>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Denmark
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AndreUlrich.mdwn b/user.old/AndreUlrich.mdwn
deleted file mode 100644
index a27b8bfd..00000000
--- a/user.old/AndreUlrich.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Andre Ulrich
-* Email: <andre.ulrich@stud.uni-goettingenNOSPAM.de>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Germany
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AndreasRottmann.mdwn b/user.old/AndreasRottmann.mdwn
deleted file mode 100644
index ea42781f..00000000
--- a/user.old/AndreasRottmann.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Andreas Rottmann
-* Email: <rotty@debianNOSPAM.org>
-* Company Name:
-* Company URL: <http://www.8ung.at/rotty>
-* Location: (Please specify office location)
-* Country: Austria
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AndrewCohen.mdwn b/user.old/AndrewCohen.mdwn
deleted file mode 100644
index 742b481d..00000000
--- a/user.old/AndrewCohen.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Andrew Cohen
-* Email: <andrew@herbndoveNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AndrewMitchell.mdwn b/user.old/AndrewMitchell.mdwn
deleted file mode 100644
index e1a83219..00000000
--- a/user.old/AndrewMitchell.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Andrew Mitchell
-* Email: <ajmitch@dunedin.lug.netNOSPAM.nz>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: New Zealand
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AndrewResch.mdwn b/user.old/AndrewResch.mdwn
deleted file mode 100644
index 1ddb0dbb..00000000
--- a/user.old/AndrewResch.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Andrew Resch
-* Email: <andrewresch@gmailNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Canada
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AndrewStanford.mdwn b/user.old/AndrewStanford.mdwn
deleted file mode 100644
index 2212edd3..00000000
--- a/user.old/AndrewStanford.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-* Name: Andrew Stanford
-* Email: <trdoutbreak@gmailNOSPAM.com>
-* Company Name: [[ElixarWEB]]
-* Company URL: <http://elixarweb.com>
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-----
-
---+ Links
-
-<table border="1" cellpadding="1" cellspacing="0">
- <tr>
- <td> Links </td>
- <td> Description </td>
- </tr>
- <tr>
- <td><a href="http://elixarweb.com" target="_top">http://elixarweb.com</a></td>
- <td> Web Hosting </td>
- </tr>
- <tr>
- <td><a href="http://insiteinsider.com" target="_top">http://insiteinsider.com</a></td>
- <td> Private site for Insite Employees </td>
- </tr>
- <tr>
- <td><a href="http://modemhelp.net" target="_top">http://modemhelp.net</a></td>
- <td> Info Site * Very Useful * </td>
- </tr>
-</table>
diff --git a/user.old/AnivarAravind.mdwn b/user.old/AnivarAravind.mdwn
deleted file mode 100644
index eff14bdd..00000000
--- a/user.old/AnivarAravind.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Anivar Aravind
-* Email: <anivar@riseupNOSPAM.net>
-* Company Name: Global Alternate Information Applictions (GAIA)
-* Company URL:
-* Location: [[VirtualOffice]]
-* Country: India
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AntonOussik.mdwn b/user.old/AntonOussik.mdwn
deleted file mode 100644
index 30e6c046..00000000
--- a/user.old/AntonOussik.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: [[AntonOussik]]
-* Email: anton oussik at gmail dot com
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: United Kingdom
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AnuragPatel.mdwn b/user.old/AnuragPatel.mdwn
deleted file mode 100644
index e5c3350a..00000000
--- a/user.old/AnuragPatel.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Anurag Patel
-* Email: <anurag@web.gnowledgeNOSPAM.org>
-* Company Name: HBCSE
-* Company URL: <http://www.hbcse.tifr.res.in>
-* Location: [[HurdUser]]
-* Country: India
-* Comment: Hi, I am a Hurd user, learning a lot from this wiki.
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/ArchieCarrico.mdwn b/user.old/ArchieCarrico.mdwn
deleted file mode 100644
index a6ace6fd..00000000
--- a/user.old/ArchieCarrico.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Archie Carrico
-* Email: <archie.carrico@us.armyNOSPAM.mil>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AriefMulya.mdwn b/user.old/AriefMulya.mdwn
deleted file mode 100644
index 2fd3ada2..00000000
--- a/user.old/AriefMulya.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Arief Mulya Utama
-* Email: [arief\_mulya@yahooNOSPAM.com](mailto:arief_mulya@yahooNOSPAM.com)
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Indonesia
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/ArturoRydberg.mdwn b/user.old/ArturoRydberg.mdwn
deleted file mode 100644
index bdde5810..00000000
--- a/user.old/ArturoRydberg.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Location: [[VirtualOffice]]
-* Email: <Arturo@indian-musik.comNOSPAM.ru>
-* Company Name: <http://indian-musik.com.ru>
-* Country: Hungary
-* Name: Arturo Rydberg
-* Company URL: <http://indian-musik.com.ru>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/AshishNarayan.mdwn b/user.old/AshishNarayan.mdwn
deleted file mode 100644
index 3718c440..00000000
--- a/user.old/AshishNarayan.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Ashish Narayan
-* Email: [narayan\_vicky@hotmailNOSPAM.com](mailto:narayan_vicky@hotmailNOSPAM.com)
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: India
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/BDouglasHilton.mdwn b/user.old/BDouglasHilton.mdwn
deleted file mode 100644
index 2e322591..00000000
--- a/user.old/BDouglasHilton.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: B Douglas Hilton
-* Email: <bdhilton@charterNOSPAM.net>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/BKSreeRanganath.mdwn b/user.old/BKSreeRanganath.mdwn
deleted file mode 100644
index 6483536e..00000000
--- a/user.old/BKSreeRanganath.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: B.K.Sree Ranganath
-* Email: <sreeranganath@gmailNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: India
-* Comment: I want to join in this group
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/BenAsselstine.mdwn b/user.old/BenAsselstine.mdwn
deleted file mode 100644
index 9b3244f4..00000000
--- a/user.old/BenAsselstine.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Ben Asselstine
-* Email: <benasselstine@canadaNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Canada
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/BertrikSikken.mdwn b/user.old/BertrikSikken.mdwn
deleted file mode 100644
index 01b3f890..00000000
--- a/user.old/BertrikSikken.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Bertrik Sikken
-* Email: <bertrik@zonnetNOSPAM.nl>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Netherlands
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/BijiPadmanaban.mdwn b/user.old/BijiPadmanaban.mdwn
deleted file mode 100644
index b3e827b1..00000000
--- a/user.old/BijiPadmanaban.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: biji padmanaban
-* Email: <venomsb@fastmailNOSPAM.fm>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: India
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/BlazePoteet.mdwn b/user.old/BlazePoteet.mdwn
deleted file mode 100644
index 57198224..00000000
--- a/user.old/BlazePoteet.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Location: [[LondonOffice]]
-* Email: <Blaze@viborg.orgNOSPAM.ru>
-* Company Name: <http://viborg.org.ru>
-* Country: Indonesia
-* Name: Blaze Poteet
-* Company URL: <http://viborg.org.ru>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/BorisBukowski.mdwn b/user.old/BorisBukowski.mdwn
deleted file mode 100644
index e7688332..00000000
--- a/user.old/BorisBukowski.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Boris Bukowski
-* Email: <bb@big1NOSPAM.de>
-* Company Name: lycos
-* Company URL: <http://www.lycos.de>
-* Location: (Please specify office location)
-* Country: Algeria
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/BradDixon.mdwn b/user.old/BradDixon.mdwn
deleted file mode 100644
index da2109e1..00000000
--- a/user.old/BradDixon.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Brad Dixon
-* Email: <bdixon@yahooNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: USA
-* Comment: Fan of [[TWiki/GnuSkinPlugin]]
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/CalvinMitchell.mdwn b/user.old/CalvinMitchell.mdwn
deleted file mode 100644
index 41c8afb0..00000000
--- a/user.old/CalvinMitchell.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-* Name: Calvin Mitchell
-* Email: <calvin674@clmitchellNOSPAM.net>
-* Company Name: Calvin's Dot Net
-* Company URL: <http://www.clmitchell.net>
-* Location: [[HurdUser]]
-* Country: USA
-* Comment: Running Hurd on Dell Dimension XPS R450 with DVDROM, CDR, Zip drive, Aureal Vortex 8830, STB nVidia TNT 1.10 &amp; 80GB HD, 3c509 Etherlink III
-
-My Hurd Blog: <http://hurdimam.blogspot.com/>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/CamResu.mdwn b/user.old/CamResu.mdwn
deleted file mode 100644
index de41cc8d..00000000
--- a/user.old/CamResu.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: C. R.
-* Email: <vs5502@hotmailNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: [[VirtualOffice]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/CarenTang.mdwn b/user.old/CarenTang.mdwn
deleted file mode 100644
index 5b9bad2f..00000000
--- a/user.old/CarenTang.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Caren Tang
-* Email: [caren\_tang@hotmailNOSPAM.com](mailto:caren_tang@hotmailNOSPAM.com)
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Hong Kong
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/CarlBingel.mdwn b/user.old/CarlBingel.mdwn
deleted file mode 100644
index 626fb591..00000000
--- a/user.old/CarlBingel.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Carl Bingel
-* Email: <bingel@dacomNOSPAM.se>
-* Company Name:
-* Company URL:
-* Location: [[VasterasOffice]]
-* Country: Sweden
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/CarlosM.mdwn b/user.old/CarlosM.mdwn
deleted file mode 100644
index 8e8cd8c4..00000000
--- a/user.old/CarlosM.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Carlos Mestre Gonz�lez
-* Email: <faraox@gulicNOSPAM.org>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Spain
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/CarlosPoker.mdwn b/user.old/CarlosPoker.mdwn
deleted file mode 100644
index e70acf9f..00000000
--- a/user.old/CarlosPoker.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Carlos Poker
-* Email: <carlospoker@uk2NOSPAM.net>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: United Kingdom
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/CasadevallM.mdwn b/user.old/CasadevallM.mdwn
deleted file mode 100644
index 3b7de971..00000000
--- a/user.old/CasadevallM.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Michael Casadevall
-* Email: <mac7524@ritNOSPAM.edu>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/CharlieJordan.mdwn b/user.old/CharlieJordan.mdwn
deleted file mode 100644
index 0c593583..00000000
--- a/user.old/CharlieJordan.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Charlie Jordan
-* Email: <charles.jordan@sunNOSPAM.com>
-* Company Name: Sun Microsystems, Inc.
-* Company URL:
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/CherryGeorgeMathew.mdwn b/user.old/CherryGeorgeMathew.mdwn
deleted file mode 100644
index e89bcb24..00000000
--- a/user.old/CherryGeorgeMathew.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Cherry George Mathew
-* Email: <cherry@zyxNOSPAM.in>
-* Company Name:
-* Company URL:
-* Location:
-* Country:
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE = [[CherryGeorgeMathew]]
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/ChrisHarvey.mdwn b/user.old/ChrisHarvey.mdwn
deleted file mode 100644
index 5fe5817b..00000000
--- a/user.old/ChrisHarvey.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Chris Harvey
-* Email: <chrismo@optusnet.comNOSPAM.au>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Australia
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/ChristopheDevine.mdwn b/user.old/ChristopheDevine.mdwn
deleted file mode 100644
index fb441609..00000000
--- a/user.old/ChristopheDevine.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Christophe Devine
-* Email: <hurd@gnuppixNOSPAM.org>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: France
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/ChristopherBodenstein.mdwn b/user.old/ChristopherBodenstein.mdwn
deleted file mode 100644
index 7ef037bd..00000000
--- a/user.old/ChristopherBodenstein.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Christopher Bodenstein
-* Email: <cb@physicmanNOSPAM.net>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Belgium
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/ConanRehert.mdwn b/user.old/ConanRehert.mdwn
deleted file mode 100644
index 558c829e..00000000
--- a/user.old/ConanRehert.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Conan Rehert
-* Email: <ertnecwork@gmailNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/DabianHurd.mdwn b/user.old/DabianHurd.mdwn
deleted file mode 100644
index bad831b7..00000000
--- a/user.old/DabianHurd.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Dabian Hurd
-* Email: <mi20061116-gnufans@yahooNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Denmark
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/DanAdrianValentin.mdwn b/user.old/DanAdrianValentin.mdwn
deleted file mode 100644
index dde6a14c..00000000
--- a/user.old/DanAdrianValentin.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Dan Adrian Valentin
-* Email: <godeatgod@gmailNOSPAM.com>
-* Company Name: Creeptick
-* Company URL: <http://adan.uvt.ro>
-* Location: [[HurdUser]]
-* Country: Romania
-* Comment: Whatever
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/DanielBaumann.mdwn b/user.old/DanielBaumann.mdwn
deleted file mode 100644
index 2d49976f..00000000
--- a/user.old/DanielBaumann.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Daniel Baumann
-* Email: <chillywilly@gnueNOSPAM.org>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/DaniloSegan.mdwn b/user.old/DaniloSegan.mdwn
deleted file mode 100644
index 1f6930a9..00000000
--- a/user.old/DaniloSegan.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Danilo �egan
-* Email: <danilo@kvotaNOSPAM.net>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Yugoslavia
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 96
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 26
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE = [[Main/DaniloSegan]]
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/DarenMackey.mdwn b/user.old/DarenMackey.mdwn
deleted file mode 100644
index de265079..00000000
--- a/user.old/DarenMackey.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Location: [[TokyoOffice]]
-* Email: <Daren@klavikordi.comNOSPAM.ru>
-* Company Name: <http://klavikordi.com.ru>
-* Country: Korea
-* Name: Daren Mackey
-* Company URL: <http://klavikordi.com.ru>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/DarioTrotman.mdwn b/user.old/DarioTrotman.mdwn
deleted file mode 100644
index a4675c8e..00000000
--- a/user.old/DarioTrotman.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Location: [[VirtualOffice]]
-* Email: <Dario@milky-way.orgNOSPAM.ru>
-* Company Name: <http://milky-way.org.ru>
-* Country: Malawi
-* Name: Dario Trotman
-* Company URL: <http://milky-way.org.ru>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/DarkArctic.mdwn b/user.old/DarkArctic.mdwn
deleted file mode 100644
index 62730d87..00000000
--- a/user.old/DarkArctic.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-* Name: Mike Caley
-* Email: <mjcaley@darkarcticNOSPAM.com>
-* Location: [[HurdUser]]
-* Country: Canada
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/DavidButler.mdwn b/user.old/DavidButler.mdwn
deleted file mode 100644
index 18646e79..00000000
--- a/user.old/DavidButler.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: David Butler
-* Email: <croepha@gmailNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/DavidEverly.mdwn b/user.old/DavidEverly.mdwn
deleted file mode 100644
index cbad75ff..00000000
--- a/user.old/DavidEverly.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: [[DavidEverly]]
-* Email: <test@testNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/DavidFahlander.mdwn b/user.old/DavidFahlander.mdwn
deleted file mode 100644
index 1e348510..00000000
--- a/user.old/DavidFahlander.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: David Fahlander
-* Email: <david@fahlanderNOSPAM.se>
-* Company Name:
-* Company URL:
-* Location: [[VasterasOffice]]
-* Country: Singapore
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/DavidRoches.mdwn b/user.old/DavidRoches.mdwn
deleted file mode 100644
index 15c1a931..00000000
--- a/user.old/DavidRoches.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: David Roches
-* Email: <niktzi@mailNOSPAM.ru>
-* Company Name:
-* Company URL:
-* Location: [[SanJoseOffice]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/DavidSmith.mdwn b/user.old/DavidSmith.mdwn
deleted file mode 100644
index 83f16987..00000000
--- a/user.old/DavidSmith.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: David Smith
-* Email: <davidsmith@acmNOSPAM.org>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/DavidWalter.mdwn b/user.old/DavidWalter.mdwn
deleted file mode 100644
index 887c9f14..00000000
--- a/user.old/DavidWalter.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: David Walter
-* Email: <dwalter@eaglepeakNOSPAM.net>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/DazElf.mdwn b/user.old/DazElf.mdwn
deleted file mode 100644
index 6aaa4a70..00000000
--- a/user.old/DazElf.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Daz Elf
-* Email: <elf@land5.nsuNOSPAM.ru>
-* Company Name: [[RaveLand]]
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Russia
-* Comment: Hurd Come ON!
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/DeSc.mdwn b/user.old/DeSc.mdwn
deleted file mode 100644
index dbc7e5a9..00000000
--- a/user.old/DeSc.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Dennis Schreiber
-* Email: <dennis@hamburg.gnuuNOSPAM.de>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Germany
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/DeepakGoel.mdwn b/user.old/DeepakGoel.mdwn
deleted file mode 100644
index 73949713..00000000
--- a/user.old/DeepakGoel.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-* Name: Deepak Goel
-* Email: <deego@glue.umdNOSPAM.edu>
-* Company Name:
-* Company URL: <http://deego.gnufans.org/~deego/>
-* Location: [[SanJoseOffice]]
-* Country: USA
-* Comment: M-x all-hail-gnu-hurd
-
-My ongoing step-by-step hurd/grub installation: <http://deego.gnufans.org/~deego/pub/hurd/install-guide/install.txt>. The parent directory has some more stuff. I usually point my pages on other wikis to the one on emacswiki :) -- <http://www.emacswiki.org/cgi-bin/wiki.pl?DeepakGoel> --- not that I have much stuff on that page either.
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/DerekDavies.mdwn b/user.old/DerekDavies.mdwn
deleted file mode 100644
index e46ca2d4..00000000
--- a/user.old/DerekDavies.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-* Name: Derek Davies
-* Email: <ddavies@ddaviesNOSPAM.net>
-* Home URL: <http://www.ddavies.net/>
-* Location: [[HurdUser]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
-
-----
-
-My Picture: <http://www.ddavies.net/ddavies/derek.html>
-
--- [[DerekDavies]] - 04 Jan 2003
diff --git a/user.old/DeviceRandom.mdwn b/user.old/DeviceRandom.mdwn
deleted file mode 100644
index 5071b017..00000000
--- a/user.old/DeviceRandom.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: massimo sandal
-* Email: <devicerandom@gmailNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Italy
-* Comment: 25-y.o. ph.d. student on protein biophysics. linux user since 2004 (not that much).
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/DmitriAlenitchev.mdwn b/user.old/DmitriAlenitchev.mdwn
deleted file mode 100644
index 6b750eab..00000000
--- a/user.old/DmitriAlenitchev.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Dmitri Alenitchev
-* Email: <dmitri@gnuNOSPAM.org>
-* Company Name: Digital Worlds
-* Company URL:
-* Location: (Please specify office location)
-* Country: Russia
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/DmitryZh.mdwn b/user.old/DmitryZh.mdwn
deleted file mode 100644
index 563c81cf..00000000
--- a/user.old/DmitryZh.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-* Name: Dmitry Zh
-* Email: da.elf@mail[NOSPAM].ru
-
-* Language: Russian &amp; English
-* Location: Novisibirsk
-* Country: Russia
-* Comment: Hey! I like GNU Hurd, It would make world better!
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Optionally write protect your home page: (set it to your %
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/DougEckhart.mdwn b/user.old/DougEckhart.mdwn
deleted file mode 100644
index 853712ff..00000000
--- a/user.old/DougEckhart.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Douglas Eckhart
-* Email: [doug\_e@innovasicNOSPAM.com](mailto:doug_e@innovasicNOSPAM.com)
-* Company Name: Innovasic, Inc.
-* Company URL:
-* Location: Albuquerque, New Mexico
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/DucOd.mdwn b/user.old/DucOd.mdwn
deleted file mode 100644
index fb517aaa..00000000
--- a/user.old/DucOd.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: ducOd
-* Email: <ducod@telusNOSPAM.net>
-* Company Name:
-* Company URL:
-* Location: [[VirtualOffice]]
-* Country: Canada
-* Comment: I am a nubie.:) Please don't be cruel, I need help.
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/DuncanInnes.mdwn b/user.old/DuncanInnes.mdwn
deleted file mode 100644
index eb5820da..00000000
--- a/user.old/DuncanInnes.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Duncan Innes
-* Email: <duncan@innesNOSPAM.net>
-* Company Name: innes.net ltd
-* Company URL:
-* Location: (Please specify office location)
-* Country: United Kingdom
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/EdBorasky.mdwn b/user.old/EdBorasky.mdwn
deleted file mode 100644
index d5ea307c..00000000
--- a/user.old/EdBorasky.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Ed Borasky
-* Email: <znmeb@cesmailNOSPAM.net>
-* Company Name: Borasky Research
-* Company URL: <http://www.borasky-research.net/>
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/EduardoMartn.mdwn b/user.old/EduardoMartn.mdwn
deleted file mode 100644
index f37e84d0..00000000
--- a/user.old/EduardoMartn.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Eduardo Mart�n
-* Email: <emrojo@satecNOSPAM.es>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Spain
-* Comment: Hola, gente!!
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/EldonKoyle.mdwn b/user.old/EldonKoyle.mdwn
deleted file mode 100644
index 1d25245b..00000000
--- a/user.old/EldonKoyle.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Eldon Koyle
-* Email: <ekoyle@gmailNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/EnriqueJenks.mdwn b/user.old/EnriqueJenks.mdwn
deleted file mode 100644
index 00d5aacf..00000000
--- a/user.old/EnriqueJenks.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Location: [[TokyoOffice]]
-* Email: <Enrique@p-dictionary.netNOSPAM.ru>
-* Company Name: <http://p-dictionary.net.ru>
-* Country: Bulgaria
-* Name: Enrique Jenks
-* Company URL: <http://p-dictionary.net.ru>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/ErnstRohlicek.mdwn b/user.old/ErnstRohlicek.mdwn
deleted file mode 100644
index 435d8826..00000000
--- a/user.old/ErnstRohlicek.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Ernst Rohlicek jun.
-* Email: <ernst.rohlicek@inodeNOSPAM.at>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Austria
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/EvvL.mdwn b/user.old/EvvL.mdwn
deleted file mode 100644
index 30c07168..00000000
--- a/user.old/EvvL.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Eric Olinger
-* Email: <EvvL@RustedHaloNOSPAM.net>
-* Company Name:
-* Company URL: <http://hurd.rustedhalo.net>
-* Location: [[HurdUser]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/FabriceBauzac.mdwn b/user.old/FabriceBauzac.mdwn
deleted file mode 100644
index 60657ea1..00000000
--- a/user.old/FabriceBauzac.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Fabrice Bauzac
-* Email: <fabrice.bauzac@wanadooNOSPAM.fr>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: France
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/FaridHajji.mdwn b/user.old/FaridHajji.mdwn
deleted file mode 100644
index ac641719..00000000
--- a/user.old/FaridHajji.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Farid Hajji
-* Email: <farid.hajji@ob.kampNOSPAM.net>
-* Company Name:
-* Company URL: <http://www.farid-hajji.net/address.html>
-* Location: (Please specify office location)
-* Country: Germany
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/FatBoy.mdwn b/user.old/FatBoy.mdwn
deleted file mode 100644
index b792ea3c..00000000
--- a/user.old/FatBoy.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Fat Boy
-* Email: <lllammme@hotmailNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/FengLi.mdwn b/user.old/FengLi.mdwn
deleted file mode 100644
index d6e19bb2..00000000
--- a/user.old/FengLi.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Feng Li
-* Email: <li.feng@mobilewayNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Singapore
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/FilipBrcic.mdwn b/user.old/FilipBrcic.mdwn
deleted file mode 100644
index 8aeb89d0..00000000
--- a/user.old/FilipBrcic.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Filip Brcic
-* Email: <brcha@users.sourceforgeNOSPAM.net>
-* Company Name: ETF Beograd
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Yugoslavia
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/FreeNSK.mdwn b/user.old/FreeNSK.mdwn
deleted file mode 100644
index 272a6ced..00000000
--- a/user.old/FreeNSK.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Nikolaos S. Karastathis
-* Email: <nsk@wikinerdsNOSPAM.org>
-* Company Name:
-* Company URL: <http://www.wikinerds.org>
-* Location: (Please specify office location)
-* Country: Other Country
-* Comment: webmaster of <http://portal.wikinerds.org>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/GaborGreif.mdwn b/user.old/GaborGreif.mdwn
deleted file mode 100644
index da569ea7..00000000
--- a/user.old/GaborGreif.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-* Name: Gabor Greif
-* Email: <gabor@macNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Germany
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
-* see <http://www.gwydiondylan.org>
diff --git a/user.old/GergelySzasz.mdwn b/user.old/GergelySzasz.mdwn
deleted file mode 100644
index fda15fc2..00000000
--- a/user.old/GergelySzasz.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Gergely Sz�sz\`
-* Email: <szaszg@hu.interNOSPAM.net>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Hungary
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/GerhardMuntingh.mdwn b/user.old/GerhardMuntingh.mdwn
deleted file mode 100644
index 307b633d..00000000
--- a/user.old/GerhardMuntingh.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Gerhard Muntingh
-* Email: <gerhardm@muntingh.tmfwebNOSPAM.nl>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Netherlands
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/GillesBidoli.mdwn b/user.old/GillesBidoli.mdwn
deleted file mode 100644
index 81d3b187..00000000
--- a/user.old/GillesBidoli.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Gilles Bidoli
-* Email: <gilles.bidoli@freeNOSPAM.fr>
-* Company Name:
-* Company URL:
-* Location: Tarbes
-* Country: France
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/GoodSmil.mdwn b/user.old/GoodSmil.mdwn
deleted file mode 100644
index a3242a27..00000000
--- a/user.old/GoodSmil.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: [[GoodSmil]]
-* Email: <phentermine92@mailNOSPAM.ru>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/GrantBow.mdwn b/user.old/GrantBow.mdwn
deleted file mode 100644
index e98675b1..00000000
--- a/user.old/GrantBow.mdwn
+++ /dev/null
@@ -1,78 +0,0 @@
-* Name: Grant Bowman
-* Login Name: [[GrantBow]]
-* Email: grantbow at grantbow dot com
-* Location: San Francisco Bay Area, CA, US
-* Comment: I welcome your comments on [[GrantBowComments]]!
-
-_Here's a list of topics I've contributed to at some point. They are listed by **the pages'** last update time. This list is extremely useful for tracking topics I probably want to contribute to again._
-
-<table>
- <tr>
- <td valign="top" width="50%">
- <p><nop></nop></p>
- <h4><a name="Hurd_Hurd_WebChanges_WebChanges_"> </a> Hurd ([[Hurd/WebChanges]]) </h4>
- <p>
- </p>
- <p> %SEARCH{ "%TOPIC%" web="Hurd" scope="text" nosearch="on" casesensitive="on" nosummary="on" nototal="on" regex="off" order="modified" reverse="on" limit="15" header="| <strong>Topic:</strong> | <strong>Changed:</strong> | <strong>By:</strong> |" format="| [[Webtopic]] | [[SCRIPTURLrdiffSCRIPTSUFFIXwebtopic]] - $rev | $wikiusername |"}% </p>
- <p>
- </p>
- </td>
- <td valign="top" width="50%">
- <p><nop></nop></p>
- <h4><a name="Distrib_Distrib_WebChanges_WebCh"> </a> Distrib ([[Distrib/WebChanges]]) </h4>
- <p> %SEARCH{ "%TOPIC%" web="Distrib" scope="text" nosearch="on" casesensitive="on" nosummary="on" nototal="on" regex="off" order="modified" reverse="on" limit="15" header="| <strong>Topic:</strong> | <strong>Changed:</strong> | <strong>By:</strong> |" format="| [[Webtopic]] | [[SCRIPTURLrdiffSCRIPTSUFFIXwebtopic]] - $rev | $wikiusername |"}% </p>
- <p>
- </p>
- </td>
- </tr>
- <tr>
- <td valign="top" width="50%">
- <p><nop></nop></p>
- <h4><a name="GNU_GNU_WebChanges_WebChanges_"> </a> GNU ([[GNU/WebChanges]]) </h4>
- <p> %SEARCH{ "%TOPIC%" web="GNU" scope="text" nosearch="on" casesensitive="on" nosummary="on" nototal="on" regex="off" order="modified" reverse="on" limit="10" header="| <strong>Topic:</strong> | <strong>Changed:</strong> | <strong>By:</strong> |" format="| [[Webtopic]] | [[SCRIPTURLrdiffSCRIPTSUFFIXwebtopic]] - $rev | $wikiusername |"}% </p>
- <p>
- </p>
- </td>
- <td valign="top" width="50%">
- <p>
- </p>
- </td>
- </tr>
- <tr>
- <td valign="top" width="50%">
- <p><nop></nop></p>
- <h4><a name="Main_Main_WebChanges_WebChanges_"> </a> Main ([[Main/WebChanges]]) </h4>
- <p> %SEARCH{ "%TOPIC%" web="Main" scope="text" nosearch="on" casesensitive="on" nosummary="on" nototal="on" regex="off" order="modified" reverse="on" limit="10" header="| <strong>Topic:</strong> | <strong>Changed:</strong> | <strong>By:</strong> |" format="| [[Webtopic]] | [[SCRIPTURLrdiffSCRIPTSUFFIXwebtopic]] - $rev | $wikiusername |"}% </p>
- <p>
- </p>
- </td>
- <td valign="top" width="50%">
- <p><nop></nop></p>
- <h4><a name="TWiki_TWiki_WebChanges_WebChange"> </a> TWiki ([[TWiki/WebChanges]]) </h4>
- <p> %SEARCH{ "%TOPIC%" web="TWiki" scope="text" nosearch="on" casesensitive="on" nosummary="on" nototal="on" regex="off" order="modified" reverse="on" limit="10" header="| <strong>Topic:</strong> | <strong>Changed:</strong> | <strong>By:</strong> |" format="| [[Webtopic]] | [[SCRIPTURLrdiffSCRIPTSUFFIXwebtopic]] - $rev | $wikiusername |"}% </p>
- <p>
- </p>
- </td>
- </tr>
-</table>
-
-[[TestingPlurals]] [[TestingPlural]] [[TePlSingular]] [[TePlSingulars]] -- Wow, it works one way! Another test on [[CommentTesting]]. Intriguing results.
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical sizing of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE = [[GrantBow]]
-* Default Release Edit lock to unchecked for [[TWiki/GnuSkinPlugin]]
- * Set RELEASEEDITLOCKCHECKBOX = unchecked
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
-
-Other pages: [[GrantBowComments]]
diff --git a/user.old/GrantBowComments.mdwn b/user.old/GrantBowComments.mdwn
deleted file mode 100644
index 3df86d00..00000000
--- a/user.old/GrantBowComments.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
-If you want to chat with me via the TWiki site, this is the place to do it. I feel better about doing it here since my user information can't be changed by someone unauthorized. Am I a bit paranoid about it? Maybe so, but I do have trust issues when it comes to computer security. I've been on both sides of the fence here. ;-)
-
--- [[Main/GrantBow]] - 01 Jan 2003
-
-From IRC:
-
-* I just got your email about the CVS. I haven't done that yet but I will. I had a one hour conversation with Peter about TWiki yesterday and have been trying to help him get the release out the door. I've been drafted (by choice)!
-
--- [[Main/GrantBow]] - 12 Jan 2003
-
-The project page for twiki-skins at Savannah should have all you need (wrt CVS et. al.).
-
-Aha, a new TWiki release! Great, we've been eagerly expecting it. Thanks for helping out with it, Grant! Time for me to try and squeeze in that [[TWiki/GnuSkin]] release I've been promising.
-
-Personally I'm currently preparing for a Hurd demo I'm doing with FSFeurope at [NordU/USENIX](http://www.nordu.org/NordU2003/) 2003 here in V�ster�s in Febuary.
-
--- [[Main/JoachimNilsson]] - 13 Jan 2003
-
-Grant, regarding your search efforts with the new Go/Search box. I might have missed informing you about how it actually works. Hover with the mouse over the search button or the search field to get help ...
-
-**_Briefly_**
-
-* Use <code>**/search**</code> or <code>**?search**</code> to denote a search
-* Use <code>**TopicName**</code> to use activate the previous Go-button
-
--- [[Main/JoachimNilsson]] - 20 Mar 2003
-
-Yeah, I didn't know that. Interesting indeed. Thanks for letting me know.
-
-Sorry I haven't been more active. I'm frustrated on several family, personal &amp; professional issues these days.
-
--- [[Main/GrantBow]] - 20 Mar 2003
diff --git a/user.old/GraysonSlaubaugh.mdwn b/user.old/GraysonSlaubaugh.mdwn
deleted file mode 100644
index cc5e76cc..00000000
--- a/user.old/GraysonSlaubaugh.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Location: [[VirtualOffice]]
-* Email: <Grayson@shuka.netNOSPAM.ru>
-* Company Name: <http://shuka.net.ru>
-* Country: Tajikistan
-* Name: Grayson Slaubaugh
-* Company URL: <http://shuka.net.ru>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/GregBuchholz.mdwn b/user.old/GregBuchholz.mdwn
deleted file mode 100644
index 3671de8f..00000000
--- a/user.old/GregBuchholz.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Greg Buchholz
-* Email: <hurd@sleepingsquirrelNOSPAM.org>
-* Company Name:
-* Company URL:
-* Location: [[VirtualOffice]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/GuillemJover.mdwn b/user.old/GuillemJover.mdwn
deleted file mode 100644
index a88b4820..00000000
--- a/user.old/GuillemJover.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Guillem Jover
-* Email: <guillem@debianNOSPAM.org>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Spain
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/GurkanSengun.mdwn b/user.old/GurkanSengun.mdwn
deleted file mode 100644
index 11a2dd9a..00000000
--- a/user.old/GurkanSengun.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Gurkan Sengun
-* Email: <gurkan@linuks.mineNOSPAM.nu>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Switzerland
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/HaavardFarberg.mdwn b/user.old/HaavardFarberg.mdwn
deleted file mode 100644
index d72808b3..00000000
--- a/user.old/HaavardFarberg.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: H�vard Farberg
-* Email: hfarberg at start dot no
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Norway
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/HansruediHaenni.mdwn b/user.old/HansruediHaenni.mdwn
deleted file mode 100644
index a93591f8..00000000
--- a/user.old/HansruediHaenni.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-* Name: Hansruedi Haenni
-* Email: <hh@enabNOSPAM.com>
-* Company Name: ENAB
-* Company URL: <http://enab.com/>
-* Location: [[VirtualOffice]]
-* Country: Switzerland
-* Comment:
-
-**_Persoal Links:_**
-
-* [[Test/HHsSandkasten]]
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/HelgeStenstroem.mdwn b/user.old/HelgeStenstroem.mdwn
deleted file mode 100644
index 7e58b1a0..00000000
--- a/user.old/HelgeStenstroem.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Helge Stenstr�m
-* Email: <helge.stenstrom@ericssonNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: Stockholm
-* Country: Sweden
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/HishamKotry.mdwn b/user.old/HishamKotry.mdwn
deleted file mode 100644
index 6f016adf..00000000
--- a/user.old/HishamKotry.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Hisham Kotry
-* Email: [etsh\_cucu@yahooNOSPAM.com](mailto:etsh_cucu@yahooNOSPAM.com)
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Egypt
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/IanSlinger.mdwn b/user.old/IanSlinger.mdwn
deleted file mode 100644
index 316a7a22..00000000
--- a/user.old/IanSlinger.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Ian Slinger
-* Email: <ian@slingersNOSPAM.org>
-* Company Name: SIJ Computing
-* Company URL:
-* Location: (Please specify office location)
-* Country: Australia
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/IsaacPraveen.mdwn b/user.old/IsaacPraveen.mdwn
deleted file mode 100644
index 9eb9a997..00000000
--- a/user.old/IsaacPraveen.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Isaac Praveen
-* Email: <pravei@gmailNOSPAM.com>
-* Company Name: turing lab
-* Company URL:
-* Location: [[HurdUser]]
-* Country: India
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/IssacCirino.mdwn b/user.old/IssacCirino.mdwn
deleted file mode 100644
index 517e557e..00000000
--- a/user.old/IssacCirino.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Location: [[HurdUser]]
-* Email: <Issac@tennis-table.comNOSPAM.ru>
-* Company Name: <http://tennis-table.com.ru>
-* Country: Germany
-* Name: Issac Cirino
-* Company URL: <http://tennis-table.com.ru>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/IvanShmakov.mdwn b/user.old/IvanShmakov.mdwn
deleted file mode 100644
index 9e673b78..00000000
--- a/user.old/IvanShmakov.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Ivan Shmakov
-* Email: <ivan@theory.asuNOSPAM.ru>
-* Company Name:
-* Company URL:
-* Location: [[VirtualOffice]]
-* Country: Russia
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 72
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/IvanZenkov.mdwn b/user.old/IvanZenkov.mdwn
deleted file mode 100644
index a65b6c08..00000000
--- a/user.old/IvanZenkov.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Ivan Zenkov
-* Email: <jan@kholmskNOSPAM.ru>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Russia
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/JadenPergola.mdwn b/user.old/JadenPergola.mdwn
deleted file mode 100644
index a86d78d4..00000000
--- a/user.old/JadenPergola.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Location: [[HurdUser]]
-* Email: <Jaden@n-life.netNOSPAM.ru>
-* Company Name: <http://n-life.net.ru>
-* Country: Congo
-* Name: Jaden Pergola
-* Company URL: <http://n-life.net.ru>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/JamesAMorrison.mdwn b/user.old/JamesAMorrison.mdwn
deleted file mode 100644
index 5f2e9c3d..00000000
--- a/user.old/JamesAMorrison.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-* Name: James A. Morrison
-* Email: <ja2morri@uwaterlooNOSPAM.ca>
-* Company Name: NITi
-* Company URL: <http://open.nit.ca>
-* Location: THUG Office
-* Country: Canada
diff --git a/user.old/JasonLathrop.mdwn b/user.old/JasonLathrop.mdwn
deleted file mode 100644
index 572748ee..00000000
--- a/user.old/JasonLathrop.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Jason Lathrop
-* Email: <swylbur@yahooNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/JasonMusgrove.mdwn b/user.old/JasonMusgrove.mdwn
deleted file mode 100644
index cff14f03..00000000
--- a/user.old/JasonMusgrove.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Jason Musgrove
-* Email: <j.l.musgrove2@wlv.acNOSPAM.uk>
-* Company Name: University of Wolverhampton
-* Company URL: <http://www.wlv.ac.uk/>
-* Location: [[HurdUser]]
-* Country: United Kingdom
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/JayConway.mdwn b/user.old/JayConway.mdwn
deleted file mode 100644
index d7bbd006..00000000
--- a/user.old/JayConway.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Jay Conway
-* Email: <jc@statprobeNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/JeanChristophePenalva.mdwn b/user.old/JeanChristophePenalva.mdwn
deleted file mode 100644
index 1d87dd2b..00000000
--- a/user.old/JeanChristophePenalva.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Jean-Christophe Penalva
-* Email: <penalva@cinesNOSPAM.fr>
-* Company Name: CINES
-* Company URL: <http://www.cines.fr>
-* Location: (Please specify office location)
-* Country: France
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/JeroenDekkers.mdwn b/user.old/JeroenDekkers.mdwn
deleted file mode 100644
index a8b59220..00000000
--- a/user.old/JeroenDekkers.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Jeroen Dekkers
-* Email: <jeroen@dekkersNOSPAM.cx>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Netherlands
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/JoachimNilsson.mdwn b/user.old/JoachimNilsson.mdwn
deleted file mode 100644
index c0fc6bd3..00000000
--- a/user.old/JoachimNilsson.mdwn
+++ /dev/null
@@ -1,65 +0,0 @@
-<table width="60%">
- <tr>
- <td>
- <ul>
- <li> Name: Joachim Nilsson </li>
- <li> Email: <a href="mailto:joachim@gnufansNOSPAM.org">joachim@gnufansNOSPAM.org</a></li>
- <li> Phone: +46(0)21-123348 </li>
- <li> Work: AB �ngpannef�reningen, V�ster�s, <a href="http://www.afconsult.com" target="_top">http://www.afconsult.com</a></li>
- <li> Home: <a href="http://gnufans.org/joachim/" target="_top">http://gnufans.org/joachim/</a></li>
- <li> Location: [[VasterasOffice]], <a href="http://www.sweden.com" target="_top">Sweden</a></li>
- <li> Comment: Local TWiki admin guy </li>
- </ul>
- </td>
- <td align="right" valign="top">
- <div align="right"><img alt="Portrait of Joachim" src="%ATTACHURLPATH%/jo.jpg" /></div>
- </td>
- </tr>
-</table>
-
-### <a name="Personal"> Personal </a>
-
-Hello, this is the page of [Joachim Nilsson](http://gnufans.org/joachim/). I'm a computer geek, dad (soon x2) with a lot of diverse interests. This wiki page displays some of them.
-
-I am employed as an embedded systems and GNU/Linux consultant for the Swedish company Aktiebolaget �ngpannef�reningen in the city of [V�ster�s](http://www.vasteras.se). Roughly, "The Incorporated Steamboiling Association". As you might have guessed it is a very old consultant firm, stemming from 1896. Today we cover almost all engineering disciplines. See more on <http://www.afconsult.com>
-
-Currently I have almost no time at all for any of my pet projects. Work and family is more than enough and may be so for the forseeable future.
-
-### <a name="Hardcore_stuff"> Hardcore stuff </a>
-
-I'm a bit involved in the GNU operating system, the Hurd. Having done some contractual work earlier on both the VxWorks Wind kernel, Linux and eCos I got interested in micro kernels. Being a free software enthusiast I am now focusing my energy on GNU/Hurd and GNU/Linux.
-
-One of my goals is to get my SMP machine at home booting the Hurd. This is now impossible due to the unsupported external Promise ATA-100 controller, or my on-board ATA-66 controller for that matter. I may try to hack some basic ATA-33 support for GNU Mach 1.3, but not anytime soon.
-
-### <a name="HTML_amp_friends"> </a> HTML &amp; friends
-
-I am the local [TWiki](http://twiki.org) admin guy. When I volonteered to run the Hurd wiki web on <http://vmlinux.org> I decided to create a suitable skin for it. The result is the TWiki:Plugins/GnuSkin. See it in action on the [[Hurd/WebHome]] web.
-
-More interesting things at [[JoachimNilssonTodo]]
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 110
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 32
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE = [[Main/JoachimNilsson]]
-* Revisions to show when using "View Diffs" in the GNUskin.
- * Set GNUSKINPLUGIN\_NUMREVISIONS = 2
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
-
-----
-
-For all the work done by me in this entire Wiki, or any other Wiki for that matter. The following terms apply.
-
- Copyright (C) 2002-2005 Joachim Nilsson <joachim@gnufans.org>,
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this copyright notice is preserved and the terms
- set in the GNU FDL, http://www.gnu.org/licenses/fdl.html, are followed.
diff --git a/user.old/JoanathanNarvaez.mdwn b/user.old/JoanathanNarvaez.mdwn
deleted file mode 100644
index be72406d..00000000
--- a/user.old/JoanathanNarvaez.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Joanathan Narvaez
-* Email: <jonaabd07@gmailNOSPAM.com>
-* Company Name: Arca-CSL
-* Company URL: <http://www.softcol.tk3.net>
-* Location: (Please specify office location)
-* Country: Colombia
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/JoePistritto.mdwn b/user.old/JoePistritto.mdwn
deleted file mode 100644
index 001df59d..00000000
--- a/user.old/JoePistritto.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Joe Pistritto
-* Email: <joepistritto@exciteNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/JoeSteeve.mdwn b/user.old/JoeSteeve.mdwn
deleted file mode 100644
index 04c76358..00000000
--- a/user.old/JoeSteeve.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Joe Steeve
-* Email: [joe\_steeve@gmxNOSPAM.net](mailto:joe_steeve@gmxNOSPAM.net)
-* Company Name: Terminus Graphics Studios Pvt. Ltd.
-* Company URL: <http://www.terminus.in/>
-* Location: [[HurdUser]]
-* Country: India
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/JohanRydberg.mdwn b/user.old/JohanRydberg.mdwn
deleted file mode 100644
index 40ccaaac..00000000
--- a/user.old/JohanRydberg.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Johan Rydberg
-* Email: <jrydberg@night.troubleNOSPAM.net>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Sweden
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/JohnAllsup.mdwn b/user.old/JohnAllsup.mdwn
deleted file mode 100644
index 99fb5b11..00000000
--- a/user.old/JohnAllsup.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: John Allsup
-* Email: <allsupj@for.mat.bham.acNOSPAM.uk>
-* Company Name: Grad Student (University of Birmingham, UK)
-* Company URL: <http://www.mat.bham.ac.uk>
-* Location: (Please specify office location)
-* Country: United Kingdom
-* Comment: Nearly finishing [[PhD]] student in models of Peano Arithmetic. Find computer OS architecture (among other computer related things) fascinating.
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/JohnGH.mdwn b/user.old/JohnGH.mdwn
deleted file mode 100644
index d7adf167..00000000
--- a/user.old/JohnGH.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: John Harrison
-* Email: [dpkg\_deb@yahooNOSPAM.com](mailto:dpkg_deb@yahooNOSPAM.com)
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: United Kingdom
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/JohnTalintyre.mdwn b/user.old/JohnTalintyre.mdwn
deleted file mode 100644
index dfec4727..00000000
--- a/user.old/JohnTalintyre.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: John Talintyre
-* Login Name: [[JohnTalintyre]]
-* Email: <john.talintyre@drkwNOSPAM.com>
-* Phone:
-* Department:
-* Location: (Please specify office location)
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 100
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 40
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/JonPortnoy.mdwn b/user.old/JonPortnoy.mdwn
deleted file mode 100644
index 0dff4348..00000000
--- a/user.old/JonPortnoy.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-* Name: Jon Portnoy
-* Email: <avenj@gentooNOSPAM.org>
-* Company Name: Gentoo
-* Company URL: <http://www.gentoo.org>
-* Location: [[HurdUser]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
-
-**_Messages_**
-
-Jon: Take a look at [[Distrib/WebHome]] and please suggest a new logo.
-
--- [[Main/JoachimNilsson]] - 30 Jun 2004
diff --git a/user.old/JonathanBFiliatrault.mdwn b/user.old/JonathanBFiliatrault.mdwn
deleted file mode 100644
index 5af02d4d..00000000
--- a/user.old/JonathanBFiliatrault.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Jonathan Bastien-Filiatrault
-* Email: <joe@dastyleNOSPAM.net>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Canada
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/JonathanShapiro.mdwn b/user.old/JonathanShapiro.mdwn
deleted file mode 100644
index 1994a72b..00000000
--- a/user.old/JonathanShapiro.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Jonathan Shapiro
-* Email: <shap@eros-osNOSPAM.org>
-* Company Name: The EROS Group, LLC
-* Company URL: <http://www.eros-os.org>
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/JoseMariaRuiz.mdwn b/user.old/JoseMariaRuiz.mdwn
deleted file mode 100644
index ff87b568..00000000
--- a/user.old/JoseMariaRuiz.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Jos� Mar�a Ruiz
-* Email: <nav3gant3@terraNOSPAM.es>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Spain
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/JoukeWitteveen.mdwn b/user.old/JoukeWitteveen.mdwn
deleted file mode 100644
index cadfc77f..00000000
--- a/user.old/JoukeWitteveen.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Jouke Witteveen
-* Email: <j.witteveen@gmailNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Netherlands
-* Comment: I would like to contribute to a wiki page on the progress of the Coyotos port. I know it's to early to speak of a port, but many ideas are in need of a placeholder, so the documentation can already start.
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/JuanAlvarez.mdwn b/user.old/JuanAlvarez.mdwn
deleted file mode 100644
index ca0e9a10..00000000
--- a/user.old/JuanAlvarez.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Juan Alvarez
-* Email: <jalvarez@fluidsignalNOSPAM.com>
-* Company Name: Fluid Signal S.A.
-* Company URL: <http://www.fluidsignal.com>
-* Location: (Please specify office location)
-* Country: Colombia
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/JuanAntonioSanchez.mdwn b/user.old/JuanAntonioSanchez.mdwn
deleted file mode 100644
index 7a88960c..00000000
--- a/user.old/JuanAntonioSanchez.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Juan Antonio S�nchez
-* Email: <ja.sanchezlopez@gmailNOSPAM.com>
-* Company Name: KA
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Spain
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/JuhaN.mdwn b/user.old/JuhaN.mdwn
deleted file mode 100644
index 6070ac52..00000000
--- a/user.old/JuhaN.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Juha Nyg�rd
-* Email: <juha.nygard1@netikkaNOSPAM.fi>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Finland
-* Comment: none
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/JuhoMantysaari.mdwn b/user.old/JuhoMantysaari.mdwn
deleted file mode 100644
index 729b2196..00000000
--- a/user.old/JuhoMantysaari.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Juho M�ntysaari
-* Email: <mantysaari@surfeuNOSPAM.fi>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Finland
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/JulienPUYDT.mdwn b/user.old/JulienPUYDT.mdwn
deleted file mode 100644
index 0286d692..00000000
--- a/user.old/JulienPUYDT.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Julien PUYDT
-* Email: <julien.puydt@club-internetNOSPAM.fr>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: France
-* Comment: Snark on #hurd, #hurdfr
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/JustinKoser.mdwn b/user.old/JustinKoser.mdwn
deleted file mode 100644
index 6df1162d..00000000
--- a/user.old/JustinKoser.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Justin Koser
-* Email: <jmk63@cornellNOSPAM.edu>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/KaiDziedzic.mdwn b/user.old/KaiDziedzic.mdwn
deleted file mode 100644
index 8aa31dd9..00000000
--- a/user.old/KaiDziedzic.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Location: [[HurdUser]]
-* Email: <Kai@skeytboarding.comNOSPAM.ru>
-* Company Name: <http://skeytboarding.com.ru>
-* Country: Macedonia
-* Name: Kai Dziedzic
-* Company URL: <http://skeytboarding.com.ru>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/KeatonMaclachlan.mdwn b/user.old/KeatonMaclachlan.mdwn
deleted file mode 100644
index fdfa52e1..00000000
--- a/user.old/KeatonMaclachlan.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Location: [[TokyoOffice]]
-* Email: <Keaton@prosto-buddism.netNOSPAM.ru>
-* Company Name: <http://prosto-buddism.net.ru>
-* Country: Estonia
-* Name: Keaton Maclachlan
-* Company URL: <http://prosto-buddism.net.ru>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/KellerF.mdwn b/user.old/KellerF.mdwn
deleted file mode 100644
index b0cf8706..00000000
--- a/user.old/KellerF.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: [[KellerF]]
-* Email: <r2q2@attbiNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Cyprus
-* Comment: hi
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/KevinKinnell.mdwn b/user.old/KevinKinnell.mdwn
deleted file mode 100644
index 86cf93c4..00000000
--- a/user.old/KevinKinnell.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Name: Kevin Kinnell
-* Email: <kejoki@netdoorNOSPAM.com>
-* Company Name:
-* Company URL:
-* Country: USA
-* Comment: Kevin is a %TWIKIWEB%.TWikiContributor and a core team member.
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Default state of the **_link_** check box in the attach file page:
- * Set ATTACHLINKBOX =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other %WIKITOOLNAME% users.
diff --git a/user.old/KurtBKaiser.mdwn b/user.old/KurtBKaiser.mdwn
deleted file mode 100644
index 8adae36c..00000000
--- a/user.old/KurtBKaiser.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Kurt B. Kaiser
-* Email: <kbk@shoreNOSPAM.net>
-* Company Name:
-* Company URL:
-* Location: Ipswich, MA
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/KurtKaiser.mdwn b/user.old/KurtKaiser.mdwn
deleted file mode 100644
index dbaa3a13..00000000
--- a/user.old/KurtKaiser.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Kurt B. Kaiser
-* Email: <kbk@shoreNOSPAM.net>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/LaloMartins.mdwn b/user.old/LaloMartins.mdwn
deleted file mode 100644
index 1b85e170..00000000
--- a/user.old/LaloMartins.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-* Name: [[LaloMartins]]
-* Email: <lalo@laranjaNOSPAM.org>
-* Company Name:
-* Company URL:
-* Location: [[VirtualOffice]]
-* Country: Brazil
-* Comment: # Python comment ; Guile comment // C++ comment /\* C comment \*/
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
-
-Welcome!
-
-Thanks for the suggestion on CVS checkouts on [[Mach/BuildingOskitMach]].
-
--- [[Main/GrantBow]] - 01 Jan 2003
diff --git a/user.old/LaudneyRen.mdwn b/user.old/LaudneyRen.mdwn
deleted file mode 100644
index 4562a2d6..00000000
--- a/user.old/LaudneyRen.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Laudney Ren
-* Email: [bin\_ren@myrealboxNOSPAM.com](mailto:bin_ren@myrealboxNOSPAM.com)
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: China
-* Comment: My interests lie in making Hurd a transparent distributed OS.
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/LeeItkin.mdwn b/user.old/LeeItkin.mdwn
deleted file mode 100644
index d889065b..00000000
--- a/user.old/LeeItkin.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Lee Itkin
-* Email: <lilyitkin@yahooNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: [[LondonOffice]]
-* Country: Albania
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/LeonardoPereira.mdwn b/user.old/LeonardoPereira.mdwn
deleted file mode 100644
index ac47c352..00000000
--- a/user.old/LeonardoPereira.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Leonardo Pereira
-* Email: <leonardolopespereira@gmailNOSPAM.com>
-* Company Name: PSL-RN
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Brazil
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/LeonelRugama.mdwn b/user.old/LeonelRugama.mdwn
deleted file mode 100644
index eb6f19e7..00000000
--- a/user.old/LeonelRugama.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Leonel Rugama
-* Email: <viliomo@yahooNOSPAM.com>
-* Company Name: MRG
-* Company URL:
-* Location: (Please specify office location)
-* Country: Spain
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/LisandroMineo.mdwn b/user.old/LisandroMineo.mdwn
deleted file mode 100644
index f16bb26f..00000000
--- a/user.old/LisandroMineo.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Location: [[LondonOffice]]
-* Email: <Lisandro@shuka.netNOSPAM.ru>
-* Company Name: <http://shuka.net.ru>
-* Country: Slovenia
-* Name: Lisandro Mineo
-* Company URL: <http://shuka.net.ru>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/LoganadenVelvindron.mdwn b/user.old/LoganadenVelvindron.mdwn
deleted file mode 100644
index e96cf8b0..00000000
--- a/user.old/LoganadenVelvindron.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Loganaden Velvindron
-* Email: <annaloda@yahoo.coNOSPAM.uk>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Other Country
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/LucaSaiu.mdwn b/user.old/LucaSaiu.mdwn
deleted file mode 100644
index f0c54ec4..00000000
--- a/user.old/LucaSaiu.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Luca Saiu
-* Email: <positron@gnuNOSPAM.org>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Italy
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/LucasNussbaum.mdwn b/user.old/LucasNussbaum.mdwn
deleted file mode 100644
index 1ddadc5d..00000000
--- a/user.old/LucasNussbaum.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Lucas Nussbaum
-* Email: <lnu@gnuNOSPAM.org>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: France
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/LuisBustamante.mdwn b/user.old/LuisBustamante.mdwn
deleted file mode 100644
index 8e5ed128..00000000
--- a/user.old/LuisBustamante.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Luis Bustamante
-* Email: luferbu at debian dot org
-* Company Name: Fluid Signal S.A.
-* Company URL: <http://www.fluidsignal.com>
-* Location: Medell�n
-* Country: Colombia
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE = %TWIKIWEB%.LuisBustamante
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/LuisMiguel.mdwn b/user.old/LuisMiguel.mdwn
deleted file mode 100644
index 472402fb..00000000
--- a/user.old/LuisMiguel.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Lu�s Miguel
-* Email: <maiguel@netvisaoNOSPAM.pt>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Portugal
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/LunaTic.mdwn b/user.old/LunaTic.mdwn
deleted file mode 100644
index ee66d989..00000000
--- a/user.old/LunaTic.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Fran�ois Joulaud
-* Email: <luna@bzhNOSPAM.net>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: France
-* Comment: Future Hurd User, very interested on thought about [[HurdNG]] and all those sort of vaporware. I hope to be able to participate... one day... sooner, better.
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/ManishSharma.mdwn b/user.old/ManishSharma.mdwn
deleted file mode 100644
index e7e7e92d..00000000
--- a/user.old/ManishSharma.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Manish Sharma
-* Email: <mailtomanish.sharma@gmailNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: India
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/ManuelMenal.mdwn b/user.old/ManuelMenal.mdwn
deleted file mode 100644
index efe2dba1..00000000
--- a/user.old/ManuelMenal.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Manuel Menal
-* Email: <mmenal@hurdfrNOSPAM.org>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: France
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/ManuelValderrama.mdwn b/user.old/ManuelValderrama.mdwn
deleted file mode 100644
index a5656a8d..00000000
--- a/user.old/ManuelValderrama.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-* Name: Manuel Pav�n Valderrrama
-* Email: <cp46tan@hotpopNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: Granada
-* Country: Spain
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
-
-Hello, Twiki !
diff --git a/user.old/MarcHuffnagle.mdwn b/user.old/MarcHuffnagle.mdwn
deleted file mode 100644
index 2a517d35..00000000
--- a/user.old/MarcHuffnagle.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Marc Huffnagle
-* Email: <enigma@cutter.shipNOSPAM.edu>
-* Company Name:
-* Company URL: <http://cutter.ship.edu>
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MarcOliverIhm.mdwn b/user.old/MarcOliverIhm.mdwn
deleted file mode 100644
index f2bcad17..00000000
--- a/user.old/MarcOliverIhm.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Marc-Oliver Ihm
-* Email: <ihm@onlineNOSPAM.de>
-* Company Name: Die Allgemeine Kreditversicherung
-* Company URL: <http://www.allgemeine-kredit.de>
-* Location: (Please specify office location)
-* Country: Germany
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MarcPoulhies.mdwn b/user.old/MarcPoulhies.mdwn
deleted file mode 100644
index db3eb485..00000000
--- a/user.old/MarcPoulhies.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: marc poulhi�s
-* Email: <marc.poulhies@epflNOSPAM.ch>
-* Company Name: none
-* Company URL:
-* Location: (Please specify office location)
-* Country: France
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MarceloCToyama.mdwn b/user.old/MarceloCToyama.mdwn
deleted file mode 100644
index 3dffe217..00000000
--- a/user.old/MarceloCToyama.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Marcelo C. Toyama
-* Email: <mctoyama@gmailNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Brazil
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MarcoGerards.mdwn b/user.old/MarcoGerards.mdwn
deleted file mode 100644
index 5964d40f..00000000
--- a/user.old/MarcoGerards.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Marco Gerards
-* Email: <marco@linuxrulezNOSPAM.nl>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Netherlands
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MarickIntl.mdwn b/user.old/MarickIntl.mdwn
deleted file mode 100644
index bb495517..00000000
--- a/user.old/MarickIntl.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Intl Marick
-* Email: <marickintl@hotmailNOSPAM.com>
-* Company Name: Marick, Intl
-* Company URL: <http://www.enhancelon.com>
-* Location: [[SanJoseOffice]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MarionWillow.mdwn b/user.old/MarionWillow.mdwn
deleted file mode 100644
index 1a10563e..00000000
--- a/user.old/MarionWillow.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: marion willow
-* Email: <marion@spiderweb.comNOSPAM.au>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Australia
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MarkMeyer.mdwn b/user.old/MarkMeyer.mdwn
deleted file mode 100644
index abd9e8c0..00000000
--- a/user.old/MarkMeyer.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Mark Meyer
-* Email: <mark.a.m@webNOSPAM.de>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Germany
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MarkusKaarn.mdwn b/user.old/MarkusKaarn.mdwn
deleted file mode 100644
index 165a10c0..00000000
--- a/user.old/MarkusKaarn.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Markus Kaarn
-* Email: <whois@listNOSPAM.ru>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MartinAnkerl.mdwn b/user.old/MartinAnkerl.mdwn
deleted file mode 100644
index 8f980665..00000000
--- a/user.old/MartinAnkerl.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Martin Ankerl
-* Email: <martin.ankerl@gmailNOSPAM.com>
-* Company Name:
-* Company URL: <http://martinus.geekisp.com/>
-* Location: (Please specify office location)
-* Country: Austria
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MartinWeaver.mdwn b/user.old/MartinWeaver.mdwn
deleted file mode 100644
index 492acb69..00000000
--- a/user.old/MartinWeaver.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-* Location: [[HurdUser]]
-* Email: <Martin@dont-explodeNOSPAM.com>
-* Country: Zimbabwe
-* Name: Martin Weaver
-* Company URL: <http://dont-explode.com>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MastrLynX.mdwn b/user.old/MastrLynX.mdwn
deleted file mode 100644
index 17447c4c..00000000
--- a/user.old/MastrLynX.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Ray Dryden
-* Email: <rayzbiz@mastrlynxNOSPAM.com>
-* Company Name: [[RayzBiz]] - [[MastrLynxMarketing]], Inc.
-* Company URL: <http://mastrlynx.com/>
-* Location: [[HurdUser]]
-* Country: USA
-* Comment: I need 'woody' iso version
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MatSei.mdwn b/user.old/MatSei.mdwn
deleted file mode 100644
index aed1c59f..00000000
--- a/user.old/MatSei.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Mathieu Seigneurin
-* Email: <matsei@tiscaliNOSPAM.fr>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: France
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MatheusMorais.mdwn b/user.old/MatheusMorais.mdwn
deleted file mode 100644
index 3bc93702..00000000
--- a/user.old/MatheusMorais.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Matheus Eduardo B. Morais
-* Email: <matheus.morais@gmailNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Brazil
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MathieuGauthierPilote.mdwn b/user.old/MathieuGauthierPilote.mdwn
deleted file mode 100644
index 1efc121d..00000000
--- a/user.old/MathieuGauthierPilote.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Mathieu Gauthier-Pilote
-* Email: <mathieu.g.p@videotronNOSPAM.ca>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Canada
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MattBur.mdwn b/user.old/MattBur.mdwn
deleted file mode 100644
index c6d61db5..00000000
--- a/user.old/MattBur.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Matt Bur
-* Email: <mateobur@gmailNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Argentina
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MattGrant.mdwn b/user.old/MattGrant.mdwn
deleted file mode 100644
index 6e7d4698..00000000
--- a/user.old/MattGrant.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-* Name: [[MattGrant]]
-* Email: <grant@seinfeld.arrowstreetNOSPAM.com>
-* Home Page: <http://seinfeld.arrowstreet.com>
-* Company Name: Arrowstreet Inc.
-* Company URL: <http://www.arrowstreet.com>
-* Location: Somerville,Ma.
-* Country: USA
-* Comment: Thats me with my first born kitty named Violet.![](http://seinfeld.arrowstreet.com/person/bwvio.jpg)
-
-I'm currently helping on a users guide for the Hurd. I'm doing this because the Hurd needs one and I enjoy using and documenting it.<br />
-
-<center>
- <h2>Check it Out</h2><a href="http://www.gnu.org/software/hurd/users-guide/using_gnuhurd.html"><h2>Here</h2></a></center>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
-
-* Set ALLOWTOPICCHANGE = [[MattGrant]]
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MatteoSacchi.mdwn b/user.old/MatteoSacchi.mdwn
deleted file mode 100644
index 096f4994..00000000
--- a/user.old/MatteoSacchi.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-* Name: Matteo Sacchi
-* Nick: mattex
-* E-Mail: [lord\_mattex@mumbainetNOSPAM.com](mailto:lord_mattex@mumbainetNOSPAM.com)
-* Location: Italy
-* Personal web: <http://www.mattex.tk>
diff --git a/user.old/MatteoSettenvini.mdwn b/user.old/MatteoSettenvini.mdwn
deleted file mode 100644
index f583dbab..00000000
--- a/user.old/MatteoSettenvini.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-* Name: Matteo Settenvini
-* Email: <matteo@member.fsfNOSPAM.org>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Italy
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MatthewRikard.mdwn b/user.old/MatthewRikard.mdwn
deleted file mode 100644
index c38bf229..00000000
--- a/user.old/MatthewRikard.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Matthew Rikard
-* Email: <mrikard@insitesupportNOSPAM.com>
-* Company Name: [[InSite]] Support
-* Company URL: <http://www.insitesupport.com/>
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MatthiasKoch.mdwn b/user.old/MatthiasKoch.mdwn
deleted file mode 100644
index 1dde30c5..00000000
--- a/user.old/MatthiasKoch.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Matthias Koch
-* Email: <Net@StarLine-IncNOSPAM.de>
-* Company Name: [[StarLine]]
-* Company URL: <http://www.StarLine-Net.de>
-* Location: (Please specify office location)
-* Country: Germany
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MauriceMcCarthy.mdwn b/user.old/MauriceMcCarthy.mdwn
deleted file mode 100644
index 8662d7f2..00000000
--- a/user.old/MauriceMcCarthy.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Maurice [[McCarthy]]
-* Email: <moss@mythic-beastsNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: United Kingdom
-* Comment: 1st booted GNU/Hurd October 2004
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MauricioMastrangelo.mdwn b/user.old/MauricioMastrangelo.mdwn
deleted file mode 100644
index 971f1596..00000000
--- a/user.old/MauricioMastrangelo.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Location: [[VasterasOffice]]
-* Email: <Mauricio@skeytboarding.comNOSPAM.ru>
-* Company Name: <http://skeytboarding.com.ru>
-* Country: Latvia
-* Name: Mauricio Mastrangelo
-* Company URL: <http://skeytboarding.com.ru>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MaximDesyatoff.mdwn b/user.old/MaximDesyatoff.mdwn
deleted file mode 100644
index c73c3b72..00000000
--- a/user.old/MaximDesyatoff.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Maxim Desyatoff
-* Email: <unruhig@gmailNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Ukraine
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MichaelAblassmeier.mdwn b/user.old/MichaelAblassmeier.mdwn
deleted file mode 100644
index 657600ae..00000000
--- a/user.old/MichaelAblassmeier.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Michael Ablassmeier
-* Email: <abi@grinserNOSPAM.de>
-* Company Name:
-* Company URL: <http://www.grinser.de/~abi/>
-* Location: [[HurdUser]]
-* Country: Germany
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MichaelAdams.mdwn b/user.old/MichaelAdams.mdwn
deleted file mode 100644
index 6a907d59..00000000
--- a/user.old/MichaelAdams.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Michael D. Adams
-* Email: <mdmkolbe@yahooNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MichaelFlickinger.mdwn b/user.old/MichaelFlickinger.mdwn
deleted file mode 100644
index 7ee9a78b..00000000
--- a/user.old/MichaelFlickinger.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Michael Flickinger
-* Email: <mjflick@gnuNOSPAM.org>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MichaelHan.mdwn b/user.old/MichaelHan.mdwn
deleted file mode 100644
index 5f5ad040..00000000
--- a/user.old/MichaelHan.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Michael Han
-* Email: <clayjar@gmailNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MichaelOberg.mdwn b/user.old/MichaelOberg.mdwn
deleted file mode 100644
index 213e3f1c..00000000
--- a/user.old/MichaelOberg.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Michael Oberg
-* Email: <oberg@coloradoNOSPAM.edu>
-* Company Name: University of Colorado
-* Company URL: <http://csc.cs.colorado.edu>
-* Location: [[VirtualOffice]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MichaelT.mdwn b/user.old/MichaelT.mdwn
deleted file mode 100644
index 9357d381..00000000
--- a/user.old/MichaelT.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Michael Teichgr�ber
-* Email: <gnubert@webNOSPAM.de>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Germany
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MichalSuchanek.mdwn b/user.old/MichalSuchanek.mdwn
deleted file mode 100644
index 3e3c70e7..00000000
--- a/user.old/MichalSuchanek.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Michal Suchanek
-* Email: [hramrach\_L@centrumNOSPAM.cz](mailto:hramrach_L@centrumNOSPAM.cz)
-* Company Name:
-* Company URL:
-* Location: Prague
-* Country: Czech Republic
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MikeMannix.mdwn b/user.old/MikeMannix.mdwn
deleted file mode 100644
index 1a56f2fc..00000000
--- a/user.old/MikeMannix.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-* Name: Mike Mannix
-* Email: <mike@gearcoreNOSPAM.com>
-* Company Name: AIR / AIRservices
-* Country: USA
-* TWiki Comments: xtreme fan
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Size of **_text edit box_**:
- * Set EDITBOXWIDTH = 70
- * Set EDITBOXHEIGHT = 21
-* Default state of **_Attach file link_** checkbox:
- * Set ATTACHLINKBOX =
-* **_Write-protect this page_** (optional):
- * Set ALLOWTOPICCHANGE =
-
-* Directory of twiki.org members: [[TWikiUsers]]
diff --git a/user.old/MiltonThomas.mdwn b/user.old/MiltonThomas.mdwn
deleted file mode 100644
index a787c6c6..00000000
--- a/user.old/MiltonThomas.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Milton Thomas
-* Email: <miltonct@bellsouthNOSPAM.net>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MohamedNabilMahmoud.mdwn b/user.old/MohamedNabilMahmoud.mdwn
deleted file mode 100644
index 82262a76..00000000
--- a/user.old/MohamedNabilMahmoud.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: [[MohamedNabilMahmoud]]
-* Email: <m.nabil.hafez@gmailNOSPAM.com>
-* Company Name: [[SmartLabz]]
-* Company URL: <http://www.Smartlabz.com>
-* Location: (Please specify office location)
-* Country: Egypt
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MonteKiehm.mdwn b/user.old/MonteKiehm.mdwn
deleted file mode 100644
index ef86e862..00000000
--- a/user.old/MonteKiehm.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Location: [[HurdUser]]
-* Email: <Monte@n-life.netNOSPAM.ru>
-* Company Name: <http://n-life.net.ru>
-* Country: Ethiopia
-* Name: Monte Kiehm
-* Company URL: <http://n-life.net.ru>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/MosheGentry.mdwn b/user.old/MosheGentry.mdwn
deleted file mode 100644
index 0e5b268f..00000000
--- a/user.old/MosheGentry.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-* Location: [[HurdUser]]
-* Email: <Moshe@dont-explodeNOSPAM.com>
-* Country: Zimbabwe
-* Name: Moshe Gentry
-* Company URL: <http://dont-explode.com>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/NagromNamreh.mdwn b/user.old/NagromNamreh.mdwn
deleted file mode 100644
index 8dfb6c06..00000000
--- a/user.old/NagromNamreh.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: [[NagromNamreh]]
-* Email: <r2q2@comcastNOSPAM.net>
-* Company Name: Fifalde Research Group
-* Company URL: <http://frg.mersiene.ru>
-* Location: [[HurdUser]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/NathanielPangilinan.mdwn b/user.old/NathanielPangilinan.mdwn
deleted file mode 100644
index a490815e..00000000
--- a/user.old/NathanielPangilinan.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Nathaniel Pangilinan
-* Email: <nathanielpangilinan9@hotmailNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Australia
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/NedWait.mdwn b/user.old/NedWait.mdwn
deleted file mode 100644
index 6fbc9788..00000000
--- a/user.old/NedWait.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Ned Wait
-* Email: <newiii@mail.spaNOSPAM.net>
-* Company Name: The Adirondack Trust Company
-* Company URL: <http://www.adirondacktrust.com>
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/NeilDoekkalfar.mdwn b/user.old/NeilDoekkalfar.mdwn
deleted file mode 100644
index a8504b95..00000000
--- a/user.old/NeilDoekkalfar.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Neil D�kkalfar
-* Email: <neil@lyuaNOSPAM.org>
-* Company Name: Next-Touch
-* Company URL: <http://www.next-touch.com>
-* Location: [[HurdUser]]
-* Country: France
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/NeillMiller.mdwn b/user.old/NeillMiller.mdwn
deleted file mode 100644
index 9fd8d303..00000000
--- a/user.old/NeillMiller.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Neill Miller
-* Email: <neillm@thecodefactoryNOSPAM.org>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/NicholasLee.mdwn b/user.old/NicholasLee.mdwn
deleted file mode 100644
index 23a7e79d..00000000
--- a/user.old/NicholasLee.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Nicholas Lee
-* Login Name: [[NicholasLee]]
-* Email: <nj.lee@plumtree.coNOSPAM.nz>
-* Phone:
-* Department:
-* Location: (Please specify office location)
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 120
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 28
-* Default state of the **_link_** check box in the attach file page:
- * Set ATTACHLINKBOX =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/NickCroft.mdwn b/user.old/NickCroft.mdwn
deleted file mode 100644
index ee56dc1f..00000000
--- a/user.old/NickCroft.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Nick Croft
-* Email: <nicko@acay.comNOSPAM.au>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Australia
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/NickRusnov.mdwn b/user.old/NickRusnov.mdwn
deleted file mode 100644
index 54d399e1..00000000
--- a/user.old/NickRusnov.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Nick Rusnov
-* Email: <hurdtwiki@nspam.industrialmeatsNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/NicolasBarbier.mdwn b/user.old/NicolasBarbier.mdwn
deleted file mode 100644
index 2fb35b38..00000000
--- a/user.old/NicolasBarbier.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Nicolas Barbier
-* Email: <zuchtstudmail@yahooNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: [[VirtualOffice]]
-* Country: Belgium
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/NiklasS.mdwn b/user.old/NiklasS.mdwn
deleted file mode 100644
index 87ddc76a..00000000
--- a/user.old/NiklasS.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Niklas S.
-* Email: <cyc0@linuxNOSPAM.se>
-* Company Name: none
-* Company URL: <http://localhost>
-* Location: Stockholm
-* Country: Sweden
-* Comment: hmm, this seems advanced :)
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/NikolayDiakov.mdwn b/user.old/NikolayDiakov.mdwn
deleted file mode 100644
index 073b9350..00000000
--- a/user.old/NikolayDiakov.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Nikolay Diakov
-* Email: <diakov@theofficeNOSPAM.net>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Netherlands
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/NisoliIsaia.mdwn b/user.old/NisoliIsaia.mdwn
deleted file mode 100644
index 6b580aeb..00000000
--- a/user.old/NisoliIsaia.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Nisoli Isaia
-* Email: <orkolorko@interfreeNOSPAM.it>
-* Company Name:
-* Company URL:
-* Location: [[VasterasOffice]]
-* Country: Italy
-* Comment: I don't like Vasteras Bandy team really much. SAIK rocks
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/OgnyanKulev.mdwn b/user.old/OgnyanKulev.mdwn
deleted file mode 100644
index f82775ee..00000000
--- a/user.old/OgnyanKulev.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Name: Ognyan Kulev
-* Email: <ogi@fmi.uni-sofiaNOSPAM.bg>
-* Home Page: <http://debian.fmi.uni-sofia.bg/~ogi/>
-* Company Name: Faculty of Mathematics and Informatics, University of Sofia
-* Country: Bulgaria
-* Comment: "\\"Programmer\\""
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 80%
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 12
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/OtavioJr.mdwn b/user.old/OtavioJr.mdwn
deleted file mode 100644
index 554f1d4a..00000000
--- a/user.old/OtavioJr.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Ot�vio Ribeiro Jr
-* Email: <otavio@otavio.engNOSPAM.br>
-* Company Name: otavio.eng.br
-* Company URL: <http://www.otavio.eng.br>
-* Location: (Please specify office location)
-* Country: Brazil
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/PatrickRoss.mdwn b/user.old/PatrickRoss.mdwn
deleted file mode 100644
index 849a2857..00000000
--- a/user.old/PatrickRoss.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-* Location: [[HurdUser]]
-* Email: <Patrick@dont-explodeNOSPAM.com>
-* Country: Zimbabwe
-* Name: Patrick Ross
-* Company URL: <http://dont-explode.com>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/PatrickStrasser.mdwn b/user.old/PatrickStrasser.mdwn
deleted file mode 100644
index bc1c54a8..00000000
--- a/user.old/PatrickStrasser.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Patrick Strasser
-* Email: <patrick.strasser@tugrazNOSPAM.at>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Austria
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/PaulBowman.mdwn b/user.old/PaulBowman.mdwn
deleted file mode 100644
index c478e061..00000000
--- a/user.old/PaulBowman.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Paul Bowman
-* Email: <helvetius@ntlworldNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: United Kingdom
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/PaulNema.mdwn b/user.old/PaulNema.mdwn
deleted file mode 100644
index 5aefc81e..00000000
--- a/user.old/PaulNema.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Paul Nema
-* Email: <nemaco@yahooNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: USA
-* Comment: Joining the Hurd
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/PaulWIckham.mdwn b/user.old/PaulWIckham.mdwn
deleted file mode 100644
index 7933fd5c..00000000
--- a/user.old/PaulWIckham.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: [[PaulWIckham]]
-* Email: <paul@1stchoice.coNOSPAM.uk>
-* Company Name:
-* Company URL:
-* Location: [[SanJoseOffice]]
-* Country: Brazil
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/PauloSchreiner.mdwn b/user.old/PauloSchreiner.mdwn
deleted file mode 100644
index 1360014f..00000000
--- a/user.old/PauloSchreiner.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Paulo Schreiner
-* Email: <pschreiner@inf.ufrgsNOSPAM.br>
-* Company Name: PET Computa��o UFRGS
-* Company URL: <http://pet.inf.ufrgs.br/~paulo>
-* Location: [[HurdUser]]
-* Country: Brazil
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/PedroMacanas.mdwn b/user.old/PedroMacanas.mdwn
deleted file mode 100644
index 705dfaf9..00000000
--- a/user.old/PedroMacanas.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-* Name: Pedro Macanas
-* Email: <pmacv@telefonicaNOSPAM.net>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Spain
-* Comment:
diff --git a/user.old/PeterMasiar.mdwn b/user.old/PeterMasiar.mdwn
deleted file mode 100644
index 9196788f..00000000
--- a/user.old/PeterMasiar.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-* Name: Peter Masiar
-* Email: <PeterMasiar@yaleNOSPAM.edu>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-See my wikis: [CGI::Application FAQ](http://twiki.med.yale.edu/twiki2/bin/view/CGIapp/WebHome) and [twiki usability](http://twiki.med.yale.edu/twiki2/bin/view/Usability/WebHome) - about Simple skins and [[TWiki/CommentPlugin]]
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/PeterMelville.mdwn b/user.old/PeterMelville.mdwn
deleted file mode 100644
index c083aaa7..00000000
--- a/user.old/PeterMelville.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Peter Melville
-* Email: <StarDeep25@yahoo.comNOSPAM.au>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Australia
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/PeterThoeny.mdwn b/user.old/PeterThoeny.mdwn
deleted file mode 100644
index 48070122..00000000
--- a/user.old/PeterThoeny.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-* Name: Peter Thoeny, author of the %TWIKIWEB%.TWikiWeb (and therefore a %TWIKIWEB%.TWikiContributor)
-* Work: <Peter.Thoeny@WindRiverNOSPAM.com>
-* Home: <Peter@ThoenyNOSPAM.com>
-* Location: [[SanJoseOffice]]
-* Personal web: <http://www.thoeny.com/peter/>
-* Local time: Current [time](http://www.bsdi.com/date?America/Los_Angeles) in the Silicon Valley.
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Default state of the **_link_** check box in the attach file page:
- * Set ATTACHLINKBOX =
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other %WIKITOOLNAME% users.
diff --git a/user.old/PhUrl.mdwn b/user.old/PhUrl.mdwn
deleted file mode 100644
index a0ddd13d..00000000
--- a/user.old/PhUrl.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: James Michael [[DuPont]]
-* Email: <mdupont777@yahooNOSPAM.com>
-* Company Name: Introspector
-* Company URL: <http://introspector.sf.net>
-* Location: [[HurdUser]]
-* Country: Germany
-* Comment: Can you afford to board the GNU CHOO CHOO?
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/PhilipCharles.mdwn b/user.old/PhilipCharles.mdwn
deleted file mode 100644
index 3216d1a2..00000000
--- a/user.old/PhilipCharles.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Philip Charles
-* Email: <philipc@copyleft.coNOSPAM.nz>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: New Zealand
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/PiNi.mdwn b/user.old/PiNi.mdwn
deleted file mode 100644
index ec7a6d26..00000000
--- a/user.old/PiNi.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Gilles Filippini
-* Email: <gilles.filippini@freeNOSPAM.fr>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: France
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/PierlucaMasala.mdwn b/user.old/PierlucaMasala.mdwn
deleted file mode 100644
index e7f89327..00000000
--- a/user.old/PierlucaMasala.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Pierluca Masala
-* Email: <pierluca.masala@gmailNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Italy
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/PorterLunceford.mdwn b/user.old/PorterLunceford.mdwn
deleted file mode 100644
index aba25960..00000000
--- a/user.old/PorterLunceford.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Location: [[TokyoOffice]]
-* Email: <Porter@p-dictionary.netNOSPAM.ru>
-* Company Name: <http://p-dictionary.net.ru>
-* Country: Burundi
-* Name: Porter Lunceford
-* Company URL: <http://p-dictionary.net.ru>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/PraveenKumar.mdwn b/user.old/PraveenKumar.mdwn
deleted file mode 100644
index 0e753252..00000000
--- a/user.old/PraveenKumar.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Praveen Kumar
-* Email: <praveen@symondsNOSPAM.net>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: India
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/QjQj.mdwn b/user.old/QjQj.mdwn
deleted file mode 100644
index a9f548e5..00000000
--- a/user.old/QjQj.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Qj Qj
-* Email: <qijiankeji@126NOSPAM.com>
-* Company Name:
-* Company URL: <http://www.qj100.net>
-* Location: [[SanJoseOffice]]
-* Country: Albania
-* Comment: www.qj100.net
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/RafaelK.mdwn b/user.old/RafaelK.mdwn
deleted file mode 100644
index 78380657..00000000
--- a/user.old/RafaelK.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Rafael Diniz
-* Email: <rafael@riseupNOSPAM.net>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Brazil
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/RajaBomb.mdwn b/user.old/RajaBomb.mdwn
deleted file mode 100644
index 8fdd1d24..00000000
--- a/user.old/RajaBomb.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Raja Bomb
-* Email: <rajabomb@canadaNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/RaresTitan.mdwn b/user.old/RaresTitan.mdwn
deleted file mode 100644
index d23f8fd7..00000000
--- a/user.old/RaresTitan.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Rares Titan
-* Email: <rares@debianNOSPAM.ro>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Romania
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/RedTux.mdwn b/user.old/RedTux.mdwn
deleted file mode 100644
index 6584359b..00000000
--- a/user.old/RedTux.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Red Tux
-* Email: <redtux@redtuxNOSPAM.org>
-* Company Name: Red Penguins
-* Company URL: <http://www.redtux.org/>
-* Location: Vienna
-* Country: Austria
-* Comment: LONG LIVE THE RED PENGUIN AND THE SOCIALIST WORKERS' WORLD REVOLUTION!
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/ReinaldoNolascoSanches.mdwn b/user.old/ReinaldoNolascoSanches.mdwn
deleted file mode 100644
index 2c2d8f79..00000000
--- a/user.old/ReinaldoNolascoSanches.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Reinaldo Nolasco Sanches
-* Email: [r\_linux@yahooNOSPAM.com](mailto:r_linux@yahooNOSPAM.com)
-* Company Name: [[MyHome]]
-* Company URL: <http://slackware.linuxbr.org>
-* Location: (Please specify office location)
-* Country: Brazil
-* Comment: I hope install hurd in my PC...
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/ReneStadler.mdwn b/user.old/ReneStadler.mdwn
deleted file mode 100644
index d65fc6ef..00000000
--- a/user.old/ReneStadler.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Ren� Stadler
-* Email: <hurd-wiki@renestadlerNOSPAM.de>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Germany
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/RichBodo.mdwn b/user.old/RichBodo.mdwn
deleted file mode 100644
index 9044bb8e..00000000
--- a/user.old/RichBodo.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: [[RichBodo]]
-* Email: <rsb@ftctrNOSPAM.org>
-* Company Name:
-* Company URL:
-* Location: [[SanJoseOffice]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/RikWade.mdwn b/user.old/RikWade.mdwn
deleted file mode 100644
index ce0bd842..00000000
--- a/user.old/RikWade.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Name: Rik Wade
-* Email: rik dot wade at gmail.com
-* Homepage URL: <http://www.rikwade.com>
-* Location:
-* Country: United Kingdom
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE = [[RikWade]]
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/RobSeger.mdwn b/user.old/RobSeger.mdwn
deleted file mode 100644
index ef55c47f..00000000
--- a/user.old/RobSeger.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Rob Seger
-* Email: <rob@theartistsdreamNOSPAM.org>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/RobbDoyle.mdwn b/user.old/RobbDoyle.mdwn
deleted file mode 100644
index 04d37ec1..00000000
--- a/user.old/RobbDoyle.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Robb Doyle
-* Email: <robb@buckheadbodyworksNOSPAM.com>
-* Company Name: American Massage Therapy Association - Georgia Chapter
-* Company URL: <http://amtaga.org>
-* Location: (Please specify office location)
-* Country: USA
-* Comment: Looking forward to building a collaborative community with TWiki. PHPwebsite fan. (http://phpwebsite.appstate.edu )
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/RobertMillan.mdwn b/user.old/RobertMillan.mdwn
deleted file mode 100644
index fe8d9a01..00000000
--- a/user.old/RobertMillan.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-* Name: Robert Millan
-* Email: <zeratul2@wanadooNOSPAM.es>
-* Company Name: free as in freedom
-* Company URL:
-* Location: (Please specify office location)
-* Country: Other Country
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
-
-----
-
-**_Comments_**
-
-I moved the Bochs topic to [[BochsEmulator]] because it was not a correct [[TWiki/WikiWord]]. This because the links on that page, and some others, were hard coded to a link on the old domain (vmlinux.org). Intra-Wiki links are always best to specify as a [[TWiki/WikiWord]] because then the Wiki engine automatically creates relative links.
diff --git a/user.old/RobertPehr.mdwn b/user.old/RobertPehr.mdwn
deleted file mode 100644
index 872c9dc4..00000000
--- a/user.old/RobertPehr.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Robert Pehr
-* Email: <rpehr@comcastNOSPAM.net>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: USA
-* Comment: new user just trying to learn
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/RoelN.mdwn b/user.old/RoelN.mdwn
deleted file mode 100644
index 6d1d7923..00000000
--- a/user.old/RoelN.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Roel Neefs
-* Email: <roel@sunshine.raveNOSPAM.org>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Belgium
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/RogerChrisman.mdwn b/user.old/RogerChrisman.mdwn
deleted file mode 100644
index 46c11f40..00000000
--- a/user.old/RogerChrisman.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Roger Chrisman
-* Email: <rogerhc@pacbellNOSPAM.net>
-* Company Name: TEFLChina.org
-* Company URL: <http://TEFLChina.org>
-* Location: San Francisco
-* Country: USA
-* Comment: My test TWiki is at TEFLW.net. I want to use TWiki engine on TEFLChina.org. [[GnuHurdSkin]] looks like it may have some quality features to use in my site skin. My site architecture goals I strive for simplicity for my users. Thus: - Simple URLs. - Less use of TWiki name. It is not our site's topic. - Automatic creation of top level directory pages under top level site sections defined by [[SiteAdmin]]. - less TWiki termanology -- 'Web' means WWW to my members -- why conflate terms? I write 'site sections' instead of 'TWiki Webs'. Partly becaues my site is more sectionally organized than a caotic wed. Summary: - topical. - simple to navigate. - ease of colaborative content creation. - (in that order) Roger :-\}
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/RonnyHutchens.mdwn b/user.old/RonnyHutchens.mdwn
deleted file mode 100644
index d3e3a883..00000000
--- a/user.old/RonnyHutchens.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Location: [[VasterasOffice]]
-* Email: <Ronny@thethoraxNOSPAM.com>
-* Company Name: <http://thethorax.com>
-* Country: Aruba
-* Name: Ronny Hutchens
-* Company URL: <http://thethorax.com>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/RoyFalk.mdwn b/user.old/RoyFalk.mdwn
deleted file mode 100644
index fdfd8c20..00000000
--- a/user.old/RoyFalk.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Roy Falk
-* Email: <rfalk@013.netNOSPAM.il>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Singapore
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/RussellJames.mdwn b/user.old/RussellJames.mdwn
deleted file mode 100644
index c595cfcf..00000000
--- a/user.old/RussellJames.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Russell James
-* Email: <russ.james@comcastNOSPAM.net>
-* Company Name:
-* Company URL:
-* Location: Los Angeles
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/RussellLiefer.mdwn b/user.old/RussellLiefer.mdwn
deleted file mode 100644
index 19fb18e6..00000000
--- a/user.old/RussellLiefer.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Location: [[TokyoOffice]]
-* Email: <Russell@dokument-business.netNOSPAM.ru>
-* Company Name: <http://dokument-business.net.ru>
-* Country: Israel
-* Name: Russell Liefer
-* Company URL: <http://dokument-business.net.ru>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/RyanGolbeck.mdwn b/user.old/RyanGolbeck.mdwn
deleted file mode 100644
index 8b0709ae..00000000
--- a/user.old/RyanGolbeck.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Ryan Golbeck
-* Email: <rmgolbeck@gnuNOSPAM.org>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Canada
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/SaFanaJ.mdwn b/user.old/SaFanaJ.mdwn
deleted file mode 100644
index dfcf285e..00000000
--- a/user.old/SaFanaJ.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Marco Bardelli
-* Email: <bardelli@cs.uniboNOSPAM.it>
-* Company Name:
-* Company URL: <http://cs.unibo.it/~bardelli/>
-* Location: (Please specify office location)
-* Country: Italy
-* Comment: I love GNU. A World in user space ...
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/SamLauzon.mdwn b/user.old/SamLauzon.mdwn
deleted file mode 100644
index 25b0ac43..00000000
--- a/user.old/SamLauzon.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Sam Lauzon
-* Email: sam at indesnet dot com
-* Company Name: Indesnet
-* Company URL: <http://www.indesnet.com>
-* Location: Toronto, ON
-* Country: Canada
-* Comment: Gotta love the HURD!
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/SamMason.mdwn b/user.old/SamMason.mdwn
deleted file mode 100644
index d2572a55..00000000
--- a/user.old/SamMason.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-* Name: Sam Mason
-* Email: <sam@samason.meNOSPAM.uk>
-* Web: <http://sam.samason.me.uk/~sam/>
-* Country: United Kingdom
-* Comment: Coming in from the hurd-l4 / [[NextHurd]] project
-
-# <a name="Notes_about_the_Hurd"> Notes about the Hurd </a>
-
-# <a name="Preferences"> Preferences </a>
-
-Not sure if these really need to exist here or not
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 140
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 40
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/SamiJLaine.mdwn b/user.old/SamiJLaine.mdwn
deleted file mode 100644
index 2f573709..00000000
--- a/user.old/SamiJLaine.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Sami J. Laine
-* Email: <sjlain@utuNOSPAM.fi>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Finland
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/ScottyTierno.mdwn b/user.old/ScottyTierno.mdwn
deleted file mode 100644
index d2fa77a5..00000000
--- a/user.old/ScottyTierno.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Location: [[VasterasOffice]]
-* Email: <Scotty@aboutcrosswordsNOSPAM.info>
-* Company Name: <http://aboutcrosswords.info>
-* Country: Liberia
-* Name: Scotty Tierno
-* Company URL: <http://aboutcrosswords.info>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/SeanDEpagnier.mdwn b/user.old/SeanDEpagnier.mdwn
deleted file mode 100644
index a301a216..00000000
--- a/user.old/SeanDEpagnier.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Sean D'Epagnier
-* Email: <sean@nc.rrNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/SebastianGabriel.mdwn b/user.old/SebastianGabriel.mdwn
deleted file mode 100644
index 1ea73705..00000000
--- a/user.old/SebastianGabriel.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Sebastian Gabriel
-* Email: <segabrie@mail.cs.uni-magdeburgNOSPAM.de>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Germany
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/SebastianSilva.mdwn b/user.old/SebastianSilva.mdwn
deleted file mode 100644
index 7cc72531..00000000
--- a/user.old/SebastianSilva.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Sebastian Silva
-* Email: <sebastian@sebastianNOSPAM.cl>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Chile
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/SefilesHere.mdwn b/user.old/SefilesHere.mdwn
deleted file mode 100644
index f28a905b..00000000
--- a/user.old/SefilesHere.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: [[SefilesHere]]
-* Email: <sosoo@lycosNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: [[TokyoOffice]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/SergeySpiridonov.mdwn b/user.old/SergeySpiridonov.mdwn
deleted file mode 100644
index 29eedeca..00000000
--- a/user.old/SergeySpiridonov.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Sergey Spiridonov
-* Email: <sena@hurd.homeunixNOSPAM.org>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Germany
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/SergioLopez.mdwn b/user.old/SergioLopez.mdwn
deleted file mode 100644
index c72aa9c2..00000000
--- a/user.old/SergioLopez.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Sergio Lopez
-* Email: <koro@sinregaNOSPAM.org>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Spain
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/ShanChatterjee.mdwn b/user.old/ShanChatterjee.mdwn
deleted file mode 100644
index fc3f3688..00000000
--- a/user.old/ShanChatterjee.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Shan Chatterjee
-* Email: <shanchatterjee@gmailNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: [[VirtualOffice]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/SimeonSimeonov.mdwn b/user.old/SimeonSimeonov.mdwn
deleted file mode 100644
index e3302d80..00000000
--- a/user.old/SimeonSimeonov.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Simeon Simeonov
-* Email: <blackmore@pichoveNOSPAM.org>
-* Company Name: None
-* Company URL:
-* Location: (Please specify office location)
-* Country: Norway
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/SimonLaw.mdwn b/user.old/SimonLaw.mdwn
deleted file mode 100644
index 80418851..00000000
--- a/user.old/SimonLaw.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-* Name: Simon Law
-* Email: sfllaw at engmail dot uwaterloo dot ca
-* Location: Toronto
-* Country: Canada
-* Comment: I'm a third-year [University of Waterloo](http://www.uwaterloo.ca) student. I'm currently enrolled in [Computer Engineering](http://www.ece.uwaterloo.ca).
diff --git a/user.old/StanPinte.mdwn b/user.old/StanPinte.mdwn
deleted file mode 100644
index 1b252fa3..00000000
--- a/user.old/StanPinte.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: stan
-* Email: [pinte\_stanislas@emcNOSPAM.com](mailto:pinte_stanislas@emcNOSPAM.com)
-* Company Name: EMC
-* Company URL: <http://www.emc>.
-* Location: [[HurdUser]]
-* Country: Belgium
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/SubinGnagadharan.mdwn b/user.old/SubinGnagadharan.mdwn
deleted file mode 100644
index 4eb889f9..00000000
--- a/user.old/SubinGnagadharan.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: subin gnagadharan
-* Email: <subingangadharan@gmailNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: India
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/SujithH.mdwn b/user.old/SujithH.mdwn
deleted file mode 100644
index 99543587..00000000
--- a/user.old/SujithH.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Sujith H
-* Email: <sujith.linux@gmailNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: India
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/SunilSomasundara.mdwn b/user.old/SunilSomasundara.mdwn
deleted file mode 100644
index fdfcfcfc..00000000
--- a/user.old/SunilSomasundara.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Sunil Somasundara
-* Email: [s\_somasundara@yahooNOSPAM.com](mailto:s_somasundara@yahooNOSPAM.com)
-* Company Name: NAL
-* Company URL: <http://www.nal.res.in>
-* Location: (Please specify office location)
-* Country: India
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/SusanLocke.mdwn b/user.old/SusanLocke.mdwn
deleted file mode 100644
index a998fdc3..00000000
--- a/user.old/SusanLocke.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-* Name: [[SusanLocke]]
-* Email: <susanlocke@optusnet.comNOSPAM.au>
-* Twiki URL: [SusanLocke](http://www.juliediamond.net/cgi-bin/view/Main/SusanLocke)
-* Country: **Australia**
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/TakaoYamashita.mdwn b/user.old/TakaoYamashita.mdwn
deleted file mode 100644
index 24c7284b..00000000
--- a/user.old/TakaoYamashita.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: takao yamashita
-* Email: <tjy@mail.jargon.yiNOSPAM.org>
-* Company Name:
-* Company URL:
-* Location: [[TokyoOffice]]
-* Country: Japan
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/TariqDukes.mdwn b/user.old/TariqDukes.mdwn
deleted file mode 100644
index 8d64ef07..00000000
--- a/user.old/TariqDukes.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Location: [[HurdUser]]
-* Email: <Tariq@indian-musik.comNOSPAM.ru>
-* Company Name: <http://indian-musik.com.ru>
-* Country: Slovakia
-* Name: Tariq Dukes
-* Company URL: <http://indian-musik.com.ru>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/TerrellNorthway.mdwn b/user.old/TerrellNorthway.mdwn
deleted file mode 100644
index a494ea2b..00000000
--- a/user.old/TerrellNorthway.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Location: [[VirtualOffice]]
-* Email: <Terrell@klavikordi.comNOSPAM.ru>
-* Company Name: <http://klavikordi.com.ru>
-* Country: Monaco
-* Name: Terrell Northway
-* Company URL: <http://klavikordi.com.ru>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/ThadeuCascardo.mdwn b/user.old/ThadeuCascardo.mdwn
deleted file mode 100644
index 88885b73..00000000
--- a/user.old/ThadeuCascardo.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Thadeu Cascardo
-* Email: <cascardo@minaslivreNOSPAM.org>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Brazil
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/TheArthur.mdwn b/user.old/TheArthur.mdwn
deleted file mode 100644
index c79e03a1..00000000
--- a/user.old/TheArthur.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Arthur Ulfeldt
-* Email: <arthuru@ucscNOSPAM.edu>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/TheDuck.mdwn b/user.old/TheDuck.mdwn
deleted file mode 100644
index c5367e27..00000000
--- a/user.old/TheDuck.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-* Name: Marc Dequ�nes (Duck)
-* Email: <duck@hurdfrNOSPAM.org>
-* Company Name: [[HurdFr]]
-* Company URL: <http://www.hurdfr.org/>
-* Location: Levallois-Perret
-* Country: France
-* Comment:
-* Photo: ![Duck.jpg](http://perso.duckcorp.org/duck/Duck.jpg)
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/TheoraGuldhra.mdwn b/user.old/TheoraGuldhra.mdwn
deleted file mode 100644
index 8ceb56d8..00000000
--- a/user.old/TheoraGuldhra.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: THEORA GULDH�RA
-* Email: <2097@handgranatNOSPAM.org>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Sweden
-* Comment: annoyingly registrational, I just wanted to correct a date simpler is better
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/ThierryLacoste.mdwn b/user.old/ThierryLacoste.mdwn
deleted file mode 100644
index 76360656..00000000
--- a/user.old/ThierryLacoste.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: thierry lacoste
-* Email: <th.lacoste@wanadooNOSPAM.fr>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: France
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/ThomasHeim.mdwn b/user.old/ThomasHeim.mdwn
deleted file mode 100644
index afe5f6fd..00000000
--- a/user.old/ThomasHeim.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Thomas Heim
-* Email: <jmikeforever@yahooNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: [[LondonOffice]]
-* Country: United Kingdom
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/ThomasSamson.mdwn b/user.old/ThomasSamson.mdwn
deleted file mode 100644
index 66035d9e..00000000
--- a/user.old/ThomasSamson.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Thomas Samson
-* Email: <thomas.samson@epitechNOSPAM.net>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: France
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/ThomasSchlesinger.mdwn b/user.old/ThomasSchlesinger.mdwn
deleted file mode 100644
index 1363a434..00000000
--- a/user.old/ThomasSchlesinger.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Thomas Schlesinger
-* Email: <schlesix@gmxNOSPAM.de>
-* Company Name:
-* Company URL:
-* Location: Frechen, near Cologne
-* Country: Germany
-* Comment: I'm waiting for a Hurd, that I can use on my desktop as a replacement for Linux.
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/TimJohann.mdwn b/user.old/TimJohann.mdwn
deleted file mode 100644
index a6b9607e..00000000
--- a/user.old/TimJohann.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Tim Johann
-* Email: <t1m@phrogstarNOSPAM.de>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Germany
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/TimNowaczyk.mdwn b/user.old/TimNowaczyk.mdwn
deleted file mode 100644
index 4ba95a8a..00000000
--- a/user.old/TimNowaczyk.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Tim Nowaczyk
-* Email: <zimage@cs.wiscNOSPAM.edu>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/TimothyMullin.mdwn b/user.old/TimothyMullin.mdwn
deleted file mode 100644
index d89244dc..00000000
--- a/user.old/TimothyMullin.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Location: [[VasterasOffice]]
-* Email: <Timothy@www.kvant-mexNOSPAM.com>
-* Company Name: <http://www.kvant-mex.com>
-* Country: Uzbekistan
-* Name: Timothy Mullin
-* Company URL: <http://www.kvant-mex.com>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/TomHart.mdwn b/user.old/TomHart.mdwn
deleted file mode 100644
index 82b793ca..00000000
--- a/user.old/TomHart.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Thomas Hart
-* Email: <hartte13@brandonuNOSPAM.ca>
-* Company Name:
-* Company URL:
-* Location: [[HurdUser]]
-* Country: Canada
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/TomaszWitko.mdwn b/user.old/TomaszWitko.mdwn
deleted file mode 100644
index 36a9cf7b..00000000
--- a/user.old/TomaszWitko.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Tomasz Witko
-* Email: <witko@rogersNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Canada
-* Comment: My name is Tom Witko.
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/TorbenGB.mdwn b/user.old/TorbenGB.mdwn
deleted file mode 100644
index 9624cd76..00000000
--- a/user.old/TorbenGB.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Torben Gundtofte-Bruun
-* Email: <torben@g-bNOSPAM.dk>
-* Company Name: Maersk Data Asia
-* Company URL: <http://www.maerskdataasia.com>
-* Location: [[VirtualOffice]]
-* Country: Japan
-* Comment: Just registered in order to try out the skin.
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/TravisBarker.mdwn b/user.old/TravisBarker.mdwn
deleted file mode 100644
index 3956bda1..00000000
--- a/user.old/TravisBarker.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-* Name: Travis Barker
-* Email: <t.e.barker@gmailNOSPAM.com>
-* Company Name: [[ThetaBase]]
-* Company URL: <http://thetabase.net>
-* Location: (Please specify office location)
-* Country: Sweden
-* Projects include:
- * [Keyano](http://sourceforge.net/projects/keyano/) (active project) use your PC keyboard as a Piano/Synth keyboard (like MIDI). Maps Images and sounds to keypress events.
- * [ThetaThema](http://sourceforge.net/projects/cyberface/) (research/brainstorm project) considers alternative methods of human interaction / communication.
- * [Trash](http://sourceforge.net/projects/trash/) (to-be-developed/currently inactive) GUI for bash push buttons to issue bash commands, an attempt to utilize Bash in a more visual way.
- * [Travis Barker](http://twiki.org/cgi-bin/view/Main/TravisBarker) @ twiki.org Membership page.
-
-[ ![SourceForge.net Logo](http://sourceforge.net/sflogo.php?group_id=125831&type=2)](http://sourceforge.net)
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
-
-[[TravisBarkerNotesDslVsDialup]]
diff --git a/user.old/TristonSondag.mdwn b/user.old/TristonSondag.mdwn
deleted file mode 100644
index 687c1707..00000000
--- a/user.old/TristonSondag.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Location: [[VasterasOffice]]
-* Email: <Triston@viborg.orgNOSPAM.ru>
-* Company Name: <http://viborg.org.ru>
-* Country: Tajikistan
-* Name: Triston Sondag
-* Company URL: <http://viborg.org.ru>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/VivekCherian.mdwn b/user.old/VivekCherian.mdwn
deleted file mode 100644
index d442ee20..00000000
--- a/user.old/VivekCherian.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Vivek Cherian
-* Email: <vivekvc@gnuNOSPAM.org>
-* Company Name: GNU
-* Company URL: <http://www.gnu.org>
-* Location: (Please specify office location)
-* Country: India
-* Comment: Not Applicable
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/WayneG.mdwn b/user.old/WayneG.mdwn
deleted file mode 100644
index 51cc6541..00000000
--- a/user.old/WayneG.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-* Name: Wayne Goulevitch
-* Email: merlinx at internode dot on dot net
-* Location: 2 Hrs from Steve's zoo, Queensland
-* Country: Australia
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/WestonHamlin.mdwn b/user.old/WestonHamlin.mdwn
deleted file mode 100644
index bdfac1e7..00000000
--- a/user.old/WestonHamlin.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-* Location: [[HurdUser]]
-* Email: <Weston@dont-explodeNOSPAM.com>
-* Country: Zimbabwe
-* Name: Weston Hamlin
-* Company URL: <http://dont-explode.com>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/WidyachacraRajapaksha.mdwn b/user.old/WidyachacraRajapaksha.mdwn
deleted file mode 100644
index e395d2b0..00000000
--- a/user.old/WidyachacraRajapaksha.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: widyachacra rajapaksha
-* Email: <widyachacra@gmailNOSPAM.com>
-* Company Name: Adapt Information Technologies
-* Company URL: <http://www.adaptlinux.com>
-* Location: (Please specify office location)
-* Country: Sri Lanka
-* Comment: i want to introduce twiki system to Sri Lanka for as a replacement for Lotus notes. can u guide us.
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/WikiMan.mdwn b/user.old/WikiMan.mdwn
deleted file mode 100644
index 49330e7f..00000000
--- a/user.old/WikiMan.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Wiki Man
-* Email: [first\_com1@yahooNOSPAM.com](mailto:first_com1@yahooNOSPAM.com)
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: France
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/WolfgangJ.mdwn b/user.old/WolfgangJ.mdwn
deleted file mode 100644
index e521278e..00000000
--- a/user.old/WolfgangJ.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Wolfgang J�hrling
-* Email: <wolfgang@pro-linuxNOSPAM.de>
-* Company Name: Church of Emacs
-* Company URL: <http://www.gnu.org/>
-* Location: (Please specify office location)
-* Country: Germany
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/WomBat.mdwn b/user.old/WomBat.mdwn
deleted file mode 100644
index ea7b48d1..00000000
--- a/user.old/WomBat.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Wom Bat
-* Email: <wombat@nowayemailgivenoutNOSPAM.com>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Albania
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/WouterVanHeyst.mdwn b/user.old/WouterVanHeyst.mdwn
deleted file mode 100644
index 5ce737aa..00000000
--- a/user.old/WouterVanHeyst.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Wouter van Heyst
-* Email: <larstiq@larstiq.dyndnsNOSPAM.org>
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: Netherlands
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/YanLi.mdwn b/user.old/YanLi.mdwn
deleted file mode 100644
index 2fc381c2..00000000
--- a/user.old/YanLi.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: Yan Li
-* Email: <elliot.li@gmailNOSPAM.com>
-* Company Name: IBM
-* Company URL: <http://www.ibm.com>
-* Location: [[HurdUser]]
-* Country: China
-* Comment: This is really a good site, and I want to contribute.
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/ZacheryAvilla.mdwn b/user.old/ZacheryAvilla.mdwn
deleted file mode 100644
index 69d3e4cf..00000000
--- a/user.old/ZacheryAvilla.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-* Location: [[HurdUser]]
-* Email: <Zachery@lnp.netNOSPAM.ru>
-* Company Name: <http://lnp.net.ru>
-* Country: Bangladesh
-* Name: Zachery Avilla
-* Company URL: <http://lnp.net.ru>
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/ZnetCatd.mdwn b/user.old/ZnetCatd.mdwn
deleted file mode 100644
index 40bf0ec5..00000000
--- a/user.old/ZnetCatd.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: znet catd
-* Email: [znet\_catd@yahooNOSPAM.com](mailto:znet_catd@yahooNOSPAM.com)
-* Company Name:
-* Company URL:
-* Location: (Please specify office location)
-* Country: USA
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user.old/mattex.mdwn b/user.old/mattex.mdwn
deleted file mode 100644
index cc78ee33..00000000
--- a/user.old/mattex.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-* Name: mattex
-* Email: <matteo.sacchi@emailNOSPAM.it>
-* Company Name:
-* Company URL: <http://mattex.homepc.it>
-* Location: (Please specify office location)
-* Country: Italy
-* Comment:
-
-**_Personal Preferences (details in %TWIKIWEB%.TWikiVariables)_**
-
-* Horizontal size of text edit box:
- * Set EDITBOXWIDTH = 70
-* Vertical size of text edit box:
- * Set EDITBOXHEIGHT = 17
-* Optionally write protect your home page: (set it to your %TWIKIWEB%.WikiName)
- * Set ALLOWTOPICCHANGE =
-
-**_Related topics_**
-
-* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences of %WIKITOOLNAME%.
-* %WEBPREFSTOPIC% has preferences of the %WIKITOOLNAME%.%WEB% web.
-* %WIKIUSERSTOPIC% has a list of other TWiki users.
diff --git a/user/El_Dream_Machine.mdwn b/user/El_Dream_Machine.mdwn
new file mode 100644
index 00000000..fe8b5a9c
--- /dev/null
+++ b/user/El_Dream_Machine.mdwn
@@ -0,0 +1,44 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+**September 19, 2011** - Two pages of available comics about the Hurd [http://art9libre.tuxfamily.org/gaetan-01-en.php](http://art9libre.tuxfamily.org/gaetan-01-en.php)
+
+**September 9, 2011** - The second page is done ! For instance, it's in french. English version soon as it's possible... Follow this link [http://art9libre.tuxfamily.org/gaetan-02.php](http://art9libre.tuxfamily.org/gaetan-02.php)or have a look on the last message.
+
+**May 19, 2011** - Very difficult to do my comic on the Hurd I encountered problems of inspiration... I missed the second page but I started again [http://art9libre.tuxfamily.org/gaetan-02.php](http://art9libre.tuxfamily.org/gaetan-02.php)
+I project to share the scenario (CC-BY-SA/Licence Art Libre).
+
+**January 13, 2011** - My story comics on the Hurd continues. I think I can introduce you to page 2 in a month.
+
+**January 11, 2011** - The goal was to install the Hurd in VirtualBox...
+It happened on january,7 2011, a very nice day... Thanks to [http://www.paranoiaque.fr](http://www.paranoiaque.fr) for [the *Hurd.vdi* machine.](http://www.paranoiaque.fr/Hurd.vdi.tar.lzma)
+
+[A testimony](http://www.sites.google.com/site/hurdexperiences/en-hurd-vdi-tar-lzma) of this install and a video capture [Hurd operating.](http://www.dailymotion.com/video/xgl3nr_hurd-screenscat-ffmpeg-01_webcam)
+
+**October 14, 2010** - Here's the [french version.](http://art9libre.tuxfamily.org/gaetan-01.php)
+
+**October 13, 2010** - Page 1 out ! The beginning of the [the comics is here :](http://art9libre.tuxfamily.org/gaetan-01-en.php)
+Hope it will pleased for you.
+
+**October 3, 2010** - I just try to become an end user of The Hurd. In 2004, I was able to install K9 on an old computer.
+These times, my goal is to install it on my laptop (maybe with crosshurd or with a lzma image for virtualbox, or any other way...)
+
+Also, I'm currently working on a comics'The Call Of The Hurd'. It's free licensed cc-by-sa/Copyleft Art Libre.
+1st page will be done before the end of the year I think (I look for good quality).
+
+
+
+
+
+
+
+
+
+
diff --git a/user/El_Dream_Machine/discussion.mdwn b/user/El_Dream_Machine/discussion.mdwn
new file mode 100644
index 00000000..e4ae858b
--- /dev/null
+++ b/user/El_Dream_Machine/discussion.mdwn
@@ -0,0 +1,10 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+J'espère avoir l'énergie de constituer un scénario modifiable sur un wiki par exemple...
diff --git a/user/Erkan-Yilmaz.mdwn b/user/Erkan-Yilmaz.mdwn
new file mode 100644
index 00000000..aea4e7ff
--- /dev/null
+++ b/user/Erkan-Yilmaz.mdwn
@@ -0,0 +1 @@
+see <http://wiki.archhurd.org/wiki/User:Erkan_Yilmaz>
diff --git a/user/Etenil.mdwn b/user/Etenil.mdwn
new file mode 100644
index 00000000..a1a3373b
--- /dev/null
+++ b/user/Etenil.mdwn
@@ -0,0 +1,40 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!toc]]
+
+## Current task
+
+Implement clustered paging in GNU Mach
+
+- - -
+
+## What the problem is
+In Mach, memory access is ensured by the VM, an abstraction in the kernel. The VM is mapped by pages, which size is arbitrary and defined based on hardware specs. A single block of memory can then span over many pages, i.e. a file on a file system can represent a lot of pages.
+
+When a process attempts to access pages that don't reside in the physical memory (RAM), the MMU detects this and triggers a page fault. Page faults are then handled and the kernel calls down the process associated with the memory pages on a *one by one basis*.
+
+This is where the problem lies. Hard disks are inherently efficient at sequentially writing large chunks of data whereas they cope badly with random access, plus the kernel wastes time writing/reading a page and handling the next page. All of these make for slow I/O in Mach.
+
+## Solutions
+There are a couple of ways I could think of to solve this problem. Pages could be enlarged, but that would cause a lot more problems. Or pages must be handled by groups instead of one by one. This means the changes will also need to be applied in the way user-space processes talk to Mach.
+
+## What's already been done
+[[user/KAM]] has already made a patch that provides basic page clustering. I have yet to understand it completely, but there are troubling changes in the patch, most notably the removal of continuations in *vm_fault* and *vm_fault_page*.
+
+So far, what I can tell is that KAM seems to have modified the memory objects in Mach so that they handle clusters of pages.
+
+## What I intend to do
+Starting from KAM's work, I'll try and at least proxy the current behaviour in the kernel so as to keep backwards compatibility, at least until all user-space processes are converted (maybe some sort of deprecation warning would help porting). I'll also need to modify ext2fs to make it use the clustered paging feature, hopefully it'll improve performance quite a bit.
+
+## Problems
+As *braunr* and *antrik* pointed out on IRC, I seriously lack knowledge about kernel programming, and this is quite a big task. I also don't fully understand the inner workings of the kernel yet, even though *braunr* helped me a lot to understand the VM and page handling.
+
+I'll do what I can and keep maintaining this page so others may pickup where I left if I were to give up.
diff --git a/user/arnuld.mdwn b/user/arnuld.mdwn
index 1f913a2b..d26a543f 100644
--- a/user/arnuld.mdwn
+++ b/user/arnuld.mdwn
@@ -3,7 +3,7 @@
## General
* Name: arnuld uttre
-* Email: arnuld (at) ippimail (dot) com
+* Email: arnuld.mizong (at) gmail (dot) com
* Country: India
* Homepage: <http://www.lispmachine.wordpress.com>
diff --git a/user/baswijnen.mdwn b/user/baswijnen.mdwn
deleted file mode 100644
index 170eeae7..00000000
--- a/user/baswijnen.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-* Name: Bas Wijnen
-* Email: <shevek@fmfNOSPAM.nl>
-* Country: Netherlands
diff --git a/user/bddebian.mdwn b/user/bddebian.mdwn
deleted file mode 100644
index 25ac64e5..00000000
--- a/user/bddebian.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-* Name: Barry deFreese
-* Email: <bddebian@comcastNOSPAM.net>
-* Country: USA
-* Comment: GNU/Hurd hacker wannabe...
diff --git a/user/diocles.mdwn b/user/diocles.mdwn
deleted file mode 100644
index b25fd8ae..00000000
--- a/user/diocles.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-* Name: Tim Retout
-* Email: <tim@retout.coNOSPAM.uk>
-* Country: United Kingdom
diff --git a/community/flavioc.mdwn b/user/flaviocruz.mdwn
index de4741f8..c4d3db69 100644
--- a/community/flavioc.mdwn
+++ b/user/flaviocruz.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Name: Flávio Cruz
@@ -14,9 +14,7 @@ Email: flaviocruz at gmail dot com
Some [Hurd stuff](http://opensvn.csie.org/leic/hurd/)
-And code: [cl-hurd](http://freehg.org/u/flavioc/cl-hurd/)
-
-hg clone [http://freehg.org/u/flavioc/cl-hurd/](http://freehg.org/u/flavioc/cl-hurd/)
+And code: [cl-hurd](http://git.savannah.gnu.org/cgit/hurd/incubator.git/log/?h=clisp)
## Summer session
@@ -37,6 +35,7 @@ Creating an extensible translator library in lisp using the mig generated stubs.
- a translator that does proxying between clients and the underlying translator returning all data in upper-case.
- a translator that watches for changes in a file describing the file system structure.
- an IRC translator.
+ - a categorizer translator: creates a virtual directory containing files listed in a file, each file is categorized with a script. For example, a script can output the music author (in an mp3 file) and then all files will be categorized by author.
- Translator options (manipulated through fsysopts) have a simple and easy to use API.
- All the Mach port manipulation API is available.
- It's possible to send and receive messages. Simple example:
@@ -64,10 +63,9 @@ Creating an extensible translator library in lisp using the mig generated stubs.
### What needs to be done
- Fix fsys-getroot (block happens in trivfs based translators, when they do RPC's to me when I call fsys_getroot to them) and fetch-root (for passive translators).
+- Make the library multithreaded (blocked by the pthread conversion project and the unavailable thread support in CLISP)
- Use the socket stubs?
-- Documentation
-- Integrate upstream:
- - Done, but still not commited.
+- More documentation
### Project dependencies
@@ -76,7 +74,8 @@ Creating an extensible translator library in lisp using the mig generated stubs.
- [CFFI](http://common-lisp.net/project/cffi/) (apt-get installable)
- [Flexi streams](http://www.weitz.de/flexi-streams/) (apt-get installable)
- [Trivial garbage](http://www.cliki.net/trivial-garbage) (not in debian repositories)
-- [cl-zip](http://common-lisp.net/project/zip/) (only needed for the example translator)
+- [cl-zip](http://common-lisp.net/project/zip/) (only needed for the zip translator)
+- [cl-irc](http://common-lisp.net/project/cl-irc/) (for the irc translator)
## To do
diff --git a/user/gianlucaguida.mdwn b/user/gianlucaguida.mdwn
deleted file mode 100644
index 34b581fa..00000000
--- a/user/gianlucaguida.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-* Name: Gianluca Guida
-* Email: <glguida@gmailNOSPAM.com>
-* Country: Italy
diff --git a/user/jkoenig.mdwn b/user/jkoenig.mdwn
new file mode 100644
index 00000000..d135e0e5
--- /dev/null
+++ b/user/jkoenig.mdwn
@@ -0,0 +1,36 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+## Jérémie Koenig
+
+Homepage: [[http://jk.fr.eu.org/]]<br/>
+E-mail: [jk@jk.fr.eu.org](mailto:jk@jk.fr.eu.org)
+
+I am a Hurd enthusiast and occasional contributor,
+currently a M.Sc. student at University of Strasbourg.
+Among other things I am interested in formal methods,
+languages and operating system design.
+(Shameless plug:
+I'll be looking for an internship in a research lab from January to June 2012
+and for a position as a Ph.D. student afterwards.)
+
+Contributions include:
+
+ * Help [[port debian-installer|d-i]],
+ as a GSoC student for the Debian project during the summer of 2010.
+ * Rewrite the procfs translator
+ ([bug-hurd](http://lists.gnu.org/archive/html/bug-hurd/2010-08/msg00165.html)
+ [thread](http://lists.gnu.org/archive/html/bug-hurd/2010-09/msg00001.html)).
+
+I am working as a GSoC student this summer again,
+for the GNU project,
+on [[Java for Hurd|java]].
+
+
diff --git a/user/jkoenig/d-i.mdwn b/user/jkoenig/d-i.mdwn
new file mode 100644
index 00000000..0b9f9f7d
--- /dev/null
+++ b/user/jkoenig/d-i.mdwn
@@ -0,0 +1,358 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+## Hurd Debian-Installer
+
+My [proposal](http://wiki.debian.org/SummerOfCode2010/HurdDebianInstaller/JeremieKoenig)
+to work on porting d-i on Hurd
+as a [Google Summer of Code](http://code.google.com/soc/) student
+has been accepted by the Debian project.
+
+I will be keeping track of my progress on this page.
+
+### Links
+
+ * [Modified packages](http://jk.fr.eu.org/debian/unstable)
+ * [Latest images](http://jk.fr.eu.org/debian/hurd-installer)
+ * [Debian bugs](http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=jk@jk.fr.eu.org&tag=gsoc2010)
+ * [BusyBox port](http://lists.debian.org/debian-bsd/2010/05/msg00048.html)
+ * [GNU Mach initrd](http://lists.gnu.org/archive/html/bug-hurd/2010-06/msg00047.html)
+
+### Roadmap
+
+* **mach**: initrd support
+ * (./) preliminary patch posted and self-built (2010-06-12)
+ * adjustments will be needed (postponed)
+ * consider the alternatives discussed on bug-hurd (postponed)
+
+* **glibc**: fix `mkdir("/")` which returned `EINVAL`
+ * (./) eglibc 2.11.2-1 includes a quick fix by youpi (2010-06-15)
+ * (./) more complete patch posted to bug-hurd,
+ since other calls return incorrect errors under some circumstances
+ (2010-06-16)
+ * more work on it will be needed to make it fix the whole thing
+ (postponed)
+
+* (./) **partman** (2010-06-23)
+ * (./) add hurd-i386 to
+ `partman-partitioning/lib/disk-label.sh`
+ (2010-06-16, commited by youpi on 2010-06-23)
+ * (./) short-circuit
+ `partman-basicfilesystems/init.d/kernelmodules_basicfilesystems`
+ (2010-06-16)
+ * (./) partman-auto recipes:
+ make the default filesystem os-dependent
+ when it has not been preseeded (ie. the *seen* flag is clear)
+ * (./) force 4k blocks and 128 bytes inodes
+ * (./) submit patches to bugs.debian.org
+ ([[!debbug 586870]] and [[!debbug 586871]])
+ * (./) rebuild with responsible version numbers and upload to my repository
+
+* (./) **libparted** (2010-06-23)
+ * (./) fix device paths ([[!debbug 586696]])
+ * (./) fix crash on exit for part:* stores ([[!debbug 586682]])
+
+* **hurd-udeb** (2010-06-23)
+ * (./) rebuild with the hack suggested by youpi for qemu network configuration
+ * (./) fix mount to accept `-o defaults`
+ * cleanup, ask youpi to commit
+
+* reloading the partition table (2010-06-25)
+ * User-space part stores
+ * (./) hurd-udeb now uses `part:N:device:X` for partition devices
+ (2010-06-23)
+ * (./) it also provides /lib/partman/commit.d/??hurd\_reloadpart,
+ which basically does `settrans -ag /dev/[hs]d*`.
+ (2010-06-24)
+ * Kernel-based partition devices
+ * (./) Mach's drivers from Linux support reloading partitions.
+ With help from youpi this has been made available through a
+ device\_set\_status() call.
+ * (./) make libparted use it
+ * Reminder:
+ I should file a bug against libparted with the patch sometime.
+
+* (./) The `/servers/exec` issue (2010-06-26)
+ * Due to /servers being inexistant,
+ the bootstrap ext2fs could not register the initial exec server,
+ meaning that non-bootstrap filesystems used a different one
+ (started from the passive translator),
+ which for some reason died on shell scripts, making them stall.
+ * Adding the `/servers` directory to hurd-udeb fixed it,
+ as well as the /hurd/proc issue
+ (failed to be run by init the first time around).
+ * Reminder: report the non-bootstrap exec servers failure on scripts.
+
+* (./) **base-installer**: (2010-06-26)
+ * Work around non-existant /proc/mounts.
+ * Firmlink /servers into /target after debootstrap
+ to make the network available.
+
+* (./) **grub-installer**
+ * (./) add hurd support (2010-06-27)
+ * /!\ grub-legacy still needs to be tested
+ * submit changes as a Debian bug
+
+**Milestone (2010-06-28):
+installer kindof works, with documented manual intervention required**
+
+* (./) Sort out the situation with dev node creation (2010-07-07):
+ * Devices and servers used to be set up by debootstrap;
+ the hurd package would add some missing nodes.
+ * New strategy implemented in hurd and debootstrap:
+ * debootstrap uses active firmlinks into the host system
+ for the target system's /dev and /servers.
+ * the hurd package now include a `setup-translators` script,
+ which is used to register the passive translators by the installer's
+ `/libexec/runsystem` and hurd's postinst script.
+
+* **busybox**: submit upstream and to [[!debbug 323670]]
+ (waiting for upstream to review)
+ * (./) I have mentioned my work on the upstream mailing list,
+ * (./) merge the recent changes from upstream,
+ notably to the build system.
+ (2010-06-23)
+ * (./) ask upstream for review and merge
+ (2010-06-25)
+ * (./) sent as patches as requested
+ (2010-07-08)
+ * (./) backport any additional changes onto the debian branch
+ * (./) hijack [[!debbug 323670]] and submit my patches
+
+* **aptitude**:
+ * Currently broken on hurd-i386:
+ [[!debpkg gtest]] fails to build because of a segfault in one of the test
+ cases, [[!debpkg google-mock]] and hence [[!debpkg aptitude]] are missing
+ it as a build-dep.
+ The older package is not installable anymore because it's linked against
+ an older version of libept, which has been removed.
+ * (./) I bypassed the tests and uploaded the 3 packages to my repository
+ (2010-07-08)
+ * The segfault will have to be sorted out. (postponed)
+
+* (./) "Fix" the swap situation. (2010-07-08)
+ * The device\_close() libstore patch
+ had the unfortunate effect of making swapon fail,
+ since the device it activates has to be kept open.
+ * add options for MAKEDEV and setup-devices
+ to use the libparted stores
+ * disable youpi's patch
+ * make partman-basicfilesystems re-create the device
+ as a kernel partition, which is needed for swapon
+
+* (./) netcfg-static: port to hurd (2010-07-09)
+ * There was some amount of hurd support already
+ (namely, activating the interface by replacing the socket translator)
+ * However, this code started an active translator with
+ di\_exec\_shell\_log("settrans -a ...),
+ which stalled as a consequence of it capturing libdi's pipe
+ as its standard output.
+ * Network devices must be probed by trying to open Mach devices
+ with predetermined names (currently eth%d, wl%d),
+ because getifaddrs() does not seem to work on Hurd.
+ * /!\ netcfg, and configuring the installed system, postponed.
+
+* **procps** 3.2.7-11 (current hurd-i386 version) has [[!debbug 546888]]
+ * (./) Submit [[!debbug 588677]] and upload the result to my repository.
+ (2010-07-11)
+
+* (./) Set up a Debian mirror with modified packages for installation
+ * the [mirror](http://jk.fr.eu.org/debian/hurd-install/mirror)
+ is now up and running (2010-07-06)
+ * hacked the image build script to include its public key in
+ debian-archive-keyring at image build time (2010-07-08)
+ * Apparently debootstrap does not handle multiple versions very well.
+ Fix by using dpkg-scan{package,sources} rather than apt-ftparchive
+ to create index files.
+ (2010-07-10)
+ * Use the override files from ftp.debian.org,
+ to avoid debootstrap grabbing inappropriate packages.
+ * Changed them to make [[!debpkg ifupdown]],
+ [[!debpkg dhcp3-client]] and [[!debpkg dhcp3-client]] priority extra,
+ because they're uninstallable at the moment.
+ (2010-07-12)
+
+* (./) Put together a "jk-archive-keyring" package,
+ so that the mirror is authenticated in the target system as well.
+ (2010-07-12)
+
+* (./) Fix grub for user-space partitions (2010-07-16)
+ * grub-probe detects the whole device rather than the partition
+ as the device behind /boot/grub.
+ Consequently, grub-install fails.
+ * One approach would be to replace /dev/hd* by kernel devices
+ for file systems as well as for swap partitions.
+ > {X} this makes the installer crash,
+ > possibly due to cache coherency issue between hdX and hdXsY.
+
+ * (./) GRUB2 kern/emu/getroot.c
+ [patched](http://lists.gnu.org/archive/html/bug-hurd/2010-07/msg00059.html)
+ to support part stores.
+
+* (./) Fix finish-install to skip `finish-install.d/90console` on Hurd
+ (2010-07-17)
+
+* (./) Avoid starting unnecessary /dev translators in a burst (2010-07-20)
+ * Use debootstrap use the extracted /usr/lib/hurd/setup-translators
+ to create device and server nodes in /target,
+ then firmlink the whole /target/dev and /target/servers
+ to the outer system.
+ * Make hurd.postinst not touch them on initial install.
+
+* (./) Fix mach-defpager for file and part stores on larger devices
+ * Use DEVICE\_GET\_RECORDS instead of DEVICE\_GET\_SIZE, which overflows an int
+ (2010-07-22)
+
+**Milestone (2010-07-22):
+installer works but it's still somewhat ugly and broken**
+
+* (./) Ship the UTF-8 font for the hurd console
+ (2010-07-22)
+ * Upload a version of bogl with youpi's patch for Hurd.
+ (see [[!debbug 589987]])
+ * Fix the hurd console for fonts with 16 pixels wide glyphs
+ (ie. handle the 8-wide glyph in there correclty)
+ * Support double-width glyphs (2010-07-24)
+ * (./) However the reduced font can't be loaded yet,
+ so make installer/build/Makefile
+ ship the whole `/usr/src/unifont.bgf`
+ as `/usr/share/hurd/vga-system.bgf`.
+
+* (./) Make the installer used the extended capabilities of the Hurd console
+ (2010-07-23)
+ * Set an UTF-8 locale in `/lib/debian-installer.d/S41term-hurd`.
+ * localechooser: set the language display level to 3
+ when using the hurd console.
+
+* (./) **busybox**: cross-platform package uploaded to experimental
+ (2010-08-03?)
+ * Aurelien Jarno updated the packaging to busybox 1.17.1,
+ fixed a whole lot of bugs,
+ and uploaded a new package with both our changes;
+ * most patches adopted upstream, and included in the new package;
+ * (u)mount/swaponoff ported to kFreeBSD;
+ * per-OS configuration overrides.
+
+* (./) Update custom packages to the latest versions
+ and send updated patches to the BTS
+ (2010-08-11)
+ * updated partman-base to choose a default filesystem in debian/rules
+ rather than at runtime,
+ as suggested by Aurelien Jarno in [[!debbug 586870]]
+ * patch submitted for debian-installer-utils
+ ([[!debbug 592684]]).
+ * patch submitted for locale-chooser
+ ([[!debbug 592690]]).
+ * debootstrap, grub-installer and finish-install not yet submitted,
+ since the details may still change.
+
+* (./) **partman-target**: fix fstab creation
+ (2010-08-11)
+ * See [[!debbug 592671]]
+ * debian/rules: set `partman/mount_style` to `traditional` on Hurd.
+ * finish.d/create\_fstab\_header: add a Hurd case.
+
+* (./) **rootskel**: FTBFS on Hurd and other quirks
+ (to be fixed very soon)
+
+* **d-i/installer/build**: (expected soon)
+ * publish the patch I use
+ * sort out the changes suitable for inclusion
+ and ask youpi and/or debian-boot@l.d.o to commit them
+
+* call for testing and fix the bugs
+
+* Bug in setup-translators/MAKEDEV:
+ permissions are broken for nodes re-created through `MAKEDEV -k`,
+ because MAKEDEV's chmod/chown reaches the pre-existing translator
+ * Maybe settrans could be made to accept -o/--owner and
+ -p/--perm, to set the permissions for the underlying node?
+
+* (./) Silence the "no kernel" warning somehow.
+
+* Investigate the wget/libc/pfinet/whatever bug which corrupts Packages.gz,
+ see the IRC log for 2010-07-23, around 1am UTC+0200
+
+* Try to resolve problems with udebs which are uninstallable on hurd-i386,
+ such as installation-locale and partman-whatever.
+
+* Provide `/proc/cmdline -> 2/cmdline`, or something.
+
+* Prepare a NMU for genext2fs (which is orphaned),
+ and ask youpi to sponsor the upload.
+
+* **busybox**: port
+ * fix stty/stat/ipcs on kFreeBSD,
+ * generally port more stuff,
+ * *ip* is needed (maybe) for network configuration,
+ * *mount*, *swaponoff* can be from hurd-udeb for now,
+ though the kFreeBSD people will need them
+
+* **partman**: further adjustments
+ * partman-base: handle /dev/hd?s* in lib/base.h
+ * hide irrelevant mount options? (sync, relatime)
+
+* Network configuration on the installed system.
+ This includes porting ifupdown and isc-dhcp-client,
+ which are currently uninstallable on hurd-i386.
+* Also, better DHCP support during and after installation
+
+* improve the [initrd situation](FIXME: link to bug-hurd post):
+ ajust the ramdisk support in Mach,
+ use tmpfs if possible.
+
+* mklibs{,-copy}:
+ test library reduction,
+ make it copy the ld.so -> ld.so.1 symlink.
+
+* (./) hurd console fonts
+
+**Milestone (expected 2010-07-19):
+it works great and it's beautiful**
+
+* test, fix, document
+* support more types of installation images
+* give a shot at the graphical installer if time permits
+* integrate wireless drivers with netcfg
+* see how [[zhengda]]'s work on DDE could be integrated
+* etc..
+
+### Mostly done
+
+#### Week 1 (2010-05-24)
+
+* genext2fs: patches submitted, [[!debbug 562999]]
+ which add support for all block sizes and choosing them at runtime.
+* busybox: started porting the upstream and Debian package to Hurd and FreeBSD
+* rebuilding hurd-udeb from the pkg-hurd version
+ and adding a ld.so link to the initrd
+ fixes the exec translator crashing on startup.
+ (BTW would there be a mean to detect this from the libdiskfs bootstrap code
+ and report it ?)
+
+#### Week 2 (2010-05-31 to 2010-06-06)
+
+* *busybox*: patches [posted](http://lists.debian.org/debian-bsd/2010/05/msg00048.html).
+* *libdebian-installer4*: [[!debbug 584538]]
+* started working on mach initrd support
+* the installation images could boot into the main-menu
+ with the following changes:
+ * rebuild hurd-udeb from with the latest pkg-hurd patches
+ * use busybox from my osports-debian branch (see link above)
+ * tweak the d-i image build scripts
+ * the symlink /lib/ld.so -> ld.so.1 needs to be created somehow
+ (youpi mentionned it being the job of libc0.3-udeb I think)
+ * fix the poll() issue in libdebian-installer
+ (patch to be submitted soon),
+ also there is some hurd doxygen short-circuiting stuff
+ there which does not apply any more and prevents is to build.
+ * feed the initrd as a hard drive in qemu
+ (with some more space added to avoid it from becoming full)
+
diff --git a/user/jkoenig/gsoc2011_classes.dia b/user/jkoenig/gsoc2011_classes.dia
new file mode 100644
index 00000000..1aa3ef6c
--- /dev/null
+++ b/user/jkoenig/gsoc2011_classes.dia
@@ -0,0 +1,2227 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
+ <dia:diagramdata>
+ <dia:attribute name="background">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute name="pagebreak">
+ <dia:color val="#000099"/>
+ </dia:attribute>
+ <dia:attribute name="paper">
+ <dia:composite type="paper">
+ <dia:attribute name="name">
+ <dia:string>#A4#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="tmargin">
+ <dia:real val="2.8222000598907471"/>
+ </dia:attribute>
+ <dia:attribute name="bmargin">
+ <dia:real val="2.8222000598907471"/>
+ </dia:attribute>
+ <dia:attribute name="lmargin">
+ <dia:real val="2.8222000598907471"/>
+ </dia:attribute>
+ <dia:attribute name="rmargin">
+ <dia:real val="2.8222000598907471"/>
+ </dia:attribute>
+ <dia:attribute name="is_portrait">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="scaling">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="fitto">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="grid">
+ <dia:composite type="grid">
+ <dia:attribute name="width_x">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="width_y">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="visible_x">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="visible_y">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:composite type="color"/>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#d8e5e5"/>
+ </dia:attribute>
+ <dia:attribute name="guides">
+ <dia:composite type="guides">
+ <dia:attribute name="hguides"/>
+ <dia:attribute name="vguides"/>
+ </dia:composite>
+ </dia:attribute>
+ </dia:diagramdata>
+ <dia:layer name="Arrière-plan" visible="true" active="true">
+ <dia:group>
+ <dia:object type="UML - LargePackage" version="0" id="O0">
+ <dia:attribute name="obj_pos">
+ <dia:point val="43.3541,9.67669"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="43.3041,8.62669;62.3869,21.8152"/>
+ </dia:attribute>
+ <dia:attribute name="meta">
+ <dia:composite type="dict"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="43.3541,9.67669"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="18.982784066269787"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="12.08849294970096"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0.10000000149011612"/>
+ </dia:attribute>
+ <dia:attribute name="line_colour">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="fill_colour">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute name="text_colour">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="name">
+ <dia:string>#User-defined classes#</dia:string>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="UML - Class" version="0" id="O1">
+ <dia:attribute name="obj_pos">
+ <dia:point val="46.0492,12.9799"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="45.9992,12.9299;60.4592,18.4299"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="46.0492,12.9799"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="14.359999999999999"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="5.4000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="name">
+ <dia:string>#HelloIo#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>#Implements a file which always contains "Hello, World!\n"#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="abstract">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="suppress_attributes">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="suppress_operations">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="visible_attributes">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="visible_operations">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="visible_comments">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="wrap_operations">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="wrap_after_char">
+ <dia:int val="40"/>
+ </dia:attribute>
+ <dia:attribute name="comment_line_length">
+ <dia:int val="40"/>
+ </dia:attribute>
+ <dia:attribute name="comment_tagging">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0.10000000000000001"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="fill_color">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute name="text_color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="normal_font">
+ <dia:font family="monospace" style="0" name="Courier"/>
+ </dia:attribute>
+ <dia:attribute name="abstract_font">
+ <dia:font family="monospace" style="88" name="Courier-BoldOblique"/>
+ </dia:attribute>
+ <dia:attribute name="polymorphic_font">
+ <dia:font family="monospace" style="8" name="Courier-Oblique"/>
+ </dia:attribute>
+ <dia:attribute name="classname_font">
+ <dia:font family="sans" style="80" name="Helvetica-Bold"/>
+ </dia:attribute>
+ <dia:attribute name="abstract_classname_font">
+ <dia:font family="sans" style="88" name="Helvetica-BoldOblique"/>
+ </dia:attribute>
+ <dia:attribute name="comment_font">
+ <dia:font family="sans" style="8" name="Helvetica-Oblique"/>
+ </dia:attribute>
+ <dia:attribute name="normal_font_height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="polymorphic_font_height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="abstract_font_height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="classname_font_height">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="abstract_classname_font_height">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="comment_font_height">
+ <dia:real val="0.69999999999999996"/>
+ </dia:attribute>
+ <dia:attribute name="attributes"/>
+ <dia:attribute name="operations">
+ <dia:composite type="umloperation">
+ <dia:attribute name="name">
+ <dia:string>#write#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#int#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="visibility">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="abstract">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="inheritance_type">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:attribute name="query">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="class_scope">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="parameters">
+ <dia:composite type="umlparameter">
+ <dia:attribute name="name">
+ <dia:string>#data#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#char[]#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="value">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="kind">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ <dia:composite type="umlparameter">
+ <dia:attribute name="name">
+ <dia:string>#offset#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#int#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="value">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="kind">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:composite>
+ <dia:composite type="umloperation">
+ <dia:attribute name="name">
+ <dia:string>#read#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#char[]#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="visibility">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="abstract">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="inheritance_type">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:attribute name="query">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="class_scope">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="parameters">
+ <dia:composite type="umlparameter">
+ <dia:attribute name="name">
+ <dia:string>#offset#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#int#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="value">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="kind">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ <dia:composite type="umlparameter">
+ <dia:attribute name="name">
+ <dia:string>#amount#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#int#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="value">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="kind">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:composite>
+ <dia:composite type="umloperation">
+ <dia:attribute name="name">
+ <dia:string>#seek#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#int#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="visibility">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="abstract">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="inheritance_type">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:attribute name="query">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="class_scope">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="parameters">
+ <dia:composite type="umlparameter">
+ <dia:attribute name="name">
+ <dia:string>#offset#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#int#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="value">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="kind">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ <dia:composite type="umlparameter">
+ <dia:attribute name="name">
+ <dia:string>#whence#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#int#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="value">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="kind">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="template">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="templates"/>
+ </dia:object>
+ </dia:group>
+ <dia:group>
+ <dia:object type="UML - LargePackage" version="0" id="O2">
+ <dia:attribute name="obj_pos">
+ <dia:point val="20.9284,1.19141"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="20.8784,0.141406;41.2223,31.2904"/>
+ </dia:attribute>
+ <dia:attribute name="meta">
+ <dia:composite type="dict"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="20.9284,1.19141"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="20.243864620053902"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="30.049005191839264"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0.10000000149011612"/>
+ </dia:attribute>
+ <dia:attribute name="line_colour">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="fill_colour">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute name="text_colour">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="name">
+ <dia:string>#MIG-generated classes#</dia:string>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="UML - Class" version="0" id="O3">
+ <dia:attribute name="obj_pos">
+ <dia:point val="24.8976,5.14749"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="24.8476,5.09749;38.1526,9.79749"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="24.8976,5.14749"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="13.205"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="4.5999999999999996"/>
+ </dia:attribute>
+ <dia:attribute name="name">
+ <dia:string>#IoServer#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>#Implements a message handler using a given IO object as a backend#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="abstract">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="suppress_attributes">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="suppress_operations">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="visible_attributes">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="visible_operations">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="visible_comments">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="wrap_operations">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="wrap_after_char">
+ <dia:int val="40"/>
+ </dia:attribute>
+ <dia:attribute name="comment_line_length">
+ <dia:int val="40"/>
+ </dia:attribute>
+ <dia:attribute name="comment_tagging">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0.10000000000000001"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="fill_color">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute name="text_color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="normal_font">
+ <dia:font family="monospace" style="0" name="Courier"/>
+ </dia:attribute>
+ <dia:attribute name="abstract_font">
+ <dia:font family="monospace" style="88" name="Courier-BoldOblique"/>
+ </dia:attribute>
+ <dia:attribute name="polymorphic_font">
+ <dia:font family="monospace" style="8" name="Courier-Oblique"/>
+ </dia:attribute>
+ <dia:attribute name="classname_font">
+ <dia:font family="sans" style="80" name="Helvetica-Bold"/>
+ </dia:attribute>
+ <dia:attribute name="abstract_classname_font">
+ <dia:font family="sans" style="88" name="Helvetica-BoldOblique"/>
+ </dia:attribute>
+ <dia:attribute name="comment_font">
+ <dia:font family="sans" style="8" name="Helvetica-Oblique"/>
+ </dia:attribute>
+ <dia:attribute name="normal_font_height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="polymorphic_font_height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="abstract_font_height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="classname_font_height">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="abstract_classname_font_height">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="comment_font_height">
+ <dia:real val="0.69999999999999996"/>
+ </dia:attribute>
+ <dia:attribute name="attributes"/>
+ <dia:attribute name="operations">
+ <dia:composite type="umloperation">
+ <dia:attribute name="name">
+ <dia:string>#IoServer#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="visibility">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="abstract">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="inheritance_type">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:attribute name="query">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="class_scope">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="parameters">
+ <dia:composite type="umlparameter">
+ <dia:attribute name="name">
+ <dia:string>#back#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#Io#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="value">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="kind">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:composite>
+ <dia:composite type="umloperation">
+ <dia:attribute name="name">
+ <dia:string>#handle#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#Message#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="visibility">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="abstract">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="inheritance_type">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:attribute name="query">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="class_scope">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="parameters">
+ <dia:composite type="umlparameter">
+ <dia:attribute name="name">
+ <dia:string>#message#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#Message#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="value">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="kind">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="template">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="templates"/>
+ </dia:object>
+ <dia:object type="UML - Class" version="0" id="O4">
+ <dia:attribute name="obj_pos">
+ <dia:point val="24.2494,13.3231"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="24.1994,13.2731;38.6594,18.1731"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="24.2494,13.3231"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="14.359999999999999"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="4.8000000000000007"/>
+ </dia:attribute>
+ <dia:attribute name="name">
+ <dia:string>#Io#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>#interface#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="abstract">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="suppress_attributes">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="suppress_operations">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="visible_attributes">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="visible_operations">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="visible_comments">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="wrap_operations">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="wrap_after_char">
+ <dia:int val="40"/>
+ </dia:attribute>
+ <dia:attribute name="comment_line_length">
+ <dia:int val="17"/>
+ </dia:attribute>
+ <dia:attribute name="comment_tagging">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0.10000000000000001"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="fill_color">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute name="text_color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="normal_font">
+ <dia:font family="monospace" style="0" name="Courier"/>
+ </dia:attribute>
+ <dia:attribute name="abstract_font">
+ <dia:font family="monospace" style="88" name="Courier-BoldOblique"/>
+ </dia:attribute>
+ <dia:attribute name="polymorphic_font">
+ <dia:font family="monospace" style="8" name="Courier-Oblique"/>
+ </dia:attribute>
+ <dia:attribute name="classname_font">
+ <dia:font family="sans" style="80" name="Helvetica-Bold"/>
+ </dia:attribute>
+ <dia:attribute name="abstract_classname_font">
+ <dia:font family="sans" style="88" name="Helvetica-BoldOblique"/>
+ </dia:attribute>
+ <dia:attribute name="comment_font">
+ <dia:font family="sans" style="8" name="Helvetica-Oblique"/>
+ </dia:attribute>
+ <dia:attribute name="normal_font_height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="polymorphic_font_height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="abstract_font_height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="classname_font_height">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="abstract_classname_font_height">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="comment_font_height">
+ <dia:real val="0.69999999999999996"/>
+ </dia:attribute>
+ <dia:attribute name="attributes"/>
+ <dia:attribute name="operations">
+ <dia:composite type="umloperation">
+ <dia:attribute name="name">
+ <dia:string>#write#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#int#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="visibility">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="abstract">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="inheritance_type">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:attribute name="query">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="class_scope">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="parameters">
+ <dia:composite type="umlparameter">
+ <dia:attribute name="name">
+ <dia:string>#data#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#char[]#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="value">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="kind">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ <dia:composite type="umlparameter">
+ <dia:attribute name="name">
+ <dia:string>#offset#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#int#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="value">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="kind">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:composite>
+ <dia:composite type="umloperation">
+ <dia:attribute name="name">
+ <dia:string>#read#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#char[]#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="visibility">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="abstract">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="inheritance_type">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:attribute name="query">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="class_scope">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="parameters">
+ <dia:composite type="umlparameter">
+ <dia:attribute name="name">
+ <dia:string>#offset#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#int#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="value">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="kind">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ <dia:composite type="umlparameter">
+ <dia:attribute name="name">
+ <dia:string>#amount#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#int#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="value">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="kind">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:composite>
+ <dia:composite type="umloperation">
+ <dia:attribute name="name">
+ <dia:string>#seek#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#int#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="visibility">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="abstract">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="inheritance_type">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:attribute name="query">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="class_scope">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="parameters">
+ <dia:composite type="umlparameter">
+ <dia:attribute name="name">
+ <dia:string>#offset#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#int#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="value">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="kind">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ <dia:composite type="umlparameter">
+ <dia:attribute name="name">
+ <dia:string>#whence#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#int#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="value">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="kind">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="template">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="templates"/>
+ </dia:object>
+ <dia:object type="UML - Class" version="0" id="O5">
+ <dia:attribute name="obj_pos">
+ <dia:point val="24.2494,21.6986"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="24.1994,21.6486;38.6594,27.9486"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="24.2494,21.6986"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="14.359999999999999"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="6.2000000000000002"/>
+ </dia:attribute>
+ <dia:attribute name="name">
+ <dia:string>#IoUser#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>#Implements the Io interface by performing RPC#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="abstract">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="suppress_attributes">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="suppress_operations">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="visible_attributes">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="visible_operations">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="visible_comments">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="wrap_operations">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="wrap_after_char">
+ <dia:int val="40"/>
+ </dia:attribute>
+ <dia:attribute name="comment_line_length">
+ <dia:int val="40"/>
+ </dia:attribute>
+ <dia:attribute name="comment_tagging">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0.10000000000000001"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="fill_color">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute name="text_color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="normal_font">
+ <dia:font family="monospace" style="0" name="Courier"/>
+ </dia:attribute>
+ <dia:attribute name="abstract_font">
+ <dia:font family="monospace" style="88" name="Courier-BoldOblique"/>
+ </dia:attribute>
+ <dia:attribute name="polymorphic_font">
+ <dia:font family="monospace" style="8" name="Courier-Oblique"/>
+ </dia:attribute>
+ <dia:attribute name="classname_font">
+ <dia:font family="sans" style="80" name="Helvetica-Bold"/>
+ </dia:attribute>
+ <dia:attribute name="abstract_classname_font">
+ <dia:font family="sans" style="88" name="Helvetica-BoldOblique"/>
+ </dia:attribute>
+ <dia:attribute name="comment_font">
+ <dia:font family="sans" style="8" name="Helvetica-Oblique"/>
+ </dia:attribute>
+ <dia:attribute name="normal_font_height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="polymorphic_font_height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="abstract_font_height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="classname_font_height">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="abstract_classname_font_height">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="comment_font_height">
+ <dia:real val="0.69999999999999996"/>
+ </dia:attribute>
+ <dia:attribute name="attributes"/>
+ <dia:attribute name="operations">
+ <dia:composite type="umloperation">
+ <dia:attribute name="name">
+ <dia:string>#IoUser#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="visibility">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="abstract">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="inheritance_type">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:attribute name="query">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="class_scope">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="parameters">
+ <dia:composite type="umlparameter">
+ <dia:attribute name="name">
+ <dia:string>#port#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#MachPort#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="value">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="kind">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:composite>
+ <dia:composite type="umloperation">
+ <dia:attribute name="name">
+ <dia:string>#write#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#int#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="visibility">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="abstract">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="inheritance_type">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:attribute name="query">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="class_scope">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="parameters">
+ <dia:composite type="umlparameter">
+ <dia:attribute name="name">
+ <dia:string>#data#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#char[]#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="value">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="kind">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ <dia:composite type="umlparameter">
+ <dia:attribute name="name">
+ <dia:string>#offset#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#int#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="value">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="kind">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:composite>
+ <dia:composite type="umloperation">
+ <dia:attribute name="name">
+ <dia:string>#read#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#char[]#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="visibility">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="abstract">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="inheritance_type">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:attribute name="query">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="class_scope">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="parameters">
+ <dia:composite type="umlparameter">
+ <dia:attribute name="name">
+ <dia:string>#offset#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#int#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="value">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="kind">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ <dia:composite type="umlparameter">
+ <dia:attribute name="name">
+ <dia:string>#amount#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#int#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="value">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="kind">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:composite>
+ <dia:composite type="umloperation">
+ <dia:attribute name="name">
+ <dia:string>#seek#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#int#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="visibility">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="abstract">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="inheritance_type">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:attribute name="query">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="class_scope">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="parameters">
+ <dia:composite type="umlparameter">
+ <dia:attribute name="name">
+ <dia:string>#offset#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#int#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="value">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="kind">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ <dia:composite type="umlparameter">
+ <dia:attribute name="name">
+ <dia:string>#whence#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#int#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="value">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="kind">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="template">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="templates"/>
+ </dia:object>
+ <dia:object type="UML - Realizes" version="1" id="O6">
+ <dia:attribute name="obj_pos">
+ <dia:point val="31.4294,18.1734"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="31.3794,18.1734;31.5294,21.719"/>
+ </dia:attribute>
+ <dia:attribute name="meta">
+ <dia:composite type="dict"/>
+ </dia:attribute>
+ <dia:attribute name="orth_points">
+ <dia:point val="31.4294,18.1734"/>
+ <dia:point val="31.4294,18.1734"/>
+ <dia:point val="31.4294,21.6482"/>
+ <dia:point val="31.4294,21.6482"/>
+ </dia:attribute>
+ <dia:attribute name="orth_orient">
+ <dia:enum val="0"/>
+ <dia:enum val="1"/>
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="orth_autoroute">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="line_colour">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="text_colour">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="name">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O4" connection="14"/>
+ <dia:connection handle="1" to="O5" connection="16"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="UML - Association" version="2" id="O7">
+ <dia:attribute name="name">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="direction">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="show_direction">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="assoc_type">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="role_a">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="multipicity_a">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="visibility_a">
+ <dia:enum val="3"/>
+ </dia:attribute>
+ <dia:attribute name="show_arrow_a">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="role_b">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="multipicity_b">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="visibility_b">
+ <dia:enum val="3"/>
+ </dia:attribute>
+ <dia:attribute name="show_arrow_b">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="obj_pos">
+ <dia:point val="24.8976,8.44749"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="22.3132,7.69749;25.6476,16.0231"/>
+ </dia:attribute>
+ <dia:attribute name="meta">
+ <dia:composite type="dict"/>
+ </dia:attribute>
+ <dia:attribute name="orth_points">
+ <dia:point val="24.8976,8.44749"/>
+ <dia:point val="22.3632,8.44749"/>
+ <dia:point val="22.3632,14.4231"/>
+ <dia:point val="24.2494,14.4231"/>
+ </dia:attribute>
+ <dia:attribute name="orth_orient">
+ <dia:enum val="0"/>
+ <dia:enum val="1"/>
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="orth_autoroute">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="text_colour">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="line_colour">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O3" connection="8"/>
+ <dia:connection handle="1" to="O4" connection="3"/>
+ </dia:connections>
+ <dia:childnode parent="O2"/>
+ </dia:object>
+ </dia:group>
+ <dia:group>
+ <dia:object type="UML - Realizes" version="1" id="O8">
+ <dia:attribute name="obj_pos">
+ <dia:point val="10.6153,8.74801"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="10.5653,8.74801;10.7153,12.32"/>
+ </dia:attribute>
+ <dia:attribute name="meta">
+ <dia:composite type="dict"/>
+ </dia:attribute>
+ <dia:attribute name="orth_points">
+ <dia:point val="10.6153,8.74801"/>
+ <dia:point val="10.6153,8.74801"/>
+ <dia:point val="10.6153,12.2493"/>
+ <dia:point val="10.6153,12.2493"/>
+ </dia:attribute>
+ <dia:attribute name="orth_orient">
+ <dia:enum val="0"/>
+ <dia:enum val="1"/>
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="orth_autoroute">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="line_colour">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="text_colour">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="name">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O10" connection="10"/>
+ <dia:connection handle="1" to="O11" connection="12"/>
+ </dia:connections>
+ <dia:childnode parent="O9"/>
+ </dia:object>
+ <dia:object type="UML - LargePackage" version="0" id="O9">
+ <dia:attribute name="obj_pos">
+ <dia:point val="0.503207,3.45415"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="0.453207,2.40415;18.7966,24.081"/>
+ </dia:attribute>
+ <dia:attribute name="meta">
+ <dia:composite type="dict"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="0.503207,3.45415"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="18.243354954612922"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="20.576807332528524"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0.10000000149011612"/>
+ </dia:attribute>
+ <dia:attribute name="line_colour">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="fill_colour">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute name="text_colour">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="name">
+ <dia:string>#libports-like library#</dia:string>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="UML - Class" version="0" id="O10">
+ <dia:attribute name="obj_pos">
+ <dia:point val="4.78285,5.49761"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="4.73285,5.44761;16.4978,8.74761"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="4.78285,5.49761"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="11.664999999999999"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="3.2000000000000002"/>
+ </dia:attribute>
+ <dia:attribute name="name">
+ <dia:string>#Server#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>#interface#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="abstract">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="suppress_attributes">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="suppress_operations">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="visible_attributes">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="visible_operations">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="visible_comments">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="wrap_operations">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="wrap_after_char">
+ <dia:int val="40"/>
+ </dia:attribute>
+ <dia:attribute name="comment_line_length">
+ <dia:int val="17"/>
+ </dia:attribute>
+ <dia:attribute name="comment_tagging">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0.10000000000000001"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="fill_color">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute name="text_color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="normal_font">
+ <dia:font family="monospace" style="0" name="Courier"/>
+ </dia:attribute>
+ <dia:attribute name="abstract_font">
+ <dia:font family="monospace" style="88" name="Courier-BoldOblique"/>
+ </dia:attribute>
+ <dia:attribute name="polymorphic_font">
+ <dia:font family="monospace" style="8" name="Courier-Oblique"/>
+ </dia:attribute>
+ <dia:attribute name="classname_font">
+ <dia:font family="sans" style="80" name="Helvetica-Bold"/>
+ </dia:attribute>
+ <dia:attribute name="abstract_classname_font">
+ <dia:font family="sans" style="88" name="Helvetica-BoldOblique"/>
+ </dia:attribute>
+ <dia:attribute name="comment_font">
+ <dia:font family="sans" style="8" name="Helvetica-Oblique"/>
+ </dia:attribute>
+ <dia:attribute name="normal_font_height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="polymorphic_font_height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="abstract_font_height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="classname_font_height">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="abstract_classname_font_height">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="comment_font_height">
+ <dia:real val="0.69999999999999996"/>
+ </dia:attribute>
+ <dia:attribute name="attributes"/>
+ <dia:attribute name="operations">
+ <dia:composite type="umloperation">
+ <dia:attribute name="name">
+ <dia:string>#handle#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#Message#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="visibility">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="abstract">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="inheritance_type">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:attribute name="query">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="class_scope">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="parameters">
+ <dia:composite type="umlparameter">
+ <dia:attribute name="name">
+ <dia:string>#msg#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#Message#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="value">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="kind">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="template">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="templates"/>
+ </dia:object>
+ <dia:object type="UML - Class" version="0" id="O11">
+ <dia:attribute name="obj_pos">
+ <dia:point val="4.78285,12.2997"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="4.73285,12.2497;16.4978,15.5497"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="4.78285,12.2997"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="11.664999999999999"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="3.2000000000000002"/>
+ </dia:attribute>
+ <dia:attribute name="name">
+ <dia:string>#Demux#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="abstract">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="suppress_attributes">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="suppress_operations">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="visible_attributes">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="visible_operations">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="visible_comments">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="wrap_operations">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="wrap_after_char">
+ <dia:int val="40"/>
+ </dia:attribute>
+ <dia:attribute name="comment_line_length">
+ <dia:int val="17"/>
+ </dia:attribute>
+ <dia:attribute name="comment_tagging">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0.10000000000000001"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="fill_color">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute name="text_color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="normal_font">
+ <dia:font family="monospace" style="0" name="Courier"/>
+ </dia:attribute>
+ <dia:attribute name="abstract_font">
+ <dia:font family="monospace" style="88" name="Courier-BoldOblique"/>
+ </dia:attribute>
+ <dia:attribute name="polymorphic_font">
+ <dia:font family="monospace" style="8" name="Courier-Oblique"/>
+ </dia:attribute>
+ <dia:attribute name="classname_font">
+ <dia:font family="sans" style="80" name="Helvetica-Bold"/>
+ </dia:attribute>
+ <dia:attribute name="abstract_classname_font">
+ <dia:font family="sans" style="88" name="Helvetica-BoldOblique"/>
+ </dia:attribute>
+ <dia:attribute name="comment_font">
+ <dia:font family="sans" style="8" name="Helvetica-Oblique"/>
+ </dia:attribute>
+ <dia:attribute name="normal_font_height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="polymorphic_font_height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="abstract_font_height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="classname_font_height">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="abstract_classname_font_height">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="comment_font_height">
+ <dia:real val="0.69999999999999996"/>
+ </dia:attribute>
+ <dia:attribute name="attributes"/>
+ <dia:attribute name="operations">
+ <dia:composite type="umloperation">
+ <dia:attribute name="name">
+ <dia:string>#addServer#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="visibility">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="abstract">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="inheritance_type">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:attribute name="query">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="class_scope">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="parameters">
+ <dia:composite type="umlparameter">
+ <dia:attribute name="name">
+ <dia:string>#s#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#Server#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="value">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="kind">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:composite>
+ <dia:composite type="umloperation">
+ <dia:attribute name="name">
+ <dia:string>#handle#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#Message#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="visibility">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="abstract">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="inheritance_type">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:attribute name="query">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="class_scope">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="parameters">
+ <dia:composite type="umlparameter">
+ <dia:attribute name="name">
+ <dia:string>#msg#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="type">
+ <dia:string>#Message#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="value">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="comment">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="kind">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="template">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="templates"/>
+ <dia:childnode parent="O9"/>
+ </dia:object>
+ <dia:object type="UML - Association" version="2" id="O12">
+ <dia:attribute name="name">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="direction">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="show_direction">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="assoc_type">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="role_a">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="multipicity_a">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="visibility_a">
+ <dia:enum val="3"/>
+ </dia:attribute>
+ <dia:attribute name="show_arrow_a">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="role_b">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="multipicity_b">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="visibility_b">
+ <dia:enum val="3"/>
+ </dia:attribute>
+ <dia:attribute name="show_arrow_b">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="obj_pos">
+ <dia:point val="4.78285,12.9997"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="2.75192,6.54761;5.53285,14.5997"/>
+ </dia:attribute>
+ <dia:attribute name="meta">
+ <dia:composite type="dict"/>
+ </dia:attribute>
+ <dia:attribute name="orth_points">
+ <dia:point val="4.78285,12.9997"/>
+ <dia:point val="2.80192,12.9997"/>
+ <dia:point val="2.80192,6.59761"/>
+ <dia:point val="4.78285,6.59761"/>
+ </dia:attribute>
+ <dia:attribute name="orth_orient">
+ <dia:enum val="0"/>
+ <dia:enum val="1"/>
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="orth_autoroute">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="text_colour">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="line_colour">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O11" connection="3"/>
+ <dia:connection handle="1" to="O10" connection="3"/>
+ </dia:connections>
+ <dia:childnode parent="O9"/>
+ </dia:object>
+ <dia:object type="UML - Note" version="0" id="O13">
+ <dia:attribute name="obj_pos">
+ <dia:point val="5.16035,19.1017"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="5.11035,19.0517;16.1203,22.4517"/>
+ </dia:attribute>
+ <dia:attribute name="meta">
+ <dia:composite type="dict"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="5.16035,19.1017"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="10.91"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="3.3000000000000003"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0.10000000000000001"/>
+ </dia:attribute>
+ <dia:attribute name="line_colour">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="fill_colour">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#Plus some kind of port set
+support and a way to start
+a server thread.#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="monospace" style="0" name="Courier"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="5.51035,20.3467"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:childnode parent="O9"/>
+ </dia:object>
+ <dia:object type="UML - Realizes" version="1" id="O14">
+ <dia:attribute name="obj_pos">
+ <dia:point val="10.6153,8.74801"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="10.5653,8.74801;10.7153,12.32"/>
+ </dia:attribute>
+ <dia:attribute name="meta">
+ <dia:composite type="dict"/>
+ </dia:attribute>
+ <dia:attribute name="orth_points">
+ <dia:point val="10.6153,8.74801"/>
+ <dia:point val="10.6153,8.74801"/>
+ <dia:point val="10.6153,12.2493"/>
+ <dia:point val="10.6153,12.2493"/>
+ </dia:attribute>
+ <dia:attribute name="orth_orient">
+ <dia:enum val="0"/>
+ <dia:enum val="1"/>
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="orth_autoroute">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="line_colour">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="text_colour">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="name">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O10" connection="10"/>
+ <dia:connection handle="1" to="O11" connection="12"/>
+ </dia:connections>
+ <dia:childnode parent="O9"/>
+ </dia:object>
+ </dia:group>
+ <dia:object type="UML - Note" version="0" id="O15">
+ <dia:attribute name="obj_pos">
+ <dia:point val="29.2528,-4.64872"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="29.2028,-4.69872;32.8978,-2.89872"/>
+ </dia:attribute>
+ <dia:attribute name="meta">
+ <dia:composite type="dict"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="29.2528,-4.64872"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="3.5949999999999998"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="1.7"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0.10000000000000001"/>
+ </dia:attribute>
+ <dia:attribute name="line_colour">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="fill_colour">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#io.defs#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="monospace" style="0" name="Courier"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="29.6028,-3.40372"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="UML - Dependency" version="1" id="O16">
+ <dia:attribute name="obj_pos">
+ <dia:point val="31.0503,-2.94872"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="31.0003,-2.94872;32.3053,1.26212"/>
+ </dia:attribute>
+ <dia:attribute name="meta">
+ <dia:composite type="dict"/>
+ </dia:attribute>
+ <dia:attribute name="orth_points">
+ <dia:point val="31.0503,-2.94872"/>
+ <dia:point val="31.0503,-2.94872"/>
+ <dia:point val="31.0503,1.19141"/>
+ <dia:point val="31.0503,1.19141"/>
+ </dia:attribute>
+ <dia:attribute name="orth_orient">
+ <dia:enum val="0"/>
+ <dia:enum val="1"/>
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="orth_autoroute">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="text_colour">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="line_colour">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="name">
+ <dia:string>#mig#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="draw_arrow">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O15" connection="6"/>
+ <dia:connection handle="1" to="O2" connection="1"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="UML - Realizes" version="1" id="O17">
+ <dia:attribute name="obj_pos">
+ <dia:point val="38.6094,14.4231"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="38.5594,13.5731;46.0992,16.0015"/>
+ </dia:attribute>
+ <dia:attribute name="meta">
+ <dia:composite type="dict"/>
+ </dia:attribute>
+ <dia:attribute name="orth_points">
+ <dia:point val="38.6094,14.4231"/>
+ <dia:point val="42.3293,14.4231"/>
+ <dia:point val="42.3293,14.3799"/>
+ <dia:point val="46.0492,14.3799"/>
+ </dia:attribute>
+ <dia:attribute name="orth_orient">
+ <dia:enum val="0"/>
+ <dia:enum val="1"/>
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="orth_autoroute">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="line_colour">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="text_colour">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="name">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O4" connection="4"/>
+ <dia:connection handle="1" to="O1" connection="3"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="UML - Realizes" version="1" id="O18">
+ <dia:attribute name="obj_pos">
+ <dia:point val="16.4478,6.59761"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="16.3978,5.74761;24.9476,8.17255"/>
+ </dia:attribute>
+ <dia:attribute name="meta">
+ <dia:composite type="dict"/>
+ </dia:attribute>
+ <dia:attribute name="orth_points">
+ <dia:point val="16.4478,6.59761"/>
+ <dia:point val="20.4657,6.59761"/>
+ <dia:point val="20.4657,6.54749"/>
+ <dia:point val="24.8976,6.54749"/>
+ </dia:attribute>
+ <dia:attribute name="orth_orient">
+ <dia:enum val="0"/>
+ <dia:enum val="1"/>
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="orth_autoroute">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="line_colour">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="text_colour">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="name">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="stereotype">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O10" connection="4"/>
+ <dia:connection handle="1" to="O3" connection="3"/>
+ </dia:connections>
+ </dia:object>
+ </dia:layer>
+</dia:diagram>
diff --git a/user/jkoenig/gsoc2011_classes.png b/user/jkoenig/gsoc2011_classes.png
new file mode 100644
index 00000000..7149b813
--- /dev/null
+++ b/user/jkoenig/gsoc2011_classes.png
Binary files differ
diff --git a/user/jkoenig/gsoc2011_proposal.mdwn b/user/jkoenig/gsoc2011_proposal.mdwn
new file mode 100644
index 00000000..9840f14f
--- /dev/null
+++ b/user/jkoenig/gsoc2011_proposal.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+This page has moved [[here|java]].
+
diff --git a/user/jkoenig/java.mdwn b/user/jkoenig/java.mdwn
new file mode 100644
index 00000000..e5d288cc
--- /dev/null
+++ b/user/jkoenig/java.mdwn
@@ -0,0 +1,511 @@
+[[!meta copyright="Copyright © 2011 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 stable_URL]]
+
+
+# Improve Java on Hurd (GSoC 2011)
+
+
+## Description
+
+The project consists in improving Java support on Hurd.
+This includes porting OpenJDK,
+creating low-level Java bindings for Mach and Hurd,
+as well as creating Java libraries to help with translator development.
+
+For details, see my original [[proposal]].
+
+
+## Current status
+
+Feeling slightly behind schedule; but project is very ambitious, which has been
+known from the beginning, and there is great progress, so there is no problem.
+--[[tschwinge]], 2011-06-29.
+
+
+### Apt repository
+
+Modified Debian packages are available in this repository:
+
+ deb http://jk.fr.eu.org/debian experimental/
+ deb-src http://jk.fr.eu.org/debian experimental/
+
+
+### Glibc signal code improvements
+
+2011-06-29:
+Patches were submitted to `libc-alpha`
+which implement global signal dispositions and `SA_SIGINFO`.
+My latest code is available on
+[github](http://github.com/jeremie-koenig/glibc/commits/master-beware-rebase),
+and modified Debian packages
+are available in my apt repository.
+
+2011-07-20:
+The patches were reviewed by Samuel Thibault.
+Samuel pointed out a couple of issues
+and I beleive I have addressed all of them (fixes posted).
+I'm in the process of publishing updated libc and hurd packages;
+provided those work as expected,
+the next step would be to get these changes into Debian.
+
+One question is how the new symbols introduced by my patches
+should be handled.
+Weak symbols turned out to be impractical,
+so I'm currently considering using a Debian-specific
+symbol version in the interim period (`GLIBC_2.13_DEBIAN_8` so far).
+The ultimate symbol version to be used will depend on
+the time at which the patches get integrated upstream
+(most likely `GLIBC_2.15`),
+at which point we will alias the interim version
+to the new one in debian packages.
+
+I have modified libc0.3 to include a `deb-symbols(5)` file
+(alternatively see <http://wiki.debian.org/Projects/ImprovedDpkgShlibdeps>)
+so that we get an accurate libc dependency in `hurd` and other packages
+when the symbols in question are pulled in.
+
+[[hurd/libthreads]] (cthreads library) will not be changed. There's no reason
+why its behavior should change, whereas for [[libpthread]] it's needed for
+conformance. Patches posted on 2011-05-25, but there's a more recent one in
+the modified hurd package (adds `_hurd_sigstate_delete` and removes the weak
+symbols).
+
+IRC, freenode, #hurd, 2011-07-27:
+
+ < jkoenig> the glibc patches are pending review and inclusion in Debian (I
+ think youpi wants to check my latest additions before we go ahead with
+ that)
+ < jkoenig> when it's in Debian and the sky does not fall, I intend to
+ resubmit a full series to libc-alpha for inclusion upstream.
+
+IRC, freenode, #hurd, 2011-08-24:
+
+ < youpi> jkoenig: I'll probably commit your siginfo/globalsig patches soon
+ < youpi> I'm building the ant package atm, seems to proceed great
+ < jkoenig> youpi, great!
+
+Another issue which came up with OpenJDK is the expansion
+by the dynamic linker of `$ORIGIN` in the `RPATH` header,
+see below.
+
+#### Plans
+
+The patches are pending review and inclusion upstream.
+As soon as we reach an agreement wrt. the new interfaces
+(in particular wrt. the value of `SA_SIGINFO`),
+the patches will be applied to the Debian libc packages
+for broader testing.
+
+
+##### Open Items
+
+ * Test patches: in progress, [[jkoenig]], Svante. More volunteers welcome,
+ of course.
+
+ > There's an issue with gdb,
+ > namely signals lose their "untracedness" when they go
+ > through the global sigstate's pending mask,
+ > so gdb spins intercepting a signal and trying to deliver it.
+ > [Patch](http://github.com/jeremie-koenig/glibc/commit/3ecb990e9d08d5f75adc40b738b35a1802cc0943).
+
+ * If [[jkoenig]] thinks it's mature enough: should ask
+ [[Samuel|samuelthibault]] to test these patches on the buildds.
+
+ > There's a risk that a dependency on my patched libc
+ > might be pulled in while building packages
+ > (in particular hurd)
+ > --[[jkoenig]] 2011-06-22
+
+ * Waiting on ABI finalization ([!] Roland).
+
+ * Which numeric values to use for `SA_SIGINFO` (and `SA_NOCLDWAIT`)?
+
+ > Staying in sync with BSD seems the most logical approach,
+ > so I have defined it to 0x40. --[[jkoenig]] 2011-06-29
+
+ * Get patches reviewed (Roland?), and integrated into official sources: [!]
+ [[tschwinge]].
+
+ > [[samuelthibault]] reviewed the patches and pointed out a couple of
+ > issues which I'm currently working on:
+ >
+ > * Slight behaviour change with respect to forgetting blocked ignored
+ > signals. POSIX is flexible in this regard but I guess we could retain
+ > them instead of the current behaviour.
+ > * Sigstate accessors could be made extern inline functions.
+ > I suggest we postpone this.
+ > * Incorrect changes for `msg_{get,set}_init_int(INIT_SIGMASK)`
+ > * Some comments which can be improved.
+ >
+ > Once these are fixed we can probably test the patches in Debian.
+ >
+ > --[[jk]] 2011-07-06
+
+ * Documentations bits (from here, the initial [[proposal]], and elsewhere)
+ should probably be
+ moved either into the appropriate glibc or Hurd documentation
+ files/reference manuals, or to [[glibc/signal]].
+
+ * `SA_SIGINFO` patch is based on [[Samuel|samuelthibault]]'s earlier work.
+ Thus, have him review the new patch?
+
+ * `SA_SIGINFO` patch has a few TODOs w.r.t. protocol changes for missing
+ information, and for FPU state. Providing even incomplete information is
+ an improvement on the current status. The question is, whether
+ applications rely on this information in any hard way if `SA_SIGINFO` is
+ available?
+
+ * We could possibly rename certain fields in `struct siginfo`, say
+ `si_pid_not_implemented`, to ensure compilation failures for programs
+ which use them. Or perhaps a linker warning is possible.
+
+ IRC, freenode, #hurd, 2011-08-20:
+
+ < youpi> jkoenig: I was considering renaming the fields of siginfo
+ < youpi> to catch applications which need those which we haven't
+ yet
+ < jkoenig> youpi, makes sense AFAICT
+ < youpi> one issue we'll get is some application which previously
+ built without SA_SIGINFO, and will now want some information
+ we're not yet able to provide
+ < youpi> but at least we'll know
+ < jkoenig> youpi, yes it would still be better than having them
+ crash at runtime because of it
+
+ IRC, freenode, #hurd, 2011-08-21:
+
+ < youpi> jkoenig: actually we need the fields for waitid
+
+ * The FPU state is not included in the `ucontext_t` passed to the signal
+ handler. On the other hand, `ucontext_t` is actually being somewhat
+ deprecated: the functions to restore it are no longer in POSIX.
+ `thread_get_state`() should return this information, in case we decide
+ to fill the gap, and there might be existing glibc wrappers, too.
+
+ * Perhaps have a look at `SA_NOCLDWAIT`.
+
+
+### Port OpenJDK
+
+As suggested by [[tschwinge]], I have targeted OpenJDK 7 at first.
+I don't expect it will be too hard to backport my patches to OpenJDK 6.
+I have succeeded in building a working JIT-less ("zero") version,
+although the dynamic linker issue must be worked around.
+Porting Hotspot (the original just-in-time compiler of OpenJDK)
+should not be too hard.
+If that fails we can fall back on Shark
+(a portable alternative JIT which uses LLVM).
+
+Complexity of porting HotSpot: probably low. The complex things should be
+arch- rather than OS-specific. Not many Linux-specific interfaces used.
+Garbage collection/memory management, etc. and/or most of other Linux-specific
+interfaces are already dealt with for the zero build.
+
+The dynamic linker issue is as follows.
+An executable-specific search path can be provided in the ELF RPATH header.
+RPATH directories can include the special string `$ORIGIN`,
+which is to be expanded to the directory the executable was loaded from.
+OpenJDK's `java` command uses this feature to locate
+the right `libjli.so` at runtime.
+However,
+on Hurd this information is not available to the dynamic linker
+and as a consequence RPATH components which include `$ORIGIN`
+are silently discarded.
+
+This can be worked around by defining
+the `LD_ORIGIN_PATH` environment variable.
+(which have I used to build and test OpenJDK so far.)
+
+IRC, freenode, #hurd, 2011-07-27:
+
+ < jkoenig> if you have the latest hurd/libc in my repository, you should be
+ able to run /usr/lib/jvm/java-7-openjdk/bin/java without defining
+ LD_ORIGIN_PATH manually
+ < braunr> java: error while loading shared libraries: libjli.so: cannot
+ open shared object file: No such file or directory
+ < jkoenig> braunr, this one is expected, it's the symlink problem.
+ < braunr> oh ok
+ < jkoenig> (ie. thus far, if java is accessed as /usr/bin/java, the ld
+ origin ends up as /usr/bin)
+
+ < jkoenig> *sigh*... it seems I'm going to have to reimplement realpath()
+ in elf/dl-origin.c.
+ < braunr> why ?
+ < jkoenig> using it from there results in duplicate symbols when linking
+ elf/librtld.map.o
+ < braunr> from where ?
+ < braunr> dl-origin ?
+ < jkoenig> apparently this part of the code uses a different allocator
+ (elf/dl-minimal.c)
+ < braunr> oh
+ < braunr> depndency issues ?
+ < braunr> or bootstrapping ones ?
+ < jkoenig> http://paste.debian.net/124310/
+ < jkoenig> dl-origin is what provides the $ORIGIN value for RPATH (now
+ sysdeps/mach/hurd/dl-origin.c, in our case)
+ < braunr> but what's the problem ?
+ < braunr> what prevents you from using the existing implementation ?
+ < jkoenig> you mean copy-and-paste the code ? Well I'll end up doing that I
+ guess... not that it feels right.
+ < braunr> not really
+ < braunr> link against what provides it
+ < braunr> i'm really not familiar with glibc :/
+ < jkoenig> also I'd like to understand what's happening precisely before I
+ resort to such blasphemy :-)
+ < braunr> :)
+ < jkoenig> maybe I could make {file,exec,_hurd}_exec_file_name()
+ canonicalize it instead.
+ < jkoenig> for some reason it does not feel right, though.
+ < braunr> why ?
+ < jkoenig> I'm not sure, loss of information maybe?
+ < jkoenig> (that I ran /usr/bin/java as opposed to /usr/lib/jvm/...)
+ < braunr> i guess you should explain the issue more clearly, i feel like
+ there is something i'm really missing :/
+ < braunr> but it can wait
+ < jkoenig> that ld.so actually needs the canonical file name to substitute
+ $ORIGIN is its own problem, not that of exec or _hurd_exec_file_name..
+ < jkoenig> Ok, so.. Initially the shell (indirectly) runs
+ _hurd_exec_file_name(..., "/usr/bin/java", ...), which then calls
+ file_exec_file_name() on the file in question, passing it its own
+ filename
+ < jkoenig> which is transmitted to exec_exec_file_name()
+ < jkoenig> (until now it's all pochu's patch)
+ < jkoenig> which then makes it available to the newly created process
+ through exec_startup_get_info_2() (my own addition)
+ < braunr> oh
+ < braunr> wasn't it available before oO ?
+ < jkoenig> no, exec only has access to a port to the executable file.
+ < braunr> how was argv[0] handled then ?
+ < jkoenig> argv[0] is handled like any other argument
+ < braunr> ok, so the file path is duplicated ?
+ < jkoenig> the shell (or whomever calls _hurd_exec) provide whatever they
+ want.
+ < braunr> ok
+ < jkoenig> well argv[0] is not necessarily the file path (at least not the
+ full path)
+ < braunr> right
+ < jkoenig> so exec() does some guesswork with $PATH but obviously that's
+ limited.
+ < braunr> so what you changed is that get_info_2 now receives a canonical
+ path ?
+ < jkoenig> right
+ < jkoenig> (or whatever was specified to _hurd_exec_file_name(), for this
+ reason and others we shouldn't use it for setuid programs.)
+ < jkoenig> well, not a canonical path. A path. (hence the problem)
+ < braunr> ok
+ < jkoenig> now both the filesystem and exec might run under another root so
+ they're not an option for canonicalization
+ < jkoenig> _hurd_exec_file_name (in libc) might be a better spot.
+ < braunr> resolution from the client, yes
+
+IRC, freenode, #hurd, 2011-08-03:
+
+ < jkoenig> so my RPATH patches are polished and built, and I'll post them
+ soon, is the good news
+
+IRC, freenode, #hurd, 2011-08-17:
+
+ < jkoenig> also fixed a fakeroot-induced deadlock in my dl-origin patches
+ (namely, under fakeroot, realpath() uses a socket (through stat), so we
+ need to use it when _hurd_dtable_lock is not held)
+ < jkoenig> also I'll post my dl-origin patches shortly
+ < youpi> dl-origin is about the environment variable that java needs,
+ right?
+ < jkoenig> about the environment variable it shouldn't need, yes :-)
+ < youpi> ah :)
+ < youpi> but ok, I vaguely remember what that refers to
+ < jkoenig> $LD_ORIGIN_PATH is used as an override (much like
+ LD_LIBRARY_PATH), but ideally ld.so uses whatever directory the loaded
+ binary is from.
+ < youpi> ok
+ < jkoenig> (as a substitution for $ORIGIN in RPATH)
+
+
+#### Plans
+
+I intend to fix the RPATH issue
+by building on [[pochu]]'s `file_exec_file_name()`
+[patches](http://lists.gnu.org/archive/html/bug-hurd/2010-08/msg00023.html).
+
+I have succeeded in building a Hotspot-enabled `libjvm.so`,
+although the current toolchain issues
+([[toolchain/ELFOSABI_GNU]]; 2011-07-03: fix committed in binutils)
+have so far prevented me from testing it.
+
+> It turns out the build fails later on in `hotspot/agent`
+> because Hurd lack a `libthread_db.so`.
+> Also, a Shark version builds, but the result does not work so far.
+>
+> In other news, Damien Raude-Morvan is
+> [working on a kFreeBSD version](http://lists.debian.org/debian-java/2011/06/msg00124.html),
+> so I intend to merge my current patches with his.
+>
+> --[[jkoenig]] 2011-06-29
+
+IRC, freenode, #hurd, 2011-08-03:
+
+ < jkoenig> and I'm battleing to update my OpenJDK patches to b147, and
+ merge the with the kFreeBSD ones.
+ < braunr> b147 ?
+ < jkoenig> but that thing is seriously huge and touches about everything,
+ so it's taking more time than I'd have hoped
+ < jkoenig> braunr, the latest release of IcedTea / OpenJDK 7 and the
+ current Debian version (in experimental of course)
+ < braunr> ok
+ < jkoenig> I'm trying to make this clean so that hopefully we can get them
+ integrated at some level of upstream (probably IcedTea, at least at
+ first)
+
+IRC, freenode, #hurd, 2011-08-10:
+
+ < jkoenig> well actually I've finished merging my patches with the freebsd
+ ones, and updating them to the new openjdk-7,
+ < jkoenig> but now a new version of both is out :-P
+
+
+##### Upstream Submission
+
+On 2011-07-15, *gnu_andrew* talked to us in the #hurd channel (freenode IRC),
+who is a maintainer of IcedTea. He's supportive of the porting approach, and
+is willing to review and integrate small patches for individual issues (rather
+than some huge patchset). Send patches to <distro-pkg-dev@openjdk.java.net>.
+
+##### Open Items
+
+ * [!] [[tschwinge]] to have a look at [[pochu]]'s `file_exec_file_name()`
+ patches, whether it's generally the right idea.
+
+ * Assuming it is, continue with getting `$ORIGIN` working.
+
+ * `libthread_db.so` issue. Likely, the Serviceability Agent is used by jdb
+ and the like only, so for now the goal should be to lose some functionality
+ by removing/avoiding this dependency.
+
+ * [[java-access-bridge]] (not critical; JVM appears to work without)
+
+ * IRC, freenode, #hurd, 2011-07-27:
+
+ < jkoenig> there's a bug with java.nio when running javadoc, you might
+ run into it.
+
+ * [[`SCM_CREDENTIALS`|open_issues/sendmsg/scm_creds]]
+
+ IRC, freenode, #hurd, 2011-08-03:
+
+ < jkoenig> wrt. peer credentials, openjdk also uses file modes for
+ security, and my guess is that it's sufficient, at least on Hurd, so
+ I've reduced my priority for this at least in the meantime
+
+ * They seem to have a rather heavy-weight process for such projects: confer
+ <http://mail.openjdk.java.net/pipermail/announce/2011-January/000092.html>,
+ for example. Do we need this, too?
+
+ > Probably not.
+ > My current approach (and Damien's wrt. the kFreeBSD patches)
+ > is to add preprocessor directives in the Linux code
+ > to make it more portable.
+ > --[[jkoenig]] 2011-06-29
+
+ * Eclipse
+
+ OK for testing -- but I'd very much hope that it *just works* as soon as we
+ provide the required Java platform. But it may perhaps have some
+ Linux-specifics (needlessly?) in its basement. Is it available for Debian
+ GNU/kFreeBSD already?
+
+
+### Java bindings for Mach
+
+The code is at <http://github.com/jeremie-koenig/hurd-java>.
+
+[[tschwinge]]'s notes for building with...
+
+ * GCJ installed (due to the current Debian multilib confusion):
+
+ $ tmp1=/usr/lib/gcc/i486-gnu/4.6 tmp2=/usr/lib/i386-gnu/gcc/i486-gnu/4.6 LIBRARY_PATH=$tmp2 COMPILER_PATH=$tmp1:$tmp2 C_INCLUDE_PATH=$tmp1/include make
+
+ * OpenJDK installed (to have it find the shared library, and the jni.h header
+ file):
+
+ $ jdk=/usr/lib/jvm/java-7-openjdk LD_LIBRARY_PATH=$jdk/jre/lib/i386/jli C_INCLUDE_PATH=$jdk/include make
+
+Doxygen-generated documentation is available at
+<http://jk.fr.eu.org/hurd-java/doc/html/>; or run `make doc` yourself.
+
+IRC, freenode, #hurd, 2011-07-27:
+
+ < jkoenig> I need to be able to read/write individual data items from
+ messages, in order to implement deallocation correctly, so I'm working on
+ that when I'm waiting for things to build, but it's not my primary focus
+ right now.
+
+IRC, freenode, #hurd, 2011-08-17:
+
+ < jkoenig> so, weekly status report: I have made some progress on the java
+ bindings, I hope to have a safe version mach_msg soon, after which I can
+ begin experimenting with mig.
+
+
+#### Plans
+
+(just started.)
+
+
+##### Open Items
+
+ * [[tschwinge]] has to read about RMI and CORBA.
+
+ * MIG
+
+ * Hacking [[microkernel/mach/MIG]] shouldn't be too difficult.
+
+ * (Unless you want to make MIG's own code (that is, not the generated
+ code, but MIG itself) look a bit more nice, too.) ;-)
+
+ * There are also alternatives to MIG. If there is interest, the following
+ could be considered:
+
+ * FLICK ([[!GNU_Savannah_task 5723]]). [[tschwinge]] has no idea yet if
+ there would be any benefits over MIG, like better modularity (for the
+ backends)? If we feel like it, we could spend a little bit of time on
+ this.
+
+ * For [[microkernel/Viengoos]], Neal has written a RPC stub generator
+ entirely in C Preprocessor macros. While this is obviously not
+ directly applicable, perhaps we can get some ideas from it.
+
+ * Anything else that would be worth having a look at? (What are other
+ microkernels using?)
+
+ * `mach_msg`
+
+ * Seems like the right approach to [[tschwinge]], but he hasn't digested
+ all the pecularities yet. Will definitely need more time.
+
+
+## Postponed
+
+Might get back to these as time/interest permits.
+
+
+### GCJ
+
+ * [[tschwinge]] has the feeling that Java in GCC (that is, GCJ) is mostly
+ dead? (True?)
+
+ * Thus perhaps not too much effort should be spent with it.
+
+ If the POSIX threads signal semantics makes it going, then great, otherwise
+ we should get a feeling what else is missing.
+
+
+### Joe-E.
diff --git a/user/jkoenig/java/discussion.mdwn b/user/jkoenig/java/discussion.mdwn
new file mode 100644
index 00000000..352f6d62
--- /dev/null
+++ b/user/jkoenig/java/discussion.mdwn
@@ -0,0 +1,559 @@
+[[!meta copyright="Copyright © 2011 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]]."]]"""]]
+
+[[!toc]]
+
+
+# General
+
+Some [[tschwinge]] comments regarding your proposal. Which is very good, if I
+may say so again! :-)
+
+Of course, everyone is invited to contribute here!
+
+I want to give the following methodology a try, instead of only having
+email/IRC discussions -- for the latter are again and again showing a tendency
+to be dumped and deposited into their respective archives, and be forgotten
+there. Of course, email/IRC discussions have their usefulness too, so we're
+not going to replace them totally. For example, for conducting discussions
+with a bunch of people (who may not even be following these pages here), email
+(or, as applicable, the even more interactive IRC) will still be the medium of
+choice. (And then, the executive summary should be posted here, or
+incorporated into your proposal.)
+
+Also, if you disagree with this suggested procedure right away, or at some
+later point begin to feel that this thing doesn't work out, or simply takes too
+much time (I don't think so: writing emails takes time, too), just say so, and
+we can reconsider.
+
+Of course, as this wiki is a passive medium rather than an active one as IRC
+and email are, it is fine to send notices like: *I have updated the wiki page,
+please have a look*.
+
+One idea is that your proposal evolves alongside with the ongoing work, and
+represents (in more or less detail) what has been done and what will be done.
+Also, we can hopefully use parts of it for documentation purposes, or as
+recipes for similar work (enabling other programming languages on the Hurd, for
+example).
+
+For this, I suggest the following procedure: as applicable, you can either
+address any comments in here (for example, if they're wrong :-), or if they
+require further discussion; think: *email discussion*), or you can address them
+directly in your propoal and remove the comments from here at the same time
+(think: *bug fix*).
+
+Generally, you can assume that for things I didn't comment on (within some
+reasonable timeframe/upon asking me again) that I'm fine with them. Otherwise,
+I might say: *I don't like this as is, but I'll need more time to think about
+it.*
+
+There is also a possibility that parts of your proposal will be split off; in
+cases where we think they're valuable to follow, but not at this time. (As you
+know, your proposal is not really a trivial one, so it may just be too much for
+one person's summer.) Such bits could be moved to [[open_issues]] pages,
+either new ones or existing ones, as applicable.
+
+
+# GSoC Site Discussion
+
+ * Discussion items from
+ <http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/jkoenig/1>
+ should be copied here:
+
+ * technical bits (obviously);
+
+ * also the *why do we want Java bindings* reasoning;
+
+ * CLISP findings should also be documented somewhere permanently.
+
+ * We should probaby open up a *languages for Hurd* section on the web
+ pages ([[!taglink open_issue_documentation]]).
+
+
+# Java Native Interface (JNI)
+
+ * <http://en.wikipedia.org/wiki/Java_Native_Interface>
+ * <http://download.oracle.com/javase/7/docs/technotes/guides/jni/>
+ * <http://java.sun.com/products/jdk/faq/jnifaq.html>
+ * <http://java.sun.com/docs/books/jni/>
+
+
+## Java Native Access (JNA)
+
+ * <http://jna.java.net/>
+ * <https://github.com/twall/jna#readme>
+
+This is a different approach, and *while some attention is paid to performance,
+correctness and ease of use take priority*.
+
+As we plan on only having a few native methods (for invoking `mach_msg`,
+essentially), JNA is probably the wrong approach: portability and ease of use
+is not important, but performance is.
+
+## Compiled Native Interface (CNI)
+
+ * <http://gcc.gnu.org/onlinedocs/gcj/About-CNI.html>
+ * <http://per.bothner.com/papers/UsenixJVM01/CNI01.pdf>
+
+Probably faster than JNI, but only usable with GCJ.
+
+> Given that we have very few JNI calls,
+> it might be interesting to take a "dual" approach
+> if CNI actually improves performance
+> when compiling to native code.
+> --[[jkoenig]] 2011-07-20
+
+# IRC, freenode, #hurd, 2011-07-13
+
+[[!tag open_issue_documentation]]
+
+ <jkoenig> Yes, I guess so. Maybe start investigating mig because it may
+ have repercussions on what the best approach would be for some aspects of
+ the Mach bindings.
+ <tschwinge> I still think that making MIG emit Java code is not too
+ difficult, once you have the required Java infrastructure (like what
+ you're writing at the moment).
+ <tschwinge> On the other hand, if there's another approach that you'd like
+ to use, I'm not trying to force using MIG.
+ <braunr> i still have a problem understanding your approach
+ <braunr> at which level are your bindings located ?
+ <jkoenig> I expect mig it will be the easiest route, but of course possibly
+ it won't.
+ <tschwinge> jkoenig: Yeah, be give some high-level to low-level overview?
+ <jkoenig> ok, so
+ <jkoenig> at the very core, low-level, we have a very thin amount of JNI
+ code to access (proper) system calls.
+ <jkoenig> by "proper" I mean things like mach_task_self, mach_msg and
+ mach_reply_port, which are actually system calls rather than RPCs to the
+ kernel.
+ <braunr> right
+ <jkoenig> at this level, we manipulate port names as integers, and the
+ message buffers for mach_msg are raw ByteBuffers (from the java.nio
+ package)
+ <jkoenig> actually, so-called /direct/ ByteBuffers, which are backed by
+ memory allocated outside of the Java heap, rather than as a byte[] array
+ <jkoenig> we can retreive the pointer from the JNI code and use the buffer
+ directly.
+ <jkoenig> (so, good for performance and it's also portable.)
+ <braunr> ok
+ <braunr> i'm more interested in the higher level bindings :)
+ <jkoenig> ok so, higher up.
+ <jkoenig> design goal from my proposal: "the memory safety of Java should
+ be maintained and extended to Mach primitives such as port names and
+ out-of-line memory regions"
+ <jkoenig> so integer port names are not "safe" in the sense that they can
+ be forged and misused in all kinds of way
+ <jkoenig> which is why I have a layer of Java code whose job is to wrap
+ this kind of low-level Mach stuff into safe abstractions
+ <jkoenig> and ideally the user should only use these safe abstractions.
+ <tschwinge> (Not to restrict the programmer, but to help him write correct
+ code.)
+ <jkoenig> right.
+ <braunr> so you can't use mach RPCs directly
+ <jkoenig> tschwinge, also to actually restrict them, in a Joe-E /
+ object-capability context, but that's not the primary concern right now
+ ;-)
+ <braunr> or you force your wrappers to have these abstractions as input
+ <jkoenig> braunr, well, actually at this level you still have Mach RPC
+ <jkoenig> but for instance, port names are encapsulated into "MachPort"
+ objects which ensure they are handled correcly
+ <tschwinge> As I understand it, you use these abstractions to prepare a
+ usual mach_msg message, and then invoke mach_msg.
+ <braunr> ok
+ <jkoenig> and message buffers are wrapped into "MachMsg" objects which both
+ help you write the messages into the ByteBuffer and prevent you from
+ doing funky stuff
+ <jkoenig> and ensure the ports which you send/receive/pseudo-receive after
+ an error/... are deallocated as required, etc.
+ <braunr> what's the interface to use IPC ?
+ <tschwinge> Is MIG doing that, too, I think? (And antrik once found some
+ error there, which is still to be reviewed...)
+ <jkoenig> braunr, so basically as a user you would be free to use either
+ one of these layers, or to use MIG-generated classes which would
+ construct and exchange messages for you using the second (safe) layer.
+ <braunr> ok, let's just finish with the low level layer before going
+ further please
+ <jkoenig> tschwinge, MIG does some type checking on the received message
+ and saves you the trouble of constructing/parsing them yourself, but I'm
+ not sure about how mach_msg errors are handled
+ <braunr> what are the main methods of MachMsg for example ?
+ <jkoenig> braunr, you may want to have a look at
+ http://jk.fr.eu.org/hurd-java/doc/html/classorg_1_1gnu_1_1mach_1_1MachMsg.html
+ <braunr> right, sorry
+ <braunr> grabbed the code at work and forgot here
+ <jkoenig> and also
+ https://github.com/jeremie-koenig/hurd-java/blob/master/HelloMach.java
+ which uses it
+ <jkoenig> but roughly, you'd use setRemotePort, setLocalPort, setId to
+ write your message's header
+ <jkoenig> then use one of the putFoo() methods to add data items to the
+ message
+ <braunr> ok, the mapping with the low level C interface is very clear
+ <braunr> that's good for me
+ <jkoenig> the putFoo() methods would write the appropriate type
+ descriptors, then the actual data.
+ <braunr> we can go on with the MiG part if you want :)
+ <jkoenig> right,
+ <jkoenig> so here you may want to look at the UML class diagram from
+ http://www.bddebian.com/~hurd-web/user/jkoenig/java/proposal/
+ <jkoenig> so in the C case, mig generates 3 files
+ <jkoenig> a header file which has the prototypes of the mig-generated
+ stubs,
+ <jkoenig> a *User.c which has their actual implementation
+ <jkoenig> and a *Server.c which handles demultiplexing the incoming
+ messages and helps with implementing servers.
+ <jkoenig> so we would do something along these lines, more or less:
+ <jkoenig> mig would generate the code for a Java interface in lieu of the
+ *.h file.
+ <jkoenig> a generated FooUser class would implement this interface by doing
+ RPC
+ <jkoenig> (so basically you would pass a MachPort object to the
+ constructor, and then you could use the resulting object to do RPC with
+ whatever is on the other end)
+ <jkoenig> and the generated FooServer class would do the opposite,
+ <braunr> ok
+ <braunr> issues with threads ?
+ <jkoenig> you would pass an object implementing the Foo interface to the
+ constructor,
+ <braunr> i'm guessing the demux part may have to create threads, right ?
+ <jkoenig> and the resulting object would handle messages by using the
+ object you passed.
+ <jkoenig> braunr, right, so that would be more a libports kind of code,
+ <braunr> the libports-like library, i see
+ <jkoenig> to which you could pass Server objects (for instance the
+ FooServer above), and it would handle incoming messages.
+ <braunr> how is message content mapped to a java interface ?
+ <jkoenig> this would be determined from the .defs files and MIG would
+ generate the appropriate code, hopefully.
+ <braunr> so the demux part would handle rpc integer identifiers ?
+ <jkoenig> right.
+ <braunr> but hm
+ <jkoenig> also mapping .defs files to Java interfaces might prove to be
+ tricky. data types conversion and all
+ <antrik> tschwinge: my mamory is rather hazy. IIRC the issue was that the
+ MIG-generated stubs deallocate out-of-line port arrays after the
+ implementation returns, before returning to the dispatcher
+ <braunr> i'll just overlook this specific implementation detail
+ <jkoenig> but we could use some annotation-based system if we need to
+ provide more information to generate the java code.
+ <antrik> but the Hurd (or rather glibc) RPC handling also automatically
+ deallocates everything if an error occurs
+ <antrik> so I changed the MIG code to deallocate only when no error occurs
+ <braunr> jkoenig: ok, we'll talk about that when there is more progress and
+ you have a better view of the problem
+ <antrik> at that time I was pretty sure that this is a correctly working
+ solution, but it always seemed questionable conceptually... however, I
+ wasn't able to come up with a better one, and nobody else commented on it
+ <braunr> antrik: shouldn't the hurd be changed not to deallocate something
+ it didn't allocate in the first place ?
+ <antrik> braunr: no, the server has to deallocate stuff before returning to
+ the client. the request message is destroyed before returning the reply.
+ <tschwinge> jkoenig, braunr: That's what I had in mind where MIG might be a
+ bit awkward. Then we can indeed either add annotations to the .defs
+ files, or reproduce them in some other format. That's some work, but
+ it's mostly a one-time work.
+ <tschwinge> After all, the RPC interface is a binary one, and there may be
+ more than one API for creating these messages, etc.
+ <antrik> jkoenig: actually, at least in the Hurd, server-side and
+ client-side headers are separate -- so MIG actually creates four files
+ <jkoenig> tschwinge, wrt to annotations I was more thinking about Java
+ ones, such as: @MIGDefsFile("mach/task.defs") @MIGCType("task_t") public
+ interface Task { }
+ <jkoenig> antrik, oh, ok, it makes sense.
+ <braunr> jkoenig: anything else ?
+ <jkoenig> braunr, nothing that I can think of
+ <braunr> ok
+ <antrik> tschwinge: I think it would be a *very* bad idea to introduce
+ redundancy regarding RPC definitions
+ <braunr> thanks for the tour :)
+ <antrik> (the _request.defs/_reply.defs mess is bad enough...)
+ <jkoenig> did I speak about the "Unsafe" pseudo-exception? that's
+ interesting :-)
+ <tschwinge> jkoenig: Also, virtual memory abstractions?
+ <braunr> jkoenig: you didn't
+ <tschwinge> antrik: Well, then we could create some other super-format.
+ But that's just a detail IMO.
+ <jkoenig> ok, so wrt virtual memory, a page we received can be wrapped with
+ some JNI help into a (direct) ByteBuffer object.
+ <jkoenig> deallocating sent pages will be tricky, though.
+ <tschwinge> antrik: To put it this way: for me the .defs files are just one
+ way of expressing the RPC interfaces' contracts. (At the same time, they
+ happen to be the actual reference for these, too. But the specification
+ itself could just as well be a textual one.)
+ <jkoenig> on approach I've been thinking about would be to "wrap" the
+ ByteBuffer object into an object which has the sole reference to it, so
+ that when it's deallocated the reference can be replaced with "null", and
+ further attempts to access the buffer would throw exceptions.
+ <braunr> sounds reasonable
+ <jkoenig> but that's still in flux in my head, we may end up needing our
+ own implementation of ByteBuffer-like objects.
+ <tschwinge> The problem being that there is no mechanism to ``revoke'' an
+ object once a reference to it has been shared.
+ <jkoenig> right.
+ <tschwinge> A wrapper is one possibility indeed.
+ <antrik> tschwinge: they are called interface *definitions* for a reason
+ :-)
+ <tschwinge> This is a very similar problem as with capabilities when there
+ is no revoke operation for these, too.
+ <tschwinge> antrik: Yes, because they define MIG's input. :-P
+ <tschwinge> Isn't that what is called a membrane in the capability world?
+ <antrik> I do not say that we have to consider the format of the .defs to
+ be set in stone; but I do insist on using a canonical machine-parsable
+ source for all language bindings
+ <tschwinge> attenuation
+ <jkoenig> tschwinge, you mean the revokable proxy contruct ? (It's the same
+ principle indeed)
+ <tschwinge> A common design pattern in object-capability systems: given
+ one reference of an object, create another reference for a proxy object
+ with certain security restrictions, such as only permitting read-only
+ access or allowing revocation. The proxy object performs security checks
+ on messages that it receives and passes on any that are allowed. Deep
+ attenuation refers to the case where the same attenuation is applied
+ transitively to any
+ <tschwinge> objects obtained via the original attenuated object,
+ typically by use of a "membrane".
+ <tschwinge> http://en.wikipedia.org/wiki/Object-capability_model
+ <tschwinge> Yes.
+ <tschwinge> Good. I understood something. ;-)
+ <tschwinge> antrik: OKAY! :-P
+ <tschwinge> jkoenig: And hopefully the JVM will optimize away all the
+ additional indirection... :-D
+ <tschwinge> jkoenig: Is there anything more to say about the VM layer?
+ <jkoenig> tschwinge, "hopefully", yes :-)
+ <tschwinge> Like, the data that I'm sharing -- is it untyped, isn't it?
+ <jkoenig> tschwinge, you mean that within the received/sent pages ?
+ <tschwinge> Yes.
+ <tschwinge> But that'S how it is, indeed.
+ <jkoenig> well actually the type descriptor should indicate what they
+ contain.
+ <tschwinge> I cannot trust anything I receive from externally.
+ <jkoenig> it's most often used for MACH_MSG_TYPE_CHAR items I guess, and it
+ will be type checked when retreive
+ <tschwinge> Yeah, and that then just *is* arbitrary data, like a block read
+ from a disk file.
+ <jkoenig> you would have something like: ByteBuffer
+ MachMsg.getBuffer(MachMsg.Type expected), and MachMsg would check the
+ type descriptor against that which you specified
+ <tschwinge> Or a packet transmitted over the network.
+ <tschwinge> OK, yes.
+ <antrik> jkoenig: in theory ints should be used quite often too. the whole
+ purpose of the type descriptors is to allow byte order swapping when
+ messages are passed between hosts with different architecture...
+ <jkoenig> tschwinge, right, except for out-of-line port arrays, which need
+ to be handled differently obviously.
+ <antrik> (which is totally irrelevat for our purposes -- especially since
+ the actual network IPC code doesn't exist anymore ;-) )
+ <jkoenig> antrik, oh, interesting
+ <tschwinge> Yes, that was one original idea.
+ <jkoenig> actually my litmus test for what the bindings should be, is you
+ should be able to implement such a proxy in Java :-)
+ <tschwinge> antrik: And hey, you now have processors that can switch
+ between different modes during runtime... :-)
+ <jkoenig> (although arguably that's a little bit ambitious)
+ <braunr> tschwinge: there should be bits in page tables to indicate the
+ endianness to use on a page .. :)
+ <tschwinge> Hehe!
+ <tschwinge> jkoenig: Don't worry -- you're already known for ambitious
+ projects. One more can't hurt.
+ <jkoenig> Also, actually the word size is not something that I've been able
+ to abstract so far, so I'll be hardcoding little-endian 32 bits for now.
+ <braunr> why is that ?
+ <antrik> some of the Hurd RPC break the idea anyways BTW
+ <jkoenig> the org.vmmagic package (from Jikes RVM and JNode) could help
+ with that, but GCJ does not support it unfortunately (not sure about
+ OpenJDK)
+ <jkoenig> braunr, Java does not allow us to define new unboxed types
+ <braunr> jkoenig: does it have its own definition of the word size ?
+ <jkoenig> braunr, nope.
+ <jkoenig> (although, maybe, and also we could use JNI to query it)
+ <braunr> even if virtual, i'd expect a machine to have such a defnition
+ <jkoenig> braunr, maybe it has, but basically in Java nothing depends on
+ the word size
+ <jkoenig> 'int' is 32 bits, 'long' is 64 and that's it.
+ <braunr> oh right, i remember most types are fixed size, right ?
+ <jkoenig> right.
+ <braunr> if not all
+ <jkoenig> now Jikes RVM's "org.vmmagic" provides an interface to defined
+ new unboxed types which can depend on the actual word size, but Jikes RVM
+ is its own JVM so obviously they can use and provide whatever extensions
+ they need :-)
+ <jkoenig> (but maybe they've implemented them in OpenJDK for bootstrap
+ purposes, I'm not sure)
+ <tschwinge> I'm missing this detail: where does the word size come into
+ play here?
+ <jkoenig> anyway, I _could_ indiscriminately use 'long' for port names, and
+ sparkle the code with word size tests but that would be very clumsy
+ <braunr> jkoenig: port names are actually ints :/
+ <jkoenig> tschwinge, the actual format of the message header and type
+ descriptors, for instance.
+ <braunr> jkoenig: ok, got your point
+ <jkoenig> braunr, by 'long' I mean 64-bits integers (which they are on
+ 64-bits machines I think?)
+ <braunr> :)
+ <braunr> jkoenig: port names are as large as the word size
+ <braunr> but in C at least, they're int, not long
+ <braunr> it doesn't change many things, but you get lots of warnings if you
+ try with a long :)
+ <tschwinge> What is the reason that port names are an
+ architecture-dependent word size's width, and not simply 32 bit?
+ <jkoenig> "4 billions of port names should be enough for everyone" :-)
+ <braunr> tschwinge: an optimization is to use them as pointers in the
+ kernel
+ <antrik> tschwinge: the machine's native word size is what it can process
+ most efficiently, and what should be used for most normal
+ operations... it makes sense to define stuff as int, except for network
+ communication
+ <tschwinge> jkoenig: Well, yeah, but if you want to communicate with a
+ peer, you have to agree on the maximum number anyway (not for port names,
+ though, which are local).
+ <braunr> antrik: int isn't the word size everywhere
+ <braunr> antrik: the most common type matching the word size is long, at
+ least on ILP32/LP64 data models
+ <antrik> braunr: that's just because some idiots assumed int would always
+ be 32 bits, and consequently when 64 architectures came up the compiler
+ guys chickened out ;-)
+ <braunr> without int, you wouldn't have a 32 bits type
+ <antrik> that's not true for all architectures and/or operating systems
+ though AFAIK
+ <braunr> or a 16 bits one
+ <braunr> antrik: windows guys got even more scared, so windows 64 is LLP64
+ <antrik> BTW, I haven't checked, but it's quite possible that 32 bit
+ numbers are actually preferable even on AMD64...
+ <tschwinge> jkoenig: So, back on track. :-)
+ <tschwinge> jkoenig: You didn't find anything yet in Mach's VM interfaces
+ as well a MemoryObject, etc., that can't be used/implemented in the Java
+ world?
+ <braunr> antrik: they consume less memory, but don't have much effect on
+ performance
+ <jkoenig> tschwinge, once we have the basic system calls and the
+ corresponding abstractions in place, I don't think anything else
+ fundamentally problematic could possibly show up
+ <antrik> braunr: if you really *need* a type of a certain bit size, you
+ should use stdint types. so not having a 16 or 32 bit type in the
+ short/int/long canon is *not* an excuse
+ <tschwinge> jkoenig: That speaks for the Mach designers!
+ <braunr> antrik: right
+ <jkoenig> tschwinge, on trick is that for instance, mach_task_self would
+ still be unsafe even if it returned a nicely wrapped Task object, because
+ you could still wreck your own address space and threads with it. So we
+ would need the "attenuation" pattern mentionned above to provide a safe
+ one.
+ <jkoenig> (which would disallow thinks such as the port/thread/vm calls)
+ <braunr> jkoenig: you mentioned the unsafe pseudo exception earlier
+ <jkoenig> braunr, right, so the issue is with distinguishing safe from
+ unsafe methods
+ <antrik> braunr: BTW, the Windows guys actually broke a lot of stuff by
+ fixing long at 32 bits -- this way long doesn't match size_t and pointer
+ types anymore, which was an assumption that was true for pretty much any
+ system so far...
+ <tschwinge> jkoenig: Yes. (And again hope for the JVM to optim...)
+ <braunr> antrik: that's right :)
+ <braunr> antrik: that's LLP64
+ <braunr> antrik: long long and pointers
+ <jkoenig> braunr, so basically the idea is that unsafe methods are declared
+ as "throws Unsafe"
+ <jkoenig> the effect is that if you use such a method you must either
+ "throw Unsafe" yourself,
+ <jkoenig> or if you're building a safe abstraction on top of Unsafe
+ methods, you'll "catch" the "exception" in question to tell the compiler
+ that it's okay.
+ <jkoenig> it's more or less inspired from the "semantic regimes" idea from
+ the org.vmmagic paper which is referenced in my original proposal,
+ <jkoenig> only implementing by hijacking the exception checking machinery,
+ which has a behaviour similar to what we want.
+ <braunr> ok
+ <braunr> but hmm this seems pretty normal, what's the tricky part ? :)
+ <tschwinge> braunr: The idea is that the programmer explicitly has to
+ acknowledge if he'S using an unsafe interface.
+ <braunr> tschwinge: sounds pretty normal too
+ <jkoenig> braunr, the trick is that you would not usually declare
+ exceptions which are never actually thrown (and actually since the
+ compiler does not know it's never thrown, I need to work around it in a
+ few places)
+ <braunr> oh, ok
+ <braunr> jkoenig: that's interesting indeed
+ <jkoenig> braunr, the org.vmmagic paper provides an example which uses some
+ annotations called @UncheckedMemoryAccess and @AssertSafe to the same
+ effect (which is kind of cleaner), but it would be a headache to
+ implement without help from the compiler I think (as far as I can tell
+ the annotation processor would have to inspect the bytecode)
+ <braunr> but hm
+ <braunr> what's the true problem about this ?
+ <jkoenig> (the paper advocates "high-level low-level programming" and is a
+ very interesting read I think,
+ http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.151.5253&rep=rep1&type=pdf,
+ for what it's worth)
+ <braunr> what's wrong if you just declare your methods unsafe and don't
+ alter anything else ?
+ <tschwinge> Yes, I read it and it is interesting. Unfortunately, it seems
+ I forgot most of it again...
+ <jkoenig> braunr, declare? alter?
+ <jkoenig> you mean just tag them with an annotation?
+ <braunr> just stating a method "throws Unsafe"
+ <jkoenig> braunr, well some compiler will output a warning because they can
+ tell there's no way the method is going to throw such an exception.
+ <jkoenig> and then some other compiler will complain that my
+ @SuppressWarnings("unused") does not serve any purpose to them :-)
+ <jkoenig> also, when initializing final fields, I need to work around the
+ fact that the compiler thinks "Unsafe" might be thrown.
+ <jkoenig> see for instance MachPort.DEAD
+ <braunr> jkoenig: ok
+ <jkoenig> braunr, but I'm more than willing to accept this in exchange for
+ a clear, compiler-enforced materialization of the border between safe an
+ unsafe code.
+ <jkoenig> actually another question I have is the amount of static typing I
+ should add to the safe version, for instance should I subclass MachPort
+ into MachSendRight, MachReceiveRight and so on. I don't want to depart
+ from the C inteface too much but it could be useful.
+ <braunr> jkoenig: can't answer that :)
+ <braunr> jkoenig: keep them in mind for later i think
+ <tschwinge> jkoenig: What's the safety concern w.r.t. having MachPort (not)
+ final?
+ <jkoenig> tschwinge, actually I'm partly wrong in that we only need name()
+ and a couple other methods to be final
+ <tschwinge> jkoenig: That's what I was thinking. :-)
+ <tschwinge> I though I'm missing something here.
+ <jkoenig> tschwinge, the idea is that the user (ie., the adversary :-)
+ could extend MachPort and inject their own fake port name into messages
+ <jkoenig> by overriding name() or clear()
+ <tschwinge> Yeah, but if these are final, that's not possible.
+ <jkoenig> right.
+ <tschwinge> And that *should* be enough, I think.
+ <tschwinge> Unless I'm missing something.
+ <jkoenig> I don't think so. Also I hope it is, because as mentionned above
+ there might be some value in subclassing MachPort.
+ <tschwinge> Yep.
+ <jkoenig> incidentally, declaring the class or the method final will allow
+ the JVM to inline them I think.
+ <tschwinge> It will help the JVM, yes. It can also figure that out without
+ final, though. (And may have to de-optimize the code again in case there
+ are additional classes loaded during run-time.)
+ <tschwinge> jkoenig: The reference counting in MachPort. I think I'm
+ beginning to understand this.
+ <jkoenig> oh ok
+ <jkoenig> tschwinge, yes the javadoc is maybe a bit obscure so far.
+ <jkoenig> but basically you don't want the port name you acquire to become
+ invalid before you're done using it.
+ <tschwinge> But how is this different from the C world?
+ <jkoenig> here my goal is to provide some guarantees if you use only safe
+ methods
+ <jkoenig> like, you can't forge a port name and things like that
+ <jkoenig> so basically it should never be possible to include an invalid
+ port name in a message if you use only safe methods.
+ <tschwinge> Ah, I see!
+ <tschwinge> Now that does make sense.
+ <jkoenig> but the mechanism in itself is similar to the Hurd port cells and
+ user_link structures
+ <tschwinge> It's again ``only'' helping the programmer.
+ <jkoenig> right, no object-capability ulterior motives :-)
+ <jkoenig> another assumption which the javadoc does not state yet it that
+ basically there should be exactly one MachPort object for each mach-level
+ port name reference (in the sense of mach_port_mod_refs)
+ <tschwinge> Yes, I figured out that bit.
diff --git a/user/jkoenig/java/java-access-bridge.mdwn b/user/jkoenig/java/java-access-bridge.mdwn
new file mode 100644
index 00000000..57c87068
--- /dev/null
+++ b/user/jkoenig/java/java-access-bridge.mdwn
@@ -0,0 +1,92 @@
+[[!meta copyright="Copyright © 2011 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]]
+
+Debian's *openjdk-7-jre* package depends on *libaccess-bridge-java-jni* (source
+package: *java-access-bridge*).
+
+The latter one has *openjdk-6-jdk* as a build dependency, but that can be
+hacked around:
+
+ # ln -s java-7-openjdk /usr/lib/jvm/java-6-openjdk
+
+Trying to build it:
+
+ $ LD_LIBRARY_PATH=/usr/lib/jvm/java-7-openjdk/jre/lib/i386/jli dpkg-buildpackage -b -uc -d
+ [...]
+ make[3]: Entering directory `/media/erich/home/thomas/tmp/libaccess-bridge-java-jni/java-access-bridge-1.26.2/idlgen'
+ /usr/lib/jvm/java-6-openjdk/bin/idlj \
+ -pkgPrefix Bonobo org.GNOME \
+ -pkgPrefix Accessibility org.GNOME \
+ -emitAll -i /usr/share/idl/bonobo-activation-2.0 -i /usr/share/idl/at-spi-1.0 -i /usr/share/idl/bonobo-2.0 \
+ -fallTie /usr/share/idl/at-spi-1.0/Accessibility.idl
+ /usr/share/idl/at-spi-1.0/Accessibility_Collection.idl (line 66): WARNING: Identifier `object' collides with a keyword; use an escaped identifier to ensure future compatibility.
+ boolean isAncestorOf (in Accessible object);
+ ^
+ /usr/share/idl/at-spi-1.0/Accessibility_Component.idl (line 83): WARNING: Identifier `Component' collides with a keyword; use an escaped identifier to ensure future compatibility.
+ interface Component : Bonobo::Unknown {
+ ^
+ Exception in thread "main" java.lang.AssertionError: Platform not recognized
+ at sun.nio.fs.DefaultFileSystemProvider.create(DefaultFileSystemProvider.java:71)
+ at java.nio.file.FileSystems$DefaultFileSystemHolder.getDefaultProvider(FileSystems.java:108)
+ at java.nio.file.FileSystems$DefaultFileSystemHolder.access$000(FileSystems.java:89)
+ at java.nio.file.FileSystems$DefaultFileSystemHolder$1.run(FileSystems.java:98)
+ at java.nio.file.FileSystems$DefaultFileSystemHolder$1.run(FileSystems.java:96)
+ at java.security.AccessController.doPrivileged(Native Method)
+ at java.nio.file.FileSystems$DefaultFileSystemHolder.defaultFileSystem(FileSystems.java:95)
+ at java.nio.file.FileSystems$DefaultFileSystemHolder.<clinit>(FileSystems.java:90)
+ at java.nio.file.FileSystems.getDefault(FileSystems.java:176)
+ at sun.util.calendar.ZoneInfoFile$1.run(ZoneInfoFile.java:489)
+ at sun.util.calendar.ZoneInfoFile$1.run(ZoneInfoFile.java:480)
+ at java.security.AccessController.doPrivileged(Native Method)
+ at sun.util.calendar.ZoneInfoFile.<clinit>(ZoneInfoFile.java:479)
+ at sun.util.calendar.ZoneInfo.getTimeZone(ZoneInfo.java:658)
+ at java.util.TimeZone.getTimeZone(TimeZone.java:559)
+ at java.util.TimeZone.setDefaultZone(TimeZone.java:656)
+ at java.util.TimeZone.getDefaultRef(TimeZone.java:623)
+ at java.util.TimeZone.getDefault(TimeZone.java:610)
+ at java.text.SimpleDateFormat.initializeCalendar(SimpleDateFormat.java:682)
+ at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:619)
+ at java.text.DateFormat.get(DateFormat.java:772)
+ at java.text.DateFormat.getDateTimeInstance(DateFormat.java:547)
+ at com.sun.tools.corba.se.idl.toJavaPortable.Util.writeProlog(Util.java:1139)
+ at com.sun.tools.corba.se.idl.toJavaPortable.Skeleton.writeHeading(Skeleton.java:145)
+ at com.sun.tools.corba.se.idl.toJavaPortable.Skeleton.generate(Skeleton.java:102)
+ at com.sun.tools.corba.se.idl.toJavaPortable.InterfaceGen.generateSkeleton(InterfaceGen.java:159)
+ at com.sun.tools.corba.se.idl.toJavaPortable.InterfaceGen.generate(InterfaceGen.java:108)
+ at com.sun.tools.corba.se.idl.InterfaceEntry.generate(InterfaceEntry.java:110)
+ at com.sun.tools.corba.se.idl.toJavaPortable.ModuleGen.generate(ModuleGen.java:75)
+ at com.sun.tools.corba.se.idl.ModuleEntry.generate(ModuleEntry.java:83)
+ at com.sun.tools.corba.se.idl.Compile.generate(Compile.java:324)
+ at com.sun.tools.corba.se.idl.toJavaPortable.Compile.start(Compile.java:169)
+ at com.sun.tools.corba.se.idl.toJavaPortable.Compile.main(Compile.java:146)
+ make[3]: *** [org/GNOME/Accessibility/Accessible.java] Error 1
+ make[3]: Leaving directory `/media/erich/home/thomas/tmp/libaccess-bridge-java-jni/java-access-bridge-1.26.2/idlgen'
+ make[2]: *** [all-recursive] Error 1
+ make[2]: Leaving directory `/media/erich/home/thomas/tmp/libaccess-bridge-java-jni/java-access-bridge-1.26.2/idlgen'
+ make[1]: *** [all-recursive] Error 1
+ make[1]: Leaving directory `/media/erich/home/thomas/tmp/libaccess-bridge-java-jni/java-access-bridge-1.26.2'
+ make: *** [debian/stamp-makefile-build] Error 2
+ dpkg-buildpackage: error: debian/rules build gave error exit status 2
+
+
+IRC, freenode, #hurd, 2011-08-10:
+
+ < jkoenig> and with my latest fix (hardwire os.name as "Linux"),
+ java-access-bridge actually built \o/
+ < youpi> I wouldn't call it a "fix" :)
+ < jkoenig> true, but pretty much everything assumes we're either solaris,
+ linux or windows :-/
+ < jkoenig> also we're actually using the Linux code which it is used to
+ select throughout the JDK
+ < jkoenig> if it's any consolation, os.version stays "GNU-Mach
+ 1.3.99/Hurd-0.3" :-)
+ < youpi> ideally it should simply be changed to "GNU"
diff --git a/user/jkoenig/java/proposal.mdwn b/user/jkoenig/java/proposal.mdwn
new file mode 100644
index 00000000..feb7e9dc
--- /dev/null
+++ b/user/jkoenig/java/proposal.mdwn
@@ -0,0 +1,629 @@
+[[!tag stable_URL]]
+
+# Java for Hurd (and vice versa)
+
+Contact information:
+
+ * Full name: Jérémie Koenig
+ * Email: jk@jk.fr.eu.org
+ * IRC: jkoenig on Freenode and OFTC
+
+## Introductions
+
+I am a first year M.Sc. student
+in Computer Science at University of Strasbourg (France).
+My interests include capability-based security,
+programming languages and formal methods
+(in particular, object-capability languages and proof-carrying code).
+
+### Proposal summary
+
+This project would consist in improving Java support on Hurd.
+The first part would consist in
+fixing bugs and porting Java-related packages.
+The second part would consist in
+creating low-level Java bindings for the Hurd interfaces,
+as well as libraries to make translator development easier.
+
+### Previous involvement
+
+I started contributing to Hurd last summer,
+during which I participated to Google Summer of Code
+as a student for the Debian project.
+I worked on porting Debian-Installer to Hurd.
+This project was mostly a success,
+although we still have to use a special mirror for installation
+with a few modified packages
+and tweaked priorities
+to work around some uninstallable packages
+with Priority: standard.
+
+Shortly afterwards,
+I rewrote the procfs translator
+to fix some issues with memory leaks,
+make it more reliable,
+and improve compatibility with Linux-based tools
+such as `procps` or `htop`.
+
+Although I have not had as much time
+as I would have liked to dedicate to the Hurd
+since that time,
+I have continued to maintain the mirror in question,
+and I have started to work
+on implementing POSIX threads signal semantics in glibc.
+
+### Project-related skills and interests
+
+I have used Java mostly for university assignments.
+This includes non-trivial projects
+using threads and distributed programming frameworks
+such as Java RMI or CORBA.
+I have also used it to experiment with
+Google App Engine
+(web applications)
+and Google Web Toolkit
+(a compiler from Java to Javascript which helps with AJAX code),
+and I have some limited experience with JNI
+(the Java Native Interface, to link Java with C code).
+
+My knowledge of the Hurd and Debian GNU/Hurd is reasonable,
+as the Debian-Installer and procfs projects
+gave me the opportunity to fiddle with many parts of the system.
+
+Initially,
+I started working on this project because I wanted to use
+[Joe-E](http://code.google.com/p/joe-e/)
+(a subset of Java)
+to investigate the potential
+[[applications of object-capability languages|objcap]]
+in a Hurd context.
+I also believe that improving Java support on Hurd
+would be an important milestone.
+
+### Organisational matters
+
+I am subscribed to bug-hurd@g.o and
+I do have a permanent internet connexion.
+
+I would be able to attend the regular IRC meetings,
+and otherwise communicate with my mentor
+through any means they would prefer
+(though I expect email and IRC would be the most practical).
+Since I'm already familiar with the Hurd,
+I don't expect I would require too much time from them.
+
+My exams end on May 20 so I would be able to start coding
+right at the beginning of the GSoC period.
+Next year's term would probably begin around September 15,
+so that would not be an issue either.
+I expect I would work around 40 hours per week,
+and my waking hours would be flexible.
+
+I don't have any other plans for the summer
+and would not make any if my project were to be accepted.
+
+Full disclosure:
+I also submitted a proposal to the Jikes RVM project
+(which is a research-oriented Java Virtual Machine,
+itself written in Java)
+for implementing a new garbage collector into the MMTk subsystem.
+
+## Improve Java support
+
+### Justification
+
+Java is a popular language and platform used by many desktop and web
+applications (mostly on the server side). As a consequence, competitive Java
+support is important for any general-purpose operating system.
+Better Java support would also be a prerequisite
+for the second part of my proposal.
+
+### Current situation
+
+Java is currently supported on Hurd with the GNU Java suite:
+
+ * [GCJ](http://gcc.gnu.org/java/),
+ the GNU Compiler for Java, is part of GCC and can compile Java
+ source code to Java bytecode, and both source code and bytecode to
+ native code;
+ * libgcj is the implementation of the Java runtime which GCJ uses.
+ It is based on [GNU Classpath](http://www.gnu.org/software/classpath/).
+ It includes a bytecode interpreter which enables
+ Java applications compiled to native code to dynamically load and execute
+ Java bytecode from class files.
+ * The gij command is a wrapper around the above-mentioned virtual machine
+ functionality of libgcj and can be used as a replacement for the java
+ command.
+
+However, GCJ does not work flawlessly on Hurd.r
+For instance, some parts of libgcj relies on
+the POSIX threads signal semantics, which are not yet implemented.
+In particular, this makes ant hang waiting for child processes,
+which makes some packages fail to build on Hurd
+(“ant” is the “make” of the Java world).
+
+### Tasks
+
+ * **Finish implementing POSIX thread semantics** in glibc (high priority).
+ According to POSIX, signal dispositions should be global to a process,
+ while signal blocking masks should be thread-specific. Signals sent to the
+ process as a whole are to be delivered to any thread which does not block
+ them. By contrast, Hurd has per-thread signal dispositions and signals
+ sent to a process are delivered to the main thread only. I have been
+ working on refactoring the glibc signal code and implementing the POSIX
+ semantics as a per-thread option. However, due to lack of time I have not
+ yet been able to test and debug my code properly. Finishing this work
+ would be my first task.
+ * **Fix further problems with GCJ on Hurd** (high priority). While I’m not
+ aware of any other problems with GCJ at the moment, I suspect some might
+ turn up as I progress with the other tasks. Fixing these problems would
+ also be a high-priority task.
+ * **Port OpenJDK 6** (medium priority). While GCJ is fine, it is not yet
+ 100% complete. It is also slower than OpenJDK on architectures where a
+ just-in-time compiler is available. Porting OpenJDK would therefore
+ improve Java support on Hurd in scope and quality. Besides, it would also
+ be a good way to test GCJ, which is used for bootstrapping by the Debian
+ OpenJDK packages. Also note that OpenJDK 6 is now the default Java
+ Runtime Environment on all released Linux-based Debian architectures;
+ bringing Hurd in line with this would probably be a good thing.
+ * **Port Eclipse and other Java applications** (low priority). Eclipse is a
+ popular, state-of-the-art IDE and tool suite used for Java and other
+ languages. It is a dependency of the Joe-E verifier (see part 3 of this
+ proposal). Porting Eclipse would be a good opportunity to test GCJ and
+ OpenJDK.
+
+### Deliverables
+
+ * The glibc pthreads patch and any other fixes on the Hurd side
+ would be submitted upstream
+ * Patches against Debian source packages
+ required to make them build on Hurd would be submitted
+ to the [Debian bug tracking system](http://bugs.debian.org/).
+
+
+## Create Java bindings for the Hurd interfaces
+
+### Justification
+
+Java is used for many applications and often taught to
+introduce object-oriented programming. The fact that Java is a
+garbage-collected language makes it easier to use, especially for the less
+experienced programmers. Besides, its object-oriented nature is a
+natural fit for the capability-based design of Hurd.
+The JVM is also used as a target for many other languages,
+all of which would benefit from the access provided by these bindings.
+
+Advantages over other garbage-collected, object-oriented languages include
+performance, type safety and the possibility to compile a Java translator to
+native code and
+[link it statically](http://gcc.gnu.org/wiki/Statically_linking_libgcj)
+using GCJ, should anyone want to use a
+translator written in Java for booting.
+Note that Java is
+[being](http://www.linuxjournal.com/article/8757)
+[used](http://oss.readytalk.com/avian/)
+in this manner for embedded development.
+Since GCJ can take bytecode as its input,
+this expect this possibility would apply to any JVM-based language.
+
+Java bindings would lower the bar for newcomers
+to begin experimenting with what makes Hurd unique
+without being faced right away with the complexity of
+low-level systems programming.
+
+### Tasks summary
+
+ * Implement Java bindings for Mach
+ * Implement a libports-like library for Java
+ * Modify MIG to output Java code
+ * Implement libfoofs-like Java libraries
+
+### Design principles
+
+The principles I would use to guide the design
+of these Java bindings would be the following ones:
+
+ * The system should be hooked into at a low level,
+ to ensure that Java is a "first class citizen"
+ as far as the access to the Hurd's interfaces is concerned.
+ * At the same time, the memory safety of Java should be maintained
+ and extended to Mach primitives such as port names and
+ out-of-line memory regions.
+ * Higher-level interfaces should be provided as well
+ in order to make translator development
+ as easy as possible.
+ * A minimum amount of JNI code (ie. C code) should be used.
+ Most of the system should be built using Java itself
+ on top of a few low-level primitives.
+ * Hurd objects would map to Java objects.
+ * Using the same interfaces,
+ objects corresponding to local ports would be accessed directly,
+ and remote objects would be accessed over IPC.
+
+One approach used previously to interface programming languages with the Hurd
+has been to create bindings for helper libraries such as libtrivfs. Instead,
+for Java I would like to take a lower-level approach by providing access to
+Mach primitives and extending MIG to generate Java code from the interface
+description files.
+
+This approach would be initially more involved, and would introduces several
+issues related to overcoming the "impedance mismatch" between Java and Mach.
+However, once an initial implementation is done it would be easier to maintain
+in the long run and we would be able to provide Java bindings for a large
+percentage of the Hurd’s interfaces.
+
+### Bindings for Mach system calls
+
+In this low-level approach, my intention is to enable Java code to use Mach
+system calls (in particular, mach_msg) more or less directly. This would
+ensure full access to the system from Java code, but it raises a number of
+issues:
+
+ * the Java code must be able to manipulate Mach-level entities, such as port
+ rights or page-aligned buffers mapped outside of the garbage-collected
+ heap (for out-of-line transfers);
+ * putting together IPC messages requires control of the low-level
+ representation of data.
+
+In order to address these concerns, classes would be encapsulating these
+low-level entities so that they can be referenced through normal, safe objects
+from standard Java code. Bindings for Mach system calls can then be provided
+in terms of these classes. Their implementation would use C code through the
+Java Native Interface (JNI).
+
+More specifically, this functionality would be provided by the `org.gnu.mach`
+package, which would contain at least the following classes:
+
+ * `MachPort` would encapsulate a `mach_port_t`. (Some of) its constructors
+ would act as an interface for the `mach_port_allocate()` system call.
+ `MachPort` objects would also be instantiated from other parts of the JNI
+ C code to represent port rights received through IPC. The `deallocate()`
+ method would call `mach_port_deallocate()` and replace the encapsulated
+ port name with `MACH_PORT_DEAD`. We would recommend that users call it
+ when a port is no longer used, but the finalizer would also deallocate the
+ port when the `MachPort` object is garbage collected.
+ * `Buffer` would represent a page-aligned buffer allocated outside of the
+ Java heap, to be transferred (or having been received) as out-of-line
+ memory. The JNI code would would provide methods to read and write data at
+ an arbitrary offset (but within bounds) and would use `vm_allocate()` and
+ `vm_deallocate()` in the same spirit as for `MachPort` objects.
+ * `Message` would allow Java code to put together Mach messages. The
+ constructor would allocate a `byte[]` member array of a given size.
+ Additional methods would be provided to fill in or query the information
+ in the message header and additional data items, including `MachPort` and
+ `Buffer` objects which would be translated to the corresponding port names
+ and out-of-line pointers.
+ A global map from port names to the corresponding `MachPort` object
+ would probably be needed to ensure that there is a one-to-one
+ correspondence.
+ * `Syscall` would provide static JNI methods for performing system calls not
+ covered by the above classes, such as `mach_msg()` or
+ `mach_thread_self()`. These methods would accept or return `MachPort`,
+ `Buffer` and `Message` objects when appropriate. The associated C code
+ would access the contents of such objects directly in order to perform the
+ required unsafe operations, such as constructing `MachPort` and `Buffer`
+ objects directly from port names and C pointers.
+
+Note that careful consideration should be given to the interfaces of these
+classes to avoid “safety leaks” which would compromise the safety guarantees
+provided by Java. Potential problematic scenarios include the following
+examples:
+
+ * It must not be possible to write an integer at some position in a
+ `Message` object, and to read it back as a `MachPort` or `Buffer` object,
+ since this would allow unsafe access to arbitrary memory addresses and
+ mach port names.
+ * Providing the `mach_task_self()` system call would also provide access to
+ arbitrary addresses and ports by using the `vm_*` family of RPC operations
+ with the returned `MachPort` object. This means that the relevant task
+ operations should be provided by the `Syscall` class instead.
+
+Finally, access should be provided to the initial ports and file descriptors
+in `_hurd_ports` and provided by the `getdport()` function,
+for instance through static methods such as
+`getCRDir()`, `getCWDir()`, `getProc()`, ... in a dedicated class such as
+`org.gnu.hurd.InitPorts`.
+
+A realistic example of code based on such interfaces would be:
+
+ import org.gnu.mach.MsgType;
+ import org.gnu.mach.MachPort;
+ import org.gnu.mach.Buffer;
+ import org.gnu.mach.Message;
+ import org.gnu.mach.Syscall;
+ import org.gnu.hurd.InitPorts;
+
+ public class Hello
+ {
+ public static main(String argv[])
+ /* Parent class for all Mach-related exceptions */
+ throws org.gnu.mach.MachException
+ {
+ /* Allocate a reply port */
+ MachPort reply = new MachPort();
+
+ /* Allocate an out-of-line buffer */
+ Buffer data = new Buffer(MsgType.CHAR, 13);
+ data.writeString(0, "Hello, World!");
+
+ /* Craft an io_write message */
+ Message msg = new Message(1024);
+ msg.setRemotePort(InitPorts.getdport(1));
+ msg.setLocalPort(reply, Message.Type.MAKE_SEND_ONCE);
+ msg.setId(21000);
+ msg.addBuffer(data);
+
+ /* Make the call, MACH_MSG_SEND | MACH_MSG_RECEIVE */
+ Syscall.machMsg(msg, true, true, reply);
+
+ /* Extract the returned value */
+ msg.assertId(21100);
+ int retCode = msg.readInt(0);
+ int amount = msg.readInt(1);
+ }
+ }
+
+Should this paradigm prove insufficient,
+more ideas could be borrowed from the
+[`org.vmmagic`](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.151.5253&rep=rep1&type=pdf)
+package used by [Jikes RVM](http://jikesrvm.org/),
+a research Java virtual machine itself written in Java.
+
+### Generating Java stubs with MIG
+
+Once the basic machinery is in place to interface with Mach, Java programs
+have more or less equal access to the system functionality without resorting
+to more JNI code. However, as illustrated above, this access is far from
+convenient.
+
+As a solution I would modify MIG to add the option to output Java code. MIG
+would emit a Java interface, a client class able to implement the interface
+given a Mach port send right, an a server class which would be able to handle
+incoming messages. The class diagram below, although it is by no means
+complete or exempt of any problem, illustrates the general idea:
+
+[[gsoc2011_classes.png]]
+
+This structure is somewhat reminiscent of
+[Java RMI](http://en.wikipedia.org/wiki/Java_remote_method_invocation)
+or similar systems,
+which aim to provide more or less transparent access to remote objects.
+The exact way the Java code would be generated still needs to be determined,
+but basically:
+
+ * An interface, corresponding to the header files generated by MIG, would
+ enumerate the operations listed in a given .defs files. Method names would
+ be transformed to adhere to Java conventions (for instance,
+ `some_random_identifier` would become `someRandomIdentifier`).
+ * A user class, corresponding to the `*User.c` files,
+ would implement this interface by doing RPC over a given MachPort object.
+ * A server class, corresponding to `*Server.c`, would be able to handle
+ incoming messages using a user-provided implementation of the interface.
+ (Possibly, a skeleton class providing methods which would raise
+ `NotImplementedException`s would be provided as well.
+ Users would derive from this class and override the relevant methods.
+ This would allow them not to implement some operations,
+ and would avoid pre-existing code from breaking when new operations are
+ introduced.)
+
+In order to help with the implementation of servers, some kind of library
+would be needed to associate Mach receive rights with server objects and to
+handle incoming messages on dedicated threads, in the spirit of libports.
+This would probably require support for port sets at the level of the Mach
+primitives described in the previous section.
+
+When possible, operations involving the transmission of send rights
+of some kind would be expressed in terms of the MIG-generated interfaces
+instead of `MachPort` objects.
+Upon reception of a send right,
+a `FooUser` object would be created
+and associated with the corresponding `MachPort` object.
+If the received send right corresponds to a local port
+to which a server object has been associated,
+this object would be used instead.
+This way,
+subsequent operations on the received send right
+would be handled as direct method calls
+instead of going through RPC mechanisms.
+
+Some issues will still need to be solved regarding how MIG will convert
+interface description files to Java interfaces. For instance:
+
+ * `.defs` files are not explicitly associated with a type. For instance in
+ the example above, MIG would have to somehow infer that io_t corresponds
+ to `this` in the `Io` interface.
+ * More generally, a correspondence between MIG and Java types would have
+ to be determined. Ideally this would be automated and not hardcoded
+ too much.
+ * Initially, reply port parameters would be ignored. However they may be
+ needed for some applications.
+
+So the details would need to be flushed out during the community bonding
+period and as the implementation progresses. However I’m confident that a
+satisfactory solution can be designed.
+
+Using these new features, the example above could be rewritten as:
+
+ import org.gnu.hurd.InitPorts;
+ import org.gnu.hurd.Io;
+ import org.gnu.hurd.IoUser;
+
+ class Hello {
+ static void main(String argv[]) throws ...
+ {
+ Io stdout = new IoUser(InitPorts.getdport(1));
+ String hello = “Hello, World!\n”;
+
+ int amount = stdout.write(hello.getBytes(), -1);
+
+ /* (A retCode corresponding to an error
+ would be signalled as an exception.) */
+ }
+ }
+
+An example of server implementation would be:
+
+ import org.gnu.hurd.Io;
+ import java.util.Arrays;
+
+ class HelloIo implements Io {
+ final byte[] contents = “Hello, World!\n”.getBytes();
+
+ int write(byte[] data, int offset) {
+ return SOME_ERROR_CODE;
+ }
+
+ byte[] read(int offset, int amount) {
+ return Arrays.copyOfRange(contents, offset,
+ offset + amount - 1);
+ }
+
+ /* ... */
+ }
+
+A new server object could then be created with `new IoServer(new HelloIo())`,
+and associated with some receive right at the level of the ports management
+library.
+
+### Base classes for common types of translators
+
+Once MIG can target Java code, and a libports equivalent is available,
+creating new translators in Java would be greatly facilitated. However,
+we would probably want to introduce basic implementations of file system
+translators in the spirit of libtrivfs or libnetfs. They could take the form
+of base classes implementing the relevant MIG-generated interfaces which
+would then be derived by users,
+or could define a simpler interface
+which would then be used by adapter classes
+to implement the required ones.
+
+I would draw inspiration from libtrivfs and libnetfs
+to design and implement similar solutions for Java.
+
+### Deliverables
+
+ * A hurd-java package would contain the Java code developed
+ in the context of this project.
+ * The Java code would be documented using javadoc
+ and a tutorial for writing translators would be written as well.
+ * Modifications to MIG would be submitted upstream,
+ or a patched MIG package would be made available.
+
+The Java libraries resulting from this work,
+including any MIG support classes
+as well as the class files built from the MIG-generated code
+for the Mach and Hurd interface definition files,
+would be provided as single `hurd-java` package for
+Debian GNU/Hurd.
+This package would be separate from both Hurd and Mach,
+so as not to impose unreasonable build dependencies on them.
+
+I expect I would be able to act as its maintainer in the foreseeable future,
+either as an individual or as a part of the Hurd team.
+Hopefully,
+my code would be claimed by the Hurd project as their own,
+and consequently the modifications to MIG
+(which would at least conceptually depend on the Mach Java package)
+could be integrated upstream.
+
+Since by design,
+the Java code would use only a small number of stable interfaces,
+it would not be subject to excessive amounts of bitrot.
+Consequently,
+maintenance would primarily consist in
+fixing bugs as they are reported,
+and adding new features as they are requested.
+A large number of such requests
+would mean the package is useful,
+so I expect that the overall amount of work
+would be correlated with the willingness of more people
+to help with maintenance
+should I become overwhelmed or get hit by a bus.
+
+
+## Timeline
+
+The dates listed are deadlines for the associated tasks.
+
+ * *Community bonding period.*
+ Discuss, refine and complete the design of the Java bindings
+ (in particular the MIG and "libports" parts)
+ * *May 23.*
+ Coding starts.
+ * *May 30.*
+ Finish implementing pthread signal semantics.
+ * *June 5.*
+ Port OpenJDK
+ * *June 12.*
+ Fix the remaining problems with GCJ and/or OpenJDK,
+ possibly port Eclipse or other big Java packages.
+ * *June 19.*
+ Create the bindings for Mach.
+ * *June 26.*
+ Work on some kind of basic Java libports
+ to handle receive rights.
+ * *July 3.*
+ Test, write some documentation and examples.
+ * *July 17 (two weeks).*
+ Add the Java target to MIG.
+ * *July 24.*
+ Test, write some documentation and examples.
+ * *August 7 (two weeks).*
+ Implement a modular libfoofs to help with translator development.
+ Try to write a basic but non-trivial translator
+ to evaluate the performance and ease of use of the result,
+ rectify any rough edges this would uncover.
+ * *August 22. (last two weeks)*
+ Polish the code and packaging,
+ finish writing the documentation.
+
+
+## Conclusion
+
+This project is arguably ambitious.
+However, I have been thinking about it for some time now
+and I'm confident I would be able to accomplish most of it.
+
+In the event multiple language bindings projects
+would be accepted,
+some work could probably be done in common.
+In particular,
+[ArneBab](http://www.bddebian.com/~hurd-web/community/weblogs/ArneBab/2011-04-06-application-pyhurd/)
+seems to favor a low-level approach for his Python bindings as I do for Java,
+and I would be happy to discuss API design and coordinate MIG changes with him.
+I would also have an extra month after the end of the GSoC period
+before I go back to school,
+which I would be able to use to finish the project
+if there is some remaining work.
+(Last year's rewrite of procfs was done during this period.)
+
+As for the project's benefits,
+I believe that good support for Java
+is a must-have for the Hurd.
+Java bindings would also further the Hurd's agenda
+of user freedom by extending this freedom to more people:
+I expect the set of developers
+who would be able to write Java code against a well-written libfoofs
+is much larger than
+those who master the intricacies of low-level systems C programming.
+From a more strategic point of view,
+this would also help recruit new contributors
+by providing an easier path to learning the inner workings of the Hurd.
+
+Further developments
+which would build on the results of this project
+include my planned [[experiment with Joe-E|objcap]]
+(which I would possibly take on as a university project next year).
+Another possibility would be to reimplement some parts
+of the Java standard library
+directly in terms of the Hurd interfaces
+instead of using the POSIX ones through glibc.
+This would possibly improve the performance
+of some Java applications (though probably not by much),
+and would otherwise be a good project
+for someone trying to get acquainted with Hurd.
+
+Overall, I believe this project would be fun, interesting and useful.
+I hope that you will share this sentiment
+and give me the opportunity to spend another summer working on Hurd.
+
diff --git a/user/jkoenig/objcap.mdwn b/user/jkoenig/objcap.mdwn
new file mode 100644
index 00000000..e4cd20e8
--- /dev/null
+++ b/user/jkoenig/objcap.mdwn
@@ -0,0 +1,85 @@
+
+# Potential applications of object-capability languages
+
+The work discussed is this last part would have
+fewer immediate benefits for the Hurd project
+and has more of a research orientation.
+It is also unlikely that there would be any time remaining
+to work on it at the end of the summer.
+(Though it could work as some kind of reward
+if I somehow managed to do a prefect job of all the rest
+within the allocated time :-) ).
+As a consequence,
+I don't really consider this a part of my application.
+
+This being said,
+to some extent the project discussed here
+will informed the way I design the Java bindings,
+since it depends on them
+and I intend to work on this at some point in the future.
+I also believe it touches on some interesting ideas,
+and a Summer of Code application is probably
+as good an occasion as any to discuss them.
+
+### Justification
+
+The primary advantage of multi-server operating systems is the ability to
+break what used to be the kernel into small pieces which can be isolated
+from each others. This makes sense from an engineering perspective, as
+smaller components can be swapped with different implementations and reduce
+the impact of bugs.
+A capability-based approach also ensures that the
+authority wielded by components is clear and reduced to the minimum required
+for them to function.
+These properties are crucial to the Hurd's agenda of user freedom,
+since in order to allow them to plug their own code into the system
+[FIXME: développer]
+
+However, this flexibility has a cost. In a system where the isolation of
+components relies on running them inside different address spaces,
+communication between them must be done through IPC calls.
+This introduces a trade-off between the size of the modules
+and performance as well as practicality,
+which imposes a limit to the granularity with which the system
+can be decomposed and the principle of least authority applied
+(to the code within a given process, a Mach port is ambient authority).
+
+Another issue is that of the threading structure of the system as a whole.
+In systems based on a monolithic kernel, user threads execute the kernel
+code themselves, which is then intrinsically concurrent. By contrast, in a
+system based on a “client-server” paradigm, each server must be explicitly
+multi-threaded if it is to serve requests concurrently.
+
+### Object-capability languages
+
+An object-capability language is an object-oriented language which is
+restricted enough so that object references are themselves capabilities.
+
+One such language is Joe-E (FIXME: lien),
+which is an object-capability subset of Java:
+global state and static methods are mostly forbidden;
+careful white-listing of the objects and methods
+provided by the Java standard library
+ensures that compliant code cannot not access ambient autority.
+Ways in which object references can be transferred
+are restricted to the most obvious ones
+(for instance, exceptions are carefully restricted).
+
+As a result, untrusted Joe-E code can be executed without any further
+isolation and its autority can be controlled by carefully limiting the
+object references which are passed to it.
+This would allow to load and execute translators written in Joe-E
+in a single address space.
+
+### Bundling translators into a single process
+
+[mechanisme pour transmettre le code Joe-E
+et les port initiaux au serveur]
+[émulation des différentes tâches]
+
+### Challenges and further work
+
+[proof-carrying code / typed assembly,
+resource accounting (passer en revue la conception de Viengoos?)]
+
+
diff --git a/user/kam.mdwn b/user/kam.mdwn
new file mode 100644
index 00000000..8ee68866
--- /dev/null
+++ b/user/kam.mdwn
@@ -0,0 +1,152 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Karim Allah Ahmed"]]
+
+<karim.allah.ahmed@gmail.com>
+
+Egypt.
+
+---
+
+#GSoC: 2010 Project
+Goal:
+
+---
+#Roadmap
+
+##Progress
+
+###Preparation Phase:
+
+Understanding how gnumach ticks [ at least the parts related to the project ]
+
+---
+
+####28th of April - 5th of May:
+
+* Reading the paging in code in gnumach.
+* Reading the libpager code, and the multipage patch.
+* Reading the translators code, only the part implementing the external pager interface.
+
+####5th of May - 12th of May:
+
+* Reading the paging out code in gnumach.
+* Understanding IPC in gnumach and reading some code.
+* Reading "[gnu_src]/kern/sched_prim.c"
+
+####12th of May - 19th of May:
+
+* Finishing the leftover code in some of the previous phases.
+* Building a big and a more clear picture of how gnumach ticks [ wiring things together ].
+
+####19th of May - 23th of May:
+
+* Off [College related-activities].
+
+---
+
+###Coding Phase:
+
+Stage 1:
+
+####24th of May - 26th of May:
+
+* Read the freeBSD multipages implementation.
+* Basic Modifications of gnumach's code.
+* err.. scratch this step. It's easier to work on porting OSF Mach's implementation of multi-pages.
+
+####26th of May - 28th of May:
+
+* (./) port OSF Mach's clustered pagein during 'page faults' ( [src]/vm/vm_fault.c )
+* (./) port "cluster_size" attribute of memory objects from OSF Mach.
+* (./) port "behavior" attribute of vm_map entries from OSF Mach.
+
+####29th of May - 2nd of June:
+
+* Off ( Oral Exams )
+
+####2nd of May - 4th of June:
+
+* Finish the port of the previous phase.
+
+---
+
+####4th of June - 4th of July:
+
+* Off ( Final Exams ).
+
+---
+
+Stage 2:
+
+####5th of July - 7th of July:
+
+* (./) Add "cluster_size" attribute to Neal Walfield's patch for the pager library.
+
+---
+
+Stage 3:
+
+####8th of July - 15th of July:
+
+* (./) Patch the diskfs library to use the new pager library API.
+* (./) Patch the ext2fs disk paging related routines to use the new pager library API.
+
+
+####16th of July - 19th of July:
+
+* Testing the current patches.
+* Stuck in compiling code ( http://30.media.tumblr.com/tumblr_l5ie1bb2u91qbjipvo1_500.jpg ) , so I started reading some documentation meanwhile ( [0] , [1] ).
+
+---
+
+Stage 4:
+
+####19th of July - 31th of June:
+
+* Check OSF Mach's mach-defpager.
+* Patch (or port OSF Mach's default pager) HURD's mach-defpager to use the new gnumach's RPCs.
+
+---
+
+Stage 5:
+
+####1st of August - 10th of August:
+
+* Testing the ported translators.
+* Fixing the boot bit-mapped memory allocator patch.
+
+---
+
+Stage 1:
+
+* clustered_paging.diff patch http://lists.gnu.org/archive/html/bug-hurd/2010-06/msg00024.html
+
+TODO:
+
+* Update the headers of the modified files in GNU Mach to reflect the fact that they were ported from OSF Mach.
+
+* Implement posix_madvise(), posix_fadvise, and readahead() in glibc.
+
+* Update the documentation of GNU Mach with the new interfaces.
+
+* (./) Revise and finish the code related to default_memory_manager management in GNU Mach. [done]
+
+* Port the vm_page "clustered" attribute. [ to mark that the page wasn't requested but was paged-in as part of the cluster ].
+
+
+---
+
+
+# Readings
+
+[0] http://www.nongnu.org/ext2-doc/ext2.html
+[1] http://kerneltrap.org/node/452
diff --git a/community/procfs.mdwn b/user/madhusudancs.mdwn
index 1139c718..903b0964 100644
--- a/community/procfs.mdwn
+++ b/user/madhusudancs.mdwn
@@ -1,16 +1,16 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
[[!meta title="GNU/Linux compatible procfs"]]
-[[!toc ]]
+[[!toc]]
----
Project Name
diff --git a/user/michaelbanck.mdwn b/user/michaelbanck.mdwn
deleted file mode 100644
index 76e09c28..00000000
--- a/user/michaelbanck.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-* Name: Michael Banck
-* Email: <mbanck@gmxNOSPAM.net>
-* Country: Germany
diff --git a/user/nowhere.man.mdwn b/user/nowhere.man.mdwn
deleted file mode 100644
index 61d377d7..00000000
--- a/user/nowhere.man.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-* Name: Pierre Thierry
-* Email: <nowhere.man@levallois.euNOSPAM.org>
-* Company Name: Thierry Technologies
-* Country: France
diff --git a/user/pietroferrari.mdwn b/user/pietroferrari.mdwn
deleted file mode 100644
index 0bf63419..00000000
--- a/user/pietroferrari.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-* Name: Pietro Ferrari
-* Email: <pietro@bastardiNOSPAM.net>
-* Country: Brazil
diff --git a/user/pochu.mdwn b/user/pochu.mdwn
new file mode 100644
index 00000000..18e90de3
--- /dev/null
+++ b/user/pochu.mdwn
@@ -0,0 +1,136 @@
+[[!meta copyright="Copyright © 2010 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]]."]]"""]]
+
+# Emilio Pozuelo Monfort
+
+Email: pochu27@gmail.com
+
+---
+
+# GSoC 2010: Hurd: Fix Compatibility Problems Exposed by Testsuites
+
+Mentor: Carl Fredrik Hammar
+
+## Abstract
+
+This project will consist of identifiying some projects' test suite
+failures when executed on GNU/Hurd, debugging them, and if they are
+truly GNU/Hurd issues (and not problems in the projects themselves),
+fixing them.
+
+## Timeline
+* July 18th: GLib finished.
+* July 22nd: coreutils finished.
+* July 25th: All Perl failures investigated.
+* August 5th: Perl finished.
+* August 8th: All Python failures investigated.
+* August 16th: Python finished.
+* August 16th: Firm 'pencils down' date
+
+## TODO
+* Investigate why coreutils' nice test fails.
+* Analyze Perl's testsuite failures.
+
+## Documentation
+* [Towards a New Strategy of OS Design, an architectural overview by Thomas Bushnell, BSG](http://www.gnu.org/software/hurd/hurd-paper.html)
+* [The Hurd, a presentation by Marcus Brinkmann](http://www.gnu.org/software/hurd/hurd-talk.html)
+* [The Hurd Hacking Guide](http://www.gnu.org/software/hurd/hacking-guide/hhg.html)
+* [MIG - The MACH Interface Generator](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/mig.ps)
+
+## Log
+
+### July 26th - August 1st
+* Tested /dev/fd/N patches and sent them for review.
+* Finished SCM_RIGHTS patch. Created a minimal testcase without using
+ glibc to demonstrate the socket_send/recv failure with non-socket
+ fds. Sent the testcase and the patch for review.
+* Investigated cp issues with O_NOFOLLOW & O_NOTRANS. Sent a mail to
+ bug-hurd explaining both issues and possible solutions.
+
+### July 19th - July 25th
+* Initial SCM_RIGHTS implementation. Seems to work when sending pipes, but
+ fails miserably when sending fds from an open syscall. No idea why yet.
+* Fixed memleaks in sendmsg() while implementing SCM_RIGHTS. Patch accepted
+ upstream.
+* Had to build glibc thrice because the system crashed and the fs was totally
+ corrupted. I'll build stuff in a separate partition as suggested from now on.
+ Doesn't help. It turns out the issue seems to be with kvm, or at least it's
+ only reproducible for me there. I've switched to VirtualBox and there are no
+ filesystem issues there.
+* Addressed comments in the /dev/fd/N patches. Need to test them (when I can
+ build glibc and Hurd without the system crashing).
+
+### July 14th - July 18th
+* Catched up with email.
+* Prepared a patch to implement getsockopt(fd, SOL_SOCKET, SO_TYPE, ...).
+ Patch committed to Hurd.
+* Addressed comments in the /dev/fd/N patches and resent them.
+* Investigated another glib's unix-fd failure: passing fds over a socket using
+ sendmsg() doesn't dup them. Created a minimal testcase. Prepared a preliminary
+ patch, needs testing and fixing.
+
+### May 26 - July 13th
+* Copyright assignment on file.
+* Studied a lot to finish my BSc.
+* Got the linkat patch (Savannah #29655) committed upstream.
+
+### May 19 - May 26
+* Read [MIG - The MACH Interface Generator](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/mig.ps)
+* Worked on bug 28934. Send [patches](http://lists.gnu.org/archive/html/bug-hurd/2010-05/msg00108.html) for review.
+* Requested GNU libc copyright papers to the FSF again since they didn't arrive the first time.
+
+### May 12 - May 19
+* Read http://www.gnu.org/software/hurd/hurd-talk.html
+* Half read http://www.gnu.org/software/hurd/hacking-guide/hhg.html
+* Read many Hurd interfaces (fs.defs, auth.defs, fsys.defs, io.defs,
+ password.defs).
+
+### May 5 - May 12
+* Read http://www.gnu.org/software/hurd/hurd-paper.html
+* Improved the linkat() patch
+* Fixed the issues mentioned in bug 28934, but after doing so I realized
+ that wouldn't work well. The only good solution is to pass file_name
+ from execve() to the exec server, so we need new RPCs.
+
+### April 28 - May 5
+* Submitted a talk proposal on Hurd with Michael Banck for DebConf
+* Sent request to assign copyright to the FSF for Hurd/Mach/libc
+
+### Before April 28
+* Investigated the glib's gtester problem and tracked it down:
+ [bug 28934](https://savannah.gnu.org/bugs/?28934). Prepared a patch
+ but it's not good.
+* [glib's garray test timeouts on Hurd](https://bugzilla.gnome.org/show_bug.cgi?id=568760).
+ The tests passes if the timeout is increased. The current upstream timeout
+ (10s) is quite small (it fails on many Debian builds for some Linux arches).
+ However on Hurd it needs a very big time it seems (like more than 100s).
+ Maybe do an allocation benchmarch?
+* Investigated glib's unix-fd test failure: getsockopt() isn't implemented
+ on Hurd. Need to implement it in hurd/pflocal/socket.c.
+* Investigated coreutils' ln EIEIO, with Samuel's help. linkat() is buggy.
+ Reported as [bug 29655](https://savannah.gnu.org/bugs/?29655). Prepared a
+ patch for it.
+* Investigated coreutils' cp EACCES. Test case: 'mkfifo a && cp -R --copy-contents a b'.
+ Problem is that O_NOFOLLOW adds O_NOTRANS.
+
+## Midterm Evaluation
+### Accomplished
+* Assigned copyright to the FSF.
+* Read many documentation and source code.
+* /dev/fd/N bug fixed
+* Prepared a patch for getsockopt()
+* Fixed linkat() problems.
+* Investigated bug with O_NOFOLLOW & O_NOTRANS (needs more work).
+* Investigated a glib test failure (garray). Not a Hurd issue.
+### Downtime
+* Studied a lot to finish my BSc. Didn't work on Hurd for a month because of
+ that, so that's why I couldn't make a lot of progress (this was known in
+ advance, although in the end the downtime was a bit larger than expected).
+* There's no expected downtime from now on.
diff --git a/user/scolobb.mdwn b/user/scolobb.mdwn
new file mode 100644
index 00000000..017936e5
--- /dev/null
+++ b/user/scolobb.mdwn
@@ -0,0 +1,364 @@
+[[!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]]."]]"""]]
+
+
+Sergiu Ivanov
+
+Mail: <mailto:unlimitedscolobb@gmail.com>
+
+# Current Activity
+
+I am currently busy finishing the university semester, this is why I
+am rather passive.
+
+## Roadmap
+
+* **Build `nsmux` under the Hurd tree** -- **antrik** has been urging
+ me to do this for a long time, so I definitely have to give it a
+ try.
+
+* **Try Thomas's `nsmux-notify` branch** -- To support his stance
+ against including `nsmux` in the Hurd source tree, Thomas added to
+ `nsmux` the ability to listen to port notification (as I understand
+ it). I have to try that, too.
+
+* **Make proxy nodes go away when the proxied translator goes away**
+ -- This should be done by listening to notifications on the ports to
+ the proxied translators. A similar functionality is already
+ implemented in `unionmount`, but it was decided that `nsmux` should
+ use standard notification interfaces, as opposed to the custom
+ demuxer and handler implemented in `unionmount`.
+
+* **Don't attach anonymous translators** -- There is no special point
+ in attaching anonymous (formerly known as dynamic) translators to
+ specific nodes. Keeping them orphan should simplify the design of
+ `nsmux` by eliminating the need for shadow nodes, whose main purpose
+ was to serve as virtual locations to attach translators to.
+
+* **Setup a list of nodes proxying static translators** -- This list
+ is needed when for the filter, which should also be able to go down
+ the static translator stack, not only the stack of anonymous
+ translators.
+
+* **Cleanup `nsmux`** -- When I was writing `nsmux` my acquaintance
+ with good coding and code formatting practices was very basic, which
+ resulted in messy and sometimes ugly code.
+
+* **Implement recursive propagation of translators down directories**
+ -- This task was planned long ago and is fascinating, but I won't be
+ working on it in the near future.
+
+---
+
+# Google Summer of Code: 2009 Project
+
+**Unionmount**: The goal of this project is to make it possible to set
+translators in unionmount mode, which means that the filesystem
+published by the mounted translator will get merged with the directory
+tree of the node the translator is mounted onto.
+
+For documentation, see [[hurd/translator/unionmount]].
+
+At the Final Evaluation, this project was given a passing evaluation
+by **antrik**. This means that the union-mount functionality is
+working and has been tested normally to collaborate with
+`eth-multiplexer`.
+
+---
+
+## Roadmap
+
+### DONE
+
+(Dates in brackets show the completion date)
+
+* **Make `unionfs` build.** *(24 May)* For reasons unknown to me,
+ `unionfs` Makefile was configured to search for include files from
+ under `$(prefix)/include`, while `$(prefix)` was never
+ defined. Setting `$(prefix)` to `/usr` solved the problem.
+
+* **Change the command line parsing in `unionfs` to comply with the
+ requirements of `unionmount`.** *(25 May)* Although the core
+ functionality of `unionmount` heavily relies on `unionfs`, the
+ command line interface of these two programs is completely
+ different: `unionfs` operates on directories, the list of which is
+ explicitly specified, while `unionmount` *always* merges the
+ underlying filesystem and the filesystem published by the
+ mountee. Therefore, options like `--add`, `--remove`, `--underlying`
+ (specific to `unionfs`) make little sense in `unionmount`
+ context. These options have been removed. Also, `unionmount` must be
+ able to pass some switches to the mountee, which means that it
+ should stop parsing the command line arguments immediately after
+ having encountered the path to the mountee (very similar to how
+ `settrans` works). This functionality has also been implemented.
+
+* **Make `unionmount` capable of starting the mountee.** *(28 May)*
+ The idea behind implementation of this goal is that `unionmount`
+ should provide a proxy node on which to set the mountee. The main
+ issue about this goal was the fact that the mountee *cannot* be
+ started during the initialization of `unionmount`, because in this
+ phase `unionmount` is not capable of responding to RPCs, while many
+ translators try to `io_stat` their underlying node or do other
+ interesting things on startup. The solution to this problem is,
+ obviously, *lazy* startup, i.e. the mountee is started at the first
+ attempt to access (via `dir_lookup` or `dir_readdir`) the merged
+ filesystem published by `unionmount`.
+
+* **Include the filesystem published by the mountee in the list of
+ merged filesystems.** *(1 Jun)* `unionfs` operates on a list of
+ ports to the underlying filesystems, therefore, to finish the
+ unionmount functionality, I had to include the port to the mountee
+ in this list.
+
+* **Learn Texinfo.** *(Jun 4)* In order to produce canonical
+ documentation I had to learn the Texinfo documentation format.
+
+* **Write documentation for `unionmount`.** *(Jun 5)* The basic
+ unionmount functionality being finished, it has to be documented
+ properly, lest it should lag behind and remain unfinished
+ eventually.
+
+* **Write documentation for `unionfs`.** *(Jun 5)* `unionfs` is not
+ exactly well-documented at the moment, the only help being provided
+ by the comments in the sources. The goal is to write a more coherent
+ documentation.
+
+* **Start with a clean unionfs and implement the `--mount` argument**
+ *(11 Jun)* It was suggested to implement the union mount
+ functionality first, instead of doing some partial adaptation of
+ `unionfs` to `unionmount` and leaving the complete adaptation for
+ the future.
+
+* **Compile GNU/Hurd from source to be able to study
+ eth-multiplexer.** *(16 Jun)* On my way to getting a working
+ instance of eth-multiplexer I learnt how I could compile GNU/Hurd in
+ a Debian GNU/Hurd system.
+
+* **Setup the `devnode`--`eth-multiplexer`--`pfinet chain`.** *(30
+ Jun)* Due to the fact that I was trying to build everything using
+ `gcc-4.3`, I got strange behaviour of pfinet and spend a week trying
+ to figure out the reason.
+
+* **Try to start the mountee during initialization of `unionfs`** *(4
+ Jul)* Initially the mountee was started at the first lookup. Now it
+ is started immediately after initialization of `unionmount`.
+
+* **Fix the patches in `--mount` option series** *(5 Jul)* The patches
+ have been reviewed by **antrik**. I corrected them and posted them
+ to the ML for final reviews.
+
+* **Orphan the mountee after starting it** *(7 Jul)* Orphaning the
+ mountee after starting it up seems to be a nice work-around for the
+ necessity of keeping a proxy node in unionmount in simple
+ use-cases. It is possible that this functionality will provided as a
+ separate patch (without inclusion in master) should it turn out that
+ orphaning the mountee is a bad idea.
+
+* **Decide which RPCs should be forwarded to the mountee and how this
+ should happen** *(10 Jul)* This is the primary requirement in being
+ able to proxy the control port of `unionmount`.
+
+* **Fix the patches the have already been commented on** *(14 Jul)*
+ The new patches I have submitted have been reviewed; also, the older
+ patches have been reviewed again, which required correcting them.
+
+* **Add the `--no-mount` option** *(14 Jul)* Using the `--no-mount`
+ and `--mount` options, the user can decide whether unionmount should
+ be completely transparent (i.e. most control-port RPCs forwarded to
+ the mountee) or not.
+
+* **Make `unionmount` go away when the mountee goes away** *(14 Jul)*
+ `unionmount` makes sense only while the mountee is running, so it
+ has to go away as soon as the mountee has been shut down for some
+ reason.
+
+* **Proxy the control port of `unionmount`** *(14 Jul)* For
+ `unionmount` to become transparent, most of the RPCs invoked on the
+ its control port should be forwarded to the mountee.
+
+* **Fix adding filesystems to `unionmount`** *(16 Jul)* `settrans -a
+ foo unionfs -a <dir> -u -t <translator>` worked, but `settrans -a
+ foo unionfs -u -t <translator> -a <dir>` didn't. The problem was
+ that in a series of rebase operations I accidentally left the
+ "Orphan the mountee" commit out and the problem appeared when the
+ `start_mountee` function tried to attach the mountee. Of course,
+ this is not the definite solution, since I don't know why should the
+ attempt to attach the mountee work in the former case and fail in
+ the latter, but I will leave the investigation for some future time.
+
+* **Create the patch for supplying the mountee with a port to the
+ underlying node of unionfs** *(17 Jul)* Such functionality makes
+ `unionmount` even more transparent.
+
+* **Try to make `eth-multiplexer` work with static instances of
+ `devnode`** *(3 Aug)* A static `devnode` translator is a `devnode`
+ translator which is told to use the eth-multiplexer's pseudo master
+ device port via the "-M" option. Technically it looks like
+ `settrans -a <node> devnode -M <dir> <device-name>`, where `<dir>`
+ is the node on which eth-multiplexer is running.
+
+ The problem was in the fact that the root node of `eth-multiplexer`
+ was not treated completely similarly as other nodes; specifically no
+ device port was created for it. Minor modifications to some
+ conditions solved the problem.
+
+* **Add the `MASTER` node to `eth-multiplexer`** *(5 Aug)* The
+ `MASTER` node, published by eth-multiplexer, allows creating any
+ number of virtual devices. This node is mainly accessed by static
+ instances of `devnode` to setup their corresponding virtual devices.
+
+* **Add support for priorities** *(6 Aug)* Now the mountee's
+ filesystem can be configured to "lie" beneath other filesystems.
+
+* **Use `unionmount` to merge the virtual filesystem of
+ `eth-multiplexer` with its underlying filesystem** *(7 Aug)*
+ `eth-multiplexer` can is unionmounted to "lie beneath" it's
+ underlying filesystem. If, for example, the multiplexer is
+ unionmounted on `veth/`, the user can both set (static) `devnode`
+ translator on the nodes shown in `veth/` and belonging to the
+ underlying filesystem and create normal virtual multiplexer devices
+ by accessing any node (not present in the underlying filesystem) and
+ opening a device using the port to the node as a pseudo device port.
+
+* **Rename the `MASTER` node into `.MASTER`** (7 Aug) This name seems
+ more natural for a special-purpose node.
+
+* **Set the stat information for `eth-multiplexer` nodes in
+ `netfs_validate_stat`** (9 Aug) In the initial version the stat
+ information was set up properly only at device creation. Before
+ that the stat information was copied from the underlying node, which
+ baffled `unionmount`. Now the stat information is setup in
+ `netfs_validate_stat`.
+
+* **Supply the mountee with the real root.** *(14 Aug)* Since the
+ mountee is *not attached* to its underlying node, it is okay to
+ supply it with the real root node of `unionfs`. The mountee's
+ filesystem will not obscure the `unionfs`'s one because the mountee
+ is *not attached* to the root node.
+
+---
+
+# Google Summer of Code: 2008 Project: Namespace-based translator selection
+
+---
+
+## Current Task
+
+Write the filesystem proxy for namespace-based translator selection (*nsmux*).
+
+The code is at <http://github.com/scolobb/nsmux/tree/master>.
+
+---
+
+###Did this week
+
+* Modified the node cache so that it maintains shadow nodes alive.
+
+###Plans for the next week
+
+* Implement the shutting down of translator stacks when *nsmux* is asked to go away (in case **antrik** considers that necessary).
+
+* Make *nsmux* provide the access to the translator stack of the real node, in case a translator (mainly, a filter) should ask for its underlying node to be opened in O_NOTRANS mode.
+
+---
+
+###Current Status
+
+####DONE:
+
+* The skeleton which mirrors the filesystem.
+
+* Provide proxy nodes (modify the standard version of netfs_S_dir_lookup).
+
+####TODO:
+
+* Create the generic filtering translator.
+
+* Create the translator '0' (providing the untranslated version of the
+ node).
+
+* Create the "recursive wrappers" for one-node translators.
+
+* Create special translators for the main proxy so that its functionality
+ should be complete.
+
+* Implement sharing of dynamic translator stacks where possible.
+
+* Make dynamic translators go away as soon as they are not required.
+
+* Refine the skeleton in several places so that it should become faster
+ and more reliable.
+
+* Kill bugs.
+
+* Integrate nsmux upstream.
+
+* Solve the libtrivfs stacking issue.
+
+* Patch libnetfs (it does not support file_get_translator_cntl, for
+ instance).
+
+---
+
+###Progress
+
+####8: Fri Sep 19:
+
+> Modified the ncache so that it now maintains shadow nodes (and directory nodes too, it is a side effect at the moment) alive.
+
+####7: Sat Aug 30 - Fri Sep 5:
+
+> Added the code for shutting down dynamic translator stacks.
+
+####6: Mon Aug 4 - Fri Aug 29:
+
+> Implemented the proxy nodes.
+
+####5: Thu Jul 24 - Thu Jul 24:
+
+> Created a *libnetfs*-based one-node translator, working exactly like the *libtrivfs*-based translator I had written before; the former, however, can be included in a translator stack.
+
+####4: Tue Jul 22 - Thu Jul 24:
+
+> Attempted to make a *libtrivfs*-based translator to be able to be stacked upon itself (to be able to receive a translator on top of itself, more exactly); attempted to borrow some code from *libnetfs* but this didn't bring any results.
+
+####3: Sun Jul 20 - Tue Jul 22:
+
+> Implemented the possibility to propagate a translator on all files belonging to a directory 'dir' in the request of the type 'dir,,x/'.
+
+####2: Thu Jul 17 - Fri Jul 18:
+
+> Extended the lookup code in *nsmux* to allow for looking up nodes like 'file,,x' and added the possibility to escape the double-comma in the following way: ',,,'.
+
+####1: Mon Jul 12 - Tue Jul 13:
+
+> Implemented a simple *libtrivfs*-based translator to test the lookup code for *nsmux*.
+
+####0: Sat Jul 12 - Sat Jul 12:
+
+> Made small changes to the code of *filterfs* to fit the needs of *nsmux*.
+
+---
+
+## Completed Tasks
+
+####2: Sat May 3 - Fri Jul 17:
+
+> Write a translator that should filter the contents of the directory it is set on according to some property. The property can be an arbitrary command.
+
+> The code is at <http://github.com/scolobb/filterfs/tree/master>.
+
+####1: Mon Apr 28 - Wed Apr 30:
+
+> Wrote a Python extension module in C for retreiving the uptime. The module is based on the code of *w*.
+
+####0: Sun Apr 27:
+
+> Followed the code of *dmesgd* (<http://www.bddebian.com/junk/dmesgd/>) kindly offered by **bddebian** and rewrote it from scratch as a tutorial.
diff --git a/user/soerenschulze.mdwn b/user/soerenschulze.mdwn
deleted file mode 100644
index 4dd22728..00000000
--- a/user/soerenschulze.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-* Name: Sören Schulze
-* Email: <soeren.d.schulze@gmxNOSPAM.de>
-* Country: Germany
diff --git a/user/tombachmann.mdwn b/user/tombachmann.mdwn
deleted file mode 100644
index 639df67d..00000000
--- a/user/tombachmann.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-* Name: Tom Bachmann
-* Email: <e_mc_h2@webNOSPAM.de>
-* Country: Germany
diff --git a/user/tschwinge.mdwn b/user/tschwinge.mdwn
index b72f26f5..eea5480c 100644
--- a/user/tschwinge.mdwn
+++ b/user/tschwinge.mdwn
@@ -1,17 +1,17 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2010 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="Thomas Schwinge"]]
+[[!meta title="Thomas Schwinge"]]
-<tschwinge@gnu.org>
+<thomas@schwinge.name>
Germany
-<http://www.thomas.schwinge.homeip.net/>
+<http://schwinge.homeip.net/~thomas/>
diff --git a/user/vincentvikram.mdwn b/user/vincentvikram.mdwn
index 847325e2..875b6311 100644
--- a/user/vincentvikram.mdwn
+++ b/user/vincentvikram.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
* Name: Vikram Vincent
* Email: vincentvikram@swatantra.org OR vincentvikram@gmail.com
diff --git a/community/da.mdwn b/user/zhengda.mdwn
index 0a53d129..a7f57f35 100644
--- a/community/da.mdwn
+++ b/user/zhengda.mdwn
@@ -2,12 +2,47 @@
Email: zhengda1936 at gmail dot com
-Project: Network virtualization for subhurds etc.
+---
+
+#Project: Porting DDE to Hurd.
+
+##The goal:
+porting DDE developed by DROPS to the Hurd, and it will still run in the user space.
+
+##Introduction
+The introduction of DDE/DDEKit can be found in [here](http://wiki.tudos.org/DDE/DDEKit) and more information can be found [here](http://os.inf.tu-dresden.de/pipermail/l4-hackers/2009/004291.html). DDE/DDEKit is a library, and it should be compiled with the code of Linux or FreeBSD drivers. DDE Linux26 is still under development and it can now support network and block devices (but doesn't support SCSI).
+
+##The current status
+Currently a few NIC cards work now. I tested pcnet32, e100, e1000, ne2k-pci and rtl8139 in VMWare and Qemu. But the DDE e100 driver cannot work for some e100 cards as currently DDE doesn't support firmware. Someone also reported sis900 cannot work, unfortunately, I cannot test it myself. I appreciate if someone can try some other NIC drivers and give me some feedbback. Please run DDE with GNUMach in the [master-user_level_drivers](http://git.savannah.gnu.org/cgit/hurd/gnumach.git/) branch.
+
+## My work
+I separate DDE Linux26 to 2 parts: libddekit and libdde_linux26. I also provide a library called libmachdev on the top of the Linux code to provide the Mach device interface, so it is easy for the user to compile a Linux driver and run it in the Hurd. The latest code can be found in the dde branch of the incubator repository.
+
+There is a minor problem when we compile a Linux driver. Linux drivers use jiffies to measure time. Unfortunately, Mach doesn't provide it, so whenever we need it, we need to calculate it by ourselves. I decide to provide a macro to calculate it for the sake of performance and the cost is that the source code of Linux drivers has to include ddekit/timer.h.
+
+## Build and run DDE drivers
+
+To build a Linux driver with DDE Linux, we need libddekit, libdde_linux26, libmachdev and libhurd-slab. libddekit and libmachdev use the same Makefile system as other Hurd components but libdde_linux26 does not, so we have to build libdde_linux26 in its source file directory. DDE drivers use the same makefile system as libdde_linux26 and thus we need to build them in their source file directories as well.
+
+The repository has all DDE drivers I have tested, but in case you want to try other drivers, the easiest way is to use dde_pcnet32 as a template. The directory of dde_pcnet32 has Makefile, Makeconf.local, default.ld, pcnet32.c and main.c. If we need to build a new driver file, we only need to replace pcnet32.c with the new file and change Makefile accordingly. You also need to change DDEKITLIBDIR, DDEKITINCDIR, DDE26LIBDIR and OBJ_BASE in Makeconf.local to indicate the path to ddekit and dde_linux26.
+
+When all parts are ready, we can start to build DDE drivers now. In case someone hasn't installed libpciaccess, please install it first. We first build libddekit, libdde-slab, then libdde_linux26, then libmachdev and at last the DDE driver. It's better to install libddekit, libdde-slab and libmachdev to the system, so libdde_linux26 and the DDE driver find the library files and header files.
+
+To run a DDE NIC driver: It is better to disable the corresponding kernel drivers in GNU Mach. For example, if we use the pcnet card, we'd better disable lance and pcnet32 drivers in gnumach. DDE requires the pfinet with modification during my GSoC project in 2008 and that pfinet requires libpcap-dev (this pfinet is also in the dde branch).
+
+settrans -acfg pcnet32 hurd/dde_pcnet32/dde_pcnet32
-The [code](http://www.assembla.com/spaces/VNetHurd/trac_subversion_tool).
+settrans -acfg /dev/eth0 hurd/devnode/devnode eth0 -M pcnet32
+
+settrans -acfg /servers/socket/2 hurd/pfinet/pfinet -i /dev/eth0 -a 172.16.172.10 -g 172.16.172.2 -m 255.255.255.0
---
+#Project: Network virtualization for subhurds etc.
+
+The [code](http://www.assembla.com/spaces/VNetHurd/trac_subversion_tool). The [[howto]] shows the instructions of setting up the virtual network in hurd and subhurd.
+
+
## The design and the implementation
### The requirements:
@@ -43,32 +78,26 @@ A filter translator is needed to enforce the policies between the interface and
* BPF is also ported to the filter translator. There are two filers in the translator, one for outgoing packets, the other for incoming packets.
* Only one pfinet can connect to the translator at a time.
-
----
-
## TODO
### Coding
- - make subhurds running without root privileges
- merge BPF rules from the filter translator and the multiplexer
----
-
## Completed tasks
### Coding
-The patch of glibc (pfinet server overriding) is [here](http://www.assembla.com/spaces/VNetHurd/documents/aJidqKp6ur3z-Nab7jnrAJ/download/A%20patch%20of%20glibc).
+The patch of glibc (pfinet server overriding) is [here](http://www.assembla.com/spaces/VNetHurd/documents/aJidqKp6ur3z-Nab7jnrAJ/download/A%20patch%20of%20glibc), commited to debian for 2.11.2-7 and later.
The patch of pfinet (open the virtual network interface) is [here](http://www.assembla.com/spaces/VNetHurd/documents/aWqYwYATKr3BBOab7jnrAJ/download/patch%20of%20pfinet%201%20(to%20use%20the%20virtual%20interface)).
The patch of pfinet (fix pfinet to use the proper filter rule) is [here](http://www.assembla.com/spaces/VNetHurd/documents/besb-qATKr3AIxab7jnrAJ/download/patch%20of%20pfinet%202%20(to%20add%20an%20IP%20filter)).
-The patch of pfinet (set the mach device in the promiscuous mode) is [here](http://www.assembla.com/spaces/VNetHurd/documents/bEovN6ATKr3B8uab7jnrAJ/download/patch%20of%20pfinet%203%20(to%20set%20the%20mach%20device%20into%20the%20promiscuous%20mode)).
+The patch of pfinet (set the mach device in the promiscuous mode) is [here](http://www.assembla.com/spaces/VNetHurd/documents/bEovN6ATKr3B8uab7jnrAJ/download/patch%20of%20pfinet%203%20(to%20set%20the%20mach%20device%20into%20the%20promiscuous%20mode)), commited on 20100920.
-The patch of boot (open the virtual network interface) is [here](http://www.assembla.com/spaces/VNetHurd/documents/cWkeEixHar3AdKab7jnrAJ/download/A%20patch%20of%20boot).
+The patch of boot (open the virtual network interface) is [here](http://www.assembla.com/spaces/VNetHurd/documents/cWkeEixHar3AdKab7jnrAJ/download/A%20patch%20of%20boot), commited on 20100920.
-The patch of gnumach (set the network device into the promiscuous mode) is [here](http://www.assembla.com/spaces/VNetHurd/documents/b0eLzUxHmr3ymXab7jnrAJ/download/A%20patch%20of%20gnumach).
+The patch of gnumach (set the network device into the promiscuous mode) is [here](http://www.assembla.com/spaces/VNetHurd/documents/b0eLzUxHmr3ymXab7jnrAJ/download/A%20patch%20of%20gnumach), commited on 20100920.
the multiplexer:
@@ -90,11 +119,6 @@ the devnode translator:
- Create a device file to help open the network device.
-
-### The Code Read
-
-- boot
-
### Documentation Read
diff --git a/user/zhengda/howto.mdwn b/user/zhengda/howto.mdwn
new file mode 100644
index 00000000..1258ffed
--- /dev/null
+++ b/user/zhengda/howto.mdwn
@@ -0,0 +1,90 @@
+[[!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]]."]]"""]]
+
+
+This document briefly introduces how to set up the virtual network and connect the subhurd with the main hurd.
+
+
+### 1. Set up the virtual network.
+
+####1.1 Patch and install GNU Hurd, GNU Mach and the GNU C library.
+
+Step 1: Get the Hurd and compile it.
+
+ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co -r zhengda-soc2008-virt-branch hurd
+
+
+Step 2: apply the [patch](http://www.assembla.com/spaces/VNetHurd/documents/b0eLzUxHmr3ymXab7jnrAJ/download/A%20patch%20of%20gnumach) on the GNU Mach.
+
+In order to connect the virtual network created in hurd with the external network, we need this patch. It enables the Hurd to set the Mach device into the promiscuous mode, so the real device can accept the packet that goes to the virtual device in hurd.
+(This step is optional if we are only interested in creating a internal virtual network.)
+
+Step 3: apply the [patch](http://www.assembla.com/spaces/VNetHurd/documents/aJidqKp6ur3z-Nab7jnrAJ/download/A%20patch%20of%20glibc) on glibc.
+
+This patch enables the user to override the default socket server by using the environment variables SOCK_SERV_DIR or SOCK_SERV_%d (%d is the domain of the socket server).
+
+
+#### 1.2 Set up the Hurd components to build the virtual network.
+
+In this section, I show how to create two virtual interfaces and run three pfinet servers. I assume that the source code of Hurd is in /root/hurd.
+
+Step 4: create the network device file in /dev with devnode.
+The network device file is used to help other translators open the device.
+
+ # settrans -acfg /dev/eth0 /root/hurd/devnode/devnode eth0
+
+Step 5: create the virtual network device with eth-multiplexer.
+
+eth-multiplexer is responsible to create the virtual network device and dispatch the packet to the right clients that connect to the virtual device. It also connects the virtual network and the external network. Eth-multiplexer of the current version is a netfs translator and can create virtual devices and the device files dynamically, according to the request from the client.
+
+ # settrans -acfg /root/multiplexer /root/hurd/eth-multiplexer/eth-multiplexer -i /dev/eth0
+
+Step 6: setup the filter translator eth-filter on the network device. This step is optional.
+
+eth-filter is used by the user to force the traffic policy on the network device.
+
+ # settrans -acfg /dev/fveth0 /root/hurd/eth-filter/eth-filter -i /root/multiplexer/veth0 -S 192.168.8.0/24 -R 192.168.8.0/24
+ # settrans -acfg /dev/fveth1 /root/hurd/eth-filter/eth-filter -i /root/multiplexer/veth1 -S 192.168.8.0/24 -R 192.168.8.0/24
+
+Step 7: setup the pfinet server on the virtual network device.
+
+ # settrans -afgc /root/socket0/2 /root/hurd/pfinet/pfinet -i /dev/fveth0 -a 192.168.8.10 -g 192.168.8.1 -m 255.255.255.0
+ # settrans -afgc /root/socket1/2 /root/hurd/pfinet/pfinet -i /dev/fveth1 -a 192.168.8.11 -g 192.168.8.1 -m 255.255.255.0
+
+
+#### 1.3 Run the command with the customized pfinet server.
+
+Step 8: Set environment variables to use the customized pfinet server.
+
+The environment variable of SOCK_SERV_DIR is used to override all socket servers and SOCK_SERV_%d to override a specific socket server. %d after SOCK_SERV_ is the domain of the protocol that the socket server supports. The environment variable SOCK_SERV_%d has the higher priority than SOCK_SERV_DIR.
+
+ # export SOCK_SERV_2=/root/socket1/2
+
+If the modified glibc isn't installed as the system default C library, set LD_LIBRARY_PATH environment.
+
+ # export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/the/path/of/glibc
+
+We can run any command now, for example, ping.
+
+A SHELL script is provided to run all translators I mentioned automatically: http://www.assembla.com/spaces/VNetHurd/documents/c2W71ABser3AIxab7jnrAJ/download/runmultiplexer. To use this script, the user must specify the source of the hurd tree (the default value is /root/hurd) and the path of the servers (the default value is /root) where they should be created. This script is only used to test all translators I mentioned above and shows all steps to set up the virtual network.
+
+
+### 2. Connect the subhurd with the main hurd.
+
+In the main hurd, we still need to do Step 1-8.
+We run subhurd,
+
+ # /root/hurd/boot/boot -m eth0=/dev/fveth0 -m eth1=/dev/fveth1 servers.boot /dev/hd1s1
+
+In the subhurd, we do Step 1, 4, 8.
+Step 4: # settrans -acfg /dev/veth0 /root/hurd/devnode/devnode -d veth0
+Step 7: # settrans -afgc /servers/socket/2 /root/hurd/pfinet/pfinet -i /dev/veth0 -a 192.168.8.20 -g 192.168.8.1 -m 255.255.255.0
+
+Now we can communicate from the subhurd with any pfinet server of the main Hurd that runs in the virtual network.
diff --git a/virtualization.mdwn b/virtualization.mdwn
index b6fb0eb5..78457eb9 100644
--- a/virtualization.mdwn
+++ b/virtualization.mdwn
@@ -1,11 +1,28 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!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]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-See [[wikipedia Virtualization]].
+ * [[hurd/virtualization]] in the GNU Hurd's context.
+
+
+# External
+
+ * [*Emulation: Role-Playing for
+ Computers*](http://www.informit.com/articles/printerfriendly.aspx?p=659522),
+ an article by David Chisnall.
+
+ * [*Virtual Machines*](http://virtualsquare.org/vm.html).
+
+ * Wikipedia page about [[!wikipedia Virtualization]].
+
+
+# Open Issues
+
+ * [[open_issues/Virtualization]]
diff --git a/wiki_colophon.mdwn b/wiki_colophon.mdwn
deleted file mode 100644
index a479599a..00000000
--- a/wiki_colophon.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
-Just like a book, this topic is designed to help describe the tools used to
-create this website and what methods were used to give it it's look and feel.
-
-
-# Rev. I
-
-We used a particular implementation (or clone) of Wiki software called
-[TWiki](http://twiki.org).
-
-A generic [WikiWikiWeb](http://www.c2.com/cgi/wiki?WelcomeVisitors), or simply
-Wiki, is _"a collaborative forum where people can share ideas and record any
-consensus reached on difficult issues, along with rebuttal. It changes as
-people come and go, as experience develops, and as opinions change." The TWiki
-software is an enhanced descendent of the original WikiWikiWeb_.
-
-We used the [GNU Skin](http://twiki.org/cgi-bin/view/Plugins/GnuSkin) created
-by our own Joachim Nilsson.
-
-This site began in May, 2002 as one TWiki web: *Hurd*. This WebHome page was
-used as the front page of the whole site. We grew this site and added more
-TWiki webs by December, 2002. Due to the success of the site we had to act
-with respect to more completely addressing copyright issues. More people
-started adding content.
-
-
----
-
-# Rev. II
-
-On 2007-08-12 [[Thomas_Schwinge|tschwinge]] finished the conversion of the
-TWiki content to [ikiwiki](http://ikiwiki.info). Read
-[[about_the_twiki_to_ikiwiki_conversion]].