NPTL support on PPC32 (MPC5200) ?

Stephen Warren SWarren at
Sat Oct 9 02:26:22 EST 2004

Hello everyone.

I'm trying to run a fairly heavily multi-threaded application on the
Motorola/Freescale MPC5200 platform. So far, we're having a few
performance problems. Freescale has profiled the application using
strace and shown that a lot of our CPU time goes into executing the kill
and rt_sigsuspend system calls, which we understand are used in the
implementation of the threading library.

So, I figured I'd see if NPTL (Native Posix Threads Library) would help
us out at all. I found and attempted to use a utility named crosstool
(0.28-rc37) from to build a new toolchain
supporting this.

I made a few changes to in an attempt to request NPTL.
These are shown later in the email.

However, I'm getting an error from the configure of glibc:

.4-20041001-glibc-20041004/glibc-20041004/configure --prefix=/usr
--build=i686-pc-linux-gnu --host=powerpc-603e-linux-gnu
--enable-kernel=2.4.24 --without-cvs --without-gd --with-tls
--with-__thread --enable-shared --enable-add-ons=nptl
running configure fragment for nptl/sysdeps/pthread
checking for forced unwind support... no
configure: error: forced unwind support is required

I've tried various combinations of:

gcc-3.4.2        (release)
gcc-3.4-20041001 (10/01 snapshot)
glibc-2.3.3      (release)
glibc-20041004   (10/04 snapshot)
binutils-2.15    (release)
binutils-041007) (10/07 snapshot)
kernel 2.4.24    (release)
kernel 2.6.8     (release)

My question is - can anybody tell me, or point me at a website that
definitively tells me:

1) Is NPTL available on PPC at all? I assume so, since I found one of
the original announcement of NPTL, which mentions performance on a large
SMP PPC system.

2) Which kernels have the required support for NPTL - I believe 2.6.x
does. I know RedHat back-ported it to their 2.4.x kernels for RedHat 9
(at least x86). Did it get back-ported into any official 2.4.x kernel,
such as the 2.4.24 I tried?

3) Which glibc and gcc do I need. I found webpages that indicate gcc >=
3.4.x is required for toolchain thread/TLS support, and NPTL is part of
glibc >= 2.3.x.

4) Which binutils should work?

5) Am I missing some configure options for glibc? Or, binutils or gcc?

So far, I'm downloading all GNU tools from, or a mirror, and
kernels from Should I try PPC-specific branches for any of

Note: I'd really like 2.4.x support if it's available - I need a
DMA-enabled IDE driver for the MPC5200, and so far, all I have is a
patched 2.4.24 directly from Freescale (which apparently they're working
on integrating back into the kernel at Eventually, we
intend to use a Montavista-based system. We were using MV Linux 3.0
(before we hit problems with IDE DMA) which uses kernel 2.4.18.

Thanks for any help, or pointers to good resources. I spent most of
yesterday googling and trying out different gcc/glibc/kernel
combinations, and couldn't get past this.

Modifications I made to to request NPTL:

(Note that if I remove just the second part of this patch, it all builds
fine, but using the old Linuxthreads instead of NPTL)

[swarren at swarren-linux crosstool-0.28-rc37]$ diff
<       --enable-kernel=2.4.3 \
<         --without-cvs --disable-profile --disable-debug --without-gd \
<         --without-tls --without-__thread \
>       --enable-kernel=2.4.24 \
>         --without-cvs --without-gd \
>         --with-tls --with-__thread \
<         --enable-add-ons${GLIBC_ADDON_OPTIONS}
>         --enable-add-ons=nptl --with-headers=$HEADERDIR

I created my own top-level build script and .dat files based upon the
existing ones:

[swarren at swarren-linux crosstool-0.28-rc37]$ cat 
set -ex

# Really, you should do the mkdir before running this,
# and chown /opt/crosstool to yourself so you don't need to run as root.
mkdir -p $RESULT_TOP

# Build the toolchain.  Takes a couple hours and a couple gigabytes.
eval `cat powerpc-603e.dat gcc-3.4-20041001-glibc-20041004.dat` sh --notest

echo Done.

[swarren at swarren-linux crosstool-0.28-rc37]$ cat

Stephen Warren, Software Engineer, NVIDIA, Fort Collins, CO
swarren at
swarren at

More information about the Linuxppc-embedded mailing list