Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 7 Dec 1996 01:06:48 +0100 (MET)
From:      "Martin v.Loewis" <loewis@cs.tu-berlin.de>
To:        pgiffuni@fps.biblos.unal.edu.co (Pedro Giffuni S.)
Cc:        freebsd-emulation@FreeBSD.org
Subject:   Re: status of windows, dos and svr4 emulation
Message-ID:  <199612070006.BAA02982@cent.cs.tu-berlin.de>
In-Reply-To: <32A79D8D.75BC@fps.biblos.unal.edu.co> from "Pedro Giffuni S." at Dec 5, 96 08:14:15 pm

next in thread | previous in thread | raw e-mail | index | archive | help
> > of shared libs and other such resources. But FreeBSD's a.out's are more
> > than capable of handling such beasties. That is one of the principle
> > reasons why it has taken FreeBSD "so long" to implement elf.
> >   Linix is proud of thier ELFs, I have never understood why. I have hea=
> rd
> > that thier a.outs are not as robust, but I can't confirm it.
> >=20
> The exact term someone on this list used was "sucks" :). Yes fbsd is
> very superior in this sense to Linux, what I wonder is if I should
> prefer elf binaries under Linux=B4s emulation. It probably is the same
> thing.

Out of curiosity, can somebody explain (or point me to) what exactly makes
the FreeBSD a.out superior to similar formats found on other systems?
Specifically, I'd like to know the following things:
- How does it deal with relocation in shared libraries? Does it require
the shared libraries to be at a fixed address? If not, does it relocate
the image? If so, is the sharing among different processes preserved?
If not, how does it deal with global variables being at different places?
- Does it support construction of global C++ objects in the library?
(I.e. is there per-library startup code)
- Does it support libdl? I.e. can new objects be loaded after program started?
- How does it do versioning? Is there a concept of major and minor versions?
If a program requests a version, what library versions would be offered?
Is the location of the library stored in the image?
How does it deal with interdependecies between shared images? I.e. suppose
I have libfoo.1, libfoo.2 and libbar.1. libbar.1 depends on libfoo.1, and
libfoo.1 and libfoo.2 are mutually incompatible. Can I build new programs
so that they get linked with libfoo.2, unless I also need to link with 
libbar.1? If so, do I need to specify this requirement to the linker?

Curious,
Martin




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199612070006.BAA02982>