CodeSourcery ARM NPTL patch updated for uClibc trunk r16195

Carmelo Amoroso carmelo73 at gmail.com
Fri Sep 29 06:25:36 UTC 2006


Hi Khen,
do you have any news about th new branch where putting all the nptl 
ports together?

did you have time to spent to look at my old post about Steve's mips 
port? (http://www.uclibc.org/lists/uclibc/2006-August/016263.html)

did you check my patch for nptl/tst-exec4 test 
(http://www.uclibc.org/lists/uclibc/2006-September/016462.html)?

what about my proposal for the _dl_find_hash implementation to handle 
TLS symbols (it's working fine for my sh4 port)? 
(http://www.uclibc.org/lists/uclibc/2006-August/016302.html)


Carmelo

Khem Raj wrote:
> Hi Jim
> 
> With this patch applied. I am not able to build busybox. Here is  a 
> patch on top of your patch. Which reverts res_init definition
> 
> Thanks
> 
> Khem
> 
> 
> Jim Blandy said the following on 9/28/2006 10:42 AM:
>> Hi, folks.  We've updated our ARM NPTL patch to apply relative to
>> r16195 of the public uClibc trunk.  This patch shares with the public
>> uClibc trunk the errno problems for non-threaded configurations that
>> I've mentioned on the list.
>>
>> As before, it's a very large patch --- 3MB uncompressed.  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-7.patch.gz
>>
>> The patch is relative to revision 16195 of the public uClibc trunk.
>> You can retrieve this base tree from the public uClibc repository with
>> the following command:
>>
>>     $ svn checkout -r 16195 svn://uclibc.org/trunk/uClibc
>>
>> This work was done for MontaVista; from our release notes to them:
>>
>> ----
>>
>> RECENT CHANGES
>>
>> - uClibc-0.9.28-csl-nptl-7 ---- vs. public uClibc trunk r16195
>>
>>   A new release of our NPTL work, incorporating the public changes as
>>   of Friday, 2006-9-22.  There are two main regressions relative to
>>   the -5 release:
>>
>>   - Due to a bug inherited from the public uClibc sources, when uClibc
>>     is configured without thread support, user code cannot see errno
>>     values set by functions in uClibc.  For this reason, this release
>>     is not useful in a non-threaded configuration.
>>
>>     The bug is described in more detail here:
>>
>>        http://uclibc.org/lists/uclibc/2006-September/016498.html
>>
>>   - When configured to use the NPTL pthread implementation, the call
>>     'sysconf (_SC_THREAD_THREADS_MAX)' reports that the number of
>>     threads is limited to roughly 16ki.  This is incorrect; there is
>>     no limit on the number of threads under NPTL.
>>
>> - uClibc-0.9.28-csl-nptl-6 --- vs. public uClibc trunk r16105
>>
>>   This is an intermediate release.  This merge introduced some test suite
>>   regressions, but we felt it was worthwhile making the merged patch
>>   available immediately.  When the regressions have been addressed, we
>>   will make a new release.
>>
>> - uClibc-0.9.28-csl-nptl-5 --- vs. public uClibc trunk r15891
>>
>>   This release fixes a compilation problem in libc/inet/rpc/rpc_thread.c,
>>   and avoids a duplicate definition of __USE_BX__ in libpthread/nptl/
>>   sysdeps/arm/sysdep.h.
>>
>> - uClibc-0.9.28-csl-nptl-4
>>
>>   This release is based on the public uClibc trunk, not the public
>>   uClibc NPTL branch.
>>
>> - uClibc-0.9.28-csl-nptl-3
>>
>>   This release is identical to the -2 release, except that it omits
>>   patches to remove the 'CVS' directories present in the public
>>   sources (r14664).  Those directories are not included in the
>>   complete source tree.
>>
>> - uClibc-0.9.28-csl-nptl-2
>>
>>   The release uClibc-0.9.28-csl-nptl-1 omitted two changes:
>>   - a fix for a space leak in dynamic linker related to thread-local
>>     storage, and
>>   - a fix to the test suite.
>>
>>   These changes are included in uClibc-0.9.28-csl-nptl-2.
>>
>> - uClibc-0.9.28-csl-nptl-1
>>
>>   This is the initial release, based on revision 14664 of the public
>>   uClibc NPTL branch, svn://uclibc.org/branches/uClibc-nptl
>>
>>
>> KNOWN LIMITATIONS
>>
>> This release has some known limitations:
>>
>> - The merge with public uClibc trunk revision r16105 introduced
>>   some test suite regressions, as described above.
>>
>> - When linking statically against uClibc, the dlopen function does not
>>   work properly.  The unmodified uClibc trunk has this problem as
>>   well, so CodeSourcery does not believe that our NPTL patches are
>>   responsible; in fact, we believe dlopen works better with our
>>   patches than without.
>>
>>   However, many uClibc tests depend on dlopen, so this issue makes it
>>   difficult to test static linking.  It would be a good idea to
>>   re-test if statically-linked dlopen is fixed in the future.
>>
>> - The unmodified public uClibc trunk does not work in Thumb mode.  Our
>>   patch does not address those problems, since they are unrelated to
>>   NPTL support.
>>
>>   However, the existing Thumb issues make it difficult to test our
>>   changes in Thumb mode.  Once Thumb mode support has been fixed in
>>   the public sources, CodeSourcery will ensure that NPTL works in
>>   Thumb mode as well.
>>
>> - The test tls/tst-tls6 fails in our tree, but passes under the GNU C
>>   library.  This test checks the allocation of TLS module ID numbers
>>   to shared libraries; failure to do this correctly could result in
>>   some dynamic linker data structures growing larger than necessary as
>>   the program loads and unloads shared libraries.  CodeSourcery will
>>   investigate this failure.
>>
>>
>> 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-7
>> test                    none    old             none    old     nptl
>> ==============          ======  ======          ======  ======  ======
>> assert/assert (1)       fail    fail            fail    fail    fail
>> inet/bug-if1(4)         fail    pass            fail    pass    pass
>> malloc/tst-malloc(4)    fail    pass            fail    pass    pass
>> malloc/tst-mcheck(4)    fail    pass            fail    pass    pass
>> malloc/tst-valloc(4)    fail    pass            fail    pass    pass
>> misc/bug-readdir1(4)    fail    pass            fail    pass    pass
>> misc/opendir-tst1(4)    fail    pass            fail    pass    pass
>> mmap/mmap (2)           fail    fail            pass    pass    pass
>> pthread/ex1             N/A     fail            N/A     hang    pass
>> pthread/ex6             N/A     fail            N/A     hang    pass
>> pwd_grp/getgroups (3)   fail    fail            fail    fail    fail
>> regex/testregexi        hang    hang            hang    hang    hang
>> regex/tst-regex2        hang    hang            hang    hang    hang
>> signal/tst-sigsimple(4) fail    pass            fail    pass    pass
>> time/clocktest          hang    hang            pass    pass    pass
>> unistd/errno(4)         fail    pass            fail    pass    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.
>> (4) This test fails in non-threaded configurations of uClibc because
>>     user code does not see errno values set by uClibc.  This bug is
>>     present in the public sources, and thus also present in our merged
>>     sources.
>>
>> 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-7
>> ================        =============           ========================
>> nptl/tst-cancel7        fail                    fail
>> nptl/tst-cancelx7       fail                    fail
>> nptl/tst-exec4          fail                    fail
>> nptl/tst-sysconf        pass                    fail (regression)
>> tls/tst-tls6            pass                    fail (regression)
>>
>>
>> BUILD TOOLS
>>
>> This release has been built and tested using the SourceryG++ 4.1.0
>> arm-none-linux-gnueabi toolchain, modified to link against uClibc
>> instead of glibc.  It should also work with other compilers, as long as
>> they have EABI+TLS support; however, this has not been tested.
>>
>>
>> KERNEL SOURCES
>> This release was built and tested using the headers from version
>> 2.6.16 of the Linux kernel.
>>
>>
>> CONFIGURATION
>>
>> uClibc uses a configuration system similar to that of the Linux
>> kernel: all Makefiles in the tree include a file in the top directory
>> named '.config', which sets variables affecting which portions of the
>> tree are built, and how.
>>
>> To build uClibc for the ARM with the NPTL libpthread, make the
>> following selections in '.config':
>>
>> - Target Architecture: arm                    (TARGET_arm=y; others 
>> unset)
>> - Use ARM EABI: yes                           (CONFIG_ARM_EABI=y)
>> - Target Processor Endianness: little         (ARCH_LITTLE_ENDIAN=y)
>> - Linux kernel header location                (KERNEL_SOURCE)
>>   Set this to the path of the top of a Linux kernel source tree.
>> - POSIX Threading Support: yes                (UCLIBC_HAS_THREADS=y)
>> - Build pthreads debugging support: yes       (PTHREADS_DEBUG_SUPPORT=y)
>> - Native POSIX Threading (NPTL) Support: yes  
>> (UCLIBC_HAS_THREADS_NATIVE=y)
>> - Use the older (stable) version of           (LINUXTHREADS_OLD unset)
>>   linuxthreads: no
>> - Malloc Implementation: malloc-standard      (MALLOC_STANDARD=y; 
>> others unset)
>>   This is necessary to run the NPTL tests in test/nptl; some depend on
>>   features of the "standard" malloc implementation.
>>
>>
>> ACKNOWLEDGEMENTS
>>
>> This work is based on Steve Hill's NPTL support for the MIPS
>> architecture, available from the public uClibc Subversion repository
>> on the branch mentioned above.
>> _______________________________________________
>> uClibc mailing list
>> uClibc at uclibc.org
>> http://busybox.net/cgi-bin/mailman/listinfo/uclibc
>>   
> 
> 
> ------------------------------------------------------------------------
> 
> Index: uClibc-20060928/libc/inet/resolv.c
> ===================================================================
> --- uClibc-20060928.orig/libc/inet/resolv.c
> +++ uClibc-20060928/libc/inet/resolv.c
> @@ -1151,7 +1151,7 @@ struct hostent *gethostbyname2(const cha
>  
>  
>  #ifdef L_res_init
> -int attribute_hidden __res_init_internal(void)
> +int res_init(void)
>  {
>          struct __res_state *rp = &(_res);
>  
> @@ -1197,7 +1197,7 @@ int attribute_hidden __res_init_internal
>  
>  	return(0);
>  }
> -strong_alias(__res_init_internal,res_init)
> +libc_hidden_def(res_init)
>  
>  void res_close( void )
>  {
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> uClibc mailing list
> uClibc at uclibc.org
> http://busybox.net/cgi-bin/mailman/listinfo/uclibc




More information about the uClibc mailing list