1 CRLE(1)                          User Commands                         CRLE(1)
   2 
   3 
   4 
   5 NAME
   6        crle - configure runtime linking environment
   7 
   8 SYNOPSIS
   9        crle [-64] [-a name] [-A name] [-c conf] [-e env] [-E env]
  10             [-f flags] [-i name] [-I name] [-g name] [-G name]
  11             [-l dir] [-o dir] [-s dir] [-t [ ELF | AOUT]] [-u] [-v]
  12 
  13 
  14 DESCRIPTION
  15        The crle utility provides for the creation and display of a runtime
  16        linking configuration file. The configuration file is read and
  17        interpreted by the runtime linker, ld.so.1(1), during process startup.
  18        The runtime linker attempts to read a default configuration file for
  19        all processes. For 32-bit processes, the default configuration file is
  20        /var/ld/ld.config.  For 64-bit processes, the default configuration
  21        file is /var/ld/64/ld.config.
  22 
  23 
  24        Without any arguments, or with just the -c option, crle displays
  25        configuration information. This information includes the contents of a
  26        configuration file, any system defaults and the command-line required
  27        to regenerate the configuration file. When used with any other options,
  28        a new configuration file is created or updated.
  29 
  30 
  31        The runtime linker can also be directed to an alternative configuration
  32        file by setting one of the LD_CONFIG family of environment variable.
  33        LD_CONFIG applies to both 32-bit and 64-bit programs. Since 32-bit and
  34        64-bit configuration files differ, a single configuration file cannot
  35        be used for both class of object. Hence, LD_CONFIG can adversely affect
  36        program execution in cases where a program of one class executes a
  37        program of the other class. In particular, it is common practice for
  38        the 32-bit version of standard Solaris utilities to execute their
  39        64-bit counterpart. LD_CONFIG cannot be successfully used in this case.
  40        Therefore, the use of the LD_CONFIG_32 and LD_CONFIG_64 environment
  41        variables, that precisely target the appropriate class of process, is
  42        recommended.
  43 
  44 
  45        Creating an incorrect configuration file in the standard location,
  46        /var/ld, can prevent programs from running, and can therefore be
  47        difficult to recover from. To guard against this situation, it is
  48        recommended that new configuration files first be created in a
  49        temporary location. Then set the appropriate LD_CONFIG environment
  50        variable to this new configuration file. This setting causes the new
  51        configuration file to be used by the runtime linker instead of any
  52        default. After verification, the new configuration file can be moved to
  53        the default location if desired. At any time, the environment variable
  54        LD_NOCONFIG can be set to any value to instruct the runtime linker to
  55        ignore any configuration files. This setting can prove useful during
  56        experimentation.
  57 
  58 
  59        A configuration file can contain the following information.
  60 
  61        Default Search Paths
  62 
  63            The runtime linker uses a prescribed search path for locating the
  64            dynamic dependencies of an object. This search path starts with the
  65            components of any LD_LIBRARY_PATH definition, followed by the
  66            components of an object's runpath. Finally, any default search
  67            paths specific to the object's class are used. This last component
  68            of the search path can be expressed within the configuration file.
  69            Typically, use of this facility should be augmented with any system
  70            default. See the -l and -u options.
  71 
  72 
  73        Trusted Directories
  74 
  75            When processing a secure application, the runtime linker restricts
  76            the use of LD_LIBRARY_PATH searches, and $ORIGIN token expansion.
  77            See Security in Linker and Libraries Guide. In addition, the
  78            directories from which preload and audit libraries can be located
  79            are also restricted. The path names that are associated with
  80            preload and audit libraries are restricted to known trusted
  81            directories. Trusted directories can be expressed within the
  82            configuration file. Typically, use of this facility should be
  83            augmented with any system defaults. See the -s and -u options.
  84 
  85 
  86        Environment Variables
  87 
  88            Any environment variable interpreted by the runtime linker can be
  89            specified within the configuration file.
  90 
  91 
  92        Directory Cache
  93 
  94            The location of shared objects within defined directories can be
  95            maintained as a cache within the configuration file. This directory
  96            cache can reduce the overhead of searching for application
  97            dependencies.
  98 
  99 
 100        Alternative Objects
 101 
 102            In conjunction with the directory cache, shared objects can have
 103            alternative objects specified for use at runtime. These alternate
 104            objects, can be supplied by the user. Alternative objects can also
 105            be created by crle as copies of shared objects fixed to known
 106            memory locations. These fixed alternative objects can require less
 107            processing at runtime than their original shared object
 108            counterpart.
 109 
 110 
 111 
 112        Defining additional default search paths, or additional trusted
 113        directories can be useful for administrators who wish to install third
 114        party software in a central location, or otherwise alter the search
 115        path of applications that might not have been coded with a suitable
 116        runpath.
 117 
 118 
 119        The declaration of alternative objects provides a means of replacing
 120        dependencies other than by using symbolic links or requiring
 121        LD_LIBRARY_PATH settings.
 122 
 123 
 124        The declaration of environment variables that are interpreted by the
 125        runtime linker provides a means of centralizing their definition for
 126        all applications.
 127 
 128 
 129        The directory cache, and crle generated alternate objects, can provide
 130        a means of reducing the runtime startup overhead of applications.
 131        Alternative objects can be useful for applications that require many
 132        dependencies, or whose dependencies are expensive to relocate. Shared
 133        objects that contain position-dependent code are often expensive to
 134        relocate. Note, the system has many caching facilities that help
 135        mitigate expenses such as negative path lookups, and thus employing
 136        crle to create a directory cache may have minimal effect other than for
 137        some very specific cases.
 138 
 139 
 140        When alternate objects that are generated by crle are specified within
 141        a configuration file, the runtime linker performs some minimal
 142        consistency verification. The alternative objects are verified against
 143        their originating objects. This verification is intended to avert
 144        application failure should an applications configuration information
 145        become out-of-sync with the underlying system components. When this
 146        situation arises the flexibility offered by dynamic linking system
 147        components can be compromised. This type of application failure can be
 148        very difficult to diagnose. No verification of directory cache
 149        information is performed. Any changes to the directory structure are
 150        not seen by a process until the cache is rebuilt.
 151 
 152 
 153        System shared objects are often well tuned, and can show little benefit
 154        from being cached. The directory cache and alternative object features
 155        are typically applicable to user applications and shared objects, and
 156        may only show improvement in some very specific cases.
 157 
 158 
 159        crle creates alternate objects for the shared objects that are
 160        discovered when using the -I and -G options, using dldump(3C). The
 161        alternate object is created in the directory specified by the preceding
 162        -o option, or defaults to the directory in which the configuration file
 163        is created. The flags used by dldump() are specified using the -f
 164        option, or default to RTLD_REL_RELATIVE.
 165 
 166 OPTIONS
 167        The following options are supported.
 168 
 169        -64
 170 
 171            Specify to process 64-bit objects, the default is 32-bit. Use -64
 172            to create a 64-bit specific configuration file.
 173 
 174 
 175        -a name
 176 
 177            Create an alternative path name for name. The alternative path name
 178            is added to the configuration file.
 179 
 180            The actual alternative file must be supplied by the user. Multiple
 181            occurrences of this option are permitted. If name is a directory,
 182            each shared object within the directory is added to the cache. If
 183            name does not exist, then name is marked in the cache as a
 184            nonexistent file.
 185 
 186            Typically, this option is used with the -o option.
 187 
 188 
 189        -A name
 190 
 191            Create an optional alternative path name for name. This alternative
 192            path name is added to the configuration file.
 193 
 194            This option mimics the -a option, except that if the alternative is
 195            unavailable at runtime, the original object name is used. This
 196            model mimics the use of auxiliary filters. See Generating Auxiliary
 197            Filters in Linker and Libraries Guide.
 198 
 199            Typically, this option is used with the -o option.
 200 
 201 
 202        -c conf
 203 
 204            Specify to use the configuration file name conf. If this option is
 205            not supplied, the default configuration file is used.
 206 
 207 
 208        -e env
 209 
 210            Specify a replaceable environment variable, env. Only environment
 211            variables that are applicable to the runtime linker are meaningful.
 212            Multiple occurrences of this option are permitted. This option is
 213            similar to the -E option. However, the options differs in how
 214            configuration file definitions, and process environment definitions
 215            of the same name are resolved at runtime.
 216 
 217            A definition established in a configuration file can be overridden
 218            by a process environment definition, or be suppressed by a null-
 219            value process environment definition.
 220 
 221            In other words, these configuration file definitions can be
 222            replaced, or removed by the process environment at runtime.
 223 
 224 
 225        -E env
 226 
 227            Specify a permanent environment variable, env. Only environment
 228            variables that are applicable to the runtime linker are meaningful.
 229            Multiple occurrences of this option are permitted. This option is
 230            similar to the -e option. However, the option differs in how
 231            configuration file definitions, and process environment definitions
 232            of the same name are resolved at runtime.
 233 
 234            Environment variable definitions that are meaningful to the runtime
 235            linker fall into one of two categories. Singular definitions are
 236            definitions such as LD_NOLAZYLOAD=1 and LD_DEBUG_OUTPUT=file. List
 237            definitions, which can take one or more values, are definitions
 238            such as LD_LIBRARY_PATH=path, and LD_DEBUG=files,details.
 239 
 240            A singular definition that is established in a configuration file
 241            takes precedence over a process environment definition. A list
 242            definition that is established in a configuration file is appended
 243            to a process environment definition. Any definition that is
 244            established in a configuration file can not be suppressed by a
 245            null-value process environment definition.
 246 
 247            In other words, these configuration file definitions can not be
 248            replaced, or removed by the process environment at runtime.
 249 
 250 
 251        -f flags
 252 
 253            Provide the symbolic flags argument to the dldump(3C) calls used to
 254            generate alternate objects. Any of the RTLD_REL flags that are
 255            defined in /usr/include/dlfcn.h can be used. Multiple flags can be
 256            or'ed together using the "|" character. In this case, the string
 257            should be quoted to avoid expansion by the shell. If no flags
 258            values are provided the default flag is RTLD_REL_RELATIVE.
 259 
 260 
 261        -i name
 262 
 263            Add an individual name to the configuration cache. Multiple
 264            occurrences of this option are permitted. name can be a shared
 265            object or a directory.  If name is a directory, each shared object
 266            within the directory is added to the cache. If name does not exist,
 267            the name is marked in the cache as a nonexistent directory.
 268 
 269 
 270        -I name
 271 
 272            Mimic the -i, and in addition any shared object that is processed
 273            has an alternative created using dldump(3C). If the -f flag
 274            contains RTLD_REL_EXEC, then name can be a dynamic executable, for
 275            which an alternative is created. Only one dynamic executable can be
 276            specified in this manner, as the cache that is created is specific
 277            to this application.
 278 
 279 
 280        -g name
 281 
 282            Add the group name to the configuration cache. Each object is
 283            expanded to determine its dependencies. Multiple occurrences of
 284            this option are permitted.  name can be a dynamic executable,
 285            shared object or a directory. If name is a shared object, the
 286            shared object and its dependencies are added to the cache. If name
 287            is a directory, each shared object within the directory, and its
 288            dependencies, are added to the cache.
 289 
 290 
 291        -G name
 292 
 293            Mimic the -g option, and in addition any shared object that is
 294            processed has an alternative created using dldump(3C). If name is a
 295            dynamic executable, and the -f flag contains RTLD_REL_EXEC, then an
 296            alternative for the dynamic executable is also created. Only one
 297            dynamic executable can be specified in this manner as the cache
 298            that is created is specific to this application.
 299 
 300 
 301        -l dir
 302 
 303            Specify a new default search directory dir for ELF or AOUT objects.
 304            Multiple occurrences of this option are permitted. The type of
 305            object that is applicable to the search, is specified by the
 306            preceding -t option, or defaults to ELF.
 307 
 308            The default search paths for 32-bit ELF objects are /lib followed
 309            by /usr/lib. For 64-bit ELF objects, the default search paths are
 310            /lib/64 followed by /usr/lib/64.
 311 
 312            The default search paths for AOUT objects are /usr/4lib, followed
 313            by /usr/lib and finally /usr/local/lib.
 314 
 315            Use of this option replaces the default search path. Therefore, a
 316            -l option is normally required to specify the original system
 317            default in relation to any new paths that are being applied.
 318            However, if the -u option is in effect, and a configuration file
 319            does not exist, the system defaults are added to the new
 320            configuration file. These defaults are added before the new paths
 321            specified with the -l option.
 322 
 323 
 324        -o dir
 325 
 326            When used with either the -a or -A options, specifies the directory
 327            dir in which any alternate objects exist. When alternative objects
 328            are created by crle, this option specified where the alternative
 329            are created.  Without this option, alternate objects exist in the
 330            directory in which the configuration file is created. Multiple
 331            occurrences of this option are permitted, the directory dir being
 332            used to locate alternatives for any following command-line options.
 333            Alternative objects are not permitted to override their associated
 334            originals.
 335 
 336            Typically, this option is used with the -a or -A options.
 337 
 338 
 339        -s dir
 340 
 341            Specify a new trusted directory dir for secure ELF or AOUT objects.
 342            See SECURITY in ld.so.1(1) for a definition of secure objects. See
 343            Security in Linker and Libraries Guide for a discussion of runtime
 344            restrictions imposed on secure applications.
 345 
 346            Multiple occurrences of this option are permitted. The type of
 347            object that is applicable to the search is specified by the
 348            preceding -t option, or defaults to ELF.
 349 
 350            The default trusted directories for secure 32-bit ELF objects, and
 351            AOUT objects, are /lib/secure followed by /usr/lib/secure.  For
 352            64-bit secure ELF objects, the default trusted directories are
 353            /lib/secure/64 followed by /usr/lib/secure/64.
 354 
 355            Use of this option replaces the default trusted directories.
 356            Therefore, a -s option is normally required to specify the original
 357            system default in relation to any new directories that are being
 358            applied. However, if the -u option is in effect, and a
 359            configuration file does not exist, the system defaults are added to
 360            the new configuration file. These defaults are added before the new
 361            directories specified with the -l option.
 362 
 363 
 364        -t ELF | AOUT
 365 
 366            Toggle the object type that is applicable to any -l or -s options
 367            that follow. The default object type is ELF.
 368 
 369 
 370        -u
 371 
 372            Request that a configuration file be updated, possibly with the
 373            addition of new information. Without other options, any existing
 374            configuration file is inspected and its contents recomputed.
 375            Additional arguments allow information to be appended to the
 376            recomputed contents. See NOTES.
 377 
 378            If a configuration file does not exist, the configuration file is
 379            created as directed by the other arguments. In the case of the -l
 380            and -s options, any system defaults are first applied to the
 381            configuration file before the directories specified with these
 382            options.
 383 
 384            The configuration file can be in the older format that lacks the
 385            system identification information that is normally written at the
 386            beginning of the file. In this case, crle does not place system
 387            identification information into the resulting file, preserving
 388            compatibility of the file with older versions of Solaris. See
 389            NOTES.
 390 
 391 
 392        -v
 393 
 394            Specify verbose mode. When creating a configuration file, a trace
 395            of the files that are being processed is written to the standard
 396            out. When printing the contents of a configuration file, more
 397            extensive directory and file information is provided.
 398 
 399 
 400 
 401        By default, the runtime linker attempts to read the configuration file
 402        /var/ld/ld.config for each 32-bit application processed.
 403        /var/ld/64/ld.config is read for each 64-bit application. When
 404        processing an alternative application, the runtime linker uses a
 405        $ORIGIN/ld.config.app-name configuration file if present. See NOTES.
 406        Applications can reference an alternative configuration file by setting
 407        the LD_CONFIG environment variable. An alternative configuration file
 408        can also be specified by recording the configuration file name in the
 409        application at the time the application is built. See the -c option of
 410        ld(1).
 411 
 412 EXAMPLES
 413        Example 1 Experimenting With a Temporary Configuration File
 414 
 415 
 416        The following example creates a temporary configuration file with a new
 417        default search path for ELF objects. The environment variable
 418        LD_CONFIG_32 is used to instruct the runtime linker to use this
 419        configuration file for all 32-bit processes.
 420 
 421 
 422          $ crle -c /tmp/ld.config -u -l /local/lib
 423          $ crle -c /tmp/ld.config
 424 
 425          Configuration file [version 4]: /tmp/ld.config
 426            Platform:     32-bit MSB SPARC
 427            Default Library Path (ELF):  /lib:/usr/lib:/local/lib
 428            Trusted Directories (ELF):   /lib/secure:/usr/lib/secure  \
 429                                         (system default)
 430 
 431          Command line:
 432            crle -c /tmp/ld.config -l /lib:/usr/lib:/local/lib
 433 
 434          $ LD_CONFIG_32=/tmp/ld.config date
 435          Thu May 29 17:42:00 PDT 2008
 436 
 437 
 438 
 439        Example 2 Updating and Displaying a New Default Search Path for ELF
 440        Objects
 441 
 442 
 443        The following example updates and displays a new default search path
 444        for ELF objects.
 445 
 446 
 447          # crle -u -l /local/lib
 448          # crle
 449 
 450          Configuration file [version 4]: /var/ld/ld.config
 451            Platform:     32-bit MSB SPARC
 452            Default Library Path (ELF):  /lib:/usr/lib:/local/lib
 453            Trusted Directories (ELF):   /lib/secure:/usr/lib/secure  \
 454                                         (system default)
 455 
 456          Command line:
 457            crle -l /lib:/usr/lib:/local/lib
 458 
 459          # crle -u -l /ISV/lib
 460          # crle
 461 
 462          Configuration file [version 4]: /var/ld/ld.config
 463            Platform      32-bit MSB SPARC
 464            Default Library Path (ELF):  /lib:/usr/lib:/local/lib:/ISV/lib
 465            Trusted Directories (ELF):   /lib/secure:/usr/lib/secure  \
 466                                         (system default)
 467 
 468          Command line:
 469            crle -l /lib:/usr/lib:/local/lib:/usr/local/lib
 470 
 471 
 472 
 473 
 474        In this example, the default configuration file initially did not
 475        exist.  Therefore, the new search path /local/lib is appended to the
 476        system default. The next update appends the search path /ISV/lib to
 477        those paths already established in the configuration file.
 478 
 479 
 480        Example 3 Recovering From a Bad Configuration File
 481 
 482 
 483        The following example creates a bad configuration file in the default
 484        location.  The file can be removed by instructing the runtime linker to
 485        ignore any configuration file with the LD_NOCONFIG environment
 486        variable. Note, it is recommended that temporary configuration files be
 487        created and the environment variable LD_CONFIG used to experiment with
 488        these files.
 489 
 490 
 491          # crle -l /local/lib
 492          # date
 493          ld.so.1: date: fatal: libc.so.1: open failed:  \
 494             No such file or directory
 495          Killed
 496          # LD_NOCONFIG=yes rm /var/ld/ld.config
 497          # date
 498          Thu May 29 17:52:00 PDT 2008
 499 
 500 
 501 
 502 
 503        Note, the reason the configuration file is bad is because the system
 504        default search paths are not present. Hence, the date utility is not
 505        able to locate the system dependencies that it required. In this case,
 506        the -u option should have been used.
 507 
 508        Example 4 Creating and Displaying a New Default Search Path and New
 509        Trusted Directory for ELF Objects
 510 
 511 
 512        The following example creates and displays a new default search path
 513        and new trusted directory for ELF objects.
 514 
 515 
 516          # crle -l /local/lib -l /lib -l /usr/lib -s /local/lib
 517          # crle
 518 
 519          Configuration file [version 4]: /var/ld/ld.config
 520            Platform:     32-bit MSB SPARC
 521            Default Library Path (ELF):  /local/lib:/lib:/usr/lib
 522            Trusted Directories (ELF):   /local/lib
 523 
 524          Command line:
 525            crle -l /local/lib:/lib:/usr/lib -s /local/lib
 526 
 527 
 528 
 529 
 530        With this configuration file, third party applications could be
 531        installed in /local/bin and their associated dependencies in
 532        /local/lib. The default search path allows the applications to locate
 533        their dependencies without the need to set LD_LIBRARY_PATH. The default
 534        trusted directories have also been replaced with this example.
 535 
 536 
 537        Example 5 Creating a Directory Cache for ELF Objects
 538 
 539 
 540        The following example creates a directory cache for ELF objects.
 541 
 542 
 543          $ crle -i /usr/dt/lib -i /usr/openwin/lib -i /lib -i /usr/lib  \
 544                  -c config
 545          $ ldd -s ./main
 546          ....
 547             find object=libc.so.1; required by ./main
 548              search path=/usr/dt/lib:/usr/openwin/lib  (RUNPATH/RPATH ./main)
 549              trying path=/usr/dt/lib/libc.so.1
 550              trying path=/usr/openwin/lib/libc.so.1
 551              search path=/lib  (default)
 552              trying path=/lib/libc.so.1
 553                  libc.so.1 =>          /lib/libc.so.1
 554 
 555          $ LD_CONFIG=config ldd -s ./main
 556          ....
 557             find object=libc.so.1; required by ./main
 558              search path=/usr/dt/lib:/usr/openwin/lib  (RUNPATH/RPATH ./main)
 559              search path=/lib  (default)
 560              trying path=/lib/libc.so.1
 561                  libc.so.1 =>          /lib/libc.so.1
 562 
 563 
 564 
 565 
 566        With this configuration, the cache reflects that the system library
 567        libc.so.1 does not exist in the directories /usr/dt/lib or
 568        /usr/openwin/lib. Therefore, the search for this system file ignores
 569        these directories even though the application's runpath indicates these
 570        paths should be searched.
 571 
 572 
 573        Example 6 Creating an Alternative Object Cache for an ELF Executable
 574 
 575 
 576        The following example creates an alternative object cache for an ELF
 577        executable.
 578 
 579 
 580          $ crle -c /local/$HOST/.xterm/ld.config.xterm  \
 581                  -f RTLD_REL_ALL  -G /usr/openwin/bin/xterm
 582          $ ln  -s /local/$HOST/.xterm/xterm  /local/$HOST/xterm
 583          $ ldd /usr/local/$HOST/xterm
 584              libXaw.so.5 =>  /local/$HOST/.xterm/libWaw.so.5  (alternate)
 585              libXmu.so.4 =>  /local/$HOST/.xterm/libXmu.so.4  (alternate)
 586              ....
 587              libc.so.1 =>    /local/$HOST/.xterm/libc.so.1  (alternate)
 588              ....
 589 
 590 
 591 
 592 
 593        With this configuration, a new xterm and its dependencies are created.
 594        These new objects are fully relocated to each other, and result in
 595        faster startup than the originating objects. The execution of this
 596        application uses its own specific configuration file. This model is
 597        generally more flexible than using the environment variable LD_CONFIG,
 598        as the configuration file can not be erroneously used by other
 599        applications such as ldd(1) or truss(1).
 600 
 601 
 602        Example 7 Creating an Alternative Object Cache to Replace an ELF Shared
 603        Object
 604 
 605 
 606        The following example creates an alternative object cache to replace an
 607        ELF shared object.
 608 
 609 
 610          $ ldd /usr/bin/vi
 611              libcurses.so.1 =>       /lib/libcurses.so.1
 612              ....
 613 
 614          # crle -a /lib/libcurses.so.1 -o /usr/ucblib
 615          # crle
 616 
 617          Configuration file [version 4]: /var/ld/ld.config
 618            Platform:     32-bit MSB SPARC
 619            Default Library Path (ELF):  /lib:/usr/lib  (system default)
 620            Trusted Directories (ELF):   /lib/secure:/usr/lib/secure  \
 621                                         (system default)
 622 
 623          Directory: /lib
 624            libcurses.so.1  (alternate: /usr/ucblib/libcurses.so.1)
 625          ....
 626 
 627          $ ldd /usr/bin/vi
 628              libcurses.so.1 => /usr/ucblib/libcurses.so.1 (alternate)
 629              ....
 630 
 631 
 632 
 633 
 634        With this configuration, any dependency that would normally resolve to
 635        /usr/lib/libcurses.so.1 instead resolves to /usr/ucblib/libcurses.so.1.
 636 
 637 
 638        Example 8 Setting Replaceable and Permanent Environment Variables
 639 
 640 
 641        The following example sets replaceable and permanent environment
 642        variables.
 643 
 644 
 645          # crle -e LD_LIBRARY_PATH=/local/lib  \
 646                  -E LD_PRELOAD=preload.so.1
 647          # crle
 648          .....
 649          Environment Variables:
 650            LD_LIBRARY_PATH=/local/lib  (replaceable)
 651            LD_PRELOAD=preload.so.1  (permanent)
 652 
 653          .....
 654          $ LD_DEBUG=files LD_PRELOAD=preload.so.2 ./main
 655          .....
 656          18764: file=preload.so.2;  preloaded
 657          18764: file=/local/lib/preload.so.2  [ ELF ]; generating link map
 658          .....
 659          18764: file=preload.so.1;  preloaded
 660          18764: file=/local/lib/preload.so.1  [ ELF ]; generating link map
 661          .....
 662 
 663 
 664 
 665 
 666        With this configuration file, a replaceable search path has been
 667        specified together with a permanent preload object which becomes
 668        appended to the process environment definition.
 669 
 670 
 671 EXIT STATUS
 672        The creation or display of a configuration file results in a 0 being
 673        returned. Otherwise, any error condition is accompanied with a
 674        diagnostic message and a non-zero value being returned.
 675 
 676 NOTES
 677        The ability to tag an alternative application to use an application-
 678        specific configuration file, is possible if the original application
 679        contains one of the .dynamic tags DT_FLAGS_1 or DT_FEATURE_1. Without
 680        these entries, a configuration file must be specified using the
 681        LD_CONFIG environment variable. Care should be exercised with this
 682        latter method as this environment variable is visible to any forked
 683        applications.
 684 
 685 
 686        The use of the -u option requires at least version 2 of crle. This
 687        version level is evident from displaying the contents of a
 688        configuration file.
 689 
 690          $ crle
 691 
 692          Configuration file [2]: /var/ld/ld.config
 693            ......
 694 
 695 
 696 
 697 
 698        With a version 2 configuration file, crle is capable of constructing
 699        the command-line arguments required to regenerate the configuration
 700        file. This command-line construction, provides full update capabilities
 701        using the -u option. Although a version 1 configuration file update is
 702        possible, the configuration file contents might be insufficient for
 703        crle to compute the entire update requirements.
 704 
 705 
 706        Configuration files contain platform specific binary data. A given
 707        configuration file can only be interpreted by software with the same
 708        machine class and byte ordering. However, the information necessary to
 709        enforce this restriction was not included in configuration files until
 710        SXCE build 41. As of this SXCE build, configuration files have system
 711        identification information at the beginning of the file. This
 712        additional information is used by crle and the runtime to check their
 713        compatibility with configuration files. This information also allows
 714        the file(1) command to properly identify  configuration files. For
 715        backward compatibility, older files that are missing this information
 716        are still accepted, although without the identification and error
 717        checking that would otherwise be possible.  When processing an update
 718        (-u) operation for an older file that lacks system information, crle
 719        does not add system identification information to the result.
 720 
 721 FILES
 722        /var/ld/ld.config
 723 
 724            Default configuration file for 32-bit applications.
 725 
 726 
 727        /var/ld/64/ld.config
 728 
 729            Default configuration file for 64-bit applications.
 730 
 731 
 732        /var/tmp
 733 
 734            Default location for temporary configuration file. See tempnam(3C).
 735 
 736 
 737        /usr/lib/lddstub
 738 
 739            Stub application that is employed to dldump(3C) 32-bit objects.
 740 
 741 
 742        /usr/lib/64/lddstub
 743 
 744            Stub application that is employed to dldump(3C) 64-bit objects.
 745 
 746 
 747        /usr/lib/libcrle.so.1
 748 
 749            Audit library that is employed to dldump(3C) 32-bit objects.
 750 
 751 
 752        /usr/lib/64/libcrle.so.1
 753 
 754            Audit library that is employed to dldump(3C) 64-bit objects.
 755 
 756 
 757 ENVIRONMENT VARIABLES
 758        There are no environment variables that are referenced by crle.
 759        However, several environment variables affect the runtime linkers
 760        behavior in regard to the processing of configuration files that are
 761        created by crle.
 762 
 763        LD_CONFIG, LD_CONFIG_32 and LD_CONFIG_64
 764 
 765            Provide an alternative configuration file.
 766 
 767 
 768        LD_NOCONFIG, LD_NOCONFIG_32 and LD_NOCONFIG_64
 769 
 770            Disable configuration file processing.
 771 
 772 
 773        LD_NODIRCONFIG, LD_NODIRCONFIG_32 and LD_NODIRCONFIG_64
 774 
 775            Disable directory cache processing from a configuration file.
 776 
 777 
 778        LD_NOENVCONFIG, LD_NOENVCONFIG_32 and LD_NOENVCONFIG_64
 779 
 780            Disable environment variable processing from a configuration file.
 781 
 782 
 783        LD_NOOBJALTER, LD_NOOBJALTER_32 and LD_NOOBJALTER_64
 784 
 785            Disable alternative object processing from a configuration file.
 786 
 787 
 788 ATTRIBUTES
 789        See attributes(5) for descriptions of the following attributes.
 790 
 791 
 792 
 793 
 794        +--------------------+-----------------+
 795        |  ATTRIBUTE TYPE    | ATTRIBUTE VALUE |
 796        +--------------------+-----------------+
 797        |Interface Stability | Committed       |
 798        +--------------------+-----------------+
 799 
 800 SEE ALSO
 801        file(1), ld(1), ld.so.1(1), dldump(3C), tempnam(3C), attributes(5)
 802 
 803 
 804        Linker and Libraries Guide
 805 
 806 
 807 
 808                                 October 6, 2008                        CRLE(1)