1. build error
- Posted by coconut Apr 02, 2013
- 1846 views
Hi, I'm trying to buil euphoria on my Efika Mx (ARM v7l). But get many undefined reference error.
gcc /home/Jacques/euphoria/source/build/intobj/back/be_decompress.o /home/Jacques/euphoria/source/build/intobj/back/be_debug.o /home/Jacques/euphoria/source/build/intobj/back/be_execute.o /home/Jacques/euphoria/source/build/intobj/back/be_task.o /home/Jacques/euphoria/source/build/intobj/back/be_main.o /home/Jacques/euphoria/source/build/intobj/back/be_alloc.o /home/Jacques/euphoria/source/build/intobj/back/be_callc.o /home/Jacques/euphoria/source/build/intobj/back/be_inline.o /home/Jacques/euphoria/source/build/intobj/back/be_machine.o /home/Jacques/euphoria/source/build/intobj/back/be_coverage.o /home/Jacques/euphoria/source/build/intobj/back/be_pcre.o /home/Jacques/euphoria/source/build/intobj/back/be_rterror.o /home/Jacques/euphoria/source/build/intobj/back/be_syncolor.o /home/Jacques/euphoria/source/build/intobj/back/be_runtime.o /home/Jacques/euphoria/source/build/intobj/back/be_symtab.o /home/Jacques/euphoria/source/build/intobj/back/be_socket.o /home/Jacques/euphoria/source/build/intobj/back/be_w.o /home/Jacques/euphoria/source/build/pcre/pcre_chartables.o /home/Jacques/euphoria/source/build/pcre/pcre_compile.o /home/Jacques/euphoria/source/build/pcre/pcre_config.o /home/Jacques/euphoria/source/build/pcre/pcre_dfa_exec.o /home/Jacques/euphoria/source/build/pcre/pcre_exec.o /home/Jacques/euphoria/source/build/pcre/pcre_fullinfo.o /home/Jacques/euphoria/source/build/pcre/pcre_get.o /home/Jacques/euphoria/source/build/pcre/pcre_globals.o /home/Jacques/euphoria/source/build/pcre/pcre_info.o /home/Jacques/euphoria/source/build/pcre/pcre_maketables.o /home/Jacques/euphoria/source/build/pcre/pcre_newline.o /home/Jacques/euphoria/source/build/pcre/pcre_ord2utf8.o /home/Jacques/euphoria/source/build/pcre/pcreposix.o /home/Jacques/euphoria/source/build/pcre/pcre_refcount.o /home/Jacques/euphoria/source/build/pcre/pcre_study.o /home/Jacques/euphoria/source/build/pcre/pcre_tables.o /home/Jacques/euphoria/source/build/pcre/pcre_try_flipped.o /home/Jacques/euphoria/source/build/pcre/pcre_ucd.o /home/Jacques/euphoria/source/build/pcre/pcre_valid_utf8.o /home/Jacques/euphoria/source/build/pcre/pcre_version.o /home/Jacques/euphoria/source/build/pcre/pcre_xclass.o -lm -ldl -lresolv -lnsl -pthread -o /home/Jacques/euphoria/source/build/eui /usr/lib/gcc/arm-linux-gnueabihf/4.6/../../../arm-linux-gnueabihf/crt1.o: In function `_start': (.text+0x30): undefined reference to `main' /home/Jacques/euphoria/source/build/intobj/back/be_task.o: In function `ctask_create': be_task.c:(.text+0x9c4): undefined reference to `_00' /home/Jacques/euphoria/source/build/intobj/back/be_task.o: In function `start_task': be_task.c:(.text+0xdb0): undefined reference to `_00' /home/Jacques/euphoria/source/build/intobj/back/be_runtime.o: In function `ctrace': be_runtime.c:(.text+0x2064): undefined reference to `Argc' /home/Jacques/euphoria/source/build/intobj/back/be_runtime.o: In function `eu_startup': be_runtime.c:(.text+0x211c): undefined reference to `Argc' /home/Jacques/euphoria/source/build/intobj/back/be_runtime.o: In function `shift_args': be_runtime.c:(.text+0x2a20): undefined reference to `Argc' be_runtime.c:(.text+0x2a24): undefined reference to `Argv' /home/Jacques/euphoria/source/build/intobj/back/be_runtime.o: In function `Command_Line': be_runtime.c:(.text+0x2aac): undefined reference to `Argc' be_runtime.c:(.text+0x2ab0): undefined reference to `Argv' collect2: ld returned 1 exit status make[3]: *** [/home/Jacques/euphoria/source/build/eui] Error 1 make[3]: Leaving directory `/home/Jacques/euphoria/source' make[2]: *** [interpreter] Error 2 make[2]: Leaving directory `/home/Jacques/euphoria/source' make[1]: *** [interpreter] Error 2 make[1]: Leaving directory `/home/Jacques/euphoria/source' make: *** [all] Error 2
Jacques
2. Re: build error
- Posted by mattlewis (admin) Apr 02, 2013
- 1764 views
Hi, I'm trying to buil euphoria on my Efika Mx (ARM v7l). But get many undefined reference error.
/usr/lib/gcc/arm-linux-gnueabihf/4.6/../../../arm-linux-gnueabihf/crt1.o: In function `_start': (.text+0x30): undefined reference to `main' /home/Jacques/euphoria/source/build/intobj/back/be_task.o: In function `ctask_create': be_task.c:(.text+0x9c4): undefined reference to `_00' /home/Jacques/euphoria/source/build/intobj/back/be_task.o: In function `start_task': be_task.c:(.text+0xdb0): undefined reference to `_00' /home/Jacques/euphoria/source/build/intobj/back/be_runtime.o: In function `ctrace': be_runtime.c:(.text+0x2064): undefined reference to `Argc' /home/Jacques/euphoria/source/build/intobj/back/be_runtime.o: In function `eu_startup': be_runtime.c:(.text+0x211c): undefined reference to `Argc' /home/Jacques/euphoria/source/build/intobj/back/be_runtime.o: In function `shift_args': be_runtime.c:(.text+0x2a20): undefined reference to `Argc' be_runtime.c:(.text+0x2a24): undefined reference to `Argv' /home/Jacques/euphoria/source/build/intobj/back/be_runtime.o: In function `Command_Line': be_runtime.c:(.text+0x2aac): undefined reference to `Argc' be_runtime.c:(.text+0x2ab0): undefined reference to `Argv'
Those are all things defined in the translated front end. I don't see any front end files in the linker command. I have a few questions:
- Is this a cross compile?
- Did the front end translate?
- Is this from the default branch?
Matt
3. Re: build error
- Posted by jimcbrown (admin) Apr 02, 2013
- 1816 views
Hi, I'm trying to buil euphoria on my Efika Mx (ARM v7l). But get many undefined reference error.
/usr/lib/gcc/arm-linux-gnueabihf/4.6/../../../arm-linux-gnueabihf/crt1.o: In function `_start': (.text+0x30): undefined reference to `main' /home/Jacques/euphoria/source/build/intobj/back/be_task.o: In function `ctask_create': be_task.c:(.text+0x9c4): undefined reference to `_00' /home/Jacques/euphoria/source/build/intobj/back/be_task.o: In function `start_task': be_task.c:(.text+0xdb0): undefined reference to `_00' /home/Jacques/euphoria/source/build/intobj/back/be_runtime.o: In function `ctrace': be_runtime.c:(.text+0x2064): undefined reference to `Argc' /home/Jacques/euphoria/source/build/intobj/back/be_runtime.o: In function `eu_startup': be_runtime.c:(.text+0x211c): undefined reference to `Argc' /home/Jacques/euphoria/source/build/intobj/back/be_runtime.o: In function `shift_args': be_runtime.c:(.text+0x2a20): undefined reference to `Argc' be_runtime.c:(.text+0x2a24): undefined reference to `Argv' /home/Jacques/euphoria/source/build/intobj/back/be_runtime.o: In function `Command_Line': be_runtime.c:(.text+0x2aac): undefined reference to `Argc' be_runtime.c:(.text+0x2ab0): undefined reference to `Argv'
Those are all things defined in the translated front end. I don't see any front end files in the linker command. I have a few questions:
- Is this a cross compile?
- Did the front end translate?
- Is this from the default branch?
Matt
Also, it'd be helpful to see your config.gnu file - is EUPHORIA set to 1 or 0?
4. Re: build error
- Posted by coconut Apr 02, 2013
- 1780 views
Hi, euphoria was not installed on this computer. I first downloaded hg source and built-it. Then I cloned the euphoria repo. then from the source directory I ./configure then make
That's all (not a cross compile).
Thanks both of you for the fast reply
Jacques
# File generated from configure CONFIGURE_PARAMS= EBSD= EOPENBSD= ENETBSD= EOSX= ELINUX=1 EMINGW= EUPHORIA=0 TRANSLATE=eui euc.ex ETARGET=LINUX ARCH=ARM MSIZE= EFLAG=-d E32 CC_SUFFIX=gcc CC_PREFIX= RC_SUFFIX=windres SCP=scp -C SSH=ssh -C HG=hg TRUNKDIR=/home/Jacques/euphoria BUILDDIR=/home/Jacques/euphoria/source/build CYPTRUNKDIR=/home/Jacques/euphoria CYPBUILDDIR=/home/Jacques/euphoria/source/build XLTTARGETCC=gcc NO_CYGWIN= VERSION=4.1.0
5. Re: build error
- Posted by jimcbrown (admin) Apr 02, 2013
- 1783 views
Hi, euphoria was not installed on this computer. I first downloaded hg source and built-it. Then I cloned the euphoria repo. then from the source directory I ./configure then make
That's all (not a cross compile).
Thanks both of you for the fast reply
Jacques
EUPHORIA=0
Ok, so you just need an ARM eubins to bootstrap the build then. That was the reason for the errors you were getting.
6. Re: build error
- Posted by coconut Apr 02, 2013
- 1780 views
Hi, euphoria was not installed on this computer. I first downloaded hg source and built-it. Then I cloned the euphoria repo. then from the source directory I ./configure then make
That's all (not a cross compile).
Thanks both of you for the fast reply
Jacques
EUPHORIA=0
Ok, so you just need an ARM eubins to bootstrap the build then. That was the reason for the errors you were getting.
And where do I get this arm eubins?
7. Re: build error
- Posted by coconut Apr 02, 2013
- 1769 views
Hi, euphoria was not installed on this computer. I first downloaded hg source and built-it. Then I cloned the euphoria repo. then from the source directory I ./configure then make
That's all (not a cross compile).
Thanks both of you for the fast reply
Jacques
EUPHORIA=0
Ok, so you just need an ARM eubins to bootstrap the build then. That was the reason for the errors you were getting.
Found an eubins for ARMv8, downloaded but doesn't work. How do I build eubins? Will I have to cross compile?
8. Re: build error
- Posted by mattlewis (admin) Apr 02, 2013
- 1790 views
Ok, so you just need an ARM eubins to bootstrap the build then. That was the reason for the errors you were getting.
You don't even need that. Just configure for ARM on some working installation, then "make source". Or "make source-tarball" or something...I forget exactly. But either way, you can take the translation from one computer to another. You'll just need to compile it all on the host machine.
Matt
9. Re: build error
- Posted by coconut Apr 02, 2013
- 1993 views
Ok, so you just need an ARM eubins to bootstrap the build then. That was the reason for the errors you were getting.
You don't even need that. Just configure for ARM on some working installation, then "make source". Or "make source-tarball" or something...I forget exactly. But either way, you can take the translation from one computer to another. You'll just need to compile it all on the host machine.
Matt
I found eubins from Ira on the wiki restart the build. This time I get another error:
jacques@efikamx:~$ cd /usr/share/euphoria/source jacques@efikamx:/usr/share/euphoria/source$ ./configure --debug Writing eu.cfg to /usr/share/euphoria/source/build/eu.cfg jacques@efikamx:/usr/share/euphoria/source$ cat build/eu.cfg [all] -d E32 -eudir /usr/share/euphoria -i /usr/share/euphoria/include [translate] -arch ARM -gcc -con -com /usr/share/euphoria -lib-pic /usr/share/euphoria/source/build/euso.a -lib /usr/share/euphoria/source/build/eudbg.a [bind] -eub /usr/share/euphoria/source/build/eub jacques@efikamx:/usr/share/euphoria/source$ cd .. jacques@efikamx:/usr/share/euphoria$ find . -name eudb.a jacques@efikamx:/usr/share/euphoria$ ./configure bash: ./configure: No such file or directory jacques@efikamx:/usr/share/euphoria$ cd source jacques@efikamx:/usr/share/euphoria/source$ ./configure Writing eu.cfg to /usr/share/euphoria/source/build/eu.cfg jacques@efikamx:/usr/share/euphoria/source$ make make interpreter translator library debug-library backend shared-library debug-shared-library lib818 make[1]: Entering directory `/usr/share/euphoria/source' make interpreter OBJDIR=intobj EBSD= CONFIG=config.gnu EDEBUG= EPROFILE= make[2]: Entering directory `/usr/share/euphoria/source' mkdir -p /usr/share/euphoria/source/build/intobj/back/ /usr/share/euphoria/source/build/transobj/back/ /usr/share/euphoria/source/build/libobj/back/ /usr/share/euphoria/source/build/libobjdbg /usr/share/euphoria/source/build/libobjdbg/back/ /usr/share/euphoria/source/build/backobj/back/ /usr/share/euphoria/source/build/intobj/ /usr/share/euphoria/source/build/transobj/ /usr/share/euphoria/source/build/libobj/ /usr/share/euphoria/source/build/backobj/ /usr/share/euphoria/source/build/include/ /usr/share/euphoria/source/build/libobj-fPIC/ /usr/share/euphoria/source/build/libobj-fPIC/back /usr/share/euphoria/source/build/libobjdbg-fPIC /usr/share/euphoria/source/build/libobjdbg-fPIC/back gcc -DEARM -c -Wall -DEUNIX -DELINUX -fsigned-char -ffast-math -fomit-frame-pointer -ffast-math -O3 -Os -DESIMPLE_MALLOC -DARCH=ARM -DELINUX -I /usr/share/euphoria/source/build/intobj/back -I /usr/share/euphoria/source/build/include be_decompress.c -o/usr/share/euphoria/source/build/intobj/back/be_decompress.o gcc -DEARM -c -Wall -DEUNIX -DELINUX -fsigned-char -ffast-math -fomit-frame-pointer -ffast-math -O3 -Os -DESIMPLE_MALLOC -DARCH=ARM -DELINUX -I /usr/share/euphoria/source/build/intobj/back -I /usr/share/euphoria/source/build/include be_debug.c -o/usr/share/euphoria/source/build/intobj/back/be_debug.o gcc -DEARM -c -Wall -DEUNIX -DELINUX -fsigned-char -ffast-math -fomit-frame-pointer -ffast-math -O3 -Os -DESIMPLE_MALLOC -DARCH=ARM -DELINUX -I /usr/share/euphoria/source/build/intobj/back -I /usr/share/euphoria/source/build/include be_execute.c -o/usr/share/euphoria/source/build/intobj/back/be_execute.o gcc -DEARM -c -Wall -DEUNIX -DELINUX -fsigned-char -ffast-math -fomit-frame-pointer -ffast-math -O3 -Os -DESIMPLE_MALLOC -DARCH=ARM -DELINUX -I /usr/share/euphoria/source/build/intobj/back -I /usr/share/euphoria/source/build/include be_task.c -o/usr/share/euphoria/source/build/intobj/back/be_task.o gcc -DEARM -c -Wall -DEUNIX -DELINUX -fsigned-char -ffast-math -fomit-frame-pointer -ffast-math -O3 -Os -DESIMPLE_MALLOC -DARCH=ARM -DELINUX -I /usr/share/euphoria/source/build/intobj/back -I /usr/share/euphoria/source/build/include be_main.c -o/usr/share/euphoria/source/build/intobj/back/be_main.o gcc -DEARM -c -Wall -DEUNIX -DELINUX -fsigned-char -ffast-math -fomit-frame-pointer -ffast-math -O3 -Os -DESIMPLE_MALLOC -DARCH=ARM -DELINUX -I /usr/share/euphoria/source/build/intobj/back -I /usr/share/euphoria/source/build/include be_alloc.c -o/usr/share/euphoria/source/build/intobj/back/be_alloc.o gcc -c -Wall -DEUNIX -DEARM -DELINUX -DARCH=ARM -fsigned-char -O3 -fno-omit-frame-pointer -ffast-math -fno-defer-pop be_callc.c -o/usr/share/euphoria/source/build/intobj/back/be_callc.o be_callc.c: In function 'call_c': be_callc.c:1162:15: warning: variable 'argsize' set but not used [-Wunused-but-set-variable] gcc -finline-functions -DEARM -c -Wall -DEUNIX -DELINUX -fsigned-char -ffast-math -fomit-frame-pointer -ffast-math -O3 -Os -DESIMPLE_MALLOC -DARCH=ARM -DELINUX be_inline.c -o/usr/share/euphoria/source/build/intobj/back/be_inline.o gcc -o /usr/share/euphoria/source/build/mkver mkver.c /usr/share/euphoria/source/build/mkver "hg" "/usr/share/euphoria/source/build/ver.cache" "/usr/share/euphoria/source/build/include/be_ver.h" gcc -DEARM -c -Wall -DEUNIX -DELINUX -fsigned-char -ffast-math -fomit-frame-pointer -ffast-math -O3 -Os -DESIMPLE_MALLOC -DARCH=ARM -DELINUX -I /usr/share/euphoria/source/build/intobj/back -I /usr/share/euphoria/source/build/include be_machine.c -o/usr/share/euphoria/source/build/intobj/back/be_machine.o gcc -DEARM -c -Wall -DEUNIX -DELINUX -fsigned-char -ffast-math -fomit-frame-pointer -ffast-math -O3 -Os -DESIMPLE_MALLOC -DARCH=ARM -DELINUX -I /usr/share/euphoria/source/build/intobj/back -I /usr/share/euphoria/source/build/include be_coverage.c -o/usr/share/euphoria/source/build/intobj/back/be_coverage.o gcc -DEARM -c -Wall -DEUNIX -DELINUX -fsigned-char -ffast-math -fomit-frame-pointer -ffast-math -O3 -Os -DESIMPLE_MALLOC -DARCH=ARM -DELINUX -I /usr/share/euphoria/source/build/intobj/back -I /usr/share/euphoria/source/build/include be_pcre.c -o/usr/share/euphoria/source/build/intobj/back/be_pcre.o gcc -DEARM -c -Wall -DEUNIX -DELINUX -fsigned-char -ffast-math -fomit-frame-pointer -ffast-math -O3 -Os -DESIMPLE_MALLOC -DARCH=ARM -DELINUX -I /usr/share/euphoria/source/build/intobj/back -I /usr/share/euphoria/source/build/include be_rterror.c -o/usr/share/euphoria/source/build/intobj/back/be_rterror.o gcc -DEARM -c -Wall -DEUNIX -DELINUX -fsigned-char -ffast-math -fomit-frame-pointer -ffast-math -O3 -Os -DESIMPLE_MALLOC -DARCH=ARM -DELINUX -I /usr/share/euphoria/source/build/intobj/back -I /usr/share/euphoria/source/build/include be_syncolor.c -o/usr/share/euphoria/source/build/intobj/back/be_syncolor.o gcc -DEARM -c -Wall -DEUNIX -DELINUX -fsigned-char -ffast-math -fomit-frame-pointer -ffast-math -O3 -Os -DESIMPLE_MALLOC -DARCH=ARM -DELINUX -I /usr/share/euphoria/source/build/intobj/back -I /usr/share/euphoria/source/build/include be_runtime.c -o/usr/share/euphoria/source/build/intobj/back/be_runtime.o gcc -DEARM -c -Wall -DEUNIX -DELINUX -fsigned-char -ffast-math -fomit-frame-pointer -ffast-math -O3 -Os -DESIMPLE_MALLOC -DARCH=ARM -DELINUX -I /usr/share/euphoria/source/build/intobj/back -I /usr/share/euphoria/source/build/include be_symtab.c -o/usr/share/euphoria/source/build/intobj/back/be_symtab.o gcc -DEARM -c -Wall -DEUNIX -DELINUX -fsigned-char -ffast-math -fomit-frame-pointer -ffast-math -O3 -Os -DESIMPLE_MALLOC -DARCH=ARM -DELINUX -I /usr/share/euphoria/source/build/intobj/back -I /usr/share/euphoria/source/build/include be_socket.c -o/usr/share/euphoria/source/build/intobj/back/be_socket.o gcc -DEARM -c -Wall -DEUNIX -DELINUX -fsigned-char -ffast-math -fomit-frame-pointer -ffast-math -O3 -Os -DESIMPLE_MALLOC -DARCH=ARM -DELINUX -I /usr/share/euphoria/source/build/intobj/back -I /usr/share/euphoria/source/build/include be_w.c -o/usr/share/euphoria/source/build/intobj/back/be_w.o make -C pcre all CC="gcc" PCRE_CC="gcc" EOSTYPE="-DEUNIX" EOSFLAGS="" CONFIG=../config.gnu FPIC= make[3]: Entering directory `/usr/share/euphoria/source/pcre' mkdir /usr/share/euphoria/source/build/pcre gcc -O2 -DEUNIX -D HAVE_CONFIG_H -D NO_RECURSE -c pcre_chartables.c -o /usr/share/euphoria/source/build/pcre/pcre_chartables.o gcc -O2 -DEUNIX -D HAVE_CONFIG_H -D NO_RECURSE -c pcre_compile.c -o /usr/share/euphoria/source/build/pcre/pcre_compile.o gcc -O2 -DEUNIX -D HAVE_CONFIG_H -D NO_RECURSE -c pcre_config.c -o /usr/share/euphoria/source/build/pcre/pcre_config.o gcc -O2 -DEUNIX -D HAVE_CONFIG_H -D NO_RECURSE -c pcre_dfa_exec.c -o /usr/share/euphoria/source/build/pcre/pcre_dfa_exec.o gcc -O2 -DEUNIX -D HAVE_CONFIG_H -D NO_RECURSE -c pcre_exec.c -o /usr/share/euphoria/source/build/pcre/pcre_exec.o gcc -O2 -DEUNIX -D HAVE_CONFIG_H -D NO_RECURSE -c pcre_fullinfo.c -o /usr/share/euphoria/source/build/pcre/pcre_fullinfo.o gcc -O2 -DEUNIX -D HAVE_CONFIG_H -D NO_RECURSE -c pcre_get.c -o /usr/share/euphoria/source/build/pcre/pcre_get.o gcc -O2 -DEUNIX -D HAVE_CONFIG_H -D NO_RECURSE -c pcre_globals.c -o /usr/share/euphoria/source/build/pcre/pcre_globals.o gcc -O2 -DEUNIX -D HAVE_CONFIG_H -D NO_RECURSE -c pcre_info.c -o /usr/share/euphoria/source/build/pcre/pcre_info.o gcc -O2 -DEUNIX -D HAVE_CONFIG_H -D NO_RECURSE -c pcre_maketables.c -o /usr/share/euphoria/source/build/pcre/pcre_maketables.o gcc -O2 -DEUNIX -D HAVE_CONFIG_H -D NO_RECURSE -c pcre_newline.c -o /usr/share/euphoria/source/build/pcre/pcre_newline.o gcc -O2 -DEUNIX -D HAVE_CONFIG_H -D NO_RECURSE -c pcre_ord2utf8.c -o /usr/share/euphoria/source/build/pcre/pcre_ord2utf8.o gcc -O2 -DEUNIX -D HAVE_CONFIG_H -D NO_RECURSE -c pcreposix.c -o /usr/share/euphoria/source/build/pcre/pcreposix.o gcc -O2 -DEUNIX -D HAVE_CONFIG_H -D NO_RECURSE -c pcre_refcount.c -o /usr/share/euphoria/source/build/pcre/pcre_refcount.o gcc -O2 -DEUNIX -D HAVE_CONFIG_H -D NO_RECURSE -c pcre_study.c -o /usr/share/euphoria/source/build/pcre/pcre_study.o gcc -O2 -DEUNIX -D HAVE_CONFIG_H -D NO_RECURSE -c pcre_tables.c -o /usr/share/euphoria/source/build/pcre/pcre_tables.o gcc -O2 -DEUNIX -D HAVE_CONFIG_H -D NO_RECURSE -c pcre_try_flipped.c -o /usr/share/euphoria/source/build/pcre/pcre_try_flipped.o gcc -O2 -DEUNIX -D HAVE_CONFIG_H -D NO_RECURSE -c pcre_ucd.c -o /usr/share/euphoria/source/build/pcre/pcre_ucd.o gcc -O2 -DEUNIX -D HAVE_CONFIG_H -D NO_RECURSE -c pcre_valid_utf8.c -o /usr/share/euphoria/source/build/pcre/pcre_valid_utf8.o gcc -O2 -DEUNIX -D HAVE_CONFIG_H -D NO_RECURSE -c pcre_version.c -o /usr/share/euphoria/source/build/pcre/pcre_version.o gcc -O2 -DEUNIX -D HAVE_CONFIG_H -D NO_RECURSE -c pcre_xclass.c -o /usr/share/euphoria/source/build/pcre/pcre_xclass.o make[3]: Leaving directory `/usr/share/euphoria/source/pcre' Translating eui.ex to create rm -f /usr/share/euphoria/source/build/intobj/{*.c,*.o} (cd /usr/share/euphoria/source/build/intobj;eui -i /usr/share/euphoria/include -d E32 /usr/share/euphoria/source/euc.ex -nobuild -i /usr/share/euphoria/include -gcc \ -arch ARM \ -c /usr/share/euphoria/source/eu.cfg /usr/share/euphoria/source/eui.ex ) /usr/share/euphoria/include/std/map.e:508 in function get() subscript value 0 is out of bounds, reading from a sequence of length 256 ... called from /usr/share/euphoria/source/parser.e:2680 in procedure optimize_switch() ... called from /usr/share/euphoria/source/parser.e:2824 in procedure Switch_statement() ... called from /usr/share/euphoria/source/parser.e:4029 in procedure Statement_list() ... called from /usr/share/euphoria/source/parser.e:2298 in procedure If_statement() ... called from /usr/share/euphoria/source/parser.e:3970 in procedure Statement_list() ... called from /usr/share/euphoria/source/parser.e:3345 in procedure For_statement() ... called from /usr/share/euphoria/source/parser.e:3974 in procedure Statement_list() ... called from /usr/share/euphoria/source/parser.e:4402 in procedure SubProg() ... called from /usr/share/euphoria/source/parser.e:4798 in procedure real_parser() ... called from /usr/share/euphoria/source/parser.e:5035 in procedure parser() ... called from /usr/share/euphoria/source/main.e:201 in procedure main() ... called from /usr/share/euphoria/source/main.e:228 --> See ex.err make[2]: *** [/usr/share/euphoria/source/build/intobj/main-.c] Error 1 make[2]: Leaving directory `/usr/share/euphoria/source' make[1]: *** [interpreter] Error 2 make[1]: Leaving directory `/usr/share/euphoria/source' make: *** [all] Error 2 jacques@efikamx:/usr/share/euphoria/source$
Ok! Tomorow I'll try as you suggest.
Jacques
10. Re: build error
- Posted by mattlewis (admin) Apr 03, 2013
- 1746 views
Ok, so you just need an ARM eubins to bootstrap the build then. That was the reason for the errors you were getting.
You don't even need that. Just configure for ARM on some working installation, then "make source". Or "make source-tarball" or something...I forget exactly. But either way, you can take the translation from one computer to another. You'll just need to compile it all on the host machine.
Matt
I found eubins from Ira on the wiki restart the build. This time I get another error:
/usr/share/euphoria/include/std/map.e:508 in function get() subscript value 0 is out of bounds, reading from a sequence of length 256
There were some bugs in the new map.e that I fixed recently. This looks like one of them. You'll need a version later than March 20th.
Matt
11. Re: build error
- Posted by jimcbrown (admin) Apr 03, 2013
- 1753 views
You don't even need that. Just configure for ARM on some working installation, then "make source". Or "make source-tarball" or something...I forget exactly. But either way, you can take the translation from one computer to another. You'll just need to compile it all on the host machine.
IMVHO, using eubins slightly less hassle. You just copy some binaries into a bin directory, and then do the build normally. Cross-translation requires a bit more, and if you need to (or just want to) hand hack some code, you could potentionally be looking at making different changes at two different locations (on the Intel box when touching Euphoria source, and the ARM box when changing backend stuff).
12. Re: build error
- Posted by mattlewis (admin) Apr 03, 2013
- 1735 views
You don't even need that. Just configure for ARM on some working installation, then "make source". Or "make source-tarball" or something...I forget exactly. But either way, you can take the translation from one computer to another. You'll just need to compile it all on the host machine.
IMVHO, using eubins slightly less hassle. You just copy some binaries into a bin directory, and then do the build normally. Cross-translation requires a bit more, and if you need to (or just want to) hand hack some code, you could potentionally be looking at making different changes at two different locations (on the Intel box when touching Euphoria source, and the ARM box when changing backend stuff).
True, but that assumes you have a eubin that works. With the current state of the ARM port, I would not take that as a given.
Also, these things are sloooowwwww, and now I'm cross compiling everything I can. I have sshfs set up from my pi to point at my "normal" development directory, so I can edit and compile stuff quickly and easily and run tests in an ssh session.
At one point, I ran "make all" directly on the pi using a binary posted by rkdavis (IIRC). I didn't time it, but "all day" seems like a decent estimation.
Matt
13. Re: build error
- Posted by jimcbrown (admin) Apr 03, 2013
- 1741 views
True, but that assumes you have a eubin that works. With the current state of the ARM port, I would not take that as a given.
What leads you to say that? I had been following the ARM discussion closely, and I was under the impression that we had working binaries. (Not all tests pass, but still..)
Also, these things are sloooowwwww
"all day" seems like a decent estimation.
That's a good point.
14. Re: build error
- Posted by mattlewis (admin) Apr 03, 2013
- 1768 views
True, but that assumes you have a eubin that works. With the current state of the ARM port, I would not take that as a given.
What leads you to say that? I had been following the ARM discussion closely, and I was under the impression that we had working binaries. (Not all tests pass, but still..)
I don't fully understand the ARM ecosystem, but there seem to be a lot of different architectures out there, where something built for one chip doesn't work on another, similar to something like i686 vs i386. Then there are the soft vs hard float issues, which are part hardware, part software.
It's probably not as bad as my (poor, incomplete) understanding is, but doing the translation on a more maturely supported (by/for euphoria) platform seems less risky. Of course, it doesn't hurt to try, and if it doesn't work, I don't think it will be subtle, but quick and catastrophic.
Another issue I had was that I couldn't use the cross compiler from my distro, because it linked to GLIBC 2.15, but raspbian uses GLIBC 2.13. I tried several things to hack around this, but couldn't get it to work. The provided cross compilers, OTOH, worked right away with no extra hacks or worrying about setting the right options to target the specific chip, since that was already baked into everything.
For all of these reasons, I suspect that we probably won't be able to offer a single binary ARM distribution of euphoria that we can expect to work everywhere.
Matt
15. Re: build error
- Posted by jimcbrown (admin) Apr 03, 2013
- 1816 views
I don't fully understand the ARM ecosystem, but there seem to be a lot of different architectures out there, where something built for one chip doesn't work on another, similar to something like i686 vs i386.
Agreed.
http://www.riscosopen.org/wiki/documentation/show/ARMv7%20compatibility%20primer
Then there are the soft vs hard float issues, which are part hardware, part software.
Agreed.
http://wiki.openmoko.org/wiki/Binary_compatibility
It's probably not as bad as my (poor, incomplete) understanding is, but doing the translation on a more maturely supported (by/for euphoria) platform seems less risky. Of course, it doesn't hurt to try, and if it doesn't work, I don't think it will be subtle, but quick and catastrophic.
I disagree. If none of the existing eubins works, then this suggests to me that we've hit a new chip/float combo that isn't compatible with any of the existing ones - but not a maturity issue with the code itself. In this case, it is necessary to do cross-translation or even cross compiling to get a working binary - but this just means we need to build a bigger library of eubins.
Another issue I had was
Entirely unrelated to the maturity level of Euphoria's support for the ARM platform. Just saying.
that I couldn't use the cross compiler from my distro, because it linked to GLIBC 2.15, but raspbian uses GLIBC 2.13.
A good reason to use older distros and libraries when building software. Of course, you could have set up your own cross compiler as well - though that is a lot of extra hassle. Still, I can see the benefit of this - cross compiler on a gighertz multi-core intel box is probably faster overall than any other option (unless you have a super fast ARM processor), AND all your source code stays on the same box.
I tried several things to hack around this, but couldn't get it to work. The provided cross compilers, OTOH, worked right away with no extra hacks or worrying about setting the right options to target the specific chip, since that was already baked into everything.
Wouldn't cross translation have the same benefit though? You don't need to know those options to translate the Euphoria front-end into C code, and of course once you are compiling C code on the native machine itself, all that stuff should already be set up correctly.
For all of these reasons, I suspect that we probably won't be able to offer a single binary ARM distribution of euphoria that we can expect to work everywhere.
Interestingly enough, Debian seems to. An example:
http://packages.debian.org/squeeze/lighttpd-mod-trigger-b4-dl
Another one:
http://packages.debian.org/squeeze/libc6
(Well, Debian has armel and armhf - armel is the main one, but armhf is an attempt to supercede armel iiuc with better support for hardfloat. There is also an obsolete and abandoned arm arch, which is based on some old and now obsolete binary API. http://wiki.debian.org/ArmPort )
16. Re: build error
- Posted by mattlewis (admin) Apr 03, 2013
- 1742 views
It's probably not as bad as my (poor, incomplete) understanding is, but doing the translation on a more maturely supported (by/for euphoria) platform seems less risky. Of course, it doesn't hurt to try, and if it doesn't work, I don't think it will be subtle, but quick and catastrophic.
I disagree. If none of the existing eubins works, then this suggests to me that we've hit a new chip/float combo that isn't compatible with any of the existing ones - but not a maturity issue with the code itself. In this case, it is necessary to do cross-translation or even cross compiling to get a working binary - but this just means we need to build a bigger library of eubins.
Well, having enough arm eubins is part of more mature support, to me. Also, we don't currently have any "official" eubins for ARM. I think generous and adventurous souls have uploaded theirs.
that I couldn't use the cross compiler from my distro, because it linked to GLIBC 2.15, but raspbian uses GLIBC 2.13.
A good reason to use older distros and libraries when building software. Of course, you could have set up your own cross compiler as well - though that is a lot of extra hassle. Still, I can see the benefit of this - cross compiler on a gighertz multi-core intel box is probably faster overall than any other option (unless you have a super fast ARM processor), AND all your source code stays on the same box.
Yes, and using the software recommended by the target distro is almost always going to be easier.
I tried several things to hack around this, but couldn't get it to work. The provided cross compilers, OTOH, worked right away with no extra hacks or worrying about setting the right options to target the specific chip, since that was already baked into everything.
Wouldn't cross translation have the same benefit though? You don't need to know those options to translate the Euphoria front-end into C code, and of course once you are compiling C code on the native machine itself, all that stuff should already be set up correctly.
Right, translating is easy, and the machine on which you translate shouldn't matter at all (assuming you've set it up properly).
For all of these reasons, I suspect that we probably won't be able to offer a single binary ARM distribution of euphoria that we can expect to work everywhere.
Interestingly enough, Debian seems to. An example:
http://packages.debian.org/squeeze/lighttpd-mod-trigger-b4-dl
Another one:
http://packages.debian.org/squeeze/libc6
(Well, Debian has armel and armhf - armel is the main one, but armhf is an attempt to supercede armel iiuc with better support for hardfloat. There is also an obsolete and abandoned arm arch, which is based on some old and now obsolete binary API. http://wiki.debian.org/ArmPort )
Hmm...yes, they seem to have some kind of fake out going on between soft and hard float stuff. It's still a bit over my head. They mention runtime detection of hard vs soft float. I think we'll need to figure that out in order to get the ABI correct.
Matt
17. Re: build error
- Posted by jimcbrown (admin) Apr 03, 2013
- 1703 views
Well, having enough arm eubins is part of more mature support, to me. Also, we don't currently have any "official" eubins for ARM. I think generous and adventurous souls have uploaded theirs.
We have official eubins for ARM: http://openeuphoria.org/eubins/linux/4.1.0/arm-32-bit/
(They are out of date, but this is the case for all the linux eubins, sadly.)
Hmm...yes, they seem to have some kind of fake out going on between soft and hard float stuff. It's still a bit over my head. They mention runtime detection of hard vs soft float. I think we'll need to figure that out in order to get the ABI correct.
I'd have hoped that GCC would have taken care of all that stuff for us...
18. Re: build error
- Posted by mattlewis (admin) Apr 03, 2013
- 1698 views
Well, having enough arm eubins is part of more mature support, to me. Also, we don't currently have any "official" eubins for ARM. I think generous and adventurous souls have uploaded theirs.
We have official eubins for ARM: http://openeuphoria.org/eubins/linux/4.1.0/arm-32-bit/
(They are out of date, but this is the case for all the linux eubins, sadly.)
Oh, whoops, I wasn't paying attention, apparently.
Hmm...yes, they seem to have some kind of fake out going on between soft and hard float stuff. It's still a bit over my head. They mention runtime detection of hard vs soft float. I think we'll need to figure that out in order to get the ABI correct.
I'd have hoped that GCC would have taken care of all that stuff for us...
I don't think it can. I mean, as far as our compiled C it's no problem, but be_callc.c is a whole 'nother ball of wax. In general, 4 integer registers are used for passing parameters, and then stuff goes onto the stack.
For hardfloat, the floating point registers are used (and actually, I suspect that my current implementation will break when passing floats instead of doubles, but I haven't tested it yet...we need to add C_FLOAT tests to t_callc.e). There are 16 of those, and I think they all can be used. They're also used to return floating point return values.
But soft floats break up floating point values across registers / the stack (well, doubles get spread out, floats obviously fit inside of the regular 32-bit registers).
Matt
19. Re: build error
- Posted by EUWX Apr 03, 2013
- 1691 views
coconut is asking "Hi, I'm trying to build euphoria on my Efika Mx (ARM v7l). "
He is being advised thusly:
"We have official eubins for ARM: http://openeuphoria.org/eubins/linux/4.1.0/arm-32-bit/"
The "official build" you are advising him to use is
"eubin-arm-cortex-a8-2012-01-13-ee49c6b8a340.tar.gz"
Surely by now, and after all the discussion about Euphoria on tablets, you should have realized that ARM V7 hardware WILL NOT WORK with software designed for ARM Cortex A8
20. Re: build error
- Posted by jimcbrown (admin) Apr 03, 2013
- 1702 views
coconut is asking "Hi, I'm trying to build euphoria on my Efika Mx (ARM v7l). "
He is being advised thusly:
Incorrect. He has not been advised to use the following eubin:
The "official build" you are advising him to use is
"eubin-arm-cortex-a8-2012-01-13-ee49c6b8a340.tar.gz"
He has been advised to use an eubin (but not necessarily an official one, as sadly the official eubins for linux are out of date), and he has successfully run an unofficial eubin: http://openeuphoria.org/forum/m/121251.wc
Surely by now, and after all the discussion about Euphoria on tablets, you should have realized that ARM V7 hardware WILL NOT WORK with software designed for ARM Cortex A8
I've read that the ARM Cortex A8 is under the ARMv7 family:
http://wanderingcoder.net/2010/07/19/ought-arm/
Subsequent devices used ARM11 as well, up until the iPhone 3GS which started using the Cortex A8 processor core, used in all iOS devices released since then at the time of this writing (this is not yet certain, but strongly suspected, in the case of the iPhone 4). This core implements the ARMv7 instruction set, or in short, supports ARMv7.
With that in mind, we do have coconut's report on this thread that it didn't work - but the difference might have been an ABI issue, or hard vs soft floats, etc... (that is, a software and not a hardware issue).
21. Re: build error
- Posted by coconut Apr 04, 2013
- 1719 views
coconut is asking "Hi, I'm trying to build euphoria on my Efika Mx (ARM v7l). "
He is being advised thusly:
Incorrect. He has not been advised to use the following eubin:
The "official build" you are advising him to use is
"eubin-arm-cortex-a8-2012-01-13-ee49c6b8a340.tar.gz"
He has been advised to use an eubin (but not necessarily an official one, as sadly the official eubins for linux are out of date), and he has successfully run an unofficial eubin: http://openeuphoria.org/forum/m/121251.wc
Surely by now, and after all the discussion about Euphoria on tablets, you should have realized that ARM V7 hardware WILL NOT WORK with software designed for ARM Cortex A8
I've read that the ARM Cortex A8 is under the ARMv7 family:
http://wanderingcoder.net/2010/07/19/ought-arm/
Subsequent devices used ARM11 as well, up until the iPhone 3GS which started using the Cortex A8 processor core, used in all iOS devices released since then at the time of this writing (this is not yet certain, but strongly suspected, in the case of the iPhone 4). This core implements the ARMv7 instruction set, or in short, supports ARMv7.
With that in mind, we do have coconut's report on this thread that it didn't work - but the difference might have been an ABI issue, or hard vs soft floats, etc... (that is, a software and not a hardware issue).
Update, I found a eubins in the wiki that works on my efikamx , but I can build because of bug into maps.e and cmdline.e I opened tickets for those bugs 860,861,862.
Jacques
22. Re: build error
- Posted by Jerome Apr 04, 2013
- 1726 views
I found a eubins in the wiki that works on my efikamx , but I can build because of bug into maps.e and cmdline.e I opened tickets for those bugs 860,861,862.
Jacques, would you mind sending me an email at 'ijh3 at ufl dot edu'? I have some eubins that I would like you to try on your efika notebook!
Thanks,
Ira
23. Re: build error
- Posted by mattlewis (admin) Apr 04, 2013
- 1611 views
At one point, I ran "make all" directly on the pi using a binary posted by rkdavis (IIRC). I didn't time it, but "all day" seems like a decent estimation.
Using a fresh interpreter and a translated eutest, it took about 33 minutes to run the interpreted tests. Down to these failures:
Test results summary: FAIL: t_de_memory.e FAIL: t_serialize.e FAIL: t_socket.e FAIL: t_c_slice_past_end_double.e Files (run: 153) (failed: 4) (97% success)
There was a problem with poke4. In the C implementation, we were casting a double to an unsigned integer. When poking a large negative number, however, this would fail on ARM. So something like -0x4000_0000 was communicated as 0 to the back end.
I cannot say that this was causing any of Jacques' problems, but it was a serious problem.
Matt
24. Re: build error
- Posted by jimcbrown (admin) Apr 04, 2013
- 1540 views
Update, I found a eubins in the wiki that works on my efikamx , but I can build because of bug into maps.e and cmdline.e I opened tickets for those bugs 860,861,862.
Jacques
So you can't build at all because of those bugs? Using the latest map.e from hg doesn't help at all?
Hmm. Maybe downgrading to a 4.0 version of map.e is worth looking at.
25. Re: build error
- Posted by jimcbrown (admin) Apr 04, 2013
- 1571 views
This time I get another error:
/usr/share/euphoria/include/std/map.e:508 in function get() subscript value 0 is out of bounds, reading from a sequence of length 256
Can you try it with an alternative std/map.e ? I created one here, http://openeuphoria.org/pastey/207.wc
I'm curious if this will make a difference for you.
26. Re: build error
- Posted by mattlewis (admin) Apr 04, 2013
- 1559 views
Update, I found a eubins in the wiki that works on my efikamx , but I can build because of bug into maps.e and cmdline.e I opened tickets for those bugs 860,861,862.
Jacques
So you can't build at all because of those bugs? Using the latest map.e from hg doesn't help at all?
Hmm. Maybe downgrading to a 4.0 version of map.e is worth looking at.
I think it is deeper issues than that. I haven't been able to reproduce those errors on x86 or x86-64. I have found other issues on ARM that I haven't completely solved. They seem to involve casting doubles to pointers.
I previously translated and built a full suite of euphoria binaries using a binary from rkdavis. I just translated using:
pi@raspberrypi ~/hg/euphoria/source $ eui -v Euphoria Interpreter v4.1.0 development 32-bit Linux, Using System Memory Revision Date: 2013-04-04 15:54:16, Id: 6076:fbaa1f2ea7a9
Matt
27. Re: build error
- Posted by jimcbrown (admin) Apr 04, 2013
- 1539 views
I think it is deeper issues than that. I haven't been able to reproduce those errors on x86 or x86-64. I have found other issues on ARM that I haven't completely solved. They seem to involve casting doubles to pointers.
Agreed. I suspected that at least some of the issues that Jacques is seeing are somehow related to hashing (or how hashing interacts with the way we deal with doubles, pointers (for sequences and objects), etc) - which is why I suggested trying my hash-free (but much slower) alternative.
28. Re: build error
- Posted by coconut Apr 05, 2013
- 1669 views
This time I get another error:
/usr/share/euphoria/include/std/map.e:508 in function get() subscript value 0 is out of bounds, reading from a sequence of length 256
Can you try it with an alternative std/map.e ? I created one here, http://openeuphoria.org/pastey/207.wc
I'm curious if this will make a difference for you.
Sorry for not replying sooner but m'y efikamx is broken. When it Will be repaired i comeback.
Jacques