On Thursday 02 September 2010 15:42:56 you wrote:
> Hi Vijay and Mateusz,
> > On Thursday 02 September 2010 13:52:32 you wrote:
> > > Thanks for the help. I have made quite a few changes to adapt pico to
> > > the plan9 compiler. I don't think there is a compiler flag that let me
> Oh, so this sounds rather tough. Is Plan9 not a POSIX system?
It is not by itself. It was written as a Unix replacement, by the fathers of
Unix. They found full Unix compatibility too constraining at some point.
However, Plan 9 shares a lot of core concepts with Unix; in a way, it just
takes Unix one logical step further. A lot of semantics and APIs is similar
enough to POSIX for a thin, straightforward POSIX compatibility environment
(APE) to exist.
On the other hand, a lot of P9 innovations trickled down to recent Unix
derivatives and wannabes, for example the clone() syscall, bitblit API, UTF-8
and so on.
Moreover, a lot of Plan 9 softwari can, and indeed has been, ported to POSIX
-- `Plan 9 from Userspace' resulted. Some functionality is missing because
POSIX is very lacking in some areas, but it's pretty useful anyway -- and
makes up my daily work environment ;)
As a curiosity, there are no shared libraries in P9 -- only what we call
`static linking'. It's awesome in the longer run <3
Misc resources related to Plan 9: http://cat-v.org/
> > > align addresses. I have to search further or repeat the changes in the
> > > bigpico and try to compile that. Anyway, have to wait till I get a
> Porting picoLisp to a non-POSIX system might be very difficult, as a lot
> of functionality depends on it. In this regard, miniPicoLisp is much
> easier, as it uses more or less only plain vanilla C.
I was pondering porting picoLisp to P9 for several months, and (with my
limited understanding of P9) it doesn't seem very problematic. Never expected
the matter of symbol alignment, thou.
> > I think you could create a C program that reads symbols & their values
> > from a compiled (and possibly linked) executable and writes a new
> > executable with functions aligned `by hand' to desired value. There is a
> > bunch of functions in
> > http://plan9.bell-labs.com/magic/man2html/2/symbol
> > http://plan9.bell-labs.com/magic/man2html/2/object
> > and
> > http://plan9.bell-labs.com/magic/man2html/2/mach
> > which let you read and write symbols from & to files.
> Cool. But is it really able to relocate symbols? I couldn't detect that
> from scanning the above resources.
> If it does, what happens to other references from inside the object code
> to those relocated symbols?
I dunno for sure. My understanding is, the linker (2l, as in two-ell) uses
those APIs to output executables. So it's either `use them to read a compiled
executable and generate a new executable', or `modify the underlying library
and/or linker so it outputs stuff aligned'.
Mateusz Jan Przybylski
``One can't proceed from the informal to the formal by formal means.''