Hi Yan,

Are you talking about this  CONFIG_TLS_REG_EMUL in kernel-3.0.
Means you can your the TLS to 3.0, is it correct?

Thanks for your time.

Regards,
Jagan

On Aug 25, 2:40 pm, Yan Weichuan <[email protected]> wrote:
> Hi, David,
>
> Thank you for your advice. Your suggestion works. I can catch  the
> crash point. The TLS doesn't work. I enabled the TLS in android, the
> system can boot up.
> I will investigate the difference between linux kernel 2.6.35 and
> 3.0.
>
> With the same android images, kernel 2.6.35 can boot up android but
> failed 3.0. After enable TLS in android, kernel 3.0 can boot up. So
> there should be some TLS change in kernel.
>
> (gdb) run
> Starting program: /system/bin/sh
> init: untracked pid 188 exited
> BFD: /system/bin/linker: warning: sh_link not set for section
> `.ARM.exidx'
> BFD: /system/bin/linker: warning: sh_link not set for section
> `.ARM.exidx'
>
> Program received signal SIGSEGV, Segmentation fault.
> __libc_preinit () at bionic/libc/bionic/libc_init_dynamic.c:73
> 73  bionic/libc/bionic/libc_init_dynamic.c: No such file or directory.
>     in bionic/libc/bionic/libc_init_dynamic.c
> (gdb) bt
> #0  __libc_preinit () at bionic/libc/bionic/libc_init_dynamic.c:73
> #1  0xb0003820 in call_array (ctor=0xafd40004, count=<value optimized
> out>,
>     reverse=0) at bionic/linker/linker.c:1615
> #2  0xb0003a94 in call_constructors (si=0xb000cae8)
>     at bionic/linker/linker.c:1645
> #3  0xb0006856 in __dl_$t (si=0xb000cae8, wr_offset=<value optimized
> out>)
>     at bionic/linker/linker.c:2039
> #4  0xb00069d2 in init_library (si=0xb000cae8) at bionic/linker/
> linker.c:1189
> #5  0xb0005e52 in find_library (name=0x8ec5 "libc.so")
>     at bionic/linker/linker.c:1232
> #6  0xb00066d0 in __dl_$t (si=0xb000c9d0, wr_offset=<value optimized
> out>)
>     at bionic/linker/linker.c:1958
> #7  0xb0006cdc in __linker_init (elfdata=<value optimized out>)
>     at bionic/linker/linker.c:2216
> #8  0xb000100c in __dl__start () at bionic/linker/arch/arm/begin.S:37
> #9  0xb000100c in __dl__start () at bionic/linker/arch/arm/begin.S:37
> Backtrace stopped: previous frame identical to this frame (corrupt
> stack?)
> (gdb) ^A
>
> On Aug 25, 2:19 am, David Turner <[email protected]> wrote:
>
>
>
>
>
>
>
> > It's the function that calls a shared-library or executable list of
> > constructor functions.
>
> > It is likely a constructor crashing. Unfortunately, the shared library's
> > mapping is not available to gdb until after the constructors have run
> > It's a know bug, you could try changing the lines in linker.c that read
> > like:
>
> >     call_constructors(si);
> >     notify_gdb_of_load(si);
>
> > and change them to:
>
> >     notify_gdb_of_load(si);
> >     call_constructors(si);
>
> > However, I don't guarantee that this will work. Let me know if this helps
> > though.
>
> > On Wed, Aug 24, 2011 at 3:00 PM, Yan Weichuan <[email protected]>wrote:
>
> > > I am working on Gingerbread 2.3.5 + Linux kernel 3.0, but I found all
> > > dynamic execute application will crash. And with the gdb, it show the
> > > application crash at call_arry function at linker.c. My ARM cpu is arm-
> > > v7a. Does anyone have some idea about this?
>
> > > (gdb) bt
> > > #0  0xafd14e44 in ?? ()
> > > #1  0xb0003820 in call_array (ctor=0xafd40004, count=<value optimized
> > > out>,
> > >    reverse=0) at bionic/linker/linker.c:1615
> > > #2  0xb000a2f4 in ?? () from /system/bin/linker
> > > #3  0xb000a2f4 in ?? () from /system/bin/linker
> > > Backtrace stopped: previous frame identical to this frame (corrupt
> > > stack?)
>
> > > --
> > > unsubscribe: [email protected]
> > > website:http://groups.google.com/group/android-porting

-- 
unsubscribe: [email protected]
website: http://groups.google.com/group/android-porting

Reply via email to