[oe] Openjdk shark and cacao VMs not working - armv4 LLVM symbol powf, version GLIBCXX_3.4 not, defined

Xerxes Rånby xerxes at zafena.se
Fri Jul 23 10:58:14 UTC 2010


On 2010-07-22 17:15, Martin Jansa wrote:
> On Wed, Jul 21, 2010 at 4:20 PM, Martin Jansa <martin.jansa at gmail.com> wrote:
>   
>> FYI:
>>
>> Tested on om-gta02 (armv4t) and only -zero seems to work (built from
>> yesterday oe.dev, waiting for todays fixes to built).
>>
>> SHR root at gojama ~ $ javac -zero Linpack.java
>> Warning: no leading - on line 43 of `/usr/lib/jvm/java-6-openjdk/jre/lib/arm/jvm.cfg'
>> Warning: missing VM type on line 43 of `/usr/lib/jvm/java-6-openjdk/jre/lib/arm/jvm.cfg'
>> Warning: no leading - on line 43 of `/usr/lib/jvm/java-6-openjdk/jre/lib/arm/jvm.cfg'
>> Warning: missing VM type on line 43 of `/usr/lib/jvm/java-6-openjdk/jre/lib/arm/jvm.cfg'
>>     
> With current version jvm.cfg warnings are gone, but cacao and shark still fails
> SHR root at gojama ~ $ java -zero Linpack
> Mflops/s: 1.691  Time: 0.41 secs  Norm Res: 1.43  Precision:
> 2.220446049250313E-16
>   
We are quite happy with the current default zero vm in OE since we do
not have any open bugreports for it, it seems stable and nice. :)

> SHR root at gojama ~ $ java -cacao Linpack
> LOG: [0x40190000] md_signal_handler_sigill: Unknown illegal
> instruction 0xed1c5a06 at 0x441c2790
> LOG: [0x40190000] Aborting...
> Aborted
>   
This regression on armv4 and armv5 are most likely caused by the
"armv7" cacao compatible patches bundled with icedtea6-1.8.

I will check if i can see anything obvious and try to debug it.

> SHR root at gojama ~ $ java -shark Linpack
> dl failure on line 696Error: failed
> /usr/lib/jvm/java-6-openjdk/jre/lib/arm/shark/libjvm.so, because
> /usr/lib/libLLVMCodeGen.so: symbol powf, version GLIBCXX_3.4 not
> defined in file libstdc++.so.6 with link time reference
>   
It looks like a different (older?) libstdc++ are used on your phone
compared to whats got used during the build when linking LLVM.
It would be good to check if a LLVM "HelloWorld" can get executed on the
phone.

Please try this LLVM testcase on your phone and report if it work or not:
======== start of file hello.ll
@hello = internal global [12 x i8] c"Hello World\00"

declare i32 @puts(i8*)

define i32 @main() {
    %r = call i32 @puts( i8* getelementptr ([12 x i8]* @hello, i64 0,
i64 0) )
    ret i32 0
}
======== end of file hello.ll
and then execute the following two commands:
llvm-as hello.ll
lli hello.bc

its possible that you have to type
/usr/bin/llvm2.7/llvm-as hello.ll
/usr/bin/llvm2.7/lli hello.bc

If all goes well then you should see.. yes you guessed it:
HelloWorld

If it fail then try updating the libstdc++ to the same version used when
linking llvm.
check if libm are installed.

> Let me know if you want more info.
>   





More information about the Openembedded-devel mailing list