[SqNOS] Building SqueakNOS on Ubuntu

Javier Pimás elpochodelagente at gmail.com
Sun Jan 23 23:52:30 UTC 2011


Hi! First of all, thank's for trying. The good news is that this is a known
problem and that there is a workaround to it. The bad news is that it's not
as good as we would like.

Unfortunately for Ubuntu 10.10, it ships with a libc version that is
thightly coupled to linux signaling mechanisms, and including the longjmp
part of it causes a chain of undefined references to that mechanism. We
haven't implemented a solution to this yet so what we do is to open a Ubuntu
10.04 in a VM, sharing the sources directory, and compiling inside it. Libc
version of 10.04 works just fine. That's it, any other thing can be done
outside, but compiling the kernel, I'm afraid not.

On the other hand, just some tips:
- if you are going to compile, I suggest cloning the latest git, we have
worked for around a year on it so it is pretty much better (we shall release
a new package soon anyway).
- maybe you don't need to compile the kernel at all. The idea is to work at
high level, so only in counted cases should you recompile it. I can even
pass you a VMWare bundle with everything updated if you want.
- As david said, you may just comment the lines that call longjmp. We use
IA32Plugin (Alien plugin) for callbacks to implement paging, but if you
don't activate it (activation has to be done manually), there shouldn't be
any problem.

Hope that helps!

regards,
           Javier

On Mon, Jan 24, 2011 at 12:44 AM, David T. Lewis <lewis at mail.msen.com>wrote:

> On Sun, Jan 23, 2011 at 03:09:32PM -0500, Ryan Macnak wrote:
> > Hello,
> >
> > I am trying to build SqueakNOS on Ubuntu 10.10, using the sources from
> > SqueakNOS-19-feb-2010.tar.bz2 from SourceForge.  It gets as far as the
> final
> > link step but then fails because of an undefined reference to
> __longjmp_chk.
> >  Any thoughts on what is going wrong?
> >
> > ld -o ../release/SqueakNOS.kernel -T kernel.ld loader.o
> > ../release/SqueakNOS.obj
> > ../release/SqueakNOS.obj: In function `callbackLeave':
> > /home/ryan/platforms/squeaknos/gnu-interp.c:3059: undefined reference to
> > `__longjmp_chk'
> > make[1]: *** [SqueakNOS.kernel] Error 1
> > rm loader.o
> > make[1]: Leaving directory `/home/ryan/platforms/squeaknos/boot'
> > make: *** [iso] Error 2
> >
> > Thanks,
> > Ryan
>
> I cannot answer your question WRT the link error, but I would note that
> the callbackLeave() and callbackEnter() functions are from method
> category "callback support" in class Interpreter. They are unreferenced
> in the intepreter itself, and are called only by a couple of plugins
> that you are surely not using anyway (IA32ABI and ObjectiveCPlugin).
>
> That suggests that you can probably just comment these two function out
> in your interp.c and be no worse off. If you are generating your own
> source with VMMaker, just delete the two methods in Interpreter callback
> support.
>
> HTH,
> Dave
>
> _______________________________________________
> SqueakNOS mailing list
> SqueakNOS at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/squeaknos
>



-- 
Javier Pimás
Ciudad de Buenos Aires
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeaknos/attachments/20110124/94ae0064/attachment.htm


More information about the SqueakNOS mailing list