On 10 June 2011 00:08, Ken Werner <ken.wer...@linaro.org> wrote:
> Hi there,
>
> I've got an android build system up and running and had a quick look into
> this. When using the gcc-linaro-4.5-2011.05-0 the bootanimation runs forever
> when compiling the libgui.so using -O[s|1|2]. For me it only works when
> disabling all optimizations (-O0). So, I've started with -O0 and tried to
> bisect the various  optimization switches but I didn't fail. Next I've
> started with -O1 and disabled all the optimizations but it didn't pass. So,
> this approach was a dead end. Then I realized that the build system employs
> some sort of a prelinker called apriori. Adding 'LOCAL_PRELINK_MODULE :=
> false' to the makefile disables the prelink step. And the resulting ELF
> binary finally worked (tested with -O[s|1|2]).

hi Ken,

Thanks for your progress in advance.

Disabling prelinking looks fine, and actually SensorService in
"master" branch disables prelinking as well:
    
http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=services/sensorservice/Android.mk;hb=HEAD

The library libsensorservice is highly related to SensorService, which
is activated by SystemServer, an essential process to bring up Android
framework functionality.

In directory frameworks/base/services, libsensorservice is the only
library which is attributed as non-prelinked.

> It would be good to understand the root cause of this because the workaround
> probably has drawbacks at run (load) time. Apriori gets two input files. The
> prelink-linux-arm.map which lists the start of the prelink addresses:
>  libui.so                0xAB900000 # [~1M]
>  libgui.so               0xAB800000 # [~1M]
>  libskia.so              0xAB100000 # [~2M]
> and the libgui.so to be prelinked. I'd expect to see the resulting
> PhysAddr's somewhere nearby 0xAB800000 but this doesn't seem to be the case
> somehow. In order to exclude a miscompiled apriori, I've prelinked libgui
> using an apriori binary build with the prebuilt gcc44 - no difference.
> Therefore I don't think gcc is miscompiling but something went wrong whith
> the prelink step. But still - the android prelinking remains a mystery to me
> as I don't know what is supposed to be prelinked and what is actually
> failing. However, I think we are one step further.

So, can you verify the behavior difference between prelink maps as well?

Cheers,
-jserv

_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev

Reply via email to