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