GNU/Hurd: First Phase of L4 Port Completed

Submitted by mbanck
on February 1, 2005 - 12:56pm

While Neal Walfield [interview] finished the initial memory management framework for the L4/Hurd port [story], Marcus Brinkmann was busy porting essential parts of glibc, namely getting the process startup code working and thus actual programs to run. This rather small step is at the end of a giant leap towards the first bootstrapping phase and opens the way for future development.

His latest patches and the add-on to glibc (which are maintained in the hurd-l4 CVS repository for the time being) enable Thread Local Storage (TLS) and Thread Specific Data (TSD) (which are prerequisites for glibc's Native POSIX Threading Library (NPTL) [story]) and also make glibc's startup and initialization code run all the way until invoking main().

This makes it possible to link a program statically against glibc and have it run in place of the bootstrap filesystem server. To this end, Marcus was able to port banner(6) to Hurd/L4, which thus has the honour of being the first user application running on the L4 port.

Concerning the future, Marcus says: "I think that this basically concludes the first step of the initial bootstrap phase. [...] we can now easily explore and develop the system in any way we want. The dinner is prepared."


From: Marcus Brinkmann
Subject: TLS/TSD support and startup/initialization working
Date: Thu, 27 Jan 2005 17:54:11 +0100


Hi,

with the changes of today, the glibc patch set in CVS supports startup
and initialization up to the invocation of the main() function - this
means important things like malloc() work.

Of course, there is a lot of cheating going on, and the implementation
is full of gaps and stubs.  But this step forward means that we can do
easy testing by just writing a program and linking it to glibc, and
run it as the "bootstrap filesystem" server.

TLS/TSD seems to work without any problems - important things like the
default locale are set up correctly, and thus strerror() works.
__thread variables are supported, glibc uses them itself.

There were a couple of fixes and extensions needed in wortel and the
startup code, but it wasn't so much.  My understanding of the glibc
code has reached an all-time high (not that this required much ;)

If you want to reproduce all this, you need to configure, make and
install the software as usual.  It is important that your compiler can
find the installed header files afterwards!  Only then you can
reconfigure your source with "--enable-libc" and try to build the C
library according to the README.

Static linking against this new libc should be possible after (manual)
installation, I guess, but I always use a very hackisch and long gcc
command line to cheat myself into a binary that I can then use as
"filesystem server" (the last one in the list) in the GRUB
configuration.  See the README for details.

I think that this basically concludes the first step of the initial
bootstrap phase.  By being able to link a program against glibc, and
by booting all the way up to that programs main() function, we can now
easily explore and develop the system in any way we want.

The dinner is prepared! :)

Thanks,
Marcus

Related links:

COOL! Keep up the good work,

Anonymous (not verified)
on
February 2, 2005 - 2:01am

COOL!
Keep up the good work, Hurd devs! ^_^

Like the first comment ^^

Anonymous (not verified)
on
February 2, 2005 - 7:35am

Like the first comment ^^

Wish I was more of a programmer and less of a student so I too could help on hurd.

nah being a student makes you

Anonymous (not verified)
on
February 2, 2005 - 8:31pm

nah being a student makes you perfect for this project. Thats about all they've accomplished so far.

Banner on hurd?

Anonymous (not verified)
on
February 2, 2005 - 9:07am

Hurd is running banner, woohoooo. That's a sentation.

Re: Banner on hurd?

on
February 2, 2005 - 9:59am

Hurd is running banner

You are either confused or the story was not clear enough: Not 'the Hurd' has ported banner, but Marcus has ported banner to the new, shiny, totally alpha 'Hurd on L4' port. The current (mostly) stable Hurd runs on the GNU Mach microkernel. However, the Hurd developers believe that there are fundamental problems with GNU Mach, which can be solved by using the L4 microkernel. This project is called Hurd/L4 and is in a very early phase of development, you can find further information here.

The regular Hurd on GNU Mach system is pretty mature and porting issues here involve GNOME or Mozilla, not banner.

Michael

Acronym fun

Anonymous (not verified)
on
February 2, 2005 - 1:24pm

The article writer needs some sort of acronym checker...

It's TSD, not TDS. And it's NPTL, not NTPL.

TLS/TSD

Anonymous (not verified)
on
February 2, 2005 - 2:22pm

His latest patches and the add-on to glibc enable Thread Local Storage (TLS) and Thread Specific Data (TSD) ...

Well, TLS and TSD are just different names for the same thing (hence the "/" and not "and" in the original post).

My coverage

NSK (not verified)
on
February 3, 2005 - 12:37pm

Great news! I also covered this news together with an overview of HURD and L4 history on my site, here.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.