harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tianwei <tianwei.sh...@gmail.com>
Subject Re: The progress of MIPS patch work
Date Thu, 03 Dec 2009 02:31:50 GMT
On Thu, Dec 3, 2009 at 9:01 AM, Nathan Beyer <ndbeyer@apache.org> wrote:

> 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}
>
>
> Ah, I did not see the is_mips32, but I added the line in
common_resources/make/platform.xml where I thought it would set is_mips32
according to $os_arch.  I think this should be set because I used this to
add the defineset, such as -D_MIPS_.

Tianwei

> >  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.
> >
>



-- 
Sheng, Tianwei
Inst. of High Performance Computing
Dept. of Computer Sci. & Tech.
Tsinghua Univ.

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message