ld.so.1(1) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

ld.so.1(1)

ld.so.1(1)                       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 initialization and execution of a
       dynamic application, an interpreter is called.  This  interpreter  com‐
       pletes  the  binding  of the application to its shared object dependen‐
       cies. In Solaris, this  interpreter  is  referred  to  as  the  runtime
       linker.


       During the link-editing of a dynamic executable, a special .interp sec‐
       tion, together with an associated program header, is created. This sec‐
       tion  contains a path name specifying the program's interpreter. An in‐
       terpreter path name can be specified when the executable is constructed
       using the -I option to ld(1), the link-editor. The  default  name  sup‐
       plied 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
       mmapobj(2).  The  kernel maps in, and transfers control to, this inter‐
       preter. Sufficient information is passed to the  interpreter  to  allow
       the interpreter to continue 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. Addi‐
       tional shared objects can be mapped, and symbols within the shared  ob‐
       jects can be bound to.


       The runtime linker performs the following functions:

           o      A configuration file, if in existence, is processed. Config‐
                  uration 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 config‐
                  uration files can also be  encoded  within  a  dynamic  exe‐
                  cutable by using the -c option of ld(1).


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


           o      The runtime linker then locates and maps in these  dependen‐
                  cies.  The dynamic information section of each dependency is
                  then analyzed to determine if  any  additional  dependencies
                  are required.


           o      Once all the shared object dependencies are loaded, the run‐
                  time  linker performs any necessary relocations. These relo‐
                  cations bind the shared objects in preparation  for  process
                  execution.


           o      Any  initialization  functions provided by the shared object
                  dependencies and, possibly, by the  dynamic  executable  are
                  called. The functions are called in the reverse order of the
                  topologically  sorted  dependencies.  If cyclic dependencies
                  exist, the initialization functions  are  called  using  the
                  sorted  order  with the cycle removed. ldd(1) can be used to
                  display the initialization order of shared object  dependen‐
                  cies.


           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,  final‐
                  ization  functions  are  called. By default, these functions
                  are called in the order of the topologically  sorted  depen‐
                  dencies.


           o      The  application can also call upon the services of the run‐
                  time 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 these topics can be found in the Oracle  So‐
       laris 11.4 Linkers and Libraries Guide.


       The  runtime  linker uses a prescribed search path for locating the dy‐
       namic dependencies of an object. The default search paths are the  run‐
       path  recorded  in  the  object,  followed 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 de‐
       faults 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 to ld(1). The  environment  variable
       LD_LIBRARY_PATH  can be used to indicate directories to be searched be‐
       fore the default directories.


       See Directories Searched by the Runtime Linker in Oracle  Solaris  11.4
       Linkers and Libraries Guide.

   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 implemen‐
       tations of the runtime linker. Arguments that are supplied on the  com‐
       mand line consist of options that are applicable to the runtime linker.
       Following  these  options  is the name of the dynamic object to be exe‐
       cuted, and any options required by this object. Effectively,  the  run‐
       time linker replaces any interpreter specified by the dynamic object.


       The following option is supported:

       -e envar    Specify a runtime linker specific environment variable. See
                   ENVIRONMENT VARIABLES. Variables set using this option take
                   precedence over any environment variables, or configuration
                   file  variables of the same name. The variable LD_NOENVIRON
                   can be specified to indicate that no environment  variables
                   should be processed following -e option processing.


ENVIRONMENT VARIABLES
       The  following  environment  variables  are  recognized  by the runtime
       linker. Additional environment variables, prefixed with LD_, are avail‐
       able for use with the link-editor. See ld(1).


       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 environment variable overrides  any  non-suf‐
       fixed  version of the environment variable that might be in effect. En‐
       vironment variables specified without a value, that have a _32  or  _64
       suffix,  effectively cancel any associated generic environment 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.

           See Runtime Linker Auditing Interface in Oracle Solaris 11.4  Link‐
           ers  and  Libraries Guide for more details. 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 variable  LD_BIND_LAZY  to  any
           non-null  value.  This setting causes the runtime linker to perform
           only lazy reference 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
           non-deferred  objects  that are loaded into the process. Individual
           objects can request that non-deferred, 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. Deferred dependencies
           are not affected by LD_BIND_NOW or RTLD_NOW. See the  -z   deferred
           option of ld(1).

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

           See When Relocations Are Performed in Oracle Solaris  11.4  Linkers
           and Libraries Guide for more details.


       LD_CAP_FILES, LD_CAP_FILES_32, and LD_CAP_FILES_64

           Identifies a comma separated list of files that should be validated
           against  any  alternative capabilities. See LD_PLATCAP, LD_MACHCAP,
           LD_HWCAP, and LD_SFCAP.

           See Exercising a Capability Family in Oracle Solaris  11.4  Linkers
           and Libraries Guide for more details.


       LD_CONFIG, LD_CONFIG_32, and LD_CONFIG_64

           Provides an alternative configuration file. Configuration 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. The special token
           help indicates the full list of tokens available. If help is speci‐
           fied by itself, output goes to the standard output.  If  any  other
           tokens  are specified, output goes to the standard error. The envi‐
           ronment 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 generating the  de‐
           bugging information. See lari(1).

           See  Runtime Linker Debugging Facility in Oracle Solaris 11.4 Link‐
           ers and Libraries Guide for more details.


       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 in‐
           formation. Any of the LD_XXX environment variables can be specified
           as a xxx token. Multiple tokens can be supplied separated  by  com‐
           mas. See EXAMPLES.


       LD_HWCAP, LD_HWCAP_32, and LD_HWCAP_64

           Identifies an alternative hardware capabilities value.


             LD_HWCAP=[+-]{token | [index]number},....


           A "+" prefix results in the capabilities that follow being added to
           the alternative capabilities. A "-" prefix results in the capabili‐
           ties  that  follow being removed from the alternative capabilities.
           The lack of "+-" result in the capabilities that  follow  replacing
           the alternative capabilities.

           To  provide for setting numeric values for different masks, such as
           CA_SUNW_HW_1 and CA_SUNW_HW_2, the number can be  prefixed  with  a
           bracketed index. For example, LD_HWCAP=[2]0x80 sets CA_SUNW_HW_2 to
           the value 0x80. If no index is specified, 1 is assumed. Invalid in‐
           dexes are ignored.

           See  Identifying  Capability  Requirements  in  Oracle Solaris 11.4
           Linkers and Libraries Guide for more details.


       LD_LIBRARY_PATH, LD_LIBRARY_PATH_32, and LD_LIBRARY_PATH_64

           The LD_LIBRARY_PATH environment variable, if set, is  used  to  en‐
           hance  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).

           See Directories Searched by the Runtime Linker  in  Oracle  Solaris
           11.4 Linkers and Libraries Guide for more details.


       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  implemen‐
           tation  for any symbols that are defined within the filter. See the
           -f and -F options of ld(1). By default, the alternative shared  ob‐
           ject  processing is deferred until symbol resolution occurs against
           the filter. When LD_LOADFLTR is set to any non-null value, any fil‐
           tees are processed immediately when the filter is loaded. Also, see
           the -z  loadfltr option of ld(1).

           See Shared Objects as Filters in Oracle Solaris  11.4  Linkers  and
           Libraries Guide for more details.


       LD_MACHCAP, LD_MACHCAP_32, and LD_MACHCAP_64

           Identifies an alternative machine hardware name.

           See  Identifying  Capability  Requirements  in  Oracle Solaris 11.4
           Linkers and Libraries Guide for more details.


       LD_NOAUDIT, LD_NOAUDIT_32, and LD_NOAUDIT_64

           Local auditing libraries can be  defined  within  applications  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.

           See Generating Auxiliary Filters in Oracle Solaris 11.4 Linkers and
           Libraries Guide for more details.


       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  alternative
           shared object lookup.

           See  Shared  Objects  as Filters in Oracle Solaris 11.4 Linkers and
           Libraries Guide for more details.


       LD_NOCONFIG, LD_NOCONFIG_32, and LD_NOCONFIG_64

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


       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 binding, the symbol search per‐
           formed by the  runtime  linker  follows  the  default  model.  When
           LD_NODIRECT  is  set  to any non-null value, the runtime linker ig‐
           nores any direct binding information.

           See Chapter 7, Direct Bindings in Oracle Solaris 11.4  Linkers  and
           Libraries Guide for more details.


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

           See Lazy Loading of Dynamic Dependencies  in  Oracle  Solaris  11.4
           Linkers and Libraries Guide for more details.


       LD_NOOBJALTER, LD_NOOBJALTER_32, and LD_NOOBJALTER_64

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


       LD_NOVERSION, LD_NOVERSION_32, and LD_NOVERSION_64

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

           See  Internal  Versioning  in  Oracle  Solaris 11.4 Linkers and Li‐
           braries Guide for more details.


       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  So‐
           laris  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 redun‐
           dant.

           See Locating Associated Dependencies in Oracle Solaris 11.4 Linkers
           and Libraries Guide for more details.


       LD_PLATCAP, LD_PLATCAP_32, and LD_PLATCAP_64

           Identifies an alternative platform name.

           See Identifying Capability  Requirements  in  Oracle  Solaris  11.4
           Linkers and Libraries Guide for more details.


       LD_PRELOAD, LD_PRELOAD_32, and LD_PRELOAD_64

           Provides  a  list of shared objects, separated by spaces. These ob‐
           jects are loaded after the program being executed  but  before  any
           other  shared  objects  that the program references. Symbol defini‐
           tions provided by the preloaded  objects  interpose  on  references
           made by the shared objects that the program references. Symbol def‐
           initions  provided by the preloaded objects do not interpose on the
           symbol definitions provided by the program.

           See Preloading Additional Objects in Oracle  Solaris  11.4  Linkers
           and Libraries Guide for more details.


       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 ob‐
           ject being profiled with a .profile  extension.  By  default,  this
           buffer  is  placed under /var/tmp. The environment variable LD_PRO‐
           FILE_OUTPUT can also be supplied to indicate an alternative  direc‐
           tory 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  us‐
           ing gprof(1).

           The LD_PROFILE profiling technique is an alternative to other tech‐
           niques that might be provided by the compilation 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 Profiling Shared Objects in Oracle Solaris 11.4 Linkers and Li‐
           braries Guide for more details.


       LD_SFCAP, LD_SFCAP_32, and LD_SFCAP_64

           Identifies an alternative software capabilities value.


             LD_SFCAP=[+-]{token | number},....


           A "+" prefix results in the capabilities that follow being added to
           the alternative capabilities. A "-" prefix results in the capabili‐
           ties  that  follow being removed from the alternative capabilities.
           The lack of "+-" result in the capabilities that  follow  replacing
           the alternative capabilities.

           See  Identifying  Capability  Requirements  in  Oracle Solaris 11.4
           Linkers and Libraries Guide for more details.


       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 cre‐
           ation of a core file to aid debugging. See also the RTLD_DI_SETSIG‐
           NAL request to dlinfo(3C).


       LD_SX, LD_SX_32, and LD_SX_64

           If the dependencies of an application explicitly define their secu‐
           rity  extension  requirements, the runtime linker ensures these re‐
           quirements do not conflict with any extensions  established  for  a
           process.  See  sxadm(8). Setting LD_SX to any non-null value causes
           the runtime linker to simulate that all security extensions are  in
           affect,  and  thus  triggers the diagnosis of any dependencies that
           conflict with a security extension. LD_SX with a null  value  simu‐
           lates  that  all  security  extensions  are disabled. Note, setting
           LD_SX does not affect the real security extensions in affect for  a
           process.



       Notice  that  environment  variable names beginning with the characters
       'LD_' are reserved  for  possible  future  enhancements  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 substi‐
       tution or symbol interposition.


       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  ob‐
       jects,   the   default   trusted  directories  are  /lib/secure/64  and
       /usr/lib/secure/64. The utility crle(1) can be used  to  specify  addi‐
       tional trusted directories that are applicable for secure applications.
       Administrators who use this technique should ensure that the target di‐
       rectories 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 appli‐
       cation or any of its dependencies are used, provided the component is a
       full path name, 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. However, should a
       $ORIGIN expansion match a directory that has already provided dependen‐
       cies, then the directory is implicitly secure. This  directory  can  be
       used to provide additional dependencies.


       In  a  secure  process,  LD_CONFIG is ignored. However, a configuration
       file that is recorded in a secure application is used. See the  -c  op‐
       tion  of ld(1). A recorded configuration file must be a full path name,
       that is, the path name starts with a '/'. A recorded configuration file
       that employs the $ORIGIN string is restricted to known trusted directo‐
       ries. Developers who record a configuration file within a secure appli‐
       cation should ensure that the configuration file directory is  suitably
       protected  from  malicious intrusion. In the absence of a recorded con‐
       figuration file, 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 path names or simple file names. Full path names are
       restricted to known trusted directories. Simple file names, in which no
       '/' appears in the name, are located subject to  the  search  path  re‐
       strictions  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 path name restrictions previously described.
       Dependencies expressed as full path names or relative  path  names  are
       used  as is. Therefore, the developer of a secure process should ensure
       that the target directory referenced as a full path  name  or  relative
       path name dependency is suitably protected from malicious intrusion.


       When  creating a secure process, relative path names should not be used
       to express dependencies, or to construct dlopen(3C)  path  names.  This
       restriction  should  be applied to the application and to all dependen‐
       cies.

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 appli‐
       cations:


         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  appli‐
       cations:


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

           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(7) for descriptions of the following attributes:

       tab()  box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
       TRIBUTE VALUE _ Availabilitysystem/linker


SEE ALSO
       crle(1),  gprof(1),  lari(1),  ld(1),  ld(1),  ldd(1),  exec(2),  isse‐
       tugid(2),  mmapobj(2),  profil(2), dladdr(3C), dlclose(3C), dldump(3C),
       dlerror(3C), dlinfo(3C), dlopen(3C), dlsym(3C), thr_kill(3C),  proc(5),
       attributes(7), sxadm(8)


       Oracle Solaris 11.4 Linkers and Libraries Guide

NOTES
       Care  should  be  exercised  when  using LD_PROFILE in combination with
       other process monitoring techniques, such as users of proc(5). Multiple
       process monitoring techniques can 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 process 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 applications 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 sympathetic to this  errant
       behavior.  However,  the user compatibility library is intended neither
       to enable the generation of such applications, nor to endorse this par‐
       ticular programming practice.


       In many cases, the presence of /usr/lib/0@0.so.1 is benign, and it  can
       be  preloaded  into programs that do not require it. However, there are
       exceptions. Some applications, such as the JVM (Java Virtual  Machine),
       require  that a segmentation violation be generated from a null pointer
       access.   Applications   such   as   the   JVM   should   not   preload
       /usr/lib/0@0.so.

Oracle Solaris 11.4               13 Nov 2020                       ld.so.1(1)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3