processing of /etc/ld.so.conf in ld.so itself (rather than in /etc/rc):
- added do_conf function and call to it in main to implement internal
processing of /etc/ld.so.conf
- moved maintenance of dir_list to dodir, with an added argument to
dodir to specify whether dir_list should be updated
- added option '-c' to suppress processing of /etc/ld.so.conf
- added option '-S' to suppress processing of std directories (but not
/etc/ld.so.conf)
- modified option -s to suppress processing of _both_ std directories
and /etc/ld.so.conf (i.e., it is equivalent to -cS)--this was done
so that users and scripts that interpret -s as meaning "process
only directories specified on the command line" would not be
startled
From PR #4031. One change was not committed, since it was unnecessary
(option variables are in the BSS, and do not need to be initialized to
0 explicitly).
Plus one change from me:
- getopt() returns -1 when completed, not EOF.
had not be implemented. It would cause an "adress space leak" and, if
the same object would opened multiple time, unwanted relocations.
Re: Comment from Chris:
"The a.out ld.so has some problems with dlclose. It doesn't properly
unmap objects which are dlclosed. That's a known problem (though a
serious one for programs which dlopen then dlclose lots of objects,
because it causes address space exhaustion), but it has a
previously-unknown side-effect.
If a single object is dlopened, then dlclosed, then dlopened _again_,
the relocations will be processed again. That causes obvious
problems."
- separate out the common files used by rtld ldd ld
- move machine dependent files into arch
- move ld in its own directory
- factor out .PATH and CFLAGS common to all Makefiles
<bsd.prog.mk> was being included before an .if !defined(NOPIC)
which added rtld to the SUBDIRs. This was so that the definition
of NOPIC would get picked up. Unfortunately, this is WRONG, because
after <bsd.prog.mk> is included you shouldn't be able to touch SUBDIR
as the magic has already happened.
However, a complementary bug in the .mk files kept anyone from
noticing until now.
Fixed by moving the include of <bsd.prog.mk> to the bottom and
including <bsd.own.mk> above the .if !defined, which is the correct
way to do this sort of thing.
we're doing a dynamic link for, and change the page size used for offset
and size calculations if necessary. Allows the same ld.so to be used with
mixed m68k4k and m68k8k executables and libraries.
Thanks a million to Gordon Ross for the help in making this work!