Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 25 Apr 1997 18:21:22 +0100 (BST)
From:      Doug Rabson <dfr@nlsystems.com>
To:        current@freebsd.org
Subject:   Kernel linker for review
Message-ID:  <Pine.BSF.3.95q.970425180421.17354E-100000@herring.nlsystems.com>

next in thread | raw e-mail | index | archive | help
This is the first cut of my kernel linker.  I would appreciate feedback,
flames, anything except indifference.

To install, unpack the tarball, and do something like this:

	(cd /usr/src/gnu/usr.bin/ld; patch -p) < ld.diffs
	(cd /usr/src/sys/i386/conf; patch -p) < i386_conf.diffs
	(cd /usr/src/sys/kern; patch -p) < kern.diffs
	(cd /usr/src/lib/libc; patch -p) < libc.diffs
	(cd /usr/src/gnu/usr.bin/ld; make clean all install)
	(cd /usr/src/lib/libc; make clean all install)
	cp bsd.mod.mk /usr/share/mk
	(cd sbin; make all install)
	(cd testmod; make all install)	# ignore warnings from ld
	(cd testmod2; make all install)	# ditto

I am part way through reworking i386/isa to make all drivers trivially
loadable but that is not ready for the light of day.

I use the -Bdynamic format for the kernel to get the global symbol table.
This adds about 80-90k of bloat for my local kernel configuration.  I use
-Bshareable format with non-pic objects for loadable files.  This gives me
hashed symbol tables and dependancies for free compared with raw .o files.

The linker is to support other file formats, including but not limited to
ELF. 

begin 644 kld.tar.gz
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
A"`@("`@("`@("`@("`@("`@("`@("!#^#SI51;$`&`$`
`
end


--
Doug Rabson				Mail:  dfr@nlsystems.com
Nonlinear Systems Ltd.			Phone: +44 181 951 1891




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.95q.970425180421.17354E-100000>