Subject: Re: HEADS UP: migration to fully dynamic linked "base" system
To: None <current-users@netbsd.org>
From: David Laight <david@l8s.co.uk>
List: current-users
Date: 08/27/2002 10:20:29
> Not really, it will give you a 24-bit offset relative to the PC with
> "garbage" bits in the upper 8 bits that will be ignored. [Or useful to
> Microsoft to keep a byte value in pointers stored in memory and breaking
> the program when upgrading to a a CPU with real 32 bit addressing :-)]
> The 68000/68010 only has a 24 bit address bus.
So the actual problem is that the shared libc is rather too large
(since it contains acres of stuff the average program dosn't need).
Now if you need to dlopen() a support library it is likely to
be relatively small - so you don't have real problem there.
Also such libraries are likely to have a limited set of
undefined symbols that need fixing up from libc - and the
program is likely to use most of them anyway.
Link the program with the static libc (but leave it dynamic),
add "-U <name> -U..." to your program link so that the
shared library will load even though you don't have all of libc.
Maybe you could (and it will probably break the ELF spec - for
portability at last) force ___start to execute the rtld code
(instead of the kernel), that way don't have two copies of the
libc functions used by rtdl.
David
--
David Laight: david@l8s.co.uk