summaryrefslogtreecommitdiff
path: root/ldso/README
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2001-04-23 17:43:54 +0000
committerEric Andersen <andersen@codepoet.org>2001-04-23 17:43:54 +0000
commit66f269d2a51dae6a2cb10f1a9ae4aaeba815219b (patch)
treee2094832990caf6d849ba90e4b1a82a6264f86b3 /ldso/README
parentc4a3f3f81ea90e3df93c352ac0e2161a4bfd3327 (diff)
Initial checkin for ld.so. This is a combination of effort from Manuel Novoa
III and me. I've been working on stripping out arch dependant stuff and replacing it with generic stuff whenever possible. -Erik
Diffstat (limited to 'ldso/README')
-rw-r--r--ldso/README860
1 files changed, 860 insertions, 0 deletions
diff --git a/ldso/README b/ldso/README
new file mode 100644
index 000000000..025694ee3
--- /dev/null
+++ b/ldso/README
@@ -0,0 +1,860 @@
+
+Apr 20, 2001 -- Manuel Novoa III
+
+Inital port for uClibc from debian ld.so_1.9.11-9.tar.gz.
+
+Removed a.out support.
+
+"make" generates the ld-linux-uclibc.so.1, libdl.so.1, ldd, ldconfig
+ suitable for the target platform.
+
+"make DEVEL=true" generates the same files, but ld-linux-uclibc.so.1 and
+ ldconfig are modified to not conflict with the devel platform system
+ libs. (This is only of use if TARGET_ARCH == NATIVE_ARCH.) These
+ modified versions ignore /lib and /usr/lib and look for shared libs
+ only in $(INSTALL_DIR)/lib. The modified ldconfig writes ld.so.cache
+ in $(INSTALL_DIR)/etc.
+
+The above assumes you've set the DYNAMIC_LINKER to /lib/ld-linux-uclibc.so.1
+in extra/gcc-uClibc/Makefile.
+
+Todo:
+
+Remove unneeded code in util/ldd.c.
+Link against static uClibc instead of using custom routines. ???
+Lots more cleanup... especially the arch-dependent Makefiles.
+
+****************** original ld.so.lsm file **************************
+Begin3
+Title: Linux shared, dynamic linker and utilities.
+Version: 1.9.11
+Entered-date: 01MAY99
+Description: This package contains ld.so, ld-linux.so, ldconfig,
+ ldd and libdl.
+Keywords: dynamic linker, shared library, ld.so, ld-linux.so,
+ ldconfig, ldd, libdl
+Author: david@ods.com (David Engel)
+Maintained-by: david@ods.com (David Engel)
+Primary-site: tsx-11.mit.edu /pub/linux/packages/GCC
+ ld.so-1.9.11.tar.gz
+Alternate-site: sunsite.unc.edu /pub/Linux/GCC
+ ld.so-1.9.11.tar.gz
+Platform: Linux 2.0.0 or later.
+Copying-policy: Copyrighted but freely distributable.
+End
+*********************************************************************
+ Original README starts here
+*********************************************************************
+
+This package contains my ELF dynamic linkers (ld-linux.so.1), dynamic
+linker library (libdl.so.1) and utilities (ldconfig and ldd) for Linux.
+
+You need Linux kernel 2.0.0 or later with ELF support compiled in
+(i.e. not loaded as a module) to use this package.
+
+The dynamic linker is used to bootstrap programs and load shared
+libraries at startup. The dynamic linker library is used to
+dynamically load shared libraries after a program is running.
+Ldconfig is used to automatically update the symbolic links to shared
+libraries and build the cache file used by the dynamic linker. Ldd is
+used to list the shared libraries used by a program.
+
+Please see the included manual pages for further details.
+
+To install, simply run "sh instldso.sh" as root. Ready-to-go versions
+of all end-products are provided so nothing should need to be compiled
+or linked. If you are still using libc5 as your primary development
+library, you should use the "--devfiles" option when running
+instldso.sh to install the file needed to compile with libdl.
+
+ELF versions of gcc, binutils and libc are now required to compile
+everything, including the old, unsupported, a.out dynamic linker.
+Finally, an optimization level of O2 or higher must be used to compile
+ld-linux.so and libdl.so due the use of inline functions.
+
+Notable contributors to this package include Eric Youngdale, Peter
+MacDonald, Hongjiu Lu, Linus Torvalds, Lars Wirzenius, Mitch D'Souza,
+Rik Faith, Andreas Schwab and Adam Richter (not necessarily in that
+order).
+
+###################### IMPORTANT NOTICES #############################
+
+A.OUT SUPPORT:
+
+As of ld.so-1.9.0, the old, a.out dynamic loader is no longer
+officially supported. The code is still included and built, but I
+make no promises that it will work. I will accept patches for it,
+but they will not be tested by me.
+
+GLIBC (AKA LIBC6) SUPPORT:
+
+As of ld.so-1.9.0, the main focus of this package is to ease the
+transition to libc6. No significant, new features are expected to be
+added. If you need new features, switch to libc6.
+
+Except for libpthread.so, the sonames of the core libraries provided
+with libc6 have been chosen so they do not conflict with those
+provided by libc5 and ld.so. However, the current plan is not use
+new, nonconflicting sonames for other libraries such as ncurses and
+X11. This presents two problems. First, libraries using the same
+soname for both libc5 and libc6 can not be placed in the same
+directory. Second, the dynamic linkers need to make sure not to load
+a library for the wrong version of libc.
+
+The first problem is easy. Just move the old, libc5-based libraries
+to new directories (e.g. /lib/libc5-compat, /usr/lib/libc5-compat,
+etc.) and add those directories to /etc/ld.so.conf. Then install the
+new, libc6-based versions in the standard places.
+
+The second problem is more difficult. Ideally, the dynamic linkers
+would be changed to perform a complete dependency analysis on every
+library to be loaded to make sure the wrong versions aren't used.
+This approach doesn't seem worth the added complexity, especially
+since we now have symbol versioning for ELF libraries. Instead a
+simpler approach will be used, at least initially.
+
+Ldconfig has been modified to perform a (currently simple) dependency
+analysis on libraries and to store an indication in /etc/ld.so.cache
+of whether a library is for libc5, libc6 or an unknown libc. The
+dynamic linkers then only need to make a simple check at run-time to
+make sure they don't load the wrong version of a library.
+
+The dynamic linker for libc5 provided in this package, has already
+been modified to use the new information in /etc/ld.so.cache. For
+glibc versions 2.0.1 and earlier, the dynamic linker for libc6 needs
+the patch contained in glibc.patch. You should apply the patch and
+rebuild glibc before using the new ldconfig.
+
+As stated above, the dependency analysis currently done by ldconfig is
+rather simple. Basically, it looks for the sonames used by the
+various versions of libc, libm and libdl. For any approach using a
+dependency analysis such as this to work, it is very important that
+shared libraries be built with complete dependency information. This
+can be done by using the appropriate -l options when running 'gcc
+-shared'. For example, when building libfoo.so which depends on libc
+and libbar, you should add -lbar and -lc gcc command line.
+
+######################################################################
+
+Changes in version 1.9.11:
+
+ Fixed a bug in ld-linux.so where a reference to an
+ undefined symbol could cause a segfault.
+
+ Added a clarification for LD_PRELOAD to the ld.so manual
+ page and added a symlink for ld-linux.so (Bug#33123).
+
+ Don't install ldd for Debian except for the m68k arch
+ because glibc 2.1 now includes it (Bug#35458).
+
+Changes in version 1.9.10:
+
+ Changed ldconfig to issue a warning and not overwrite a
+ regular file with a symlink (Bug#30859).
+
+ Changed Debian packaging to conflict with and replace the
+ ldconfig package (Bug#29398).
+
+Changes in version 1.9.9:
+
+ Changed ld-linux.so and libdl.so to match glibc by not
+ allowing user preloads of system libraries into setu/gid
+ binaries unless the library itself is setuid.
+
+ Fixed problems in ld-linux.so on the sparc architecture
+ (Juan Cespedes).
+
+Changes in version 1.9.8:
+
+ Changed ldconfig to allow the expected type for all
+ libraries in a directory to be optionally specified
+ (Mark Phillips). See the ldconfig man page.
+
+ Changed ldconfig to use the same type names used in the
+ change above when the -p option is used.
+
+Changes in version 1.9.7:
+
+ Changed ldd for m68k to use /lib/ld.so.1 instead of
+ /lib/ld-linux.so.2.
+
+ Added support for dladdr to libdl.so (Eduard Gode).
+
+ Fixed a small memory leak in libdl.so (Richard Garnish).
+
+ Fixed a bug in ldconfig when the -l option was used on a
+ filename without a '/' in it.
+
+ Updated the man pages (Bug#6404, Bug#9721, Bug#10652,
+ Bug#13494 and Bug#14127). They could still use some work.
+
+ No longer install the info page since it's way out of date.
+
+ Fixed minor Debian packaging problems (Bug#13160,
+ Bug#15577 and Bug#19345).
+
+Changes in version 1.9.6:
+
+ Changed ldd to not use the glibc dynamic linker when run
+ on a libc5-based shared library.
+
+ Added a -q option to ldconfig which causes warnings not
+ to be printed (Bob Tinsley).
+
+ Dropped support for the Debian libdl1-dev package.
+
+ Changed ld-linux.so to be compilable with gcc 2.8.0 (Sven
+ Verdoolaege)
+
+Changes in version 1.9.5:
+
+ Fixed a bug in ldd where ld-linux.so.2 was not called
+ correctly when run on shared libraries.
+
+ Fixed a problem in the previous version where some
+ Makefiles were not architecture independent.
+
+Changes in version 1.9.4:
+
+ Fixed a bug in ld.so introduced in the previous version
+ which broke preloads.
+
+ Turned a.out support back on by default, at least for the
+ time being. There are no promises to keep it.
+
+Changes in version 1.9.3:
+
+ Fixed buffer overflow bugs in ld-linux.so and ld.so.
+
+ Changed the README file a little to clarify a couple of
+ things.
+
+ Changed ldconfig to chroot to the specified directory when
+ the new -r option is used (Bob Tinsley).
+
+Changes in version 1.9.2:
+
+ Removed /usr/local/lib from the default /etc/ld.so.conf
+ for Debian (Bug#8181).
+
+ Changed ldconfig to be 64-bit clean (H.J. Lu).
+
+Changes in version 1.9.1:
+
+ Changed ldconfig to try to determine which libc a
+ library is for even if it doesn't have an soname.
+
+ Fixed a bug in ldconfig where an older library using
+ the glibc naming convention would be used instead of
+ a newer library.
+
+ Changed to ld-linux.so and libdl.so to not require the
+ libc5 headers in order to compile.
+
+ Changed ldconfig and ldd to be compilable with either
+ libc5 or libc6.
+
+Changes in version 1.9.0:
+
+ Changed to not build the old, a.out dynamic loader by
+ default.
+
+ Changed instldso.sh to require the --force option to
+ make sure users read the README file.
+
+ Changed instldso.sh to not install the libdl.so
+ development files unless the --devfiles option is used.
+
+ Changed instldso.sh to not strip binaries and libraries
+ if the --no-strip option is used.
+
+ Changed the Debian packaging to put the development files
+ which conflict with glibc in a new libdl1-dev package.
+
+ Changed ldd to use the glibc dynamic linker, if it is
+ available, when run on a shared library.
+
+ Changed ld-linux.so to print the load addresses of
+ libraries, ala glibc, when run by ldd.
+
+ Changed ld-linux.so to allow the libraries listed in
+ LD_PRELOAD to be separated by white space in addition to
+ colons.
+
+ Changed ld-linux.so to load the libraries listed in
+ LD_PRELOAD for setu/gid programs as long as they can be
+ loaded securely.
+
+ Changed ldconfig to update the symlinks for the dynamic
+ linkers.
+
+ Changed ldconfig to try to determine if an ELF library is
+ intended for libc5 or libc6 and save the infomation in the
+ cache. The mechanism used is rather simplistic and may
+ need to be enhanced.
+
+ Changed ldconfig to print the type of ELF library when
+ printing the cache.
+
+ Changed ld-linux.so to only load ELF shared libraries for
+ use with libc5 or an unknown libc.
+
+Changes in version 1.8.10:
+
+ Fixed a bug in ldconfig where a symlink could be used
+ instead of a regular file.
+
+ Fixed a Debian packaging problem for the sparc
+ architecture.
+
+Changes in version 1.8.9:
+
+ Changed ldconfig to only cache the symlinks it creates.
+ This make the behavior of the dynamic linkers consistent
+ with how they would behave if a cache was not used.
+
+ Changed ldconfig to cache the symlinks that it finds but
+ use the name of the symlink as the soname instead of the
+ actual soname.
+
+Changes in version 1.8.8:
+
+ Minor documentation updates to reflect recent changes.
+
+ Changed ld.so and ld-linux.so to perform more complete
+ validation on ld.so.cache before using it.
+
+ Changed ldconfig to accept libraries with inconsistent
+ sonames since glibc is going to use them. A warning is
+ still printed in debug mode.
+
+ Changed the install script to not strip _dl_debug_state
+ from ld-linux.so since gdb needs it.
+
+ More sparc fixes (Derrick Brashear).
+
+ Changed ldconfig to not issue a warning when a linker
+ script disguised as a shared library is found.
+
+ Fixed a bug in ld-linux.so where some registers were
+ not preserved on the first call to a function causing
+ problems for non-C-like languages (Tim Renouf).
+
+ Fixed a bug in ld-linux.so where global variables were
+ not always mapped correctly across dynamically loaded
+ libraries (Mikihiko Nakao).
+
+ Converted to new Debian source packaging format (Shaya
+ Potter).
+
+Changes in version 1.8.6/7:
+
+ Never released as some unofficial patches used these
+ version numbers.
+
+Changes in version 1.8.5:
+
+ Fixed a bug in ld.so introduced in the previous changes.
+
+Changes in version 1.8.4:
+
+ Changed ldconfig to completely ignore symbolic links.
+
+ Changed ldconfig to issue the warning concerning an
+ inconsistent soname in non-verbose mode.
+
+ Changed ld-linux.so back to not keep ld.so.cache mapped
+ at all times.
+
+ Changed Debian packaging to compress man pages, strip all
+ binaries (Bug#5125) and include a shlibs file.
+
+Changes in version 1.8.3:
+
+ Changed ld-linux.so to process LD_PRELOAD before
+ /etc/ld.so.preload.
+
+ Fixed a Debian packaging problem where libdl might not
+ be available if other packages were upgraded at the same
+ time (Debian Bug#4728).
+
+ Changed ldd to always exit with status 1 if any errors
+ occur (Debian Bug#4188).
+
+ Fixed some minor problems in instldso.sh (Mike Castle and
+ Wolfgang Franke).
+
+ Changed ldconfig to issue a warning in verbose mode when
+ skipping a library because the soname doesn't match.
+
+ More sparc fixes (Miguel de Icaza).
+
+ Don't link with -N when building ld.so (Alan Modra).
+
+ Changed ld-linux.so to better support position-dependant
+ libraries (NIIBE Yutaka).
+
+Changes in version 1.8.2:
+
+ Added a texinfo file for ld.so and libdl (Michael
+ Deutschmann).
+
+ Minor sparc and installation changes (Elliot Lee).
+
+ Added multiple architecture support for Debian (Leland
+ Lucius).
+
+ Changed libdl to better support RTLD_NEXT (Eric
+ Youngdale). Note: the exact meaning of ETLD_NEXT is
+ still not clear in all cases.
+
+ Removed some libc dependencies from libdl. Still need
+ to remove malloc and free.
+
+Changes in version 1.8.1:
+
+ Changed ld.so to be compiled as ELF. This also means
+ that ELF support is now required. A.out support is
+ still optional.
+
+ Changed ld-linux.so and libdl.so to use the rpath in the
+ executable instead of in the invoking shared library.
+
+ More m68k fixes (Andreas Schwab).
+
+ Various sparc fixes (Miguel de Icaza).
+
+ Changed ldcnnfig to ignore libraries ending in '~'.
+
+ Changed ldconfig to allow alternative conf and cache
+ files to be specified on the command-line.
+
+ Changed libdl.so to work when dlsym is passed a NULL
+ handle pointer.
+
+Changes in version 1.8.0:
+
+ Changed ld-linux.so to be more liberal when checking to
+ see if a library is already loaded. This should avoid
+ the duplicate loading problem for programs linkeed with
+ the -rpath option.
+
+ Various m68k fixes (Andreas Schwab).
+
+ Changed ld.so to only use LD_AOUT_LIBRARY_PATH and
+ LD_AOUT_PRELOAD and ld-linux.so to only use
+ LD_LIBRARY_PATH and LD_PRELOAD. LD_ELF_LIBRARY_PATH
+ and LD_ELF_PRELOAD are no longer supported.
+
+ Changed ld-linux.so to allow debugging of shared and
+ dynamically loaded libraries (H.J. Lu, Andreas Schwab).
+
+ Changed ld-linux.so to preload ELF shared libraries
+ listed in /etc/ld.so.preload. This allows secure
+ preloads, even for setuid/setgid programs.
+
+ Changed ld-linux.so to keep ld.so.cache mapped at all
+ times.
+
+ Changed ldconfig to allow #-style comments in ld.so.conf.
+
+ Removed various compiler warnings (Richard Sladkey and
+ David Engel).
+
+ Changed ldd to work on ELF shared libraries. This may
+ need a little more work.
+
+Changes in version 1.7.14:
+
+ Changed ldconfig to recognize ELF shared libraries
+ generated by post-2.6 versions of ld (Andreas Schwab).
+
+ Changed ldconfig to not remove stale links that do not
+ have a version number since they may be needed by ld.
+
+Changes in version 1.7.13:
+
+ Fixed a problem in ld-linux.so where a program linked
+ with a shared library that was not used could result in
+ a segmentation fault (H.J. Lu).
+
+Changes in version 1.7.12:
+
+ Fixed a problem in libdl.so where the wrong library
+ could be marked as global when RTLD_GLOBAL was used
+ (Lars Heete).
+
+ Installed dlfcn.h with libdl.so instead of requiring
+ it to be supplied with libc.
+
+ Removed support for libldso.a since it was nearly
+ impossible to use anyway.
+
+ Changed ldd to detect when the program being checked
+ exited abnormally.
+
+Changes in version 1.7.11:
+
+ Changed ld.so and ld-linux.so to delete all variations
+ of LD_PRELOAD and LD_LIBRARY_PATH for set[ug]id programs,
+ This makes it harder for broken set[ug]id programs to be
+ compromised.
+
+ Fixed a problem in libdl.so where dlsym would not accept
+ the handle returned from dlopen(0, *).
+
+Changes in version 1.7.10:
+
+ Changed ld-linux.so and libdl.so to support RTLD_GLOBAL
+ (Eric Youngdale).
+
+Changes in version 1.7.9:
+
+ Fixed a problem in ld-linux.so in detecting when the
+ new user/group information is provided by the kernel.
+
+ Fixed a problem in ld-linux.so where a buffer could be
+ overflowed if a large number of libraries were loaded
+ (Thomas Moore).
+
+Changes in version 1.7.8:
+
+ Changed the Makefiles and install scripts to support
+ a.out- and ELF-only configurations.
+
+ Changed ld-linux.so to use the user/group information
+ provided by linux 1.3.23+ instead of making syscalls
+ to get it.
+
+ Changed libdl.so to support RTLD_NEXT (Glenn Fowler).
+
+ Changed libdl.so to only execute the fini sections
+ instead of completely closing libraries at exit (Glenn
+ Fowler).
+
+ Changed ld.so and ld-linux.so to print the required
+ cache version when a mismatch is detected.
+
+ Changed ld-linux.so to not require on /dev/zero (Ralph
+ Loader).
+
+ Minor m68k cleanups (Andreas Schwab).
+
+Changes in version 1.7.7:
+
+ Fixed problems compiling with recent 1.3.x kernels.
+
+ Changed ld-linux.so to not use MAP_DENYWRITE until the
+ permission issue regarding it is resolved.
+
+Changes in version 1.7.6:
+
+ Fixed a bug in ld-linux.so dealing with a zero-length
+ LD_{ELF_}PRELOAD.
+
+ Changed ld.so and ld-linux.so to truncate all variations
+ of LD_PRELOAD and LD_LIBRARY_PATH for set[ug]id programs.
+
+Changes in version 1.7.5:
+
+ Changed ldconfig to recognize libraries without any
+ version number (eg. libXYZ.so).
+
+ Changed ldconfig to not generate a corrupt cache when
+ the disk is full or other write errors occur.
+
+ Changed ld-linux.so to map files with MAP_DENYWRITE to
+ keep them from being changed while the file is in use
+ (Rick Sladkey).
+
+ Changed libdl to not overwrite the scope pointer of a
+ library if it was already loaded (H.J. Lu).
+
+ Changed ld-linux.so so gdb can be used on constructors
+ (Eric Youngdale).
+
+ Changed ldconfig to ignore ELF libraries where the soname
+ does not match the file name on the assumption that it is
+ a used at compile-time (eg. libcurses.so -> libncruses.so).
+
+Changes in version 1.7.4:
+
+ Changed ld-linux.so and libdl to use the appropriate
+ rpaths when searching for shared libraries (Eric
+ Youngdale).
+
+ Changed ld-linux.so to search rpath before using the
+ cache. This more closely conforms to the IBCS standard.
+
+Changes in version 1.7.3:
+
+ Changed ld-linux.so to only print a library name the
+ first time it is loaded when run from ldd.
+
+ Fixed a bug in ldconfig where an invalid cache could be
+ generated if a directory was specified multiple times in
+ ld.so.conf.
+
+ Changed ld-linux.so so it will return the address of a
+ weak symbol when called from dlsym in libdl (Eric
+ Youngdale.
+
+Changes in version 1.7.2:
+
+ Changed libdl.so again to fix the undefined foobar
+ problem.
+
+Changes in version 1.7.1:
+
+ Changed libdl so it will compile at optimization level
+ O3 or higher.
+
+ Changed ldconfig to always create the cache file with
+ mode 644.
+
+ Changed ldconfig to not ingore valid symlinks.
+
+ Changed ldconfig to use the library name as the soname
+ for ELF libraries that do not have an soname entry.
+
+ Changed ld-linux.so to print the actual, requested library
+ name at the time it is loaded instead of trying to figure
+ it out after the fact.
+
+Changes in version 1.7.0:
+
+ Changed ldconfig to read the actual soname from the image
+ for ELF libraries and make it available to ld-linux.so.
+ The soname for DLL libraries is still determined by
+ truncating the minor numbers from the image file name.
+
+ Changed ldconfig to no longer support the undocumented
+ sort options.
+
+ Changed ld.so to require a valid cache to find libraries
+ in directories specified in ld.so.conf. /usr/lib and /lib
+ are still searched as a last resort. Ld-linux.so already
+ operated this way.
+
+ Fixed a bug in libldso.a where the arguments to
+ shared_loader were not parsed correctly (Wolfram Gloger).
+
+ Added support for RELA-style relocations under Linux/68k
+ (Andreas Schwab).
+
+ Changed ld-linux.so to only map the cache once for all
+ libraries instead of individually for each library.
+
+ Changed ld-linux.so continue searching the cache instead of
+ giving up when failing to load the first entry found.
+
+ Changed ld-linux.so to produce output similar to ld.so when
+ run from ldd or when errors occur.
+
+Changes in version 1.6.7:
+
+ Changed the install scripts to make sure that ld.so and
+ ld-linux.so are always usable.
+
+ Added support for Linux/Sparc (Eric Youngdale).
+
+ Added support for Linux/68k (Andreas Schwab).
+
+ Fixed various bugs in ld-linux.so dealing with closing
+ files, unmapping memory, dereferencing NULL pointers and
+ printing library names (David Engel, Eric Youngdale and
+ Andreas Schwab).
+
+ Replaced the manual page for libdl with a freely
+ distributable one (Adam Richter).
+
+ Fixed a bug in ld-linux.so where LD_LIBRARY_PATH and
+ LD_PRELOAD were not cleared for setuid/setgid programs.
+
+ Fixed a bug in libdl where dlsym would not return the
+ correct address of a symbol if it was redefined in another
+ library (Oleg Kibirev).
+
+ Changed ld-linux.so to use the following order to search
+ for libraries: LD_{ELF_}LIBRARY_PATH, ld.so.cache, rpath,
+ /usr/lib and /lib.
+
+ Changed ld-linux.so to not needlessly allocate memory when
+ using ld.so.cache.
+
+Changes in version 1.6.6:
+
+ Changed ldconfig to not warn about removing stale links
+ unless the -v option is specified.
+
+ Added manual pages for libdl (from FreeBSD/Sun)
+
+ Fixed a bug in ld.so dealing with preloading of objects
+ generated by recent versions of ld (Mitch D'Souza).
+
+ Fixed bugs in ldd where some errors were either not
+ detected or not printed.
+
+ Fixed a bug in ld-linux.so where the trailing nul in a
+ library name was not being copied (Owen Taylor).
+
+Changes in version 1.6.5:
+
+ Changed ldconfig to remove stale symbolic links.
+
+ Added debug hooks in ld-linux.so and libdl.so to be used
+ by a future version of gdb (Eric Youngdale).
+
+Changes in version 1.6.4:
+
+ Change ld-linux.so to print on stdout instead of stderr
+ when run from ldd.
+
+ Added support for Debian GNU/Linux packaging.
+
+Changes in version 1.6.3:
+
+ Fixed a bug in libdl when closing a library (H.J. Lu).
+
+Changes in version 1.6.2:
+
+ Changed the error message printed by ldd when a file is
+ not a.out or ELF. It used to only list a.out formats.
+
+ Changed ldconfig to no longer cache and set up links for
+ ld-linux.so.
+
+ Changed ld-linux.so and libdl to not conflict with upcoming
+ changes in kernel header files.
+
+ Changed ld-linux.so to not print preloaded libraries.
+
+Changes in version 1.6.1:
+
+ Updated the installation script.
+
+ Changed ld.so and ld-linux.so to look for LD_AOUT_PRELOAD
+ and LD_ELF_PRELOAD, respectively, before LD_PRELOAD.
+
+ Changed ld.so and ld-linux.so to use LD_AOUT_LIBRARY_PATH
+ and LD_ELF_LIBRARY_PATH, respectively, instead of
+ AOUT_LD_LIBRARY_PATH and ELF_LD_LIBRARY_PATH.
+
+Changes in version 1.6.0:
+
+ Changed ldconfig to process libraries which do not have
+ a minor version or patch level number.
+
+ Incorporated ld-linux.so and libdl.so.
+
+ Changed ld.so and ld-linux.so to not miss entries in the
+ cache when the fully qualified library is requested.
+
+ Changed ldconfig to use stdout instead of stderr when
+ printing the cache.
+
+Changes in version 1.5.3:
+
+ LD_PRELOAD enhancements (Tristan Gigold).
+
+ LD_PRELOAD patch for linux-68k (Andreas Schwab).
+
+Changes in version 1.5.2:
+
+ More ELF changes (Mitch D'Souza).
+
+ Changed ldconfig to also update the link for ld-linux.so.
+
+Changes in version 1.5.1:
+
+ More ELF and LD_PRELOAD changes (Mitch D'Souza).
+
+Changes in version 1.5.0:
+
+ Chnaged all executables to QMAGIC (Mitch D'Souza and Rick
+ Sladkey).
+
+ Added preliminary support for ELF to ldd and ldconfig (Eric
+ Youndale and H.J. Lu).
+
+ Added support for LD_PRELOAD to ld.so (Mitch D'Souza).
+
+ Removed the "advertising" clause from the copyright notices
+ in all source files.
+
+Changes in version 1.4.4:
+
+ Changed ldconfig to support QMAGIC libraries.
+
+ Fixed a bug in ld.so where some of the error messages had
+ transposed arguments.
+
+Changes in version 1.4.3:
+
+ Fixed an obscure bug in ld.so where an index was not being
+ incremented when a library was not found using the cache.
+
+Changes in version 1.4.2:
+
+ Changed ldconfig to issue a warning and continue instead
+ of an error and exiting when a link can't be updated.
+ This is useful when some libraries are imported on read-
+ only file systems, such as an NFS mounted /usr.
+
+ Changed ld.so to be more robust in searching for libraries.
+ A library is not considered found unless it can actually be
+ loaded. If a library is not found using the cache, the
+ standard directories are searched as in pre-cache versions.
+
+Changes in version 1.4.1:
+
+ Fixed minor Makefile problems.
+
+ Added support for linux-68k.
+
+ Fixed a bug in ld.so where libraries with absolute paths
+ were not handled correctly.
+
+ Changed ld.so to ignore the directory in the names of
+ shared libraries by default. This allows older libraries
+ with absolute paths, such as the XView libraries, to take
+ advantage of the cache support.
+
+ Added a minimal usage message to ldconfig.
+
+Changes in version 1.4:
+
+ Fixed bug in ld.so where minor version numbers were not
+ reported correctly when a minor version incompatibility
+ was found.
+
+ Fixed bug in ldconfig where libraries with subversion
+ numbers greater than 9 were not compared correctly.
+
+ Added Mitch D'Souza's support for suppressing warning
+ messages from ld.so about minor version incompatibilities.
+
+ Added Mitch D'Souza's support for using a cache to speed
+ up searching for libraries in the standard directories.
+
+ Added Mitch D'Souza's support for a debugging version of
+ ld.so. Link with -lldso if you think you are experiencing
+ dynamic linker problems.
+
+Changes in version 1.3:
+
+ Added support for libraries using absolute pathnames. If I
+ had known that the XView libraries used them, I would have
+ added this earlier.
+
+ Fixed a bug handling old libraries using a pathname beginning
+ with '/' or '/lib/'.
+
+Changes in version 1.2a:
+
+ Fixed a minor bug in ldd which caused all files, specifically
+ scripts, to be recognized as binaries. Thanks to Olaf Flebbe
+ for reporting it.
+
+David Engel
+david@sw.ods.com