harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nathan Beyer <ndbe...@apache.org>
Subject Re: The progress of MIPS patch work
Date Thu, 03 Dec 2009 01:01:49 GMT
On Wed, Dec 2, 2009 at 7:51 AM, Tianwei <tianwei.sheng@gmail.com> wrote:
> Hi, all,
>  I got some progress for applying  Charles's patch sent two weeks ago.
> However, I also met some hard issues which I want to ask for suggestions.
> I am totally new for harmony development, so I want to hear your valuable
> suggestions for my work.
> My experiments step are:
> 1. apply the patch on X86_64 (ubuntu 9.04)
>    at this step, I also checkout a clean trunk, maintain two directories
>    trunk and trunk-mips(patched by MIPS patch)
>  after fixing some problems, I compare the testing result(ant test) for
> these two versions, the result is same where I assume the modified patch
> work on X86(no regression).
>  for this step, the main problems of original patch are:
>   a. there is some problem when using "unless", such as:
>      --- working_vm/make/vm/interpreter.xml  (revision 833674)
> +++ working_vm/make/vm/interpreter.xml  (working copy)
> @@ -71,6 +71,7 @@
>                 <exclude name="interp_native_ia32.cpp" unless="is.x86"/>
>                 <exclude name="interp_native_ipf.cpp" unless="is.ia64"/>
>                 <exclude name="interp_native_em64t.cpp"
> unless="is.x86_64"/>
> +                <exclude name="interp_native_mips.cpp" unless="is.mips"/>
>             </fileset>

Perhaps this is obvious, but is the 'is.mips' property being setup?
When you run 'ant echo' in the 'working_classlib' folder do you see a
'is.mips' line in with the other platforms, like this.

     [echo]   is.windows = ${is.windows}
     [echo]   is.unix = true
     [echo]   is.linux = true
     [echo]   is.freebsd = ${is.freebsd}
     [echo]   is.macosx = ${is.macosx}
     [echo]   is.aix = ${is.aix}
     [echo]   is.zos = ${is.zos}
     [echo]   is.32bit = true
     [echo]   is.64bit = ${is.64bit}
     [echo]   is.x86 = true
     [echo]   is.x86_64 = ${is.x86_64}
     [echo]   is.ia64 = ${is.ia64}
     [echo]   is.ppc32 = ${is.ppc32}
     [echo]   is.ppc64 = ${is.ppc64}
     [echo]   is.s390 = ${is.s390}
     [echo]   is.s390x = ${is.s390x}


>  b. the original patch has several problems under the
>  working_vm/vm/jitrino/src/jet directory, so I do not use the diff for that
> directory
>
> 2. apply the patch on my MIPS machine
>    at this step, I mainly fix a lot of ant make system error since the
> original patch did not include the makefile patch as Charles said.
>    typical fixes mainly include:
>     a. copy the linux_ppc32.mk to linux_mips32.mk
>     b. comment out the ABORT where I can not find the definition
>     c.
> /home/stw/harmony/harmony-nofetch/common_resources/make/platform.xml
> +    <condition property="is.mips32">
>
> +        <or>
> +            <equals arg1="${os.arch}" arg2="mips32" />
> +            <equals arg1="${os.arch}" arg2="mips" />
> +        </or>
> +    </condition>
> +    <condition property="is.mips64">
> +        <equals arg1="${os.arch}" arg2="mips64" />
> +    </condition>
>   d: manually build the icu-3.4 library since no prebuilt library package
> available
>   e: vmcore.xml
> +                               <include
> name="vmcore/src/util/mips/base_natives" if="is.mips32"/>
> +                               <include name="port/src/encoder/mips"
> if="is.mips32"/>
> +                               <include name="vmcore/src/lil/mips/include"
> if="is.mips32"/>
> ...................others minor fixes...........
> 3. after step 2, I finally can build the whole hdk(working_classlib,
> working_vm, working_jdktools), then I tried to run the HelloWorld.java,
> however, I met segmentation fault at the very begging of the launcher.
> I debug this problem, and the following is my finding now:
>   a. the gdb backtrace is:
> (gdb) bt
> #0  0x2aaf5164 in apr_initialize () at misc/unix/start.c:46
> #1  0x2aaebecc in hythread_lib_create (lib=0x2ab299b0) at
> /home/stw/harmony/harmony-nofetch/working_vm/vm/thread/src/thread_i\
> nit.c:176
> #2  0x2aaebe54 in hythread_library_init () at
> /home/stw/harmony/harmony-nofetch/working_vm/vm/thread/src/thread_init.c:70
>    b. when I use disass under gdb, I found that one instruction
> in apr_initialize caused the problem:
>        0x2aaf5160 <apr_initialize+28>: lui     v0,0x5
>        0x2aaf5164 <apr_initialize+32>: lw      v1,-9760(v0)
>    c. then I suspect its apr's problem, so I rebuilt the apr with -O0, then
> first verify using the test/testall, all tests passed
>        I even execute the test/sockperf alone, it also pass, note that
> sockperf call apr_initialize in its main function, but no segmentation
> fault,
>       so I assume apr has no problems.
>    d. then I rebuilt the hdk, but the segmentation problem still exists.
>    e. finally I suspect that there may be some problem with gp issues, but
> I have no clues. When checking how the launcher is built, I am confused with
> libhythr.so, it seems that the launcher is first built under
> working_classlib, link with libhythr.so under
> working_classlib/modules/portlib/src/main/native/thread/, then after the
> launcher is copied into working_vm, it will be linked with libhythr.so
> under working_vm/vm/thread/src/, is that right?
>       but I still can not figure out the root cause, can anyone give me
> some suggestions for this hard issue, or someone also experienced similar
> issues before?
>
>
> the Summary:
>   1. no regression on X86_64 for the MIPS patch
>   2. buildable on MIPS for that patch
>   3. running time error(segmentation fault) at the very begging of the
> launcher on MIPS
>
>
> Thanks.
>
> Tianwei
> --
> Sheng, Tianwei
> Inst. of High Performance Computing
> Dept. of Computer Sci. & Tech.
> Tsinghua Univ.
>

Mime
View raw message