Porting the GNU C Library

Unlike most GNU packages, the C library does not yet run on many platforms. The main reason for this is that the C library cannot be written portably; it depends directly on the most intimate details of the kernel as well as the hardware.

The current version of GNU libc, version 2.0, now supports these systems:

It should be possible without many problems to port the GNU libc to modern systems like Solaris (perhaps even SunOS-4), Irix, DEC Unix (OSF/1), and perhaps HP-UX. Older systems such as Ultrix or SysVr3 systems cannot support GNU libc as a shared library, and some of the code---the part which assumes some parts of GNU libc are in separate libraries---needs to be changed as well. But in principle it should be possible to build a completely static library from mostly the same sources.

Volunteers doing ports

Currently a few volunteers are working on ports of GNU libc to other platforms. Before you start working on a port you should look at the following list and find out whether somebody already works on the same or a related target system. It is especially important to recognize that the GNU libc consist of two parts which have to be treated by the libc different for each platform:

Architecture dependent
The are functions which are written in assembler or are specially optimized for a processor and which can be used on every system using this processor.
System dependent
Several functions only depend on the underlying system but do not vary among different processor types.

That means a possible porter should contact the people who support files for the appropriate system as well as people who maintain some more general family of system. See the table below for more information about this.

Responsibility for subtrees

The system-dependent part of the GNU libc is organized in subtrees which are used for different systems or different architectures. While the GNU libc maintainer is responsible for the whole system, some of the subtrees are maintained by other people as well. The following people list the subdirectories, describe briefly the contents and show who can be contacted. Every directory listed includes all directories below it as well.

All architecture-specific or system-specific directories not listed here are currently not actively maintained.

hurd/
mach/
sysdeps/mach/
GNU Hurd is built on top of Mach, and the Hurd developers are responsible for these directories.

Responsible: Thomas Bushnell <thomas@gnu.ai.mit.edu> and Miles Bader <miles@gnu.ai.mit.edu>.

sysdeps/alpha/
DEC Alpha specific functions.

Responsible: Richard Henderson <richard@atheist.tamu.edu>.

sysdeps/i386/
Intel ix86 specific functions.

Responsible: Ulrich Drepper <drepper@gnu.ai.mit.edu>.

sysdeps/m68k/
Motorola 680x0 specific functions.

Responsible: Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>.

sysdeps/unix/sysv/linux/alpha/
Kernel-dependent functions for the DEC Alpha port of Linux

Responsible: Richard Henderson <richard@atheist.tamu.edu>.

sysdeps/unix/sysv/linux/i386/
Intel ix86 port of Linux.

Responsible: Ulrich Drepper <drepper@gnu.ai.mit.edu>.

sysdeps/unix/sysv/linux/m68k/
Kernel-dependent functions for the Motorola 680x0 port of Linux.

Responsible: Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>.

sysdeps/unix/sysv/linux/mips/
Kernel-dependent functions for the MIPS R[23458]000 port of Linux.

Responsible: Ralf Baechle <ralf@mailhost.uni-koblenz.de>.

sysdeps/unix/sysv/linux/ppc/
Kernel-dependent functions for the Power PC port of Linux.

Responsible: Geoffrey Keating <Geoff.Keating@anu.edu.au>.

sysdeps/unix/sysv/linux/sparc/
Kernel-dependent functions for the SPARC port of Linux.

Responsible: Miguel de Icaza <miguel@nuclecu.unam.mx>.

Ongoing work

Other ports are being developed but are not yet usable. If you are interested in porting GNU libc, please check this table to see whether somebody is already working on your system or a related system.

sysdeps/unix/sysv/sysv4/
Harmanjit Singh <harman@netearth.iitd.ernet.in> said he will try to port GNU libc to a System V R4 system running on SPARC systems. This port will share several things with the port to Solaris 2.x on SPARC.
sysdeps/unix/sysv/sysv4/solaris2/
Chris Brown <c4-brown@uwe.ac.uk> expressed interest in doing a port to Solaris 2.x on SPARC.
sysdeps/unix/sysv/irix5/
sysdeps/unix/sysv/irix6/
Robert Glamm <glamm@mountains.ee.umn.edu> is working on a port to Irix 5.x and Irix 6.x systems running on MIPS. Magnus Danielson <magda@it.kth.se> also showed interest. There is a web page maintained by these guys on porting to Irix. Check *this out.
sysdeps/unix/bsd/bsd4.4/bsdi/
Bradley Slavik <fire@wddataflo.dataflo.net> is working on a port to BSDI 2.x.
sysdeps/unix/sysv/hpux/
John Wojtowicz <wojtowij@erols.com> is working on the port to HP-UX on HP9000/PA-1.1 systems.

If you have interest in working on one of the systems listed above, please contact the appropriate people and also drop a note to the GNU libc maintainer so that this table can be updated.

If you have interest in working on a system not listed above, please contact the GNU libc maintainer so that duplicate work can be avoided.


Return to the GNU libc page.


Return to GNU's home page.

Please send FSF & GNU inquiries & questions to gnu@prep.ai.mit.edu. There are also other ways to contact the FSF.

Please send comments on these web pages to webmasters@www.gnu.ai.mit.edu, send other questions to gnu@prep.ai.mit.edu.

Copyright (C) 1996, 1997 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA

Verbatim copying and distribution is permitted in any medium, provided this notice is preserved.

Updated: 24 Feb 1997 drepper