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
-~----------~----~----~----~------~----~------~--~---

Reply via email to