Re: link_elf.c vs link_elf_obj.c ?

From: Luigi Rizzo <rizzo_at_icir.org>
Date: Mon, 5 Feb 2007 04:00:38 -0800
On Mon, Feb 05, 2007 at 01:55:53PM +0200, Kostik Belousov wrote:
> On Fri, Feb 02, 2007 at 05:27:56PM -0800, Luigi Rizzo wrote:
> > does anyone know what is the difference between these two files ?
> > They seem to do two similar but slightly different things related
> > to elf file loading.
> > 
> > But diff shows large pieces of common code, and there is even
> > more commonality if you factor out whitespace changes and
> > variable renaming.
> 
> ELF specification defines 3 kinds of objects (putting core files aside);
> - executables
> - shared objects (AKA .so)
> - relocatable objects (AKA .o, created by assembler).
> Executables and .so are usually created by linker, while relocatables are the
> assembler output (although ld -r can glue several .o files into one).
> Executables and .so are in some sense finalized, and they contain a tables
> that are useful for dynamic linker. Also, they usually carry different kind
> of relocations then relocatables.
> 
> Now, in-kernel dynamic linker used for linking newly-loaded kld, shall deal
> with either .so-kind of modules (on FreeBSD, all arches except amd64), or
> relocatables (amd64). Two linkers you found deal with .so-kind (link_elf.c)
> or relocatables (link_elf_obj.c).
> 
> Reasons why amd64 cannot use shared objects for kld mostly caused by
> toolchains limitations and CPU architecture (it is impossible to create
> working non-PIC .so there).
> 
> Note that Solaris uses relocatables for modules.

so, if one had to write a few lines of comment on top of each
of these two files to tell what they do and how they differ,
what would you write ?

	cheers
	luigi
Received on Mon Feb 05 2007 - 11:00:39 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:05 UTC