1. build error

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

new topic     » topic index » view message » categorize

2. Re: build error

coconut said...

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

new topic     » goto parent     » topic index » view message » categorize

3. Re: build error

mattlewis said...
coconut said...

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?

new topic     » goto parent     » topic index » view message » categorize

4. Re: build error

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 

new topic     » goto parent     » topic index » view message » categorize

5. Re: build error

coconut said...

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.

new topic     » goto parent     » topic index » view message » categorize

6. Re: build error

jimcbrown said...
coconut said...

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?

new topic     » goto parent     » topic index » view message » categorize

7. Re: build error

jimcbrown said...
coconut said...

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?

new topic     » goto parent     » topic index » view message » categorize

8. Re: build error

jimcbrown said...

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

new topic     » goto parent     » topic index » view message » categorize

9. Re: build error

mattlewis said...
jimcbrown said...

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

new topic     » goto parent     » topic index » view message » categorize

10. Re: build error

coconut said...
mattlewis said...
jimcbrown said...

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

new topic     » goto parent     » topic index » view message » categorize

11. Re: build error

mattlewis said...

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

new topic     » goto parent     » topic index » view message » categorize

12. Re: build error

jimcbrown said...
mattlewis said...

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

new topic     » goto parent     » topic index » view message » categorize

13. Re: build error

mattlewis said...

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

mattlewis said...

Also, these things are sloooowwwww

"all day" seems like a decent estimation.

That's a good point.

new topic     » goto parent     » topic index » view message » categorize

14. Re: build error

jimcbrown said...
mattlewis said...

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

new topic     » goto parent     » topic index » view message » categorize

15. Re: build error

mattlewis said...

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

mattlewis said...

Then there are the soft vs hard float issues, which are part hardware, part software.

Agreed.

http://wiki.openmoko.org/wiki/Binary_compatibility

mattlewis said...

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.

mattlewis said...

Another issue I had was

Entirely unrelated to the maturity level of Euphoria's support for the ARM platform. Just saying.

mattlewis said...

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.

mattlewis said...

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.

mattlewis said...

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 )

new topic     » goto parent     » topic index » view message » categorize

16. Re: build error

jimcbrown said...
mattlewis said...

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. tongue Also, we don't currently have any "official" eubins for ARM. I think generous and adventurous souls have uploaded theirs.

jimcbrown said...
mattlewis said...

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.

jimcbrown said...
mattlewis said...

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

jimcbrown said...
mattlewis said...

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

new topic     » goto parent     » topic index » view message » categorize

17. Re: build error

mattlewis said...

Well, having enough arm eubins is part of more mature support, to me. tongue 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.)

mattlewis said...

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

new topic     » goto parent     » topic index » view message » categorize

18. Re: build error

jimcbrown said...
mattlewis said...

Well, having enough arm eubins is part of more mature support, to me. tongue 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.

jimcbrown said...
mattlewis said...

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

new topic     » goto parent     » topic index » view message » categorize

19. Re: build error

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

new topic     » goto parent     » topic index » view message » categorize

20. Re: build error

EUWX said...

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:

EUWX said...

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

EUWX said...

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/

said...

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

new topic     » goto parent     » topic index » view message » categorize

21. Re: build error

jimcbrown said...
EUWX said...

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:

EUWX said...

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

EUWX said...

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/

said...

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

new topic     » goto parent     » topic index » view message » categorize

22. Re: build error

coconut said...

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

new topic     » goto parent     » topic index » view message » categorize

23. Re: build error

mattlewis said...

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.

hg:euphoria/rev/fbaa1f2ea7a9

Matt

new topic     » goto parent     » topic index » view message » categorize

24. Re: build error

coconut said...

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.

new topic     » goto parent     » topic index » view message » categorize

25. Re: build error

coconut said...

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.

new topic     » goto parent     » topic index » view message » categorize

26. Re: build error

jimcbrown said...
coconut said...

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

new topic     » goto parent     » topic index » view message » categorize

27. Re: build error

mattlewis said...

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.

new topic     » goto parent     » topic index » view message » categorize

28. Re: build error

jimcbrown said...
coconut said...

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

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu