|
List Info
Thread: intel mac build error
|
|
| intel mac build error |

|
2006-02-14 11:15:22 |
|
Hi all,
Tried building io on an intel mac this morning and got:
...
cc -Os -g -Wall -I. -Ibase -ISkipDB -DSANE_POPEN -falign-loops=16 -L.
-L_libs -Lbase/_libs -o io main.c -lIoBase -lIoVM -ldl
cd ..
./vm/io _build.io
Io Scheduler error: no Coro_setupJmpbuf entry for this platform
.make: *** [all] Error 1
Any ideas?
Best,
-ryan
|
| intel mac build error |

|
2006-02-14 15:40:51 |
|
On 2/14/06, Ryan Raaum <ryan.raaum gmail.com> wrote:
> Hi all,
>
> Tried building io on an intel mac this morning and got:
>
> ...
> cc -Os -g -Wall -I. -Ibase -ISkipDB -DSANE_POPEN -falign-loops=16 -L.
> -L_libs -Lbase/_libs -o io main.c -lIoBase -lIoVM -ldl
> cd ..
> ./vm/io _build.io
> Io Scheduler error: no Coro_setupJmpbuf entry for this platform
> .make: *** [all] Error 1
>
>
> Any ideas?
Io's coroutine implementation relies on knowledge of how each
platform's stacks work. What will be needed is some investigation on
what the new intel macs use. Then one can edit the correct files so
the build can verify that you are on a supported platform and thus
compile the correct code.
Brian.
|
| intel mac build error |

|
2006-02-14 16:21:15 |
|
On 2/14/06, Brian Mitchell <binary42 gmail.com> wrote:
> On 2/14/06, Ryan Raaum <ryan.raaum gmail.com> wrote:
> > Hi all,
> >
> > Tried building io on an intel mac this morning and got:
> >
> > ...
> > cc -Os -g -Wall -I. -Ibase -ISkipDB -DSANE_POPEN -falign-loops=16 -L.
> > -L_libs -Lbase/_libs -o io main.c -lIoBase -lIoVM -ldl
> > cd ..
> > ./vm/io _build.io
> > Io Scheduler error: no Coro_setupJmpbuf entry for this platform
> > .make: *** [all] Error 1
> >
> >
> > Any ideas?
>
> Io's coroutine implementation relies on knowledge of how each
> platform's stacks work. What will be needed is some investigation on
> what the new intel macs use. Then one can edit the correct files so
> the build can verify that you are on a supported platform and thus
> compile the correct code.
Is there anything I (with my rather limited hackery) can do to determine this?
(It's no huge deal for me, the precompiled mac binaries seem to work
just fine... but if there's anything I can do to be helpful to the
overall cause...)
-r
>
> Brian.
>
>
>
|
| intel mac build error |

|
2006-02-14 19:55:17 |
|
On 2/15/06, Ryan Raaum <ryan.raaum gmail.com> wrote:
> Is there anything I (with my rather limited hackery) can do to determine this?
Well, to me the platform specific coro stuff is all, "Add 16 bytes to
the stack frame. Oh? That failed? Try 24 bytes..." and so on. 
Steve and Olivier Ansaldi have recently been working on cleaning up
and isolating the coro code so now is a good time to talk to them
about it. Drop by the #io channel on freenode sometime and ask Steve
for some pointers.
> (It's no huge deal for me, the precompiled mac binaries seem to work
> just fine... but if there's anything I can do to be helpful to the
> overall cause...)
Jonathan.
|
| intel mac build error |

|
2006-02-14 20:13:12 |
|
> (It's no huge deal for me, the precompiled mac binaries seem to work
> just fine... but if there's anything I can do to be helpful to the
> overall cause...)
I tried a change based on other BSDs x86 implemention. The process gets
about two dozen or so frames into a locals_performOn_ before a call to the
lexer causes stack corruption. I tried the fix below early last week and
have had no time to investigate beyond. The problem happens as State it
initializing itself, perhaps when it loading from IoVMCode.c? Not sure
yet... but it is likely a that an adjustment for the proper size or range
of the stack as in the PPC implementation, will get it working.
If Steve can comment quickly on what the PPC implementation is doing, I
can do a fix/compile/test here then submit a patch.
#if defined(_BSD_PPC_SETJMP_H_)
// OSX/PPC
#define setjmp _setjmp
// no need for signal masks
#define longjmp _longjmp
memset(((char *)stack) + stacksize - 64, 0, 64); // very crude...
buf[0] = ((intptr_t)stack + stacksize - 64 + 15) & ~15;
buf[21] = (intptr_t)func;
#if defined(_BSD_I386_SETJMP_H)
// Our Macintel.
buf[9] = (intptr_t)(stack + stacksize); // sets ESP
buf[12] = (intptr_t)func; // sets EIP
...
On the same subject, anyone have experience with the mach_ and thread_
primitives in OS X? I would like to explore using the machine/user context
structures in conjunction with these functions and add simple
get/setcontext implementations. Last weekend, I discovered that
JavaScriptCore makes use of the ucontext_t and mcontext_t with their
garbage collector marks stack objects. (The
::markStackObjectsConservatively method of the Collector object.) The
trick is that thread_get_state() can not be called on the currently
executing thread. The implementation (an apple addition to the KJS code
base) contains i386 and ppc/ppc64 #defines and felt this might be nice
model for Io on OS X going forward. Any suggestions on how we might apply
this within the single-thread process of Io?
Dave
*
David Morford
Founder, Partner
Semanteme LLC
www.semanteme.com
|
[1-5]
|
|
|
about | contact Other archives ( Real Estate discussion Medical topics )
|