ARM NPTL support for uClibc

Khem Raj kraj at mvista.com
Fri Aug 18 06:51:26 UTC 2006


Hi Jim

Nice work. Here are few comments.

__arch_compare_and_exchange_val_32_acq is not going to work from THUMB. 
So if uclibc is compiled in thumb mode its not going to work.
same is true for atomic_exchange_acq

I will let you more as I go through the patches more.

Thanks

Khem

Jim Blandy said the following on 8/11/2006 5:28 PM:
> Hi, folks.  Building on Steve Hill's work, CodeSourcery has put
> together a uClibc NPTL port for the ARM processor we'd like to
> contribute.  Our patch is relative to today's uClibc trunk.  This work
> was done for MontaVista.
>
> We've tested it configured for EABI ARM with no threads, using
> linuxthreads.old, and using NPTL (libpthread/linuxthreads doesn't
> support ARM), with no regressions.  There is one test suite regression
> relative to the GNU C library, which hopefully I'll get fixed very
> shortly.  I've included more detailed results below.
>
> It's a very large patch --- 3MB including the new trees, or 633kB with
> the new directories omitted (libpthread/nptl, libpthread/nptl_db,
> test/nptl, and test/tls).  There are changes throughout the uClibc
> tree.  The patch is available at the following URL:
>
>     http://www.codesourcery.com/public/uClibc-0.9.28-csl-nptl-4.patch.gz
>
> The patch is relative to revision 15785 of the public uClibc trunk.
> You can retrieve this base tree from the public uClibc repository with
> the following command:
>
>     $ svn checkout -r 15785 svn://uclibc.org/trunk/uClibc
>
> With much respect and appreciation for Steve Hill's work, we'd like to
> suggest that these changes, once reviewed and revised, be included
> directly on the uClibc trunk, rather than going through Steve's branch
> and being merged to the trunk in December, as he suggested on Tuesday.
> This is an opportunity for uClibc to benefit from Steve's and
> CodeSourcery's efforts immediately, and support NPTL today, on one of
> the most popular embedded processors.  Maintaining this patch
> off-trunk through December would be a substantial burden for
> CodeSourcery; patches of this scale bitrot quickly.
>
>
> From our release notes to MontaVista:
>
> ----
>
> TEST RESULTS
>
> This release has no test suite regressions relative to the unmodified
> public uClibc sources, and one regression relative to the GNU C
> library (glibc) thread tests.
>
> As a basis for comparison with uClibc, we use test results from the
> unmodified public uClibc trunk, configured in two ways:
> - with no thread support (called "none" in the chart below)
> - with the old LinuxThreads thread library,
>   libpthread/linuxthreads.old (called "old")
>
> We configured our uClibc with our changes in three ways:
> - with no thread support ("none")
> - with the old LinuxThreads thread library ("old")
> - with the NPTL thread library ("nptl")
>
> All tests pass in all configurations, except as follows:
>
>                         unpatched trunk         uClibc-0.9.28-csl-nptl-4
> test                    none    old             none    old     nptl
> ==============          ======  ======          ======  ======  ======
> assert/assert (1)       fail    fail            fail    fail    fail
> mmap/mmap (2)           fail    fail            pass    pass    pass
> pwd_grp/getgroups (3)   fail    fail            fail    fail    fail
> time/clocktest          hang    hang            hang    hang    hang          
> regex/testregexi        hang    hang            hang    hang    hang
> regex/tst-regex2        hang    hang            hang    hang    hang
> pthread/ex1             N/A     fail            N/A     hang    pass
> pthread/ex6             N/A     fail            N/A     hang    pass
>
> "N/A" indicates that the test does not run in that configuration.
> "hang" indicates that the test program runs indefinitely.
>
> (1) The harness for this test is not designed for use with
>     cross-compilation.
> (2) The mmap system call does not exist on ARM EABI Linux; it should
>     forward to mmap64.
> (3) The test is not written portably.
>
>
> The directories 'test/nptl' and 'test/tls' include tests copied from
> the GNU C library 'nptl' and 'elf' directories.  (Some GNU C library
> tests are omitted; these tests are for features not implemented by
> uClibc, like POSIX asynchronous I/O.)  These tests run only
> when the NPTL thread library is in use.  All these tests pass with
> both the GNU C library and our sources, except as follows:
>
> test                    GNU C Library           uClibc-0.9.28-csl-nptl-4
> ================        =============           ========================
> nptl/tst-cancel7        fail                    fail
> nptl/tst-cancelx7       fail                    fail
> nptl/tst-exec4          fail                    fail
> tls/tst-tls6            pass                    fail (regression)
> _______________________________________________
> uClibc mailing list
> uClibc at uclibc.org
> http://busybox.net/cgi-bin/mailman/listinfo/uclibc
>   

-- 
Khem Raj <kraj at mvista.com>
MontaVista Software Inc.




More information about the uClibc mailing list