Date: Mon, 5 Feb 2007 13:55:53 +0200 From: Kostik Belousov <kostikbel@gmail.com> To: Luigi Rizzo <rizzo@icir.org> Cc: current@freebsd.org Subject: Re: link_elf.c vs link_elf_obj.c ? Message-ID: <20070205115553.GA3304@deviant.kiev.zoral.com.ua> In-Reply-To: <20070202172756.A2649@xorpc.icir.org> References: <20070202172756.A2649@xorpc.icir.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--mP3DRpeJDSE+ciuQ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable 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. >=20 > 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 t= he 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. --mP3DRpeJDSE+ciuQ Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (FreeBSD) iD8DBQFFxxtIC3+MBN1Mb4gRApokAJ9gQRV7hR3HBqDKihgmqZaK19x8qwCg8zdI PnHUzZ1t+lxphs6HAbZifGU= =Gbkf -----END PGP SIGNATURE----- --mP3DRpeJDSE+ciuQ--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070205115553.GA3304>