summaryrefslogtreecommitdiff
path: root/ldso/README
blob: dc37ea65c71f8858d2cfbca5302607d05daea930 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841

Apr 20, 2001 -- Manuel Novoa III

Inital port for uClibc from debian ld.so_1.9.11-9.tar.gz.

Removed a.out support.

****************** 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