We also encountered this issue and it did waste us lot of time debugging this issue. I just checked the latest code in donut branch. This issue is still there. I wonder why google merge this patch as it seems more common to use kuser mechnism to get the tls.
Regards, Johnny On Jul 29, 5:26 pm, Rupesh Gujare <rupesh.guj...@embinux.com> wrote: > You dont require this patch if you have disabled CONFIG_HAS_TLS_REG in > kernel. > > Regards, > > -- > Rupesh Gujarehttp://labs.embinux.orghttp://embinux.com > > mizmit1222 wrote: > > Hi, > > > I guess you hit across a famous TLS issue. > > > See the first diff applied to bionic_tls.h. > >http://pastebin.com/f3da569bf > > > diff --git a/libc/private/bionic_tls.h b/libc/private/bionic_tls.h > > index da34344..ba86d2a 100644 > > --- a/libc/private/bionic_tls.h > > +++ b/libc/private/bionic_tls.h > > -81,7 +81,8 @@ extern int __set_tls(void *ptr); > > > /* get the TLS */ > > #ifdef __arm__ > > -# define __get_tls() ( *((volatile void **) 0xffff0ff0) ) > > +typedef void* (__get_tls_t)(void); > > +static const __get_tls_t* __get_tls = (const __get_tls_t *) > > 0xffff0fe0; > > #else > > extern void* __get_tls( void ); > > #endif > > > Cheers, > > > On 7月29日, 午後5:26, Harishkumar V <harishpres...@gmail.com> wrote: > > >> Hi, > > >> I am porting android to a custom OMAP 3430 board which has > >> linux-2.6.28-rc9-omap1 kernel. > > >> From busybox filesystem, when chroot to android filesystem built from > >> embinux, it causes sigsegv. > > >> #strace /usr/sbin/chroot platform/android/omap3droid /init > >> execve("/usr/sbin/chroot", ["/usr/sbin/chroot", > >> "platform/android/omap3droid", "/init"], [/* 17 vars */]) = 0 > >> uname({sys="Linux", node="OMAP3EVM", ...}) = 0 > >> brk(0) = 0x1f2000 > >> brk(0x1f2d02) = 0x1f2d02 > >> set_tls(0x1f24a0, 0x1c5ab0, 0, 0x1c6700, 0x1f24a0) = 0 > >> brk(0x213d02) = 0x213d02 > >> brk(0x214000) = 0x214000 > >> getpid() = 452 > >> getuid32() = 0 > >> chroot("platform/android/omap3droid") = 0 > >> chdir("/") = 0 > >> execve("/init", ["/init"], [/* 17 vars */]) = 0 > >> gettid() = 452 > >> set_tls(0xbe8b0b74, 0xbe8b0c74, 0, 0x40, 0xbe8b0c74) = 0 > >> --- SIGSEGV (Segmentation fault) @ 0 (0) --- > >> +++ killed by SIGSEGV +++ > > >> Any pointers , how to fix this. > > >> Thanks and Regards, > >> HarishKumar.V --~--~---------~--~----~------------~-------~--~----~ unsubscribe: android-porting+unsubscr...@googlegroups.com website: http://groups.google.com/group/android-porting -~----------~----~----~----~------~----~------~--~---