Ken,

Would you get a patch together for Google? This looks like a good
small fix for when they upgrade to 4.5. Before pushing would you make
sure that the fix doesn't break the current Android build. This should
generate some good discussion about the underlying prelink issue.

-Zach

On 9 June 2011 14:56, Jim Huang <jim.hu...@linaro.org> wrote:
> 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
>

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

Reply via email to