Hello,
I'm trying to cross-compile V8 for an ARM 920T board (armv4) with a
toolchain generated by buildroot (based on the uclibc), 4.3.4 version.
I'm working with ubuntu 10.04.
I definitly need some help...
After a "svn checkout
http://v8.googlecode.com/svn/trunk/ v8" I've
tried the following scons command with some exports :
export GCC_VERSION=43
export CC="$BUILDROOT_PATH/output/staging/usr/bin/arm-linux-gcc -I
$BUILDROOT_PATH/output/staging/usr/include -I$BUILDROOT_PATH/output/
staging/include --sysroot=$BUILDROOT_PATH
export CXX="$BUILDROOT_PATH/output/staging/usr/bin/arm-linux-g++"
export CXXFLAGS="-I. -march=armv4t --sysroot=$BUILDROOT_PATH/output/
staging/ -isysroot $BUILDROOT_PATH/output/staging"
export CFLAGS="-I. -march=armv4t"
export LDFLAGS="--sysroot $BUILDROOT_PATH/output/staging/"
scons mode=debug arch=arm library=shared prof=off os=linux
(I know some of these scons options are optional, but I wanted to be
sure to get what I need)
Then, i get this error :
src/platform-linux.cc:48:56: error: execinfo.h: No such file or
directory
src/platform-linux.cc: In static member function 'static int
v8::internal::OS::StackWalk(v8::internal::Vector<v8::internal::OS::StackFrame>)':
src/platform-linux.cc:405: error: 'backtrace' was not declared in this
scope
src/platform-linux.cc:407: error: 'backtrace_symbols' was not declared
in this scope
src/platform-linux.cc: In function 'void
v8::internal::ProfilerSignalHandler(int, siginfo_t*, void*)':
src/platform-linux.cc:773: error: 'struct sigcontext' has no member
named 'gregs'
src/platform-linux.cc:774: error: 'struct sigcontext' has no member
named 'gregs'
src/platform-linux.cc:775: error: 'struct sigcontext' has no member
named 'gregs'
scons: *** [obj/debug/platform-linux.os] Error 1
scons: building terminated because of errors.
I've read backtrace() was a glibc-specific function and because I'm
not interested in backtrace in my project I've created an execinfo.h
file with redefined functions. I've put it at the project root in my
case.
#ifndef _EXECINFO_H_
#define _EXECINFO_H_ 1
#include <sys/cdefs.h>
__BEGIN_DECLS
int backtrace(void**,int){ return 0; }
char** backtrace_symbols(void* const*,int){return NULL; }
void backtrace_symbols_fd(void* const*,int,int){}
__END_DECLS
#endif /* !_EXECINFO_H_ */
I know, it's sooo nasty ! I'm trying every kind of way to get V8 cross-
compiled ...
Now, the backtrace error is gone, I deal whith the
ProfilerSignalHandler one by uncommenting the all function content.
Then it ends up getting this :
/home/yoann/workspace/karotz/buildroot/buildroot-2010.05/output/
staging/usr/bin/arm-linux-g++ -o obj/debug/platform-linux.os -c -I. -
march=armv4t --sysroot=/home/yoann/workspace/karotz/buildroot/
buildroot-2010.05/output/staging/ -isysroot /home/yoann/workspace/
karotz/buildroot/buildroot-2010.05/output/staging -Wall -Werror -W -
Wno-unused-parameter -Wnon-virtual-dtor -pedantic -g -O0 -ansi -fno-
rtti -fno-exceptions -fvisibility=hidden -Wall -Werror -W -Wno-unused-
parameter -Wnon-virtual-dtor -pedantic -g -O0 -ansi -fPIC -
DV8_TARGET_ARCH_ARM -DENABLE_DISASSEMBLER -DDEBUG -DV8_SHARED -
DENABLE_VMSTATE_TRACKING -DENABLE_LOGGING_AND_PROFILING -
DV8_ENABLE_CHECKS -DENABLE_DEBUGGER_SUPPORT -Isrc src/platform-
linux.cc
/tmp/ccSp2ze3.s: Assembler messages:
/tmp/ccSp2ze3.s:414: Error: bad instruction `int $3'
scons: *** [obj/debug/platform-linux.os] Error 1
scons: building terminated because of errors.
I've tried several branches of V8 (trunk, bleeding_edge and 2.2) but i
get the same result.
I think this is a flag problem. I'm missing something ...
I fear that with the armv4t + uclibc combination I'm entering in a
world of pain.
If someone has any idea to deal with my problem. I would so pleased to
hear anything that would help me.
Thanks in advance !!