Patch-ID# 106950-16
Keywords: ld.so setuid dlclose memory leak register R_SPARC_UA linker CPU99
Synopsis: SunOS 5.7: Linker Patch
Date: Nov/28/2001

Solaris Release: 7

SunOS Release: 5.7

Unbundled Product: 

Unbundled Release: 

Xref: This patch available for x86 as patch 106951

Topic: SunOS 5.7: Linker Patch

Relevant Architectures: sparc

BugId's fixed with this patch: 4040628 4077245 4103449 4159122 4165487 4173576 4174468 4176579 4179880 4187211 4188527 4188843 4194264 4204447 4205087 4210412 4214649 4215164 4215587 4219652 4225937 4234657 4235241 4235315 4238071 4239213 4243097 4248250 4248290 4250694 4254171 4255943 4256518 4267980 4287274 4292238 4295613 4297563 4300018 4303609 4306415 4309212 4310324 4310901 4311226 4312449 4313765 4316531 4318162 4321634 4322528 4322581 4324134 4324324 4324775 4327653 4329785 4334617 4335801 4336102 4336980 4338812 4340878 4341496 4343417 4343801 4344528 4346001 4346144 4346615 4349137 4349563 4351197 4352233 4352330 4354500 4356879 4357805 4358751 4358862 4366905 4367118 4367405 4368846 4369068 4371114 4372554 4377941 4381116 4381783 4385402 4390308 4393044 4394212 4394698 4401232 4401815 4402861 4413168 4421842 4447560 4450433 4505289 4506164 4513842

Changes incorporated in this version: 4447560 4505289 4506164 4513842

Patches accumulated and obsoleted by this patch: 

Patches which conflict with this patch: 

Patches required with this patch: 

Obsoleted by: 

Files included with this patch: 

/etc/lib/ld.so.1
/usr/bin/crle
/usr/bin/ldd
/usr/bin/pvs
/usr/bin/sparcv9/pvs
/usr/ccs/bin/ar
/usr/ccs/bin/dump
/usr/ccs/bin/elfdump
/usr/ccs/bin/gprof
/usr/ccs/bin/ld
/usr/ccs/bin/lorder
/usr/ccs/bin/mcs
/usr/ccs/bin/nm
/usr/ccs/bin/size
/usr/ccs/bin/sparcv9/dump
/usr/ccs/bin/sparcv9/elfdump
/usr/ccs/bin/sparcv9/ld
/usr/ccs/bin/sparcv9/mcs
/usr/ccs/bin/sparcv9/nm
/usr/ccs/bin/sparcv9/size
/usr/ccs/bin/sparcv9/strip
/usr/ccs/bin/strip
/usr/demo/librtld_db/common/rdb.h
/usr/demo/librtld_db/sparc/rdb_mach.h
/usr/demo/librtld_db/sparcv9/rdb_mach.h
/usr/include/dlfcn.h
/usr/include/gelf.h
/usr/include/libelf.h
/usr/include/link.h
/usr/include/rtld_db.h
/usr/include/sys/auxv.h
/usr/include/sys/debug/debug.h
/usr/include/sys/elf.h
/usr/include/sys/elf_386.h
/usr/include/sys/elf_M32.h
/usr/include/sys/elf_SPARC.h
/usr/include/sys/elf_notes.h
/usr/include/sys/elftypes.h
/usr/include/sys/link.h
/usr/include/sys/machelf.h
/usr/lib/0@0.so.1
/usr/lib/ld.so
/usr/lib/ld.so.1
/usr/lib/lddstub
/usr/lib/libcrle.so.1
/usr/lib/libdl.so
/usr/lib/libdl.so.1
/usr/lib/libelf.a
/usr/lib/libelf.so
/usr/lib/libelf.so.1
/usr/lib/libld.so.2
/usr/lib/libld.so.3
/usr/lib/liblddbg.so.4
/usr/lib/libldstab.so.1
/usr/lib/librtld.so.1
/usr/lib/librtld_db.so
/usr/lib/librtld_db.so.1
/usr/lib/link_audit/32
/usr/lib/link_audit/64
/usr/lib/link_audit/ldprof.so.1
/usr/lib/link_audit/sparcv9/ldprof.so.1
/usr/lib/link_audit/sparcv9/truss.so.1
/usr/lib/link_audit/sparcv9/who.so.1
/usr/lib/link_audit/truss.so.1
/usr/lib/link_audit/who.so.1
/usr/lib/secure/32
/usr/lib/secure/64
/usr/lib/sparcv9/0@0.so.1
/usr/lib/sparcv9/ld.so.1
/usr/lib/sparcv9/lddstub
/usr/lib/sparcv9/libcrle.so.1
/usr/lib/sparcv9/libdl.so.1
/usr/lib/sparcv9/libelf.so.1
/usr/lib/sparcv9/libld.so.2
/usr/lib/sparcv9/libld.so.3
/usr/lib/sparcv9/liblddbg.so.4
/usr/lib/sparcv9/libldstab.so.1
/usr/lib/sparcv9/librtld.so.1
/usr/lib/sparcv9/librtld_db.so.1

Problem Description:

4505289 incorrect handling of _START_ and _END_
4506164 mcs does not recognize #linkbefore or #linkafter qualifiers
4447560 strip is creating unexecutable files...
4513842 library names not in ld.so string pool cause corefile bugs
 
(from 106950-15)
 
4450433 problem with liblddbg output on -Dsection,detail when processing SHF_LINK_ORDER
4421842 fixups in SHT_GROUP processing required...
4368846 ld(1) fails to version some interfaces given in a mapfile
4077245 dump core dump on null pointer.
4372554 elfdump should demangle symbols (like nm, dump)
4371114 dlclose may unmap a promiscuous object while it's still in use.
4204447 elfdump should understand SHN_AFTER/SHN_BEFORE macro
4377941 initialization of interposers may not occur
4381116 ldd/ld.so.1 could aid in detecting unused dependencies
4381783 dlopen/dlclose of a libCrun+libthread can dump core
4385402 linker & run-time linker must support gABI ELF updates
4394698 ld.so.1 does not process DF_SYMBOLIC - not gABI conforming
4394212 the link editor quietly ignores missing support libraries
4390308 ld.so.1 should provide more flexibility LD_PRELOAD'ing 32-bit/64-bit objects
4401232 crle(1) could provide better flexibility for alternatives
4401815 fix misc nits in debugging output...
4402861 cleanup /usr/demo/link_audit & /usr/tmp/librtld_db demo source code...
4393044 elfdump should allow raw dumping of sections
4413168 SHF_ORDERED bit causes linker to generate a separate section
 
(from 106950-14)
 
4369068 ld(1)'s weak symbol processing is inefficient (slow and doesn't scale).
4210412 versioning a static executable causes ld to core dump
4219652 Linker gives misleading error about not finding
4103449 ld command needs a command line flag to force 64-bits
4187211 problem with RDISP32 linking in copy-relocated objects
4287274 dladdr, dlinfo do not provide the full path name of a
4297563 dlclose still does not remove all objects
4250694 rtld_db needs a new auxvec entry
4235315 new features for rtld_db (DT_CHECKSUM, dynamic
4303609 64bit libelf.so.1 does not properly implement
4310901 su.static fails when OSNet build with lazy-loading
4310324 lf_errno() causes Bus Error(coredump) in 64-bit
4306415 ld core dump
4316531 BCP: possible failure with
4313765 LD_BREADTH should be shot
4318162 crle uses automatic strings in putenv.
4255943 Description of -t option incomplete.
4322528 sgs message test infrastructure needs improvement
4239213 Want an API to obtain linker's search path
4324134 use of extern mapfile directives can contribute unused
4322581 ELF data structures could be laid out more
4040628 Unnecessary section header symbols should be removed
4300018 rtld: bindlock should be freed before calling
4336102 dlclose with non-deletable objects can mishandle
4329785 mixing of SHT_SUNW_COMDAT & SHF_ORDERED causes ld to
4334617 COPY relocations should be produces for references to
4248250 relocation of local ABS symbols incorrect
4335801 For complimentary alignments eliminate ld: warning:
4336980 ld.so.1 relative path processing revisited
4243097 dlerror(3DL) is not affected by setlocale(3C).
4344528 dump should remove -D and -l usage message
4352330 LD_PRELOAD cannot use absolute path for privileged program
4346144 link-auditing: plt_tracing fails if LA_SYMB_NOPLTENTER given after being bound
4346001 The ld should support mapfile syntax to generate PT_SUNWSTACK segment
4349137 rtld_db: A third fallback method for locating the linkmap
4343417 dladdr interface information inadequate
4343801 RFE: crle(1): provide option for updating configuration files
4346615 ld.so.1 attempting to open a directory gives: No such device
4352233 crle should not honor umask
4357805 RFE: man page for ld(1) does not document all -z or -B options in Solaris 8 9/00
4358751 ld.so.1: LD_XXX environ variables and LD_FLAGS should be synchronized.
4358862 link-editors should reference "64" symlinks instead of sparcv9 (ia64).
4356879 PLTs could use faster code sequences in some cases
4367118 new fast baplt's fail when traversed twice in threaded application
4366905 Need a way to determine path to a shared library
4351197 nfs performance problem by 103627-13
4367405 LD_LIBRARY_PATH_64 not being used
4354500 SHF_ORDERED ordered sections does not properly sort sections
 
(from 106950-13)
 
4349563 auxiliary filter error handling regression introduced in 4165487
 
(from 106950-12)
 
4340878 rtld should treat $ORIGIN like LD_LIBRARY_PATH in security issues
4338812 crle(1) omits entries in the directory cache
4341496 RFE: provide a static version of /usr/bin/crle
 
(from 106950-11)
 
4324775 non-PIC code & -zcombreloc don't mix very well...
4327653 run-time linker should preload tables it will process (madvise)
4324324 shared object code can be referenced before .init has fired
4321634 .init firing of multiple INITFIRST objects can fail
 
(from 106950-10)
 
4311226 rejection of preloading in secure apps is inconsistent
4309212 dlsym can't find symbol
4312449 dlclose: invalid deletion of dependency can occur using RTLD_GLOBAL
 
(from 106950-09)
 
4292238 linking a library which has a static char ptr invokes mprotect() call
4295613 COMMON symbol resolution can be incorrect
 
(from 106950-08)
 
4256518 miscalculated calloc() during dlclose/tsorting can result in segv
4254171 DT_SPARC_REGISTER has invalid value associated with it.
4267980 INITFIRST flag of the shared object could be ignored.
 
(from 106950-07)
 
4248290 inetd dumps cpre upon bootup - failure in dlclose() logic
4238071 dlopen() leaks file descriptor under low memory condition
 
(from 106950-06)
 
4215587 using ld and the -r option on solaris 7 with compiler option -xarch=v9 causes link errors
4234657 103627-08 breaks purify 4.2 (plt padding should not be enabled for 32-bit)
4235241 dbx no longer gets dlclose notification.
4215164 shf_order flag handling is broken
4225937 i386 linker emits sparc specific warning messages
 
(from 106950-05)
 
4194264 Gprof segmentation fault with CPU99 code
 
(from 106950-04)
 
4214649 cyclic dependencies within tsorted inits can fail with lazy loading
4165487 lazy loading updates required
 
(from 106950-03)
 
4173576 Segmentation Fault on register-symbol declaration building a.out
4174468 scratch register symbol has multiple entries in .dynamic for same register
4179880 DT_RELASZ in .dynamic incorrectly calculated when .rela for reg-sym present
4188527 lorder output incorrect for v9 objects with global register ELF records
4188843 nm -p produces key letter of 13 for global register records
4205087 linker patch 103627-08 breaks viewpathing
 
(from 106950-02)
 
4159122 UNIX98:  dlclose() to invalid handle may dump core
 
(from 106950-01)
 
4176579 problem loading dynamically linked libraries with setuid root

Patch Installation Instructions:
--------------------------------
 
For Solaris 2.0-2.6 releases, refer to the Install.info file and/or
the README within the patch for instructions on using the generic
'installpatch' and 'backoutpatch' scripts provided with each patch.
 
For Solaris 7-8 releases, refer to the man pages for instructions
on using 'patchadd' and 'patchrm' scripts provided with Solaris.
Any other special or non-generic installation instructions should be
described below as special instructions.  The following example
installs a patch to a standalone machine:
 
       example# patchadd /var/spool/patch/104945-02
 
The following example removes a patch from a standalone system:
 
       example# patchrm 104945-02
 
For additional examples please see the appropriate man pages.

Special Install Instructions:
----------------------------- 
None.

README -- Last modified date:  Wednesday, November 28, 2001

