IPB
>  Man Pages > Unix > Solaris 10 11/06 > Section 1 > ld.so.1 man page

ld.so.1 man page

Section 1 - Solaris 10 11/06 Man Pages

Other operating system man pages available here


Advanced Search

Hopefully, this page is exactly what you are looking for, but if not, you can always find further assistance on Unix/Linux Forum!





User Commands                                          ld.so.1(1)



NAME
     ld.so.1 - runtime linker for dynamic objects

SYNOPSIS
     /lib/ld.so.1

     /lib/ld.so.1 [-e envar] dynamic-object [object args...]

DESCRIPTION
     Dynamic applications consist of one or more dynamic objects.
     A  dynamic application is typically a dynamic executable and
     one or more shared object dependencies. As part of the  ini-
     tialization  and  execution  of  a  dynamic  application, an
     interpreter is called. This interpreter completes the  bind-
     ing of the application to its shared object dependencies. In
     Solaris, this interpreter is  referred  to  as  the  runtime
     linker.

     During the link-editing of a dynamic executable,  a  special
     .interp section, together with an associated program header,
     is created. This section contains a pathname specifying  the
     program's interpreter. An interpreter pathname can be speci-
     fied when the executable is constructed using the -I  option
     to  ld(1), the link-editor. The default name supplied by the
     link-editor is the name of the runtime linker, ld.so.1.

     During the process of executing a  dynamic  executable,  the
     kernel  maps the file, and locates the required interpreter.
     See exec(2) and mmap(2). The kernel maps in,  and  transfers
     control  to,  this  interpreter.  Sufficient  information is
     passed to the interpretor to allow the interpreter  to  con-
     tinue to bind, and then execute the application.

     In addition to  initializing  an  application,  the  runtime
     linker  provides  services  that  allow  the  application to
     extend its address space. Additional shared objects  can  be
     mapped,  and  symbols within the shared objects can be bound
     to.

     The runtime linker performs the following functions:

       o  A configuration file, if in  existence,  is  processed.
          Configuration  files  can  be employed to alter default
          search paths, provide a directory  cache,  and  provide
          alternative   object   dependencies.  See  crle(1).  By
          default, for 32-bit  objects,  the  configuration  file
          /var/ld/ld.config  is  used.   For  64-bit objects, the
          default  configuration  file  /var/ld/64/ld.config   is
          used.  Alternative configuration files can be specified
          with the LD_CONFIG  environment  variable.  Alternative
          configuration  files  can  also  be  encoded  within  a
          dynamic executable by using the -c option of ld(1).



SunOS 5.10           Last change: 1 Aug 2005                    1






User Commands                                          ld.so.1(1)



       o  The runtime linker analyzes the  application's  dynamic
          information   section,  .dynamic,  to  determine  which
          shared object dependencies are required.

       o  The runtime linker  then  locates  and  maps  in  these
          dependencies.  The  dynamic information section of each
          dependency is then analyzed to determine if  any  addi-
          tional dependencies are required.

       o  Once all the shared object dependencies are loaded, the
          runtime  linker  performs  any  necessary  relocations.
          These relocations bind the shared objects  in  prepara-
          tion for process execution.

       o  Any initialization functions  provided  by  the  shared
          object  dependencies and, possibly, by the dynamic exe-
          cutable are called. The functions  are  called  in  the
          reverse order of the topologically sorted dependencies.
          If cyclic dependencies exist, the initialization  func-
          tions  are called using the sorted order with the cycle
          removed. ldd(1) can be used to display the  initializa-
          tion order of shared object dependencies.

       o  Control is passed to the application.

       o  During the application's execution, the runtime  linker
          can  be  called  upon  to  perform any delayed function
          binding.

       o  If any shared objects are  deleted  from  the  process,
          finalization  functions  are  called. By default, these
          functions are called in the order of the  topologically
          sorted dependencies.

       o  The application can also call upon the services of  the
          runtime  linker to acquire additional shared objects by
          using dlopen(3C). Symbols provided  by  these  objects,
          can be bound to using dlsym(3C)


     Further details on each of the previous topics can be  found
     in the Linker and Libraries Guide.

     The runtime linker uses a prescribed search path for  locat-
     ing  the  dynamic  dependencies  of  an  object. The default
     search paths are the runpath recorded in  the  object,  fol-
     lowed  by  a  series  of  defaults.  For 32-bit objects, the
     defaults are /lib followed by /usr/lib. For 64-bit  objects,
     the  defaults  are  /lib/64  followed  by /usr/lib/64. These
     defaults component can be  modified  using  a  configuration
     file  that is created with crle(1). The runpath is specified
     when the dynamic object is constructed using the  -R  option



SunOS 5.10           Last change: 1 Aug 2005                    2






User Commands                                          ld.so.1(1)



     to  ld(1).  The  environment variable LD_LIBRARY_PATH can be
     used to indicate  directories  to  be  searched  before  the
     default directories.

  Command Line Usage
     Typically, the runtime linker is invoked indirectly  through
     executing  a  dynamic  executable  that declares the runtime
     linker as its interpreter. The runtime linker  can  also  be
     executed  directly  from the command line. This mechanism is
     most often employed to experiment with  new  implementations
     of  the  runtime  linker. Arguments that are supplied on the
     command line consist of options that are applicable  to  the
     runtime  linker.  Following these options is the name of the
     dynamic object to be executed, and any options  required  by
     this  object.  Effectively,  the runtime linker replaces any
     interpreter specified by the dynamic object.

     The following option is supported:

     -e envar        Specify a runtime linker  specific  environ-
                     ment variable. See ENVIRONMENT VARIABLES.



ENVIRONMENT VARIABLES
     Each environment variable can be specified with a _32 or _64
     suffix.   This  makes  the  environment  variable  specific,
     respectively, to 32-bit or 64-bit processes.  This  environ-
     ment  variable  overrides  any  non-suffixed  version of the
     environment variable that may  be  in  effect.   Environment
     variables  specified without a value, that have a _32 or _64
     suffix, effectively cancel any associated  generic  environ-
     ment variable setting.

     LD_AUDIT, LD_AUDIT_32, and LD_AUDIT_64

         A colon-separated list of objects that are loaded by the
         runtime  linker. As each object is loaded, the object is
         examined for Link-Auditing interface routines. The  rou-
         tines  that  are  present are called as specified in the
         Link-Auditing interface  described  in  the  Linker  and
         Libraries  Guide.  Also,  see  the  -p and -P options of
         ld(1).



     LD_BIND_LAZY, LD_BIND_LAZY_32, and LD_BIND_LAZY_64

         The runtime linker's default  mode  of  performing  lazy
         binding can be enforced by setting the environment vari-
         able LD_BIND_LAZY to any non-null value.   This  setting
         causes the runtime linker to perform only lazy reference



SunOS 5.10           Last change: 1 Aug 2005                    3






User Commands                                          ld.so.1(1)



         relocations for all objects that  are  loaded  into  the
         process. Individual objects can request that lazy refer-
         ence  relocations  are  performed  when  the  object  is
         loaded.  See  the -z now option of ld(1), and dlopen(3C)
         with the mode RTLD_NOW. Such requests  to  perform  lazy
         reference  relocations  are suppressed when LD_BIND_LAZY
         is in effect.

         If both LD_BIND_LAZY and LD_BIND_NOW are specified, then
         LD_BIND_NOW takes precedence.



     LD_BIND_NOW, LD_BIND_NOW_32, and LD_BIND_NOW_64

         The runtime linker's default  mode  of  performing  lazy
         binding  can  be  overridden  by setting the environment
         variable LD_BIND_NOW to any non-null value. This setting
         causes  the  runtime  linker  to  perform both immediate
         reference and lazy reference relocations for all objects
         that are loaded into the process. Individual objects can
         request that lazy reference  relocations  are  performed
         when  the  object  is  loaded.  See the -z now option of
         ld(1), and dlopen(3C) with the mode RTLD_NOW.

         If both LD_BIND_NOW and LD_BIND_LAZY are specified, then
         LD_BIND_NOW takes precedence.



     LD_CONFIG, LD_CONFIG_32, and LD_CONFIG_64

         Provides an alternative configuration  file.  Configura-
         tion  files  can  be  employed  to  alter default search
         paths, provide a directory cache, and provide  alternate
         object dependencies.  See crle(1).



     LD_DEBUG, LD_DEBUG_32, and LD_DEBUG_64

         Provides a comma, or colon-separated list of  tokens  to
         cause  the runtime linker to print debugging information
         to standard error. The special token help indicates  the
         full  list of tokens available. The environment variable
         LD_DEBUG_OUTPUT can also be supplied to specify  a  file
         to which the debugging information is sent. The filename
         is suffixed with the process ID of the application  gen-
         erating the debugging information. See lari(1).






SunOS 5.10           Last change: 1 Aug 2005                    4






User Commands                                          ld.so.1(1)



     LD_DEMANGLE, LD_DEMANGLE_32, and LD_DEMANGLE_64

         Any symbol name used as part of a diagnostic message  is
         shown as defined within an ELF file. When LD_DEMANGLE is
         set to any non-null value, the runtime  linker  attempts
         to decode (demangle) any C++ symbol name.



     LD_FLAGS, LD_FLAGS_32, and LD_FLAGS_64

         Provides an alternative means of  supplying  environment
         variable  information.  Any  of  the  LD_XXX environment
         variables can be specified  as  a  xxx  token.  Multiple
         tokens  can  be  supplied separated by commas. See EXAM-
         PLES.



     LD_LIBRARY_PATH, LD_LIBRARY_PATH_32, and LD_LIBRARY_PATH_64

         The LD_LIBRARY_PATH environment  variable,  if  set,  is
         used  to enhance the search path that the runtime linker
         uses  to  find  dynamic  dependencies.   LD_LIBRARY_PATH
         specifies a colon-separated list of directories that are
         searched before the  default  directories.  Also  notice
         that LD_LIBRARY_PATH adds additional semantics to ld(1).



     LD_LOADFLTR, LD_LOADFLTR_32, and LD_LOADFLTR_64

         Filters are a form of shared object.  Filters  allow  an
         alternative shared object to be selected at runtime that
         provide the implementation  for  any  symbols  that  are
         defined  within the filter. See the -f and -F options of
         ld(1). By default, the alternative  shared  object  pro-
         cessing  is  deferred  until  symbol  resolution  occurs
         against the filter. When LD_LOADFLTR is set to any  non-
         null  value,  any filters are processed immediately when
         the filter is loaded. Also, see the -z  loadfltr  option
         of ld(1).



     LD_NOAUDIT, LD_NOAUDIT_32, and LD_NOAUDIT_64

         Local auditing libraries can be defined within  applica-
         tions  and  shared objects. See the -p and -P options of
         ld(1). When LD_NOAUDIT is set to any non-null value, the
         runtime linker ignores any local auditing libraries.




SunOS 5.10           Last change: 1 Aug 2005                    5






User Commands                                          ld.so.1(1)



     LD_NOAUXFLTR, LD_NOAUXFLTR_32, and LD_NOAUXFLTR_64

         Auxiliary filters are a form of shared object. Auxiliary
         filters   allow  an  alternative  shared  object  to  be
         selected at runtime which  provides  the  implementation
         for  any symbols that are defined within the filter. See
         the -f option of ld(1). When LD_NOAUXFLTR is set to  any
         non-null  value, the runtime linker disables this alter-
         native shared object lookup.



     LD_NOCONFIG, LD_NOCONFIG_32, and LD_NOCONFIG_64

         By default the runtime linker attempts to open and  pro-
         cess  a  configuration  file. When LD_NOCONFIG is set to
         any non-null value, the  runtime  linker  disables  this
         configuration file processing.



     LD_NODIRCONFIG, LD_NODIRCONFIG_32, and LD_NODIRCONFIG_64

         Provides a subset of LD_NOCONFIG in that  any  directory
         cache  information  provided  in a configuration file is
         ignored.



     LD_NODIRECT, LD_NODIRECT_32, and LD_NODIRECT_64

         Direct binding information instructs the runtime  linker
         to search directly for a symbol in an associated object.
         See the -B direct option of ld(1). Without direct  bind-
         ing,  the  symbol search performed by the runtime linker
         follows the default model. When LD_NODIRECT  is  set  to
         any  non-null  value,  the  runtime  linker  ignores any
         direct binding information.



     LD_NOENVCONFIG, LD_NOENVCONFIG_32, and LD_NOENVCONFIG_64

         Provides a subset of LD_NOCONFIG in that any environment
         variables provided in a configuration file are ignored.



     LD_NOLAZYLOAD, LD_NOLAZYLOAD_32, and LD_NOLAZYLOAD_64

         Dependencies that are labeled for lazy loading  are  not
         loaded  into  memory  until  explicit  reference  to the



SunOS 5.10           Last change: 1 Aug 2005                    6






User Commands                                          ld.so.1(1)



         dependency has been made. See the -z lazyload option  of
         ld(1).  When LD_NOLAZYLOAD is set to any non-null value,
         the runtime linker ignores a dependencies  lazy  loading
         label and loads the dependency immediately.



     LD_NOOBJALTER, LD_NOOBJALTER_32, and LD_NOOBJALTER_64

         Provides a subset of LD_NOCONFIG in that any alternative
         object dependencies provided in a configuration file are
         ignored.



     LD_NOVERSION, LD_NOVERSION_32, and LD_NOVERSION_64

         By default, the runtime linker verifies  version  depen-
         dencies for the primary executable and all of its depen-
         dencies. When LD_NOVERSION is set to any non-null value,
         the runtime linker disables this version checking.



     LD_ORIGIN, LD_ORIGIN_32, and LD_ORIGIN_64

         The immediate processing of $ORIGIN can be triggered  by
         setting  the  environment variable LD_ORIGIN to any non-
         null value.  Before Solaris 9, this  option  was  useful
         for applications that invoked chdir(2) prior to locating
         dependencies that employed the $ORIGIN string token. The
         establishment  of  the  current working directory by the
         runtime linker is now default thus  making  this  option
         redundant.



     LD_PRELOAD, LD_PRELOAD_32, and LD_PRELOAD_64

         Provides a list of shared objects, separated by  spaces.
         These  objects  are  loaded after the program being exe-
         cuted but before any other shared objects that the  pro-
         gram  references.   Symbol  definitions  provided by the
         preloaded objects interpose on references  made  by  the
         shared  objects  that  the  program  references.  Symbol
         definitions provided by the  preloaded  objects  do  not
         interpose on the symbol definitions provided by the pro-
         gram.







SunOS 5.10           Last change: 1 Aug 2005                    7






User Commands                                          ld.so.1(1)



     LD_PROFILE, LD_PROFILE_32, and LD_PROFILE_64

         Defines a shared object to be profiled  by  the  runtime
         linker.  When  profiling  is enabled, a profiling buffer
         file is created and mapped. The name of the buffer  file
         is  the  name of the shared object being profiled with a
         .profile extension. By default, this  buffer  is  placed
         under     /var/tmp.     The     environment     variable
         LD_PROFILE_OUTPUT can also be supplied  to  indicate  an
         alternative  directory  in  which to place the profiling
         buffer.

         The profiling buffer contains profil(2) and  call  count
         information. This information is similar to the gmon.out
         information generated by programs that have been  linked
         with  the  -xpg  option of cc. Any applications that use
         the named shared object and run while  this  environment
         variable  is set, accumulate data in the profile buffer.
         See also NOTES. The profile buffer  information  can  be
         examined using gprof(1).

         The LD_PROFILE profiling technique is an alternative  to
         other  techniques that might be provided by the compila-
         tion system. The shared object being profiled  does  not
         have  to  be  instrumented  in  any  way, and LD_PROFILE
         should  not  be  combined  with  a  profile-instrumented
         application. See the Linker and Libraries Guide for more
         information on profiling shared objects.



     LD_SIGNAL, LD_SIGNAL_32, and LD_SIGNAL_64

         Provides a numeric signal number that the runtime linker
         uses to kill the process in the event of a fatal runtime
         error. See thr_kill(3C). By default,  SIGKILL  is  used.
         For  example,  providing the alternative signal number 6
         (SIGABRT), can provide for the creation of a  core  file
         to aid debugging. See also the RTLD_DI_SETSIGNAL request
         to dlinfo(3C).



     Notice that environment variable names  beginning  with  the
     characters  'LD_'  are reserved for possible future enhance-
     ments to ld(1) and ld.so.1.

SECURITY
     Secure processes  have  some  restrictions  applied  to  the
     evaluation  of  their  dependencies  and runpaths to prevent
     malicious dependency substitution or symbol interposition.




SunOS 5.10           Last change: 1 Aug 2005                    8






User Commands                                          ld.so.1(1)



     The runtime linker categorizes a process as  secure  if  the
     issetugid(2) system call returns true for the process.

     For 32-bit objects, the default trusted directories that are
     known   to   the   runtime   linker   are   /lib/secure  and
     /usr/lib/secure.  For 64-bit objects,  the  default  trusted
     directories  are /lib/secure/64 and /usr/lib/secure/64.  The
     utility crle(1) can be used to  specify  additional  trusted
     directories  that  are  applicable  for secure applications.
     Administrators who use this technique should ensure that the
     target  directories  are  suitably  protected from malicious
     intrusion.

     If an LD_LIBRARY_PATH  family  environment  variable  is  in
     effect  for  a  secure process, only the trusted directories
     specified by this variable are used to augment  the  runtime
     linker's search rules.

     In a secure process, runpath components that are provided by
     the  application  or  any of its dependencies are used, pro-
     vided the component is a full pathname, that is,  the  path-
     name starts with a '/'.

     In a secure process, the expansion of the $ORIGIN string  is
     allowed only if the string expands to a trusted directory.

     In a secure process, LD_CONFIG is ignored. A secure  process
     uses the default configuration file, if a configuration file
     exists. See crle(1).

     In a secure process, LD_SIGNAL is ignored.

     Additional objects can be loaded with a secure process using
     the  LD_PRELOAD,  or  LD_AUDIT  environment variables. These
     objects must be specified as full pathnames or  simple  file
     names. Full pathnames are restricted to known trusted direc-
     tories. Simple file names, in which no '/'  appears  in  the
     name,  are  located  subject to the search path restrictions
     previously described. Simple  file  names  resolve  only  to
     known trusted directories.

     In a secure process, any dependencies that consist of simple
     filenames are processed using the pathname restrictions pre-
     viously described. Dependencies expressed as full  pathnames
     or  relative  pathnames  are  used  as  is.  Therefore,  the
     developer of a secure process should ensure that the  target
     directory referenced as a full pathname or relative pathname
     dependency is suitably protected from malicious intrusion.

     When creating a secure process,  relative  pathnames  should
     not  be  used  to  express  dependencies,  or  to  construct
     dlopen(3C) pathnames.  This restriction should be applied to



SunOS 5.10           Last change: 1 Aug 2005                    9






User Commands                                          ld.so.1(1)



     the application and to all dependencies.

EXAMPLES
     Example 1: Using  LD_FLAGS  to  group  environment  variable
     information

     The following use of LD_FLAGS is equivalent to  setting  the
     individual    environment    variables    LD_BIND_NOW    and
     LD_LIBRARY_PATH for 32-bit applications:

     example% LD_FLAGS_32=bind_now,library_path=/lib/one:/lib/two

     The following use of LD_FLAGS is equivalent to  setting  the
     individual   environment   variables   LD_LIBRARY_PATH   and
     LD_PRELOAD for 64-bit applications:

     example% LD_FLAGS_64=library_path=/lib/one/64,preload=foo.so

FILES
     /lib/ld.so.1

         Default runtime linker.



     /lib/libc.so.1

         Alternate interpreter for SVID ABI compatibility.



     /usr/lib/ld.so

         AOUT (BCP) runtime linker.



     /usr/lib/0@0.so.1

         A  compatibility  library  to  support  null   character
         pointers. See NOTES.



     /lib/secure and /usr/lib/secure

         LD_PRELOAD location for secure applications.



     /lib/secure/64 and /usr/lib/secure/64




SunOS 5.10           Last change: 1 Aug 2005                   10






User Commands                                          ld.so.1(1)



         LD_PRELOAD location for secure 64-bit applications.



     /lib/64/ld.so.1

         Default runtime linker for 64-bit applications.



     /usr/lib/64/0@0.so.1

         A 64-bit compatibility library to support null character
         pointers. See NOTES.



     /var/ld/ld.config

         Default configuration file for 32-bit applications.



     /var/ld/64/ld.config

         Default configuration file for 64-bit applications.



ATTRIBUTES
     See attributes(5) for descriptions of the  following  attri-
     butes:

     ____________________________________________________________
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |_____________________________|_____________________________|
    | Availability                | SUNWcsu                     |
    |_____________________________|_____________________________|


SEE ALSO
     crle(1), gprof(1), lari(1), ld(1), ldd(1), exec(2),  issetu-
     gid(2),   mmap(2),   profil(2),   dladdr(3C),   dlclose(3C),
     dldump(3C), dlerror(3C), dlinfo(3C), dlopen(3C),  dlsym(3C),
     thr_kill(3C), proc(4), attributes(5)

     Linker and Libraries Guide

NOTES
     Care should be exercised when using LD_PROFILE  in  combina-
     tion with other process monitoring techniques, such as users
     of  proc(4).  Multiple  process  monitoring  techniques  can



SunOS 5.10           Last change: 1 Aug 2005                   11






User Commands                                          ld.so.1(1)



     result  in deadlock conditions that leave the profile buffer
     locked. A locked buffer blocks any  processes  that  try  to
     record profiling information. To reduce this likelihood, the
     runtime linker's profile implementation  determines  if  the
     process  is  being monitored at startup. If so, profiling of
     the process is silently disabled.  However,  this  mechanism
     can  not  catch monitoring processes that attach to the pro-
     cess during its execution.

     The user compatibility library /usr/lib/0@0.so.1 provides  a
     mechanism  that establishes a value of 0 at location 0. Some
     applications exist that erroneously assume a null  character
     pointer  should  be  treated the same as a pointer to a null
     string. A segmentation violation occurs  in  these  applica-
     tions  when  a  null  character pointer is accessed. If this
     library is added to such an  application  at  runtime  using
     LD_PRELOAD, the library provides an environment that is sym-
     pathetic to this errant behavior. However, the user compati-
     bility  library is intended neither to enable the generation
     of such applications, nor to endorse  this  particular  pro-
     gramming practice.


































SunOS 5.10           Last change: 1 Aug 2005                   12





Man(1) output converted with man2html and wrapped by fishsponge

This page was generated on Wed Sep 12 21:37:08 GMT 2007

Your favourite pages:

No pages logged yet.
Trying to save cookie...

Top 10 most popular pages:

sqlite3 man page (5059 hits)
(openSUSE 10.2)

adv_cap_autoneg man page (4731 hits)
(Solaris 10 11_06)

CPAN man page (4452 hits)
(Suse Linux 10.1)

ssh man page (4241 hits)
(Suse Linux 10.1)

svn man page (4118 hits)
(FreeBSD 6.2)

startproc man page (2159 hits)
(Suse Linux 10.1)

ssh-socks5-proxy-connect man page (2104 hits)
(Solaris 10 11_06)

netcat man page (2088 hits)
(Suse Linux 10.1)

signal man page (1950 hits)
(Suse Linux 10.1)

pprosetup man page (1949 hits)
(Solaris 10 11_06)

Useful Links

Go Back

Visitor Statistics


Valid XHTML 1.0 Transitional     Valid CSS!

Partners: Cambridge Plus :: Pyrenees Location :: SolidWorks 3D CAD :: <Link Available>
Unix Man Pages / Linux Man Pages :: HiFi Forum :: SIP VoIP Phone & Provider Reviews :: UNIX/Linux Forum Archives

More info on advertising on Unix/Linux Forum