
PROBLEM: (82122, 82234) (PATCH ID: OSF510-005)
********
  This patch fixes two problems which exist in the V5.1 dynamic loader.
  The first problem may cause the dlopen library call to incorrectly report 
  an unresolved symbol.  The incorrect reporting of the unresolved symbol will
  occur only when an executable calls dlopen and the following conditions
  are met:  both the executable and the dlopened library were linked against 
  two shared libraries that define the same symbol, and the symbol has been 
  removed from both libraries on the platform where the executable is 
  running.

  The second problem may cause the loader to load the wrong shared library
  when you have two libraries with the same name but different IVERSION
  identifiers.  In this situation, the loader would always load the first
  library that it encounters - regardless of the IVERSION identifier.  
 
  The problem is illustrated below in the output from a program called 
  'ttash'.  The program 'ttash' is linked against /usr/local/lib/libtcl.so 
  with an IVERSION of "_null".  However, when loading 'ttash', the loader 
  first encounters /usr/shlib/libtcl.so, which has an IVERSION of "tcl8.2".  
  The problem in the V5.1 loader is that it incorrectly tried to load 
  /usr/shlib/libtcl.so, as shown in the output below:

    % ./ttash
       737643:./ttash: /sbin/loader: Error: libtcl.so: symbol 
       "__exc_remove_gp_range" unresolved
       737643:./ttash: /sbin/loader: Fatal Error: object libtcl.so from 
       liblist in ./ttash has version "_null", which does not match the 
       found object: /usr/shlib/libtcl.so (with version "tcl8.2")


PROBLEM: (84054) (PATCH ID: OSF510-113)
********
  This patch fixes a problem with the /sbin/loader.  The loader could not 
  find absolute value symbols that had a value of -1.
  Here is a simple reproducer that demonstrates the problem.

    % cat a.c b.s
    extern long lsc_x;
    main () {
      long i = (long)&lsc_x;
      printf (" i = 0x%lx\n", i);
    }

    .data
    .globl  lsc_x
    lsc_x   = 0xffffffffffffffff
    % cc a.c b.s -taso
    b.s:
    a.c:
    % a.out
    1969459:a.out: /sbin/loader: Error: a.out: symbol "lsc_x" unresolved
    1969459:a.out: /sbin/loader: Fatal Error: Load of "a.out" failed: 
    Unresolved symbol name
 
  With this fix, the loader properly loads and executes this file.
    % a.out
    i = 0xffffffffffffffff


PROBLEM: (83675, 83729) (PATCH ID: OSF510-105)
********
  This patch fixes a problem in the /sbin/loader dynamic loader that 
  can cause a crash.  If an application calls dlopen(), it is possible 
  for the loader to corrupt its internal data structures and crash.
  It also fixes a problem with the ldd command.   Prior to this patch, all
  ldd output was going to stderr.  With this patch, the ldd command prints 
  the record of shared object pathnames to stdout, and the optional list 
  of symbol resolution problems are printed to stderr.

  Since the ldd command is just a link to /sbin/loader, this patch contains
  only one file to be updated.


PROBLEM: (85576, 85676) (PATCH ID: OSF510-205)
********
  
  The /usr/ucb/spike post-link optimization tool will crash if the image
  it is optimizing contains duplicate linker-defined symbols.  Under
  certain link conditions, the linker will generate duplicate linker-defined
  symbols, such as "_etext".  If spike is used to optimize images with
  these duplicate symbols, it will crash with the following assertion failure:
     ? FATAL ERROR
     ? Assertion failed.
     ? ../../../../../../src/usr/ccs/bin/spike/rel.cxx, line 2388
     NO STACKTRACE  no executable specified
     Floating exception (core dumped)

  This patch fixes the spike assertion failure.

  The /sbin/loader problem this patch fixes is with the ldr_inq_region()
  call.  Previously, no error would be returned when an invalid region
  number was passed as a parameter to the call. With this patch,
  the ldr_inq_region() call will properly report an error if it is
  passed an invalid region value.


PROBLEM: (81716, 82289, 82094, 80719,
          84368) (PATCH ID: OSF510-074)
********
  This patch fixes several problems in the /sbin/loader and /usr/ucb/ldd. 
  The first fix is with rpaths on shared libraries.   Previously the loader
  would only recognize the rpaths that were defined in the main executable.
  The loader now additionally recognizes rpaths defined in the shared libraries.
  The previous rpath behavior can be obtained by setting the 
  -use_main_rpath_only _RLD_ARGS loader environment variable.
  
  The second fix concerns loading libraries linked with the -taso flag.
  The loader will now correctly fail to load a library in -taso mode if
  any of the library's address space is mapped above the 31-bit taso address
  range.

  The third fix is for incorrectly specified _RLD_ARGS.  The loader now
  detects incorrect _RLD_ARGS and issues an error.

  The last fix is for the handling of the RHF_BIND_NOW bit in the object
  file.  The loader now performs immediate symbol binding when that bit is
  set.   Previously, the loader would ignore the RHF_BIND_NOW bit.


PROBLEM: (85262) (PATCH ID: OSF510-221)
********
PROBLEM: (85262) (PATCH ID: )
This patch fixes a problem in /sbin/loader.  It corrects
certain program failures that result in load error messages
such as:

   /sbin/loader: Fatal Error: object <LIBNAME> from liblist
   in <PROGRAM NAME> has version "XX", which does not match
   the found object: <LIB PATHNAME> (with version "YY")

This error message usually indicates that a different
version of the indicated shared library needs to be
installed to run the program.  This patch corrects a
loader bug that causes it to report this error for
shared libraries in version directories that do not
match their first supported version.

For example, if version "osf.1" of libfoo.so
is installed in /usr/shlib/osf.1/libfoo.so with
version id string "osf.2:osf.1", this patch will
be required to load programs that depend on libfoo.so.

(odump -D can be used to view the "IVERSION" 
 version id string of a shared library.)


PROBLEM: (83201,) (PATCH ID: OSF510-495)
********
Some call_shared executables that have been instrumented to
analyze performance characteristics or dynamic memory usage
may dump core when invoked.  Attempting to debug such a core dump
will result in an error message indicating the debugger cannot 
attach to the loader.  This patch will fix the loader error that 
caused the core dump to occur.


PROBLEM: (89594, CFS.86011) (PATCH ID: OSF510-371)
********
  The -ignore_all_versions and -ignore_version flags for the run-time
  loader (/sbin/loader) broke in the Tru64 UNIX V5.1 release.  This patch
  fixes those two flags.



