OSDN Git Service

Initial checkin for ld.so. This is a combination of effort from Manuel Novoa
[uclinux-h8/uClibc.git] / ldso / README
1
2 Apr 20, 2001 -- Manuel Novoa III
3
4 Inital port for uClibc from debian ld.so_1.9.11-9.tar.gz.
5
6 Removed a.out support.
7
8 "make" generates the ld-linux-uclibc.so.1, libdl.so.1, ldd, ldconfig
9        suitable for the target platform.
10
11 "make DEVEL=true" generates the same files, but ld-linux-uclibc.so.1 and
12        ldconfig are modified to not conflict with the devel platform system
13        libs.  (This is only of use if TARGET_ARCH == NATIVE_ARCH.)  These
14        modified versions ignore /lib and /usr/lib and look for shared libs
15        only in $(INSTALL_DIR)/lib.  The modified ldconfig writes ld.so.cache
16        in $(INSTALL_DIR)/etc.
17
18 The above assumes you've set the DYNAMIC_LINKER to /lib/ld-linux-uclibc.so.1
19 in extra/gcc-uClibc/Makefile.
20
21 Todo:
22
23 Remove unneeded code in util/ldd.c.
24 Link against static uClibc instead of using custom routines. ???
25 Lots more cleanup... especially the arch-dependent Makefiles.
26
27 ****************** original ld.so.lsm file **************************
28 Begin3
29 Title:          Linux shared, dynamic linker and utilities.
30 Version:        1.9.11
31 Entered-date:   01MAY99
32 Description:    This package contains ld.so, ld-linux.so, ldconfig,
33                 ldd and libdl.
34 Keywords:       dynamic linker, shared library, ld.so, ld-linux.so,
35                 ldconfig, ldd, libdl
36 Author:         david@ods.com (David Engel)
37 Maintained-by:  david@ods.com (David Engel)
38 Primary-site:   tsx-11.mit.edu /pub/linux/packages/GCC
39                 ld.so-1.9.11.tar.gz
40 Alternate-site: sunsite.unc.edu /pub/Linux/GCC
41                 ld.so-1.9.11.tar.gz
42 Platform:       Linux 2.0.0 or later.
43 Copying-policy: Copyrighted but freely distributable.
44 End
45 *********************************************************************
46                    Original README starts here
47 *********************************************************************
48
49 This package contains my ELF dynamic linkers (ld-linux.so.1), dynamic
50 linker library (libdl.so.1) and utilities (ldconfig and ldd) for Linux.
51
52 You need Linux kernel 2.0.0 or later with ELF support compiled in
53 (i.e. not loaded as a module) to use this package.
54
55 The dynamic linker is used to bootstrap programs and load shared
56 libraries at startup.  The dynamic linker library is used to
57 dynamically load shared libraries after a program is running.
58 Ldconfig is used to automatically update the symbolic links to shared
59 libraries and build the cache file used by the dynamic linker.  Ldd is
60 used to list the shared libraries used by a program.
61
62 Please see the included manual pages for further details.
63
64 To install, simply run "sh instldso.sh" as root.  Ready-to-go versions
65 of all end-products are provided so nothing should need to be compiled
66 or linked.  If you are still using libc5 as your primary development
67 library, you should use the "--devfiles" option when running
68 instldso.sh to install the file needed to compile with libdl.
69
70 ELF versions of gcc, binutils and libc are now required to compile
71 everything, including the old, unsupported, a.out dynamic linker.
72 Finally, an optimization level of O2 or higher must be used to compile
73 ld-linux.so and libdl.so due the use of inline functions.
74
75 Notable contributors to this package include Eric Youngdale, Peter
76 MacDonald, Hongjiu Lu, Linus Torvalds, Lars Wirzenius, Mitch D'Souza,
77 Rik Faith, Andreas Schwab and Adam Richter (not necessarily in that
78 order).
79
80 ###################### IMPORTANT NOTICES #############################
81
82 A.OUT SUPPORT:
83
84 As of ld.so-1.9.0, the old, a.out dynamic loader is no longer 
85 officially supported.  The code is still included and built, but I 
86 make no promises that it will work.  I will accept patches for it, 
87 but they will not be tested by me.
88
89 GLIBC (AKA LIBC6) SUPPORT:
90
91 As of ld.so-1.9.0, the main focus of this package is to ease the
92 transition to libc6.  No significant, new features are expected to be
93 added.  If you need new features, switch to libc6.
94
95 Except for libpthread.so, the sonames of the core libraries provided
96 with libc6 have been chosen so they do not conflict with those
97 provided by libc5 and ld.so.  However, the current plan is not use
98 new, nonconflicting sonames for other libraries such as ncurses and
99 X11.  This presents two problems.  First, libraries using the same
100 soname for both libc5 and libc6 can not be placed in the same
101 directory.  Second, the dynamic linkers need to make sure not to load
102 a library for the wrong version of libc.
103
104 The first problem is easy.  Just move the old, libc5-based libraries
105 to new directories (e.g. /lib/libc5-compat, /usr/lib/libc5-compat,
106 etc.) and add those directories to /etc/ld.so.conf.  Then install the
107 new, libc6-based versions in the standard places.
108
109 The second problem is more difficult.  Ideally, the dynamic linkers
110 would be changed to perform a complete dependency analysis on every
111 library to be loaded to make sure the wrong versions aren't used.
112 This approach doesn't seem worth the added complexity, especially
113 since we now have symbol versioning for ELF libraries.  Instead a
114 simpler approach will be used, at least initially.
115
116 Ldconfig has been modified to perform a (currently simple) dependency
117 analysis on libraries and to store an indication in /etc/ld.so.cache
118 of whether a library is for libc5, libc6 or an unknown libc.  The
119 dynamic linkers then only need to make a simple check at run-time to
120 make sure they don't load the wrong version of a library.
121
122 The dynamic linker for libc5 provided in this package, has already
123 been modified to use the new information in /etc/ld.so.cache.  For
124 glibc versions 2.0.1 and earlier, the dynamic linker for libc6 needs
125 the patch contained in glibc.patch.  You should apply the patch and
126 rebuild glibc before using the new ldconfig.
127
128 As stated above, the dependency analysis currently done by ldconfig is
129 rather simple.  Basically, it looks for the sonames used by the
130 various versions of libc, libm and libdl.  For any approach using a
131 dependency analysis such as this to work, it is very important that
132 shared libraries be built with complete dependency information.  This
133 can be done by using the appropriate -l options when running 'gcc
134 -shared'.  For example, when building libfoo.so which depends on libc
135 and libbar, you should add -lbar and -lc gcc command line.
136
137 ######################################################################
138
139 Changes in version 1.9.11:
140
141         Fixed a bug in ld-linux.so where a reference to an
142         undefined symbol could cause a segfault.
143
144         Added a clarification for LD_PRELOAD to the ld.so manual 
145         page and added a symlink for ld-linux.so (Bug#33123).
146
147         Don't install ldd for Debian except for the m68k arch
148         because glibc 2.1 now includes it (Bug#35458).
149
150 Changes in version 1.9.10:
151
152         Changed ldconfig to issue a warning and not overwrite a
153         regular file with a symlink (Bug#30859).
154
155         Changed Debian packaging to conflict with and replace the
156         ldconfig package (Bug#29398).
157
158 Changes in version 1.9.9:
159
160         Changed ld-linux.so and libdl.so to match glibc by not
161         allowing user preloads of system libraries into setu/gid
162         binaries unless the library itself is setuid.
163
164         Fixed problems in ld-linux.so on the sparc architecture
165         (Juan Cespedes).
166
167 Changes in version 1.9.8:
168
169         Changed ldconfig to allow the expected type for all
170         libraries in a directory to be optionally specified
171         (Mark Phillips).  See the ldconfig man page.
172
173         Changed ldconfig to use the same type names used in the
174         change above when the -p option is used.
175
176 Changes in version 1.9.7:
177
178         Changed ldd for m68k to use /lib/ld.so.1 instead of 
179         /lib/ld-linux.so.2.
180
181         Added support for dladdr to libdl.so (Eduard Gode).
182
183         Fixed a small memory leak in libdl.so (Richard Garnish).
184
185         Fixed a bug in ldconfig when the -l option was used on a
186         filename without a '/' in it.
187
188         Updated the man pages (Bug#6404, Bug#9721, Bug#10652, 
189         Bug#13494 and Bug#14127).  They could still use some work.
190
191         No longer install the info page since it's way out of date.
192
193         Fixed minor Debian packaging problems (Bug#13160, 
194         Bug#15577 and Bug#19345).
195
196 Changes in version 1.9.6:
197
198         Changed ldd to not use the glibc dynamic linker when run
199         on a libc5-based shared library.
200
201         Added a -q option to ldconfig which causes warnings not
202         to be printed (Bob Tinsley).
203
204         Dropped support for the Debian libdl1-dev package.
205
206         Changed ld-linux.so to be compilable with gcc 2.8.0 (Sven 
207         Verdoolaege)
208
209 Changes in version 1.9.5:
210
211         Fixed a bug in ldd where ld-linux.so.2 was not called
212         correctly when run on shared libraries.
213
214         Fixed a problem in the previous version where some
215         Makefiles were not architecture independent.
216
217 Changes in version 1.9.4:
218
219         Fixed a bug in ld.so introduced in the previous version
220         which broke preloads.
221
222         Turned a.out support back on by default, at least for the
223         time being.  There are no promises to keep it.
224
225 Changes in version 1.9.3:
226
227         Fixed buffer overflow bugs in ld-linux.so and ld.so.
228
229         Changed the README file a little to clarify a couple of
230         things.
231
232         Changed ldconfig to chroot to the specified directory when
233         the new -r option is used (Bob Tinsley).
234
235 Changes in version 1.9.2:
236
237         Removed /usr/local/lib from the default /etc/ld.so.conf
238         for Debian (Bug#8181).
239
240         Changed ldconfig to be 64-bit clean (H.J. Lu).
241
242 Changes in version 1.9.1:
243
244         Changed ldconfig to try to determine which libc a
245         library is for even if it doesn't have an soname.
246
247         Fixed a bug in ldconfig where an older library using
248         the glibc naming convention would be used instead of
249         a newer library.
250
251         Changed to ld-linux.so and libdl.so to not require the 
252         libc5 headers in order to compile.
253
254         Changed ldconfig and ldd to be compilable with either
255         libc5 or libc6.
256
257 Changes in version 1.9.0:
258
259         Changed to not build the old, a.out dynamic loader by
260         default.
261
262         Changed instldso.sh to require the --force option to
263         make sure users read the README file.
264
265         Changed instldso.sh to not install the libdl.so
266         development files unless the --devfiles option is used.
267
268         Changed instldso.sh to not strip binaries and libraries
269         if the --no-strip option is used.
270
271         Changed the Debian packaging to put the development files 
272         which conflict with glibc in a new libdl1-dev package.
273
274         Changed ldd to use the glibc dynamic linker, if it is
275         available, when run on a shared library.
276
277         Changed ld-linux.so to print the load addresses of
278         libraries, ala glibc, when run by ldd.
279
280         Changed ld-linux.so to allow the libraries listed in 
281         LD_PRELOAD to be separated by white space in addition to 
282         colons.
283
284         Changed ld-linux.so to load the libraries listed in 
285         LD_PRELOAD for setu/gid programs as long as they can be 
286         loaded securely.
287
288         Changed ldconfig to update the symlinks for the dynamic
289         linkers.
290
291         Changed ldconfig to try to determine if an ELF library is
292         intended for libc5 or libc6 and save the infomation in the
293         cache.  The mechanism used is rather simplistic and may
294         need to be enhanced.
295
296         Changed ldconfig to print the type of ELF library when
297         printing the cache.
298
299         Changed ld-linux.so to only load ELF shared libraries for
300         use with libc5 or an unknown libc.
301
302 Changes in version 1.8.10:
303
304         Fixed a bug in ldconfig where a symlink could be used
305         instead of a regular file.
306
307         Fixed a Debian packaging problem for the sparc 
308         architecture.
309
310 Changes in version 1.8.9:
311
312         Changed ldconfig to only cache the symlinks it creates.
313         This make the behavior of the dynamic linkers consistent
314         with how they would behave if a cache was not used.
315
316         Changed ldconfig to cache the symlinks that it finds but
317         use the name of the symlink as the soname instead of the 
318         actual soname.
319
320 Changes in version 1.8.8:
321
322         Minor documentation updates to reflect recent changes.
323
324         Changed ld.so and ld-linux.so to perform more complete
325         validation on ld.so.cache before using it.
326
327         Changed ldconfig to accept libraries with inconsistent
328         sonames since glibc is going to use them.  A warning is
329         still printed in debug mode.
330
331         Changed the install script to not strip _dl_debug_state
332         from ld-linux.so since gdb needs it.
333
334         More sparc fixes (Derrick Brashear).
335
336         Changed ldconfig to not issue a warning when a linker
337         script disguised as a shared library is found.
338
339         Fixed a bug in ld-linux.so where some registers were 
340         not preserved on the first call to a function causing 
341         problems for non-C-like languages (Tim Renouf).
342
343         Fixed a bug in ld-linux.so where global variables were 
344         not always mapped correctly across dynamically loaded 
345         libraries (Mikihiko Nakao).
346
347         Converted to new Debian source packaging format (Shaya
348         Potter).
349
350 Changes in version 1.8.6/7:
351
352         Never released as some unofficial patches used these
353         version numbers.
354
355 Changes in version 1.8.5:
356
357         Fixed a bug in ld.so introduced in the previous changes.
358
359 Changes in version 1.8.4:
360
361         Changed ldconfig to completely ignore symbolic links.
362
363         Changed ldconfig to issue the warning concerning an
364         inconsistent soname in non-verbose mode.
365
366         Changed ld-linux.so back to not keep ld.so.cache mapped
367         at all times.
368
369         Changed Debian packaging to compress man pages, strip all
370         binaries (Bug#5125) and include a shlibs file.
371
372 Changes in version 1.8.3:
373
374         Changed ld-linux.so to process LD_PRELOAD before
375         /etc/ld.so.preload.
376
377         Fixed a Debian packaging problem where libdl might not
378         be available if other packages were upgraded at the same
379         time (Debian Bug#4728).
380
381         Changed ldd to always exit with status 1 if any errors
382         occur (Debian Bug#4188).
383
384         Fixed some minor problems in instldso.sh (Mike Castle and
385         Wolfgang Franke).
386
387         Changed ldconfig to issue a warning in verbose mode when 
388         skipping a library because the soname doesn't match.
389
390         More sparc fixes (Miguel de Icaza).
391
392         Don't link with -N when building ld.so (Alan Modra).
393
394         Changed ld-linux.so to better support position-dependant
395         libraries (NIIBE Yutaka).
396
397 Changes in version 1.8.2:
398
399         Added a texinfo file for ld.so and libdl (Michael 
400         Deutschmann).
401
402         Minor sparc and installation changes (Elliot Lee).
403
404         Added multiple architecture support for Debian (Leland
405         Lucius).
406
407         Changed libdl to better support RTLD_NEXT (Eric 
408         Youngdale).  Note: the exact meaning of ETLD_NEXT is 
409         still not clear in all cases.
410
411         Removed some libc dependencies from libdl.  Still need
412         to remove malloc and free.
413
414 Changes in version 1.8.1:
415
416         Changed ld.so to be compiled as ELF.  This also means
417         that ELF support is now required.  A.out support is 
418         still optional.
419
420         Changed ld-linux.so and libdl.so to use the rpath in the 
421         executable instead of in the invoking shared library.
422
423         More m68k fixes (Andreas Schwab).
424
425         Various sparc fixes (Miguel de Icaza).
426
427         Changed ldcnnfig to ignore libraries ending in '~'.
428
429         Changed ldconfig to allow alternative conf and cache 
430         files to be specified on the command-line.
431
432         Changed libdl.so to work when dlsym is passed a NULL
433         handle pointer.
434
435 Changes in version 1.8.0:
436
437         Changed ld-linux.so to be more liberal when checking to
438         see if a library is already loaded.  This should avoid
439         the duplicate loading problem for programs linkeed with
440         the -rpath option.
441
442         Various m68k fixes (Andreas Schwab).
443
444         Changed ld.so to only use LD_AOUT_LIBRARY_PATH and
445         LD_AOUT_PRELOAD and ld-linux.so to only use 
446         LD_LIBRARY_PATH and LD_PRELOAD.  LD_ELF_LIBRARY_PATH
447         and LD_ELF_PRELOAD are no longer supported.
448
449         Changed ld-linux.so to allow debugging of shared and
450         dynamically loaded libraries (H.J. Lu, Andreas Schwab).
451
452         Changed ld-linux.so to preload ELF shared libraries 
453         listed in /etc/ld.so.preload.  This allows secure 
454         preloads, even for setuid/setgid programs.
455
456         Changed ld-linux.so to keep ld.so.cache mapped at all
457         times.
458
459         Changed ldconfig to allow #-style comments in ld.so.conf.
460
461         Removed various compiler warnings (Richard Sladkey and
462         David Engel).
463
464         Changed ldd to work on ELF shared libraries.  This may
465         need a little more work.
466
467 Changes in version 1.7.14:
468
469         Changed ldconfig to recognize ELF shared libraries
470         generated by post-2.6 versions of ld (Andreas Schwab).
471
472         Changed ldconfig to not remove stale links that do not
473         have a version number since they may be needed by ld.
474
475 Changes in version 1.7.13:
476
477         Fixed a problem in ld-linux.so where a program linked
478         with a shared library that was not used could result in
479         a segmentation fault (H.J. Lu).
480
481 Changes in version 1.7.12:
482
483         Fixed a problem in libdl.so where the wrong library
484         could be marked as global when RTLD_GLOBAL was used
485         (Lars Heete).
486
487         Installed dlfcn.h with libdl.so instead of requiring
488         it to be supplied with libc.
489
490         Removed support for libldso.a since it was nearly
491         impossible to use anyway.
492
493         Changed ldd to detect when the program being checked
494         exited abnormally.
495
496 Changes in version 1.7.11:
497
498         Changed ld.so and ld-linux.so to delete all variations
499         of LD_PRELOAD and LD_LIBRARY_PATH for set[ug]id programs,
500         This makes it harder for broken set[ug]id programs to be
501         compromised.
502
503         Fixed a problem in libdl.so where dlsym would not accept
504         the handle returned from dlopen(0, *).
505
506 Changes in version 1.7.10:
507
508         Changed ld-linux.so and libdl.so to support RTLD_GLOBAL
509         (Eric Youngdale).
510
511 Changes in version 1.7.9:
512
513         Fixed a problem in ld-linux.so in detecting when the 
514         new user/group information is provided by the kernel.
515
516         Fixed a problem in ld-linux.so where a buffer could be
517         overflowed if a large number of libraries were loaded
518         (Thomas Moore).
519
520 Changes in version 1.7.8:
521
522         Changed the Makefiles and install scripts to support 
523         a.out- and ELF-only configurations.
524
525         Changed ld-linux.so to use the user/group information
526         provided by linux 1.3.23+ instead of making syscalls
527         to get it.
528
529         Changed libdl.so to support RTLD_NEXT (Glenn Fowler).
530
531         Changed libdl.so to only execute the fini sections
532         instead of completely closing libraries at exit (Glenn
533         Fowler).
534
535         Changed ld.so and ld-linux.so to print the required
536         cache version when a mismatch is detected.
537
538         Changed ld-linux.so to not require on /dev/zero (Ralph
539         Loader).
540
541         Minor m68k cleanups (Andreas Schwab).
542
543 Changes in version 1.7.7:
544
545         Fixed problems compiling with recent 1.3.x kernels.
546
547         Changed ld-linux.so to not use MAP_DENYWRITE until the
548         permission issue regarding it is resolved.
549
550 Changes in version 1.7.6:
551
552         Fixed a bug in ld-linux.so dealing with a zero-length
553         LD_{ELF_}PRELOAD.
554
555         Changed ld.so and ld-linux.so to truncate all variations
556         of LD_PRELOAD and LD_LIBRARY_PATH for set[ug]id programs.
557
558 Changes in version 1.7.5:
559
560         Changed ldconfig to recognize libraries without any
561         version number (eg. libXYZ.so).
562
563         Changed ldconfig to not generate a corrupt cache when
564         the disk is full or other write errors occur.
565
566         Changed ld-linux.so to map files with MAP_DENYWRITE to
567         keep them from being changed while the file is in use
568         (Rick Sladkey).
569
570         Changed libdl to not overwrite the scope pointer of a 
571         library if it was already loaded (H.J. Lu).
572
573         Changed ld-linux.so so gdb can be used on constructors
574         (Eric Youngdale).
575
576         Changed ldconfig to ignore ELF libraries where the soname
577         does not match the file name on the assumption that it is
578         a used at compile-time (eg. libcurses.so -> libncruses.so).
579
580 Changes in version 1.7.4:
581
582         Changed ld-linux.so and libdl to use the appropriate
583         rpaths when searching for shared libraries (Eric
584         Youngdale).
585
586         Changed ld-linux.so to search rpath before using the
587         cache.  This more closely conforms to the IBCS standard.
588
589 Changes in version 1.7.3:
590
591         Changed ld-linux.so to only print a library name the
592         first time it is loaded when run from ldd.
593
594         Fixed a bug in ldconfig where an invalid cache could be
595         generated if a directory was specified multiple times in
596         ld.so.conf.
597
598         Changed ld-linux.so so it will return the address of a
599         weak symbol when called from dlsym in libdl (Eric 
600         Youngdale.
601
602 Changes in version 1.7.2:
603
604         Changed libdl.so again to fix the undefined foobar
605         problem.
606
607 Changes in version 1.7.1:
608
609         Changed libdl so it will compile at optimization level
610         O3 or higher.
611
612         Changed ldconfig to always create the cache file with 
613         mode 644.
614
615         Changed ldconfig to not ingore valid symlinks.
616
617         Changed ldconfig to use the library name as the soname 
618         for ELF libraries that do not have an soname entry.
619
620         Changed ld-linux.so to print the actual, requested library
621         name at the time it is loaded instead of trying to figure
622         it out after the fact.
623
624 Changes in version 1.7.0:
625
626         Changed ldconfig to read the actual soname from the image
627         for ELF libraries and make it available to ld-linux.so.  
628         The soname for DLL libraries is still determined by
629         truncating the minor numbers from the image file name.
630
631         Changed ldconfig to no longer support the undocumented
632         sort options.
633
634         Changed ld.so to require a valid cache to find libraries
635         in directories specified in ld.so.conf.  /usr/lib and /lib
636         are still searched as a last resort.  Ld-linux.so already
637         operated this way.
638
639         Fixed a bug in libldso.a where the arguments to
640         shared_loader were not parsed correctly (Wolfram Gloger).
641
642         Added support for RELA-style relocations under Linux/68k
643         (Andreas Schwab).
644
645         Changed ld-linux.so to only map the cache once for all
646         libraries instead of individually for each library.
647
648         Changed ld-linux.so continue searching the cache instead of
649         giving up when failing to load the first entry found.
650
651         Changed ld-linux.so to produce output similar to ld.so when
652         run from ldd or when errors occur.
653
654 Changes in version 1.6.7:
655
656         Changed the install scripts to make sure that ld.so and
657         ld-linux.so are always usable.
658
659         Added support for Linux/Sparc (Eric Youngdale).
660
661         Added support for Linux/68k (Andreas Schwab).
662
663         Fixed various bugs in ld-linux.so dealing with closing
664         files, unmapping memory, dereferencing NULL pointers and 
665         printing library names (David Engel, Eric Youngdale and 
666         Andreas Schwab).
667
668         Replaced the manual page for libdl with a freely
669         distributable one (Adam Richter).
670
671         Fixed a bug in ld-linux.so where LD_LIBRARY_PATH and
672         LD_PRELOAD were not cleared for setuid/setgid programs.
673
674         Fixed a bug in libdl where dlsym would not return the
675         correct address of a symbol if it was redefined in another
676         library (Oleg Kibirev).
677
678         Changed ld-linux.so to use the following order to search 
679         for libraries:  LD_{ELF_}LIBRARY_PATH, ld.so.cache, rpath, 
680         /usr/lib and /lib.
681
682         Changed ld-linux.so to not needlessly allocate memory when
683         using ld.so.cache.
684
685 Changes in version 1.6.6:
686
687         Changed ldconfig to not warn about removing stale links
688         unless the -v option is specified.
689
690         Added manual pages for libdl (from FreeBSD/Sun)
691
692         Fixed a bug in ld.so dealing with preloading of objects
693         generated by recent versions of ld (Mitch D'Souza).
694
695         Fixed bugs in ldd where some errors were either not
696         detected or not printed.
697
698         Fixed a bug in ld-linux.so where the trailing nul in a
699         library name was not being copied (Owen Taylor).
700
701 Changes in version 1.6.5:
702
703         Changed ldconfig to remove stale symbolic links.
704
705         Added debug hooks in ld-linux.so and libdl.so to be used 
706         by a future version of gdb (Eric Youngdale).
707
708 Changes in version 1.6.4:
709
710         Change ld-linux.so to print on stdout instead of stderr
711         when run from ldd.
712
713         Added support for Debian GNU/Linux packaging.
714
715 Changes in version 1.6.3:
716
717         Fixed a bug in libdl when closing a library (H.J. Lu).
718
719 Changes in version 1.6.2:
720
721         Changed the error message printed by ldd when a file is
722         not a.out or ELF.  It used to only list a.out formats.
723
724         Changed ldconfig to no longer cache and set up links for
725         ld-linux.so.
726
727         Changed ld-linux.so and libdl to not conflict with upcoming
728         changes in kernel header files.
729
730         Changed ld-linux.so to not print preloaded libraries.
731
732 Changes in version 1.6.1:
733
734         Updated the installation script.
735
736         Changed ld.so and ld-linux.so to look for LD_AOUT_PRELOAD
737         and LD_ELF_PRELOAD, respectively, before LD_PRELOAD.
738
739         Changed ld.so and ld-linux.so to use LD_AOUT_LIBRARY_PATH
740         and LD_ELF_LIBRARY_PATH, respectively, instead of
741         AOUT_LD_LIBRARY_PATH and ELF_LD_LIBRARY_PATH.
742
743 Changes in version 1.6.0:
744
745         Changed ldconfig to process libraries which do not have
746         a minor version or patch level number.
747
748         Incorporated ld-linux.so and libdl.so.
749
750         Changed ld.so and ld-linux.so to not miss entries in the
751         cache when the fully qualified library is requested.
752
753         Changed ldconfig to use stdout instead of stderr when
754         printing the cache.
755
756 Changes in version 1.5.3:
757
758         LD_PRELOAD enhancements (Tristan Gigold).
759
760         LD_PRELOAD patch for linux-68k (Andreas Schwab).
761
762 Changes in version 1.5.2:
763
764         More ELF changes (Mitch D'Souza).
765
766         Changed ldconfig to also update the link for ld-linux.so.
767
768 Changes in version 1.5.1:
769
770         More ELF and LD_PRELOAD changes (Mitch D'Souza).
771
772 Changes in version 1.5.0:
773
774         Chnaged all executables to QMAGIC (Mitch D'Souza and Rick
775         Sladkey).
776
777         Added preliminary support for ELF to ldd and ldconfig (Eric 
778         Youndale and H.J. Lu).
779
780         Added support for LD_PRELOAD to ld.so (Mitch D'Souza).
781
782         Removed the "advertising" clause from the copyright notices
783         in all source files.
784
785 Changes in version 1.4.4:
786
787         Changed ldconfig to support QMAGIC libraries.
788
789         Fixed a bug in ld.so where some of the error messages had
790         transposed arguments.
791
792 Changes in version 1.4.3:
793
794         Fixed an obscure bug in ld.so where an index was not being
795         incremented when a library was not found using the cache.
796
797 Changes in version 1.4.2:
798
799         Changed ldconfig to issue a warning and continue instead
800         of an error and exiting when a link can't be updated.  
801         This is useful when some libraries are imported on read-
802         only file systems, such as an NFS mounted /usr.
803
804         Changed ld.so to be more robust in searching for libraries.
805         A library is not considered found unless it can actually be
806         loaded.  If a library is not found using the cache, the
807         standard directories are searched as in pre-cache versions.
808
809 Changes in version 1.4.1:
810
811         Fixed minor Makefile problems.
812
813         Added support for linux-68k.
814
815         Fixed a bug in ld.so where libraries with absolute paths
816         were not handled correctly.
817
818         Changed ld.so to ignore the directory in the names of
819         shared libraries by default.  This allows older libraries
820         with absolute paths, such as the XView libraries, to take
821         advantage of the cache support.
822
823         Added a minimal usage message to ldconfig.
824
825 Changes in version 1.4:
826
827         Fixed bug in ld.so where minor version numbers were not
828         reported correctly when a minor version incompatibility
829         was found.
830
831         Fixed bug in ldconfig where libraries with subversion
832         numbers greater than 9 were not compared correctly.
833
834         Added Mitch D'Souza's support for suppressing warning
835         messages from ld.so about minor version incompatibilities.
836
837         Added Mitch D'Souza's support for using a cache to speed
838         up searching for libraries in the standard directories.
839
840         Added Mitch D'Souza's support for a debugging version of
841         ld.so.  Link with -lldso if you think you are experiencing
842         dynamic linker problems.
843
844 Changes in version 1.3:
845
846         Added support for libraries using absolute pathnames.  If I
847         had known that the XView libraries used them, I would have
848         added this earlier.
849
850         Fixed a bug handling old libraries using a pathname beginning
851         with '/' or '/lib/'.
852
853 Changes in version 1.2a:
854
855         Fixed a minor bug in ldd which caused all files, specifically
856         scripts, to be recognized as binaries.  Thanks to Olaf Flebbe
857         for reporting it.
858
859 David Engel
860 david@sw.ods.com