Busybox static complation issue with GCC 4.5 for ARMv7 - __tls_get_addr undefined

Nitin Garg nitingarg98 at gmail.com
Wed Feb 2 01:31:04 UTC 2011


Reworked the patch as per your suggestion, pls accept.

Regards,
Nitin

On Tue, Feb 1, 2011 at 3:53 AM, Carmelo AMOROSO <carmelo.amoroso at st.com> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 2/1/2011 7:37 AM, Nitin Garg wrote:
>> We tried compiling busybox statically for ARMv7 and __tls_get_addr was
>> undefined. As handled in other architectures, we added the
>> __tls_get_addr definition for ARM to resolve the issue.
>>
>> Kindly review this and include in next release. Thanks,
>>
>> Regards,
>> Nitin Garg
>>
>
> Hi,
> Looks good. Similar fix was done for SH indeed.
> Just few comments in-lined.
>
>> diff -Naurp uClibc/libpthread/nptl/sysdeps/arm/libc-tls.c
>> uClibc.new/libpthread/nptl/sysdeps/arm/libc-tls.c
>> --- uClibc/libpthread/nptl/sysdeps/arm/libc-tls.c 1969-12-31
>> 18:00:00.000000000 -0600
>> +++ uClibc.new/libpthread/nptl/sysdeps/arm/libc-tls.c 2010-11-21
>> 17:38:43.000000000 -0600
>> @@ -0,0 +1,37 @@
>> +/* Thread-local storage handling in the ELF dynamic linker. ARM version.
>> + Copyright (C) 2005 Free Software Foundation, Inc.
>> + This file is part of the GNU C Library.
>> +
>> + The GNU C Library is free software; you can redistribute it and/or
>> + modify it under the terms of the GNU Lesser General Public
>> + License as published by the Free Software Foundation; either
>> + version 2.1 of the License, or (at your option) any later version.
>> +
>> + The GNU C Library is distributed in the hope that it will be useful,
>> + but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + Lesser General Public License for more details.
>> +
>> + You should have received a copy of the GNU Lesser General Public
>> + License along with the GNU C Library; if not, write to the Free
>> + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
>> + 02111-1307 USA. */
>> +
>
> I have some doubts on how we have to manage code extracted from glibc,
> especially for the copyright assignment.
>
> Could someone elaborate ?
>
>> +#include <sysdeps/generic/libc-tls.c>
>> +#include <dl-tls.h>
>> +
>> +#if USE_TLS
>
> #if defined (USE_TLS) && (USE_TLS)
>
> should be better, to avoid warning when TLS is not enabled
>> +
>> +/* On ARM, linker optimizations are not required, so __tls_get_addr
>> + can be called even in statically linked binaries. In this case module
>> + must be always 1 and PT_TLS segment exist in the binary, otherwise it
>> + would not link. */
>> +
>> +void *
>> +__tls_get_addr (tls_index *ti)
>> +{
>> + dtv_t *dtv = THREAD_DTV ();
>> + return (char *) dtv[1].pointer.val + ti->ti_offset;
>> +}
>> +
>> +#endif
>> diff -Naurp uClibc/libpthread/nptl/sysdeps/arm/Makefile.arch
>> uClibc.new/libpthread/nptl/sysdeps/arm/Makefile.arch
>> --- uClibc/libpthread/nptl/sysdeps/arm/Makefile.arch 2010-11-18
>> 12:34:13.000000000 -0600
>> +++ uClibc.new/libpthread/nptl/sysdeps/arm/Makefile.arch
>> 2010-11-21 16:30:48.000000000 -0600
>> @@ -15,3 +15,4 @@ ASFLAGS-pthread_spin_lock.S = -DNOT_IN_l
>> ASFLAGS-pthread_spin_trylock.S = -DNOT_IN_libc -DIS_IN_libpthread
>> ASFLAGS-aeabi_read_tp.S = -DNOT_IN_libc=1
>>
>> +libc_arch_a_CSRC = libc-tls.c
>> _______________________________________________
>> uClibc mailing list
>> uClibc at uclibc.org
>> http://lists.busybox.net/mailman/listinfo/uclibc
>>
>
> Cheers,
> Carmelo
>
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (MingW32)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
>
> iEYEARECAAYFAk1H2AUACgkQoRq/3BrK1s+zRQCgpCOKOCSgvr7nuDRljk/gwWX4
> t9sAoJh/Y5K+BeKLAru80ZcT+HjX9Yav
> =0Lvp
> -----END PGP SIGNATURE-----
> _______________________________________________
> uClibc mailing list
> uClibc at uclibc.org
> http://lists.busybox.net/mailman/listinfo/uclibc
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-ARM-static-link-fix-undefined__tls_get_addr.patch
Type: application/octet-stream
Size: 2709 bytes
Desc: not available
URL: <http://lists.busybox.net/pipermail/uclibc/attachments/20110201/b3bfd0e9/attachment.obj>


More information about the uClibc mailing list