[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

NPTL works and runs everything!



After all the modifications I've sent I'm now satisfied with NPTL.
It is now installed as the system library and all the programs I have
tried work.

Here is my setup:
- Debian Unstable
- Linux 2.5.44 with "Clear TLS on execve" patch [1]
   Note: 2.5.45 would also be fine, but it has USB bugs that prevent
    me from using it.
   2.5.46 will include the patch
- Debian Binutils 2.13.90.0.10-1
- Debian GCC 1:3.2.1-0pre4 plus all the RedHat patches that aren't
   already applied
- Debian GNU Libc 3.2.1-3, modified to enable NPTL and TLS, compile
   for i686 and not strip the libraries
- NPTL 0.4 plus all the patches I sent
- Debian libkrb53 recompiled with
   CC="gcc -include /usr/include/errno.h"

Here are the program that I have tested: they all work!
All programs come from unmodified Debian packages.

Non-graphical programs:
- Perl 5.8.0-13
- Python 2.2.2-1
- APT 0.5.4

Gnome 2:
- Evolution 1.0.8-5
- Galeon 1.2.0-4
- Nautilus 1.0.6-5
- Pan 0.13.1-5

KDE 2.2:
- Konqueror 4:2.2.2-14
- KMail 4:2.2.2-14.1
- KWord 1:1.1.1-7

Servers:
- Apache2 MPM Worker 2.0.43-1 (gives http://localhost/)

Other:
- OpenOffice.org 1.0.1-4


The only remaining compatibility problem is the fact that with
TLS-based glibcs, errno is no longer provided.
IMHO the dynamic loader should be modified to link non-TLS symbols
with TLS symbols belonging to the main thread.

Another problem is that stripping destroys my NPTL libc since strip
moves things without fixing references (the fact that it moves things,
one page forward, is probably the bug).

In other words, I think that NPTL is ready to be used and should be
used as the system libc by anyone who can run a 2.5 kernel.

NPTL is much more efficient, and, for example, Galeon feels noticeably
faster.

Thanks to everyone who worked to create this wonderful system.


[1] Here is the "Clear TLS on execve" kernel patch.

diff --exclude-from=/home/ldb/src/linux-exclude -urNdp linux-2.5.44/arch/i386/kernel/process.c linux-2.5.44_speedtouch/arch/i386/kernel/process.c
--- linux-2.5.44/arch/i386/kernel/process.c	2002-10-12 06:21:02.000000000 +0200
+++ linux-2.5.44_speedtouch/arch/i386/kernel/process.c	2002-10-31 14:23:18.000000000 +0100
@@ -247,6 +247,7 @@ void flush_thread(void)
 	struct task_struct *tsk = current;
 
 	memset(tsk->thread.debugreg, 0, sizeof(unsigned long)*8);
+	memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array));	
 	/*
 	 * Forget coprocessor state..
 	 */

Attachment: pgp00020.pgp
Description: PGP signature


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]