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 <[email protected]> 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: [email protected] website: http://groups.google.com/group/android-porting -~----------~----~----~----~------~----~------~--~---
