Was able to get compiling for Mips after playing with some compilation flags. But still I do need to port for source code portion.
One question, When you are planning to sync up with Google's v8 source code. Since now I can see there are some code in Google's v8 source code which is different than yours. Or do I need to integrate your MIPs code with Google's v8 source code? Thanks & Regards, Nilima On Fri, Jul 16, 2010 at 4:06 PM, Nilima Chavan <[email protected]>wrote: > Hi Paul, > > Thanks again. > I will definetly consider the option of porting this to mips Big-endian > architecture. > But only thing worrying me now is the size of v8 library which is around 5 > MB after removing debug option. > Such a big size is not suitable for the embedded devices. > Have you also seen the same observation in terms of library size. > Is there any way to optimize this? > > Thanks & Regards, > Nilima > > > > > On Thu, Jul 15, 2010 at 9:35 AM, Paul Lind <[email protected]> wrote: > >> Hi Nilima - >> >> It is hard to estimate the time/complexity for this. There are a few known >> areas that require code-generation fixes for big-endian. Search for 'endian' >> in src/mips/codegen-mips.cc. Fixing those should take a few days or a week. >> >> But as I said before I do not think that v8 has ever been run big-endian. >> That means there are likely to be problems that will only be uncovered by >> trying it and debugging. Very hard to predict the time for that. I would >> guess a month if you know v8, and another month or two if you are starting >> from scratch. >> >> One issue is that v8 is partly implemented in javascript (the native >> functions), and if the natives do not compile and run, then you cannot even >> bring up the shell. It is hard to get the system bootstrapped to the state >> you can debug. Alexandre wrote a nice "simplified shell" that can come up >> without compiling the natives. I was going to remove that stuff, but it may >> be useful when trying big-endian. >> >> Take a look at src/mips/test-mips.cc, src/mips/test-interface-mips.cc & h, >> and compile_mips-test.sh, and the flag "disable_native_files" in >> src/flag-definitions.h >> >> >> I'd just suggest you jump in and give it a try. Maybe it will come up >> without too much trouble. >> >> Per your other questions: the test-suites are very complete, and the wiki >> pages shows how to run them. Please note that v8mips is not passing all the >> tests yet ... we're workin on it. The status page shows our results. >> >> I would guess that we have 3 months of other activity before we would >> start working on big-endian. We still need to pass 100% of tests, improve >> our performance, bring our codebase up to current google codebase, and >> integrate with Chrome. As well as re-start the submission process of our >> code back to google. >> >> Anyway, I hope that you have the interest to jump in and contribute. It is >> a great project, and a lot of fun. If so, we can work out how best to >> collaborate on the github codebase. It might be easiest to just fork the >> project and start. We can merge it back later. >> >> If anyone from the google v8 team has made it this far into this long >> reply, we sure would love to get your feedback on possible big-endian >> issues...... >> >> thanks., >> >> paul >> >> >> >> >> On Jul 14, 2010, at 2:07 AM, Nilima Chavan wrote: >> >> Hi Paul, >> >> Now I am clear about the target thing. >> We were using the mips toolchain which was for Big endian to do the >> compilation. And as you have specified Big endian MIPs porting is not yet >> supported, we were getting compilation errors. >> After I used mips toolchain which was little endian, compilation was >> successful. >> >> We need v8 for our Big endian Targets only. >> >> Since you know the code better, can you please provides us following >> information for porting the same mips code to support Big endian. >> 1. Complexity >> 2. Efforts >> 3. Testing required ( I think we can get this from your web site ) >> 4. When you have planned for Big endian porting ( This is required just >> for information ) >> >> Thanks & Regards, >> Nilima >> >> >> On Wed, Jul 14, 2010 at 11:19 AM, Nilima Chavan >> <[email protected]>wrote: >> >>> Hi Paul, >>> >>> Thanks for your detailed response. >>> But now I am bit confused about what do you mean by target. >>> >>> Here is my build procedure: >>> I am building on Linux x86 machine with following environment variables >>> set: >>> export CCPATH=/opt/kenati/mips-kenati-linux-uclibc/bin >>> export CC=$CCPATH/gcc >>> export CXX=$CCPATH/g++ >>> export LD=$CCPATH/ld >>> export AR=$CCPATH/ar >>> export RANLIB=$CCPATH/ranlib >>> >>> Build command: >>> >>> scons arch=mips mode=debug library=static sample=shell -j4 >>> >>> Output: >>> libv8.a is getting compiled. >>> But giving endianness errors for shell. >>> >>> So I have question here, I am going to use libv8.a with v8cgi and apache. >>> So can I survive currently with just v8 library build. I do not require >>> shell at this point of time. >>> >>> Thanks & Regards, >>> Nilima >>> >>> >>> On Tue, Jul 13, 2010 at 11:32 PM, paul lind <[email protected]> wrote: >>> >>>> Hi Nilima - >>>> >>>> I'll try to answer your questions: >>>> >>>> 1. Alexandre is correct, you must make sure you are using the >>>> 'integration' branch (it is the default). >>>> >>>> 2. Per your command, you built libv8 for arch=mips, but you are trying >>>> to build your shell for the simulator (simulator=mips). You cannot mix >>>> the two. The simulator for local testing on your x86 development >>>> platform, but if you want to build the shell for your target, you must >>>> use a line like: >>>> >>>> scons arch=mips mode=debug library=static sample=shell -j4 >>>> >>>> (note that I left out regexp=interpreted. That is no longer needed, >>>> since we now have the native regular expression compiler working. I >>>> have updated the wiki page >>>> http://wiki.github.com/paul99/v8mips/building-v8mips) >>>> >>>> 3. I see from your build log that it appears that your target is beg- >>>> endian. That is unfortunately, as v8mips does not currently support >>>> big-endian targets. That will get done eventually, but it is low on >>>> our priority list. Is there any way your target can be run in little- >>>> endian mode? (the mips cores are configurable, some target boards are >>>> configurable, some are fixed). >>>> >>>> I know for a fact there are places in the generated code where we make >>>> little-endian assumptions (we have commented these), but I suspect >>>> that there will be more issues, as to my knowledge the whole of v8 has >>>> never been run on a big-endian target. >>>> >>>> 4. I also see that you are using uclibc. I do not know if that will >>>> work, as it has not been tried. We have been using a mips Linux distro >>>> with full glibc (both Debian and Timesys). We are now porting to >>>> Android, which uses bionic. >>>> >>>> 5. The issue you fixed with mcontext.gpregs is just used when >>>> profiling. I have only tried that on Linux 2.6. It is possibly you >>>> just have a problem with kernel-headers, or it may be that your kernel >>>> does not support. In any cause, it will not impact regular operation >>>> of v8, just the profiling option (--prof option to shell). >>>> >>>> I hope this helps, >>>> >>>> paul >>>> >>>> On Jul 13, 2:57 am, Alexandre Rames <[email protected]> wrote: >>>> > Hi, >>>> > >>>> > It has been some time I haven't build it. >>>> > There is something weird with the endianness here. The MIPS build >>>> should use >>>> > the -EL option to build for little endian. >>>> > >>>> > Did you follow the instructions >>>> > here<http://wiki.github.com/paul99/v8mips/building-v8mips> >>>> > ? >>>> > Also you should try to build the "integration" branch. This branch >>>> should >>>> > always compile and work (kind of dev branch). >>>> > >>>> > Alexandre >>>> > >>>> > On Mon, Jul 12, 2010 at 3:26 PM, Nilima Chavan < >>>> [email protected]>wrote: >>>> > >>>> > >>>> > >>>> > > Finally i was able to build the libv8.a successfully with following >>>> > > command line: >>>> > > scons arch=mips mode=debug regexp=interpreted library=static >>>> > >>>> > > Have done following changes in platform-linux.cc >>>> > > #elif V8_HOST_ARCH_MIPS >>>> > > sample.pc = reinterpret_cast<Address>(mcontext.gpregs[35]); >>>> > > sample.sp = reinterpret_cast<Address>(mcontext.gpregs[29]); >>>> > > sample.fp = reinterpret_cast<Address>(mcontext.gpregs[30]); >>>> > > #endif >>>> > >>>> > > But still I am not able to build shell with following command: >>>> > > scons mode=debug simulator=mips regexp=interpreted sample=shell -j4 >>>> > >>>> > > It is giving following kind of error: >>>> > > /opt/kenati/lib/gcc/mips-kenati-linux-uclibc/3.4.3/../../../../mips- >>>> > > kenati-linux-uclibc/bin/ld: /opt/kenati/lib/gcc/mips-kenati-linux- >>>> > > uclibc/3.4.3/../../../../mips-kenati-linux-uclibc/lib/crt1.o: >>>> compiled >>>> > > for a big endian system and target is little endian >>>> > > /opt/kenati/lib/gcc/mips-kenati-linux-uclibc/3.4.3/../../../../mips- >>>> > > kenati-linux-uclibc/bin/ld: /opt/kenati/lib/gcc/mips-kenati-linux- >>>> > > uclibc/3.4.3/../../../../mips-kenati-linux-uclibc/lib/crt1.o: >>>> > > endianness incompatible with that of the selected emulation >>>> > > /opt/kenati/lib/gcc/mips-kenati-linux-uclibc/3.4.3/../../../../mips- >>>> > > kenati-linux-uclibc/bin/ld: failed to merge target specific data of >>>> > > file /opt/kenati/lib/gcc/mips-kenati-linux-uclibc/3.4.3/../../../../ >>>> > > mips-kenati-linux-uclibc/lib/crt1.o >>>> > >>>> > > Please let me know if I need to any kind of environment settings for >>>> > > this too. >>>> > >>>> > > Thanks & Regards, >>>> > > Nilima >>>> > >>>> > > On Jul 12, 5:57 pm, Nilima Chavan <[email protected]> wrote: >>>> > > > Thanks for the info Alexandre. >>>> > >>>> > > > I have downloaded v8 sources from github. >>>> > > > But when I tried to build those sources for mips platform its >>>> giving >>>> > > > compilation error. >>>> > > > I am building the source code on UBuntu 8 (Linux 2.6.24-16-generic >>>> #1 >>>> > > > SMP Thu Apr 10 13:23:42 UTC 2008 i686 GNU/Linux). >>>> > >>>> > > > Environment variables are as below: >>>> > > > AR=/opt/kenati/bin/mips_sfp-uclibc-ar >>>> > > > LD=/opt/kenati/bin/mips_sfp-uclibc-ld >>>> > > > CXX=/opt/kenati/bin/mips_sfp-uclibc-g++ >>>> > > > CC=/opt/kenati/bin/mips_sfp-uclibc-gcc >>>> > > > RANLIB=/opt/kenati/bin/mips_sfp-uclibc-ranlib >>>> > >>>> > > > Compilation Error: >>>> > > > opt/kenati/bin/mips_sfp-uclibc-g++ -o obj/release/platform-linux.o >>>> -c - >>>> > > > Wall -Werror -W -Wno-unused-parameter -Wnon-virtual-dtor -pedantic >>>> -EL >>>> > > > -mips32r2 -Wa,-mips32r2 -fno-inline -mhard-float -O3 -fomit-frame- >>>> > > > pointer -fdata-sections -ffunction-sections -ansi >>>> -fno-strict-aliasing >>>> > > > -fno-rtti -fno-exceptions -Wall -Werror -W -Wno-unused-parameter >>>> -Wnon- >>>> > > > virtual-dtor -pedantic -EL -mips32r2 -Wa,-mips32r2 -fno-inline >>>> -mhard- >>>> > > > float -O3 -fomit-frame-pointer -fdata-sections -ffunction-sections >>>> - >>>> > > > ansi -fno-strict-aliasing -DV8_TARGET_ARCH_MIPS - >>>> > > > DENABLE_DEBUGGER_SUPPORT -DENABLE_LOGGING_AND_PROFILING -Isrc src/ >>>> > > > platform-linux.cc >>>> > >>>> > > > src/platform-linux.cc: In function `void >>>> > > > v8::internal::ProfilerSignalHandler(int, siginfo_t*, void*)': >>>> > > > src/platform-linux.cc:828: error: 'struct mcontext_t' has no >>>> member >>>> > > > named 'pc' >>>> > > > src/platform-linux.cc:829: error: 'struct mcontext_t' has no >>>> member >>>> > > > named 'gregs' >>>> > > > src/platform-linux.cc:830: error: 'struct mcontext_t' has no >>>> member >>>> > > > named 'gregs' >>>> > > > scons: *** [obj/release/platform-linux.o] Error 1 >>>> > > > scons: building terminated because of errors. >>>> > >>>> > > > Can anybody from your side help me on this? >>>> > > > Thanks & Regards, >>>> > > > Nilima >>>> > >>>> > > > On Jul 9, 6:39 pm, Alexandre Rames <[email protected]> >>>> wrote: >>>> > >>>> > > > > Hi, >>>> > >>>> > > > > You can find the v8 MIPS repository with the latest code on >>>> github: >>>> > >http://github.com/paul99/v8mips >>>> > >>>> > > > > <http://github.com/paul99/v8mips>Alexandre >>>> > >>>> > > > > On Fri, Jul 9, 2010 at 1:02 PM, Nilima Chavan < >>>> [email protected] >>>> > > >wrote: >>>> > >>>> > > > > > So we can not use v8 JavaScript engine on MIPs platform? >>>> > > > > > Does anybody working on this. Since I see mips directory under >>>> > > > > > Sources. Even SConstruct provides a way to select the >>>> architecture as >>>> > > > > > "mips". >>>> > > > > > If yes can you let us know when the work is expected to get >>>> over. >>>> > >>>> > > > > > Thanks & Regards, >>>> > > > > > Nilima >>>> > >>>> > > > > > On Jul 9, 1:41 am, Erik Corry <[email protected]> wrote: >>>> > > > > > > The MIPS port isn't done. It doesn't work. >>>> > >>>> > > > > > > Den 8. jul. 2010 14.12 skrev Nilima Chavan < >>>> > > [email protected]>: >>>> > >>>> > > > > > > > When I am trying to build v8 for MIP platform, I am >>>> getting >>>> > > following >>>> > > > > > > > errors: >>>> > > > > > > > $ scons simulator=mips >>>> > >>>> > > > > > > > In file included from src/virtual-frame.h:41, >>>> > > > > > > > from src/virtual-frame-inl.h:31, >>>> > > > > > > > from src/codegen.cc:41: >>>> > > > > > > > src/mips/virtual-frame-mips.h:74: error: 'NumberInfo' has >>>> not >>>> > > been >>>> > > > > > > > declared >>>> > > > > > > > src/mips/virtual-frame-mips.h:366: error: 'NumberInfo' has >>>> not >>>> > > been >>>> > > > > > > > declared >>>> > > > > > > > src/mips/virtual-frame-mips.h:390: error: 'NumberInfo' has >>>> not >>>> > > been >>>> > > > > > > > declared >>>> > > > > > > > src/mips/virtual-frame-mips.h:391: error: 'NumberInfo' has >>>> not >>>> > > been >>>> > > > > > > > declared >>>> > > > > > > > src/mips/virtual-frame-mips.h:74: error: 'NumberInfo' has >>>> not >>>> > > been >>>> > > > > > > > declared >>>> > > > > > > > src/mips/virtual-frame-mips.h:366: error: 'NumberInfo' has >>>> not >>>> > > been >>>> > > > > > > > declared >>>> > > > > > > > In file included from src/virtual-frame-inl.h:36, >>>> > > > > > > > from src/codegen.cc:41: >>>> > > > > > > > src/virtual-frame-light-inl.h: In constructor >>>> > > > > > > > 'v8::internal::VirtualFrame::VirtualFrame()': >>>> > > > > > > > src/virtual-frame-light-inl.h:41: error: class >>>> > > > > > > > 'v8::internal::VirtualFrame' does not have any field named >>>> > > > > > > > 'element_count_' >>>> > > > > > > > src/virtual-frame-light-inl.h:42: error: class >>>> > > > > > > > 'v8::internal::VirtualFrame' does not have any field named >>>> > > > > > > > 'top_of_stack_state_' >>>> > > > > > > > src/virtual-frame-light-inl.h:42: error: >>>> 'NO_TOS_REGISTERS' was >>>> > > not >>>> > > > > > > > declared in this scope >>>> > > > > > > > src/virtual-frame-light-inl.h:43: error: class >>>> > > > > > > > 'v8::internal::VirtualFrame' does not have any field named >>>> > > > > > > > 'register_allocation_map_' >>>> > > > > > > > src/virtual-frame-light-inl.h:43: error: no matching >>>> function for >>>> > > call >>>> > > > > > > > to >>>> > > 'v8::internal::ZoneList<v8::internal::FrameElement>::ZoneList()' >>>> > > > > > > > src/zone.h:170: note: candidates are: >>>> > > > > > > > v8::internal::ZoneList<T>::ZoneList(int) [with T = >>>> > > > > > > > v8::internal::FrameElement] >>>> > > > > > > > src/zone.h:166: note: >>>> > >>>> > > v8::internal::ZoneList<v8::internal::FrameElement>::ZoneList(const >>>> > > > > > > > v8::internal::ZoneList<v8::internal::FrameElement>&) >>>> > > > > > > > src/virtual-frame-light-inl.h: In constructor >>>> > >>>> > > >>>> 'v8::internal::VirtualFrame::VirtualFrame(v8::internal::VirtualFrame*)': >>>> > > > > > > > src/virtual-frame-light-inl.h:48: error: class >>>> > > > > > > > 'v8::internal::VirtualFrame' does not have any field named >>>> > > > > > > > 'element_count_' >>>> > > > > > > > src/virtual-frame-light-inl.h:49: error: class >>>> > > > > > > > 'v8::internal::VirtualFrame' does not have any field named >>>> > > > > > > > 'top_of_stack_state_' >>>> > > > > > > > src/virtual-frame-light-inl.h:49: error: 'class >>>> > > > > > > > v8::internal::VirtualFrame' has no member named >>>> > > 'top_of_stack_state_' >>>> > > > > > > > src/virtual-frame-light-inl.h:50: error: class >>>> > > > > > > > 'v8::internal::VirtualFrame' does not have any field named >>>> > > > > > > > 'register_allocation_map_' >>>> > > > > > > > src/virtual-frame-light-inl.h:50: error: 'class >>>> > > > > > > > v8::internal::VirtualFrame' has no member named >>>> > > > > > > > 'register_allocation_map_' >>>> > > > > > > > src/virtual-frame-light-inl.h:50: error: no matching >>>> function for >>>> > > call >>>> > > > > > > > to >>>> > > 'v8::internal::ZoneList<v8::internal::FrameElement>::ZoneList()' >>>> > > > > > > > src/zone.h:170: note: candidates are: >>>> > > > > > > > v8::internal::ZoneList<T>::ZoneList(int) [with T = >>>> > > > > > > > v8::internal::FrameElement] >>>> > > > > > > > src/zone.h:166: note: >>>> > >>>> > > v8::internal::ZoneList<v8::internal::FrameElement>::ZoneList(const >>>> > > > > > > > v8::internal::ZoneList<v8::internal::FrameElement>&) >>>> > > > > > > > src/virtual-frame-light-inl.h: In member function 'bool >>>> > > > > > > > >>>> v8::internal::VirtualFrame::Equals(v8::internal::VirtualFrame*)': >>>> > > > > > > > src/virtual-frame-light-inl.h:55: error: >>>> 'top_of_stack_state_' >>>> > > was not >>>> > > > > > > > declared in this scope >>>> > > > > > > > src/virtual-frame-light-inl.h:55: error: 'class >>>> > > > > > > > v8::internal::VirtualFrame' has no member named >>>> > > 'top_of_stack_state_' >>>> > > > > > > > src/virtual-frame-light-inl.h:56: error: >>>> > > 'register_allocation_map_' >>>> > > > > > > > was not declared in this scope >>>> > > > > > > > src/virtual-frame-light-inl.h:56: error: 'class >>>> > > > > > > > v8::internal::VirtualFrame' has no member named >>>> > > > > > > > 'register_allocation_map_' >>>> > > > > > > > src/codegen.cc: At global scope: >>>> > > > > > > > src/codegen.cc:325: error: 'GenerateCallFunction' is not a >>>> member >>>> > > of >>>> > > > > > > > 'v8::internal::CodeGenerator' >>>> > > > > > > > src/codegen.cc:325: error: 'GenerateRegExpConstructResult' >>>> is not >>>> > > a >>>> > > > > > > > member of 'v8::internal::CodeGenerator' >>>> > > > > > > > src/codegen.cc:325: error: 'GenerateGetFromCache' is not a >>>> member >>>> > > of >>>> > > > > > > > 'v8::internal::CodeGenerator' >>>> > > > > > > > src/codegen.cc:325: error: 'GenerateSwapElements' is not a >>>> member >>>> > > of >>>> > > > > > > > 'v8::internal::CodeGenerator' >>>> > > > > > > > cc1plus: warnings being treated as errors >>>> > > > > > > > src/mips/virtual-frame-mips.h:486: warning: inline >>>> function 'void >>>> > > > > > > > v8::internal::VirtualFrame::PushFrameSlotAt(int)' used but >>>> never >>>> > > > > > > > defined... >>>> > >>>> > read more » >>>> >>>> -- >>>> v8-users mailing list >>>> [email protected] >>>> http://groups.google.com/group/v8-users >>>> >>> >>> >> >> -- >> v8-users mailing list >> [email protected] >> http://groups.google.com/group/v8-users >> >> >> > -- v8-users mailing list [email protected] http://groups.google.com/group/v8-users
