Euphoria Ticket #875: Build 4.1 default branch on OS X

Still working on this, I figured I should make a ticket to reference when I push the files up.

I currently can build 32-bit Euphoria and it fails the same tests as 4.05.

I can build 64-bit Euphoria using 32-bit tools, but when I use it to run anything (sanity.ex is usually my first test) I'm getting a segment violation for trying to dereference a null pointer. The fault occurs in main-.c function _61_mysscanf().

I think it's still related to wonky casting between doubles and pointers.

Details

Type: Task Severity: Normal Category: Distribution
Assigned To: jaygade Status: Fixed, Please Confirm Reported Release: 4.1
Fixed in SVN #: View VCS: none Milestone:

1. Comment by mattlewis Jun 13, 2013

On a 64-bit build, it's never necessary to store a pointer as a double, because current chips' virtual memory space "only" goes to 48-bits.

When you say, "32-bit tools," are you translating with a 4.1 interpeter / translator? Given current issues with the 32-bit versions, you might also need to cross translate from Windows or Linux with a working 4.1 binary.

2. Comment by jaygade Jun 13, 2013

Yes, I used a 4.05 build to build 4.1 32-bit Euphoria. Once I tweaked configure a bit (and a couple of other things) then I used 4.1 32-bit to try to build 4.1 64-bit.

I can try to cross-translate on Linux I guess. I have not done that before.

I'm still poking around, figuring out what is going on.

3. Comment by jaygade Jun 13, 2013

Ah, well, apparently I get a segfault when building default on Linux too. That is, I can build a 64-bit version of Euphoria but when I run sanity.ex I get a segfault. I haven't tried gdb or anything yet.

That aside, how does one cross-translate from Linux and then compile on a different host? Is that something I can do with make or do I need to call euc with the right arguments directly?

4. Comment by mattlewis Jun 14, 2013

I just did a fresh 64-bit build of the default branch and sanity.ex passes for me.

The easiest way to cross translate is to configure for the target, then build a source tarball:

 
$ path/to/configure --plat OSX --arch x86.64 
 
$ make source-tarball 
 

5. Comment by jaygade Jun 14, 2013

Okay, I don't know what I'm doing wrong then.

My Linux machine (Linux Mint 14 x86-64 Kernel 3.5.0 gcc 4.7.2) had 4.05 official installed, and that is what I used. I downloaded the default branch with Mercurial.

./configure 
make 
cd build 
./eui ../../demos/sanity.ex 

I don't have example output right now. I did verify that configure set up for a x86-64 build.

I don't know how much time I'll have to play with it this weekend though.

6. Comment by jaygade Jun 15, 2013

See: hg:euphoria/rev/4147657746cb

changeset: 6125:4147657746cb user: Jason Gade <jaygade@yahoo.com> date: Thu Jun 13 16:49:04 2013 -0700 files: source/Makefile.gnu source/be_runtime.c source/configure description: ticket:875 changes, plus some tweaks to configure.

7. Comment by jaygade Jun 19, 2013

Build 6126 works (and 6125 should too). The -mno-sse switch is key to building 32-bit binaries properly on OS X.

Some of my test failures may have been from mixing 4.05 files with 4.1 files when building 64-bit; I've improved my build process (folder names, etc.) so I can hopefully track things down more easily.

Search



Quick Links

User menu

Not signed in.

Misc Menu