Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > L

ld_ia(1)

Integrity Systems Only
HP-UX 11i Version 3: February 2007
» 

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index

NAME

ld_ia: ld — link editor for Integrity systems

SYNOPSIS

The link editor

ld [-bdmnqrstvwxzEGINOPQSTVZ] [-a search] [-c filename] [-dynamic] [-e epsym] [-h symbol]... [-k filename] [-l x | file]... [-l: library] [-m] [-noshared] [-noshared_dynamic] [-o outfile] [-symbolic symbol]... [-u symbol]... [-y symbol]... [-A name] [-B bind]... [-C n] [-D offset] [-Fl] [-Fw] [-Fz] [-G] [-L dir]... [-N] [-O] [-Pd] [-PD file] [-PF file] [-Q] [-R offset] [-S] [-T] [+alloc_hidden_commons] [+allowdups] [+[no]allowunsats] [+as mode] [+b path_list] [+cdp oldpath:newpath] [+cg path] [+compat] [+copyobjdebug] [+[no]defaultrpath] [+df file] [+dumpextern filename] [+dpv] [+e symbol]... [+ee symbol]... [+fb] [+fbu] [+filter shared_library_path] [+fini function]... [+[no]forceload] [+gstbuckets size] [+gst] [+gstsize size] [+h internal_name] [+help] [+hideallsymbols] [+ild] [+ildnowarn] [+ildpad percentage] [+ildrelink] [+init function]... [+instrumenter filename] [+interp filename] [+interposer] [+k] [+[no]lazyload] [+mergeseg] [+n] [+nobss] [+nocopyobjdebug] [+nodynhash] [+nodefaultmap] [+noenvvar] [+[no]mmap] [+noobjdebug] [+noprocelim_sym symbol]... [+nosectionmerge] [+nosmartbind] [+nosrcpos] [+nosymb symbol]... [+objdebugonly] [+origin shared_library_name] [+paddata pagesize] [+padtext pagesize] [+pd size] [+pdzero] [+pgm name] [+pi size] [+plabel_cache flag] [+profilebucketsize 16|32] [+rpathfirst] [+s] [+std] [+stripunwind] [+tools] [+v[no]shlibunsats] [+vallcompatwarnings] [+v[no]compatwarnings] [+vtype type] [+FP flag] [+I symbol]... [+O[no]fastaccess] [+O[no]procelim] [+Oreusedir=dir ] [+Oselectivepercent n] [+Oselectivesize size] [+OselectiveO3] [+Ostaticprediction]

Remarks

This manpage describes ld on Integrity systems. For ld on PA-RISC systems, see ld_pa(1).

DESCRIPTION

ld takes one or more object files or libraries as input and combines them to produce a single (usually executable) file. In doing so it resolves references to external symbols, assigns final addresses to procedures and variables, revises code and data to reflect new addresses (a process called "relocation") and updates symbolic debug information when present in the file. By default, ld produces an executable file that can be run by the HP-UX loader exec() (see exec(2)). Alternatively, the linker can generate a relocatable file that is suitable for further processing by ld (see -r below). It can also generate a shared library (see -b below). The linker marks the output file non-executable if there are any duplicate symbols or any unresolved external references remain. ld may or may not generate an output file (see +k option) if any other errors occur during its operation.

ld recognizes three kinds of input files: object files created by the compilers, assembler, or linker (also known as .o files), shared libraries created by the linker, and archives of object files (called archive libraries).

An archive library contains a table of all the externally-visible symbols from its component object files. (The archiver command ar(1) creates and maintains this index.) ld uses this table to resolve references to external symbols.

ld processes files in the same order as they appear on the command line. It includes code and data from an archive library element if and only if that object module provides a definition for a currently unresolved reference within the user's program (see +[no]forceload). It is common practice to list libraries following the names of all simple object files on the command line.

Code and data from shared libraries is never copied into an executable program. For 32-bit mode, crt0.o is found at /usr/ccs/lib/hpux32/crt0.o. For 64-bit mode, crt0.o is found at /usr/ccs/lib/hpux64/crt0.o. You should include crt0.o in a -noshared link. For 32-bit mode, the dynamic loader is found at /usr/lib/hpux32/dld.so. For 64-bit mode, the dynamic loader is found at /usr/lib/hpux64/dld.so. The dynamic loader attaches each required library to the process and resolves all symbolic references between the program and its libraries.

NOTE: For information on linking secure programs with shared libraries, see the Security Restrictions section below.

The text segment of a shared library is shared among all processes that use the library; each process using the library receives its own copy of the data segment. If pxdb -s on has been run on the executable that loads the library, the text segment of a shared library is mapped privately for each process running the executable. ld recursively examines the dependencies of shared libraries used by a program that was created by ld. If ld does not find a supporting shared library at the path recorded in the dependency list of a shared library, and if the dependency is the result of an -l argument used when the shared library was created, ld searchs all the directories that it would search for a library that was specified with -l (see -L and LPATH).

Options

-a search

Specify whether shared or archive libraries are searched with the -l option. The value of search should be one of archive, shared, archive_shared, shared_archive, or default. This option can appear more than once, interspersed among -l options, to control the searching for each library. The default is to use the shared version of a library if one is available, or the archive version if not.

If either archive or shared is active, only the specified library type is accepted.

If archive_shared is active, the archive form is preferred, but the shared form is allowed.

If shared_archive is active, the shared form is preferred but the archive form is allowed.

To create a statically-bound program, use the -noshared option rather than -a archive.

-b

Create a shared library rather than a normal executable file. Object files processed with this option must contain position-independent code (PIC), generated by default by the compiler. See the discussion of position-independent code in cc(1), aCC(1), f90(1), as(1), and Linker and Libraries Online User Guide.

-c filename

Read ld options from a file. Each line contains zero or more arguments separated by white space. Each line in the file, including the last line, must end with a newline character. A # character implies that the rest of the line is a comment. To escape a # character, use the sequence ##.

-d

Force definition of "common" symbols; that is, assign addresses and sizes, for -r output. This option also strips COMDAT information from the -r output.

-dynamic

This option is the default. Instructs the linker to produce a dynamically linked executable (a program which can use shared libraries). This option is the complement of -noshared.

If no shared libraries are linked in, the linker builds a dynamically linked executable. However, in PA32-bit mode using the +compat option, if no shared libraries are linked in, the linker builds a statically bound executable (or archive bound executable).

For dynamically linked executables, the dynamic loader is involved in the process of loading the executable, regardless of whether it was linked with shared libraries. For -noshared (or statically bound) programs, control does not pass to the dynamic loader. See dld.so(5) for more information.

-e epsym

Set the default entry point address for the output file to be that of the symbol epsym. (This option only applies to executable files.)

-h symbol

Prior to writing the symbol table to the output file, mark this name as "local" so that it is no longer externally visible. This ensures that this particular entry will not clash with a definition in another file during future processing by ld. If used when building a shared library or program, this option prevents the named symbol from being visible to the dynamic loader.

You can specify more than one symbol on the command line with multiple option-symbol pairs, that is, each symbol you specify must be preceded by the -h option.

-k filename

Specify a mapfile that describes the output file memory map.

Please refer to HP-UX Linker and Libraries User's Guide guide and the +nodefaultmap for more information.

-lx

Search a library libx.a, libx.so, or libx.sl, where x is one or more characters. The current state of the -a option determines whether the archive (.a) or shared (.sl or .so) version of a library is searched. Because a library is searched when its name is encountered, the placement of a -l is significant. By default, 32-bit libraries are located in /usr/lib/hpux32. 64-bit libraries are located in /usr/lib/hpux64. If the environment variable LPATH is present in the user's environment, it should contain a colon-separated list of directories to search. These directories are searched instead of the default directories, but -L options can still be used. If a program uses shared libraries, the dynamic loader, /usr/lib/hpux32/dld.so for 32-bit, or /usr/lib/hpux64/dld.so for 64-bit, attempts to load each library from the same directory in which it was found at link time (see the +s and +b options).

-l: library

Search the library specified. Similar to the -l option except the current state of the -a option is not important. The library name can be any valid filename.

-m

Produce a load map on the standard output.

-n

This option is ignored.

-noshared

Force the linker to create a fully archive bound program (also called statically-bound executable). Specify /usr/ccs/lib/hpux32/crt0.o or /usr/ccs/lib/hpux64/crt0.o (or equivalent startup code) on the ld command line when you use this option. This option is the complement of -dynamic.

For dynamically linked executables, the dynamic loader is involved in the process of loading the executable, regardless of whether it was linked with shared libraries. For statically linked programs, control does not pass to the dynamic loader.

-noshared_dynamic

Create a dynamically linked program if shared libraries are linked in. If no shared libraries are linked in, the linker creates a fully archive bound program. This option is the default in compatibility mode (with the +compat) options. See also the -dynamic and -noshared options.

-o outfile

Produce an output object file named outfile (a.out if -o outfile is not specified).

-q

This option is ignored.

-r

Retain relocation information in the output file for subsequent re-linking. The ld command does not report undefined symbols. This option cannot be used when building a shared library (-b) or in conjunction with the -s, -x, or the +ild incremental linking options.

-s

Strip the output file of all symbol table, relocation, and debug support information. (The strip(1) command also removes this information.) This option is incompatible with the -r option and the +ild option.

NOTE: Use of the -s option might impair or prevent the use of a symbolic debugger on the resulting program.

-symbolic symbol

When building a shared library, causes the linker to resolve all references to the specified symbol to the symbol defined in the library. This option is similar to -B symbolic, but operates on a per symbol basis.

You can specify more than one symbol on the command line with multiple option-symbol pairs, that is, each symbol you specify must be preceded by the -symbolic option.

symbol can also be a regular expression that matches multiple symbol names. Regular expressions are described in regexp(5).

-t

Print a trace (to standard output) of each input file as ld processes it.

-u symbol

Enter symbol as an undefined symbol in the symbol table. The resulting unresolved reference is useful for linking a program solely from object files in a library.

You can specify more than one symbol on the command line with multiple option-symbol pairs, that is, each symbol you specify must be preceded by the -u option.

-v

Display verbose messages during linking. This option is equivalent to +vtype all (see the +vtype option for more information).

-w

Suppress all warnings.

-x

Strip local symbols from the output file. This reduces the size of the output file without impairing the effectiveness of object file utilities. This option is incompatible with the -r option and the +ild options. (The incremental linker requires the parts of the output load module which are stripped out with the -x option.)

NOTE: Use of the -x option might impair or prevent the use of a symbolic debugger on the resulting program.

-y symbol

Indicate each file in which symbol appears. You can specify more than one symbol on the command line with multiple option-symbol pairs, that is, each symbol you specify must be preceded by the -y option.

-z

Arrange for run-time dereferencing of null pointers to produce a SIGSEGV signal. (This is the complement of the -Z option. -Z is the default.)

-A name

This option is ignored and generates a warning message.

-B bind

Select run-time binding behavior of a program using shared libraries or the binding preference in building a shared library. The most common values for bind are:

direct

Create direct link between symbol references and shared libraries by recording the name of the resolved shared library during symbol resolution. This information is used during runtime to quickly resolve symbols without searching through all currently loaded libraries.

-B direct will implicitly turn on symbolic binding (see -B symbolic) and disable dependent shared library processing.

Direct binding can be disable during runtime by setting the LD_NODIRECTBIND environment variable.

deferred

Bind addresses on first reference rather than at program start-up time. This is the default.

group

Mark the shared library so that it behaves as if loaded with RTLD_GROUP flag to dlopen(). This does not affect the dependent shared libraries.

immediate

Bind addresses of all symbols immediately upon loading the library. Commonly followed by -B nonfatal to allow procedure calls that cannot be resolved at program start-up to be resolved on first reference.

Since -B nonfatal suppresses messages about unresolved symbols, also specify -B verbose to display those messages.

See the example below.

lazydirect

Only record direct bind information to shared libraries marked for lazy loading. See +[no]lazyload.

nodelete

Mark the shared library so that an explicit unload using dlclose() or shl_load() returns success silently without detaching the shared library from the process. Subsequently, the shared library handle is valid only for shl_findsym(). It stays invalid for dlsym(), dlclose(), and shl_unload() until the next explicit load using shl_load() or dlopen().

nodirect

Disallow direct binding. Only a "direct hint" is recorded for references to libraries marked for lazy loading. This is the default behavior.

nonfatal

If also using -B immediate, for code symbols that could not be bound at program startup, defer binding them until they are referenced. See description of -B immediate above.

Since -B nonfatal suppresses messages about unresolved symbols, also specify -B verbose to display those messages.

restricted

Causes the search for a symbol definition to be restricted to those symbols that were visible when the library was loaded.

symbolic

Used only when building a shared library. This option causes all references in a shared library to be resolved internally if possible. Such internally-resolved symbols are still externally visible.

By default (without the -B symbolic option), references are either resolved to a symbol definition in the same compilation unit or to the most visible definition. The first load module (a.out or shared library) that exports that symbol contains the most visible definition. More than one load module can define and export the same symbol. References to a symbol in a shared library can be resolved to a definition in another shared library even if that symbol is defined in the shared library. You can use this option to enforce that all references in the shared library use their own definitions, if defined in the shared library.

See the +e and +ee options for more information about using -B symbolic with those options.

verbose

Display verbose messages when binding symbols. This is the default except when -B nonfatal is specified. In that case, -B verbose must be explicitly specified to get verbose messages.

Use the +help option or see the HP-UX Linker and Libraries User's Guide manual for more information on the uses of binding modes.

-C n

This option is ignored and generates a warning message.

-D offset

Set (in hexadecimal) the starting address of the data segment. This option is useful with kernel and embedded applications. The default address for 64-bit mode is 0x6000000000000000 and the default address for 32-bit mode is 0x40008000.

-E

Mark all symbols defined by a program for export to shared libraries. In a +compat mode link, ld marks only those symbols that are actually referenced by a shared library seen at link time. In a +std link, all symbols are exported by default, so -E is not necessary to make symbols visible. However, it has an additional side effect of identifying all exported symbols as necessary, so that they will not be removed when using dead code elimination (+Oprocelim).

-Fl

Force load the archive library. Equivalent to +forceload.

-Fw

This option is ignored and generates a warning.

-Fz

This option is accepted and ignored.

-G

Strip all unloadable data from the output file. This option is typically used to strip debug information and is incompatible with the +ild option.

NOTE: Use of the -G option might impair or prevent the use of a symbolic debugger on the resulting program.

-I

Instrument the code to collect profile information upon execution. When an instrumented program is executed, a profile database file is output (by default, named flow.data). The profile data gathered during program execution can be used in conjunction with the -P option. The default instrumenter is the dynamic instrumenter /opt/langtools/bin/caliper, but the +instrumenter option can be used to invoke the static instrumenter /opt/langtools/bin/sin instead.

This option should not be used with the -P, -O, +ild, or +O options.

NOTE: If using +instrumenter sin, the recommended method to instrument your programs is to use your compiler's +I option, rather than the ld -I option. If you invoke the linker directly, you must pass the -u__sin_core__, -u__sin_init, and -lsin options to the linker. If you have both an instrumented shared library and an instrumented shared executable that you want to link with that library, you must include the -h__sin_core__ and -h__sin_lookup_ibt options in addition to the -u options. If using the default or +instrumenter caliper, no additional linker options are needed.

-L dir

Search for libx.a, libx.sl, or libx.so, in dir before looking in default locations. You can specify more than one directory, but each must be preceded by the -L option. The -L option is effective only if it precedes the -l option on the command line.

-N

In 32-bit mode only, cause the data to be placed immediately following the text, and make the text writable. Files of this type cannot be shared.

-O

Turn on linker optimizations. Currently the optimization includes the removal of dead procedures.

-O is passed to the linker by the compilers when the +O4 compiler option is selected.

This option is incompatible with the +ild option.

For more details on linker optimizations use the +help option or see the HP-UX Linker and Libraries User's Guide manual.

-P

Examine the profile database file produced by an instrumented program (see the -I option) to perform profile based optimizations on the code. This option should not be used with the +ild option.

-Pd

Reorder debuggable functions. Ordinarily -P does not reorder functions from .o files with debugging information, because reordering renders them non-debuggable. This option overrides this and reorders the functions. Reordering is based on link order file produced from flow.data by default. If you specify the -PF option, the linker uses the specified link order file, instead of flow.data, for reordering. This option is incompatible with +ild.

NOTE: Use of the -Pd option might impair or prevent the use of a symbolic debugger on the resulting program.

-PD filename

Save link order file generated by fdp during linking with -P option into user-specified file. This option is incompatible with the +ild option.

-PF filename

Indicate to the linker to use the specified file for the link order file instead of generating it using /usr/ccs/bin/fdp. This option is incompatible with the +ild option.

-Q

This option is ignored.

-R offset

Set (in hexadecimal) the starting address of the text (i.e., code) segment. This option is useful with kernel and embedded applications. The default address for 64-bit mode is 0x4000000000000000 and for 32-mode is 0x04000000. If the -N option is specified, the default is 0x1000.

-S

This option is ignored and generates a warning message.

-T

Same as +nommap option.

-V

Output a message giving information about the version of ld being used.

-Z

This is the default. Allow run-time dereferencing of null pointers. See the discussions of -Z and pointers in cc(1). (This is the complement of the -z option.)

+alloc_hidden_commons

Force storage allocation for hidden "common" symbols in -r output. This is similar to the -d option, which allocates storage for all "common" symbols. If +alloc_hidden_commons is specified in combination with the -d option, -d will take precedence.

+allowdups

Allows multiple symbol definitions. By default, multiple symbol definitions that occur between relocatable objects will result in a fatal error condition. This option suppresses the error condition and allows the first symbol definition to be taken.

+[no]allowunsats

Control unsatisfied symbol error reporting. +allowunsats does not flag errors if the resulting output file has unsatisfied symbols. This is the default for relocatable links and shared library builds. +noallowunsats flags an error if the resulting output file has unsatisfied symbols. This is the default for program files.

+as mode

Control the address space model to be used by the kernel. Possible values for mode are default, share_magic, exec_magic, shmem_magic, and mpas. The default value is currently equivalent to share_magic. In order to set the mode to any value other than the default, this option must be used in conjunction with the -N option to ensure that the text and data segments are contiguous.

+b path_list

Specify a colon-separated list of directories to be searched at program run-time to locate shared libraries needed by the executable output file that were specified with either the -l or -l: options. This list of directories becomes the embedded path. If the +b option appears more than once, the last one specified is recorded.

If either +b is not used or if you specify a single colon (:) as the argument, ld builds an embedded path using all the directories specified by the -L option(s) and the LPATH environment variable (see the +s option).

+cdp oldpath:newpath

This option is ignored.

+compat

Turn on compatibility mode in the linker — mimic behavior of PA-RISC 32-bit links.

+[no]copyobjdebug

When you use the +noobjdebug linker option to override the effect of the +objdebug compiler option, the linker omits the +objdebug information from the object files (in addition to copying over the debug information to the output file). However, if any object files were the result of previous -r links, the +objdebug information from these files is not omitted. The +nocopyobjdebug option, when used in conjunction with the +noobjdebug option, forces the linker to omit +objdebug information from all object files, including objects generated with the -r option. +copyobjdebug is the default.

+[no]defaultrpath

+defaultrpath is the default. Include any paths that are specified with -L in the embedded path, unless you specify the +b option. If you use +b, only the path list specified by +b is in the embedded path.

The +nodefaultrpath option removes all library paths that were specified with the -L option from the embedded path. The linker searches the library paths specified by the -L option at link time. At run time, the only library paths searched are those specified by the environment variables LD_LIBRARY_PATH and SHLIB_PATH, library paths specified by the +b linker option, and finally the default library paths.

+df file

Used together with the -P option, this option specifies that file should be used as the profile database file. The default value is flow.data. See the discussion of the FLOW_DATA environment variable for more information. This option is incompatible with the +ild option.

+dpv

Output information on procedures that were eliminated by procelim. Equivalent to +vtype procelim.

+dumpextern filename

Valid for executables and shared library links. Instructs the linker to dump all external symbols into the file specified by filename. This dumps all external symbols referred to within the load module (a.out or shared library) but not defined within the load module into the specified file. You can pass this file back to your compiler using the -Bextern:filename option. For more information, see the compiler options, -Bextern:filename, -Bhidden, and -Bprotected.

+e symbol

When building a shared library or program, mark the symbol for export to the dynamic loader. Only symbols explicitly marked are exported. When building a shared library, calls to symbols that are not exported are resolved internally.

If you use the +e or +ee option with -B symbolic, references to the symbol specified are resolved internally if defined. The runtime behavior may be different from using +e alone.

You can specify more than one symbol on the command line with multiple option-symbol pairs, that is, each symbol you specify must be preceded by the +e option.

+ee symbol

This option is similar to the +e option in that it exports a symbol. However, unlike the +e option, the +ee option does not alter the visibility of any other symbol in the file. When building a +compat mode executable, by default ld exports only those symbols that are actually referenced by a shared library seen at link time. The +ee option when specified with +compat, has the effect of exporting the specified symbol without hiding any of the symbols exported by default. In a +std mode link, all symbols are exported by default, so +ee is not necessary to make a symbol visible. However, it has the additional side effect of identifying the symbol as necessary, so that it will not be removed when using dead code elimination (+Oprocelim). The +ee option still retains its export behavior if an option such as +hideallsymbols is also given.

You can specify more than one symbol on the command line with multiple option-symbol pairs, that is, each symbol you specify must be preceded by the +ee option.

+fb

Instruct the linker to run the fastbind tool on the executable it has produced. The executable should be linked with shared libraries. For more details about fastbind(1), use the +help option, or see the HP-UX Linker and Libraries User's Guide manual. This option is incompatible with the +ild option.

+fbu

Pass the -u option to the fastbind tool. For more details about fastbind(1), use the +help option, or see the HP-UX Linker and Libraries User's Guide manual. This option is incompatible with the +ild option.

+filter shared_library_path

Enables the shared library filter mechanism, which allows you to divide a large library into a "filter" and several "implementation" libraries for more efficient organization of shared libraries. shared_library_path specifies the location of the filter library. See the HP-UX Linker and Libraries User's Guide for more information.

+fini function_name

Specify the terminator function to be invoked in forward order, the order the functions appear left to right on the command line.

You can specify more than one terminator function on the command line with multiple option-symbol pairs, that is, each function you specify must be preceded by the +fini option.

+[no]forceload

The default is +noforceload. The +forceload option loads all object files from archive libraries. +noforceload loads only the required object files from archive libraries. The selected mode, either explicitly or by default, remains in effect until you explicitly change it.

+gst

Enable the global symbol table hash mechanism, used to look up values of symbol import/export entries. The +gst and related options provide performance enhancements through use of global symbol table which improves searching for exported symbols. See dld.so(5) and the HP-UX Linker and Libraries Online User Guide for more information.

+gstbuckets size

This option is ignored.

+gstsize size

Request a particular hash array size using the global symbol table hash mechanism. The default value is 1103. The value can be overridden at runtime by setting the _HP_DLDOPTS environment variable to the value -symtab_size prime number. You can set the value using chatr +gstsize size file.

+h internal_name

When building a shared library, record internal_name as the name of the library. When the library is used to link another executable file (program or shared library), this internal_name is recorded in the library list of the resulting output file instead of the pathname of the input shared library. That is, if +h is not used, the shared library does not have an internal name and when an executable is built with the shared library, the linker records the library name that it looks at.

If more than one +h option is seen on the link line, the linker uses the first one and emits a warning message.

+help

Start the help browser utility HP-UX Linker and Libraries Online User Guide which comes with the HP-UX operating system. For more information, see to the HP-UX Linker and Libraries User's Guide manual. See manuals(5) for ordering information.

+hideallsymbols

Prevent all the symbols from being exported unless explicitly exported with the +e. This option marks all symbols as "local" in the symbol table. See also the -h and +e options.

+ild

Specify incremental linking.

If the output file does not exist, or if it was created without the +ild option, the linker performs an initial incremental link. The output file produced is suitable for subsequent incremental links. The incremental link option is valid for both executable and shared library links.

The following options are incompatible with the +ild option. If you specify one of the following incompatible ld option with +ild, the linker emits a warning message and ignores the +ild option.

  • The -r option: create a relocatable object file.

  • Strip options: -s, -x, and -G strip the output file.

  • Optimization options: -I, -O, -P, -PD, -PF, +df file, +fb, +fbu, +fbs, +pgm name, and +Oprocelim.

The following options are compatible with the +ild option with limitations:

  • -D offset, -R offset

    Set the origin for the data and text segments. If you change the offset after the initial incremental link, the linker performs an initial incremental link automatically.

  • -k mapfile

    Provide a non-default mapfile. The user specified mapfile specifications are permitted with the +ild option. But you should not modify the mapfile after the initial incremental link. If the mapfile is modified after the initial link, an initial incremental link is performed automatically.

+ildnowarn

Suppress incremental-linking related warnings. By default, the linker issues all incremental-linking related warnings. This option is ignored if used without +ild or +ildrelink.

+ildpad percentage

Control the amount of padding percentage the incremental linker allocates, relative to sizes of object file structures being padded. By default the linker allocates less than 20% of padding space. This option is ignored if used without +ild or +ildrelink.

+ildrelink

Perform an initial incremental link, regardless of the output load module.

In certain situations (for example, internal padding space is exhausted) the incremental linker is forced to perform an initial incremental link. The +ildrelink option allows you to avoid such unexpected initial incremental links by periodically rebuilding the output file.

+init function_name

Specify the initializer function to be invoked in reverse order, the order the functions appear right to left on the command line.

You can specify more than one initializer function on the command line with multiple option-symbol pairs, that is, each initializer function you specify must be preceded by the +init option.

+instrumenter name

Specify which instrumenter to use. Only sin or caliper are recognized. Default is caliper. If sin is specified, the linker invokes /opt/langtools/bin/sin automatically. If caliper is specified, /opt/langtools/bin/caliper is automatically invoked by the dynamic loader when the program is executed.

+interp filename

Change the dld path to use the program specified by filename for the "interpreter" program as the dynamic loader. This is useful when using special versions of dld.so for debugging.

The default path for 32-bit programs is: /usr/lib/hpux32/uld.so:/usr/lib/hpux32/dld.so, and for 64-bit programs is: /usr/lib/hpux64/uld.so:/usr/lib/hpux64/dld.so.

+interposer

Used only when building a shared library. This will create a shared library that can be used for interposition. When resolving references for an application with direct bind information (see -B direct), the dynamic loader will search interposer libraries first. If the symbol cannot be resolved to any interposing libraries, the direct binding information will be used.

+k

Direct the linker to only create an executable if there were no errors encountered during the link. If there were errors found (system errors or unresolved references), the output file will be removed.

+[no]lazyload

Enable [disable] lazy loading of shared libraries. For +lazyload libraries, loading is deferred until a reference is made to that library during execution. Both the +lazyload and +nolazyload options may appear on the link line at the same time. The mode that is specified, either explicitly or by default, remains on for all subsequent libraries on the link line until the next occurrence of the one of these two options.

Libraries satisfying one or more of the following conditions are ineligible for lazy loading:

  • is a filter library

  • is accessed via a data reference from another module

  • is accessed via an indirect function call

The linker will silently convert such libraries into +nolazyload libraries.

Dependent libraries of +lazyload shared libraries will not be processed during link time, unless they are explicitly specified on the link line.

Lazy loading can be disable during runtime by setting the LD_NOLAZYLOAD environment variable.

+mergeseg

Sets a flag in the executable which causes the dynamic loader to merge all data segments of shared libraries loaded at startup time into one block. Data segments for each dynamically loaded library will also be merged with the data segments of dependent libraries. This increases run-time performance by allowing the kernel to use larger size page table entries.

+mmap

Enables the feature to use mmap for writing the output data. This is the default behavior. Linker enabled with mmap is much faster.

+n

Cause the linker to load all object modules before searching any archive or shared libraries. The linker then searches the archive and shared libraries specified on the command line in left to right order. It repeats the left to right search of the libraries on the command line until there are no more unsatisfied symbols, or the last search added no new definitions. This option is useful if two libraries are specified that have symbol dependencies on each other.

+nobss

Pads the data segment with zeros, so that the data segment can be mapped with a single call to mmap at runtime. Normally, data segments require one mmap call for file-backed storage and a second mmap call for blank static storage (bss). Use of this option increases your output file size.

+nodefaultmap

Do not use the default memory map. You must supply a mapfile through the -k linker option.

+nodynhash

Disable the default linker behavior of the +gst option to create the .dynhash section for executables or shared libraries. Use this option to eliminate generation of pre-computed hash table information for a library or an executable that is rarely used with the global symbol table lookup scheme or for which the overhead of storing pre-computed hash values is too high. This option has no effect when used with the -r option.

+noenvvar

Instruct the dynamic loader to ignore the dynamic path searching environment variables, LD_LIBRARY_PATH, SHLIB_PATH, and $ORIGIN at runtime. By default, or if you specify the +std option, the dynamic loader looks at the environment variables, that is, the environment variables are enabled. If you specify the +compat option or the +noenvvar option, the option takes effect and the dynamic loader ignores the variables (the environment variables are disabled). See the +compat or +std options. You can display the status of this option in an executable or shared library from the "shared library dynamic path search" output of the chatr command. See chatr(1) for more information. Generally, this option is used for secure programs.

+nommap

Disables the mmap feature and uses the normal buffering method to write into the output file. NOTE: Do not use +nommap except when the system has very low memory and the linker fails because of low memory.

+noobjdebug

Override the +objdebug compiler option, and copy all debug information to the executable file. When you use the +objdebug compiler option with any of the -g options, linker leaves the debug information in the object files instead of copying it over to the output file. You can use the +noobjdebug option at link time to force the linker to copy the debug information over to the output file and negate the effect of the +objdebug compiler option. See also +nocopyobjdebug.

+noprocelim_sym symbol [+noprocelim_sym symbol]...

Do not remove symbol when using dead code elimination (+Oprocelim). This option can be used for hidden symbols as well as exported symbols.

You can specify more than one symbol on the command line with multiple option-symbol pairs, that is, each symbol you specify must be preceded by the +noprocelim_sym option.

+nosectionmerge

With the -r option, allow procedures to be positioned independently. The default is to merge all procedures into a single section.

+nosmartbind

This option is ignored.

+nosrcpos

The compiler option +srcpos is the default. +srcpos causes the compiler to generate part of the debug information even when the compiler option -g is not specified. The default +srcpos option also causes part of the debug information to be always copied over to the executable file, resulting in larger executables. +srcpos enables the users to profile programs using tools like cxperf, caliper, and sin, even in the absence of -g compilation.

The linker option +nosrcpos can be used to override the default +srcpos compiler option, and strip these debug information during link time. +nosrcpos can also be used with -g +objdebug to fully enforce the +objdebug mode (i.e., leaving the debug information in the object files).

+nosymb symbol

When building a shared library with -B symbolic, causes the linker to exclude the specified symbol from -B symbolic symbol resolution.

You can specify more than one symbol on the command line with multiple option-symbol pairs, that is, each symbol you specify must be preceded by the +nosymb option.

symbol can also be a regular expression that matches multiple symbol names. Regular expressions are described in regexp(5).

+objdebugonly

Ignore debug information from non-objdebug objects or archives and proceed in +objdebug mode. If you are debugging only files compiled with the +objdebug option, +objdebugonly can improve link time by instructing the linker to bypass the processing of debug information from files compiled with +noobjdebug.

+origin shared_library_name -lx

(Use only before the -l option or the name of a shared library.) Cause the linker to add $ORIGIN before the shared library name in the shared library list and set the DF_ORIGIN flag for the output module. At runtime, the dynamic loader determines the current directory of the parent module (object module, shared library, or executable) and replaces $ORIGIN for that directory name. For example,

$ ld -dynamic main.o +origin libx.so -L /usr/lib/hpux32/ -lc

While the +origin option is available, the recommended way to specify $ORIGIN is in the embedded path with the +b option, for example,

$ ld -dynamic main.o -L /usr/lib/hpux32/ -lc +b \$ORIGIN

For more details on $ORIGIN, use the +help option or see the HP-UX Linker and Libraries User's Guide manual.

+paddata pagesize

Pads the data segment to a multiple of pagesize with zeros. This can improve page allocation, thus reduce TLB misses by allowing the kernel to allocate fewer, larger data pages. Use of this option increases your output file size.

+padtext pagesize

Pads the text segment to a multiple of pagesize with zeros. This can improve page allocation, thus reduce TLB misses by allowing the kernel to allocate fewer, larger data pages. Use of this option increases your output file size.

+pd size

Request a particular virtual memory page size that should be used for data. Sizes of 4K, 16K, 64K, 256K, 1M, 4M, 16M, 64M, 256M, D, and L are supported. A size of D allows the kernel to choose what page size should be used. A size of L results in using the largest page size available. The actual page size may vary if the requested size cannot be fulfilled.

+pdzero

This option is ignored.

+pgm name

With the -P option, specify that name should be used as the look-up name in the profile database file. The default is the basename of the output file (specified by the -o option.) This option is incompatible with the +ild option.

+pi size

Request a particular virtual memory page size that should be used for instructions. See the +pd option for additional information.

+plabel_cache flag

This option is ignored.

+profilebucketsize [16|32]

Specifies the size of the profiling sample counter buckets. Valid values are 16 or 32. See gprof(1) for more details.

+s

This option is the default. Indicate that at run-time, the dynamic loader can use the environment variables SHLIB_PATH and LD_LIBRARY_PATH to locate shared libraries needed by the executable output file that allow dynamic library searching. Shared libraries that allow dynamic library searching either contain an internal name without the "/" (slash) character (for example, the base name of the shared library pathname) or have no internal name and were specified with either -l or -L, or just the base name of the shared library pathname. The environment variables should be set to a colon-separated list of directories.

In compatibility mode using the +compat option, if both +s and +b are used, their relative order on the command line indicates which path list is searched first (see the +b option). In standard mode (default mode or using the +std option), the order of +s and +b does not affect the dynamic loader search order and the environment variables are always searched first.

+rpathfirst

This option will cause the paths specified in RPATH (embedded path) to be used before the paths specified in LD_LIBRARY_PATH or SHLIB_PATH, in searching for shared libraries. This changes the default search order of LD_LIBRARY_PATH, SHLIB_PATH, and RPATH (embedded path).

+std

This option is the default. Turn on standard mode of the linker. This option is the complement of the +compat option. Options set on with this option are: -dynamic. Options set off or ignored when this option is specified are: +compat, +noenvvar, -noshared.

+stripunwind

Do not output the unwind table. This creates smaller executable sizes. Use this option if you do not need the unwind table for debugging or aC++ exception handling.

NOTE: Use of the +stripunwind option might impair or prevent the use of a symbolic debugger on the resulting program.

+tools

This option is ignored.

+vallcompatwarnings

This option is ignored.

+v[no]compatwarnings

This option is ignored.

+v[no]shlibunsats

Enable [disable] printing a list of unsatisfied symbols used by shared libraries. The default is +vnoshlibunsats. Some unsatisfied symbols reported by the linker are not required at run time because the modules which reference the symbols are not used.

+vtype type

Produces verbose output about the link operation. type can have the following values:

all

Dumps all of the information from the +vtype options. Same as -v.

files

Dump info about each object file loaded.

heap

Dump info about the size of the heap used by a link.

libraries

Dump info about libraries searched.

procelim

Dump info about sections that have been eliminated by the +Oprocelim option

sections

Dump info about each input section added to the output file.

symbols

Dump info about global symbols referenced/defined from/in the input files.

+FP flag

Specify how the environment for floating-point operations should be initialized at program start-up. By default, modes are specified by the IEEE floating-point standard: all traps disabled, gradual underflow, and rounding to nearest. The +FP option supports the following modes (upper case flag enables; lower case flag disables):

D (d)

Enable sudden underflow (flush to zero) of denormalized values.

I (i)

Trap on floating-point operations that produce inexact results.

N (n)

Trap on Denormal|Unnormal operand floating-point operation.

O (o)

Trap on floating-point overflow.

U (u)

Trap on floating-point underflow.

V (v)

Trap on invalid floating-point operations.

Z (z)

Trap on divide by zero.

RU

Enable rounding upward (toward +Infinity).

RD

Enable rounding downward (toward -Infinity).

RZ

Enable rounding toward zero (truncate, chop).

RN

Enable rounding to nearest (the default).

More than one mode can be specified with a comma separated list. For example:

+FP D,O,V,RZ

specifies sudden underflow, trapping on overflow and invalid, and rounding toward zero. The commas and the space between +FP and the modes may be omitted. Thus, +FPDOVRZ is equivalent to +FP D,O,V,RZ.

To dynamically change these settings at run-time, see fesettrapenable(3M), fesetflushtozero(3M), and fesetround(3M).

+I function

Specify the name of the initializer function when building a shared library. A shared library may have multiple initializers specified. Initializers are executed in the order that they are specified on the command line.

You can specify more than one initializer function on the command line with multiple option-symbol pairs, that is, each initializer you specify must be preceded by the +I option.

This option is supported for compatibility. Use of the +init and +fini options is recommended. For more details on the initializer function, use the +help option or see the HP-UX Linker and Libraries User's Guide manual.

+O[no]fastaccess

This option is ignored.

+O[no]procelim

Enable [disable] the elimination of procedures and data that are not referenced by the application. The default is +Onoprocelim.

Procedure and data elimination can occur at any optimization level, including level 0. The elimination occurs on a per section basis; the section is removed only if all procedures/data in the section are unreferenced. For more details use the +help option or see the HP-UX Linker and Libraries User's Guide manual. This option is incompatible with the +ild option.

Note that compilers may pass +Oprocelim to the linker for higher optimization levels; refer to compiler documentation for detail.

+Oreusedir=dir

This option is ignored and generates a warning message.

+Oselectivepercent n

Instructs the interprocedural optimizer driver to pass the first n percent of the object files to the high level optimizer for interprocedural optimizations such as inlining. This option is designed to work at optimization level 4 (+O4) in the presence of dynamic profiling.

+Oselectivesize size

This option is accepted and ignored.

+OselectiveO3

This option is accepted and ignored.

+Ostaticprediction

This option is ignored and generates a warning message.

Defaults

Unless otherwise directed, ld names its output file a.out. The -o option overrides this. The default is to create a dynamically linked program unless you specify the -noshared option. The default state of -a is to search shared libraries if available, archive libraries otherwise. The default bind behavior is deferred.

The default value of the -Z/-z option is -Z.

The +objdebug Compiler Option

The +objdebug compiler option, when used with any of the -g options, causes the debug information to be left in the object files instead of being placed in output file. This results in shorter link times and smaller output files.

To debug the load modules compiled with +objdebug option, the HP WDB debugger must have access to the object files. (Note that for object files built with the -r option, the individual object files must be available to the debugger.) If you move the object files, use HP WDB's objdir command to specify the location of these objects.

The +noobjdebug compiler option causes the debug information to be copied over to the output file. +objdebug is the compile-time default.

If the linker detects any object files that were compiled with the +objdebug option, it leaves the debug information in those files. Any object files not compiled with +objdebug have their debug information copied into the output file.

You can use the +noobjdebug option at link time to continue to place the debug information into the output file, even if some objects were compiled with +objdebug.

Incremental linking

In the edit-compile-link-debug development cycle, link time is a significant component. The incremental linker (available through the +ild and +ildrelink options) can reduce the link time by taking advantage of the fact that you can reuse most of the previous version of the program and that the unchanged object files do not need to be processed. The incremental linker allows you to insert object code into an output file (executable or shared library) that you created earlier, without relinking the unmodified object files. The time required to relink after the initial incremental link depends on the number of modules you modify.

The linker performs the following different modes of linking:

  • normal link: the default operation mode in which the linker links all modules.

  • initial incremental link: the mode entered when you request an incremental link, but the output module created by the incremental linker does not exist, or it exists but the incremental linker is unable to perform an incremental update.

  • incremental link: the mode entered when you request an incremental link, an output module created by the incremental linker exists, and the incremental linker does not require an initial incremental link.

Incremental links are usually much faster than regular links. On the initial link, the incremental linker requires about the same amount of time that a normal link process requires, but subsequent incremental links can be much faster than a normal link. A change in one object file in a moderate size link (tens of files, several megabytes total) normally is about 10 times faster than a regular ld link. The incremental linker perform as many incremental links as allocated padding space and other constrains permit. The cost of the reduced link time is an increase in the size of the executable or shared library.

The incremental linker allocates padding space for all components of the output file. Padding makes modules larger than those modules linked by ld. As object files increase in size during successive incremental links, the incremental linker can exhaust the available padding. If this occurs, it displays a warning message and does a complete initial incremental link of the module.

On the initial incremental link, the linker processes the input object files and libraries in the same way as the normal link. In addition to the normal linking process, the incremental linker saves information about object files, global symbols, and relocations, and pads sections in the output file for expansion. On subsequent incremental links, the linker uses timestamps to determine which object files have changed, and updates those modules.

Under certain conditions, the incremental linker cannot perform incremental links. When this occurs, the incremental linker automatically performs an initial incremental link to restore the process. In the following situations, the linker automatically performs an initial incremental link of the output file:

  • Changed linker command line, where the linker command line does not match the command line stored in the output file. (With the exceptions of the verbose and tracing options)

  • Any of the padding spaces have been exhausted.

  • Modules have been modified by the ld -s or ld -x options or tools (for example, strip(1)).

  • Incompatible incremental linker version, when you run a new version of the incremental linker on an executable created by an older version.

  • New working directory, where the incremental linker performs an initial incremental link if current directory changes.

  • Archive or shared libraries are added/removed to/from the linker command line.

  • Object files are removed from the linker command line.

Use the +help option or see the Linker and Libraries User's Guide for more information.

Archive Library Processing

The incremental linker searches an archive library if there are unsatisfied symbols. It extracts all archive members satisfying unsatisfied symbols and processes them as new object files. If an archive library is modified, the linker replaces the modified archive library.

An object file extracted from an archive library in the previous link remains in the output load module even if all references to symbols defined in the object file have been removed. The linker removes these object files when it performs the next initial incremental link.

Shared Library Processing

In an initial incremental link, the linker scans shared library symbol tables and resolves unsatisfied symbols the same way it would in a regular link. In incremental links, the linker does not process shared libraries and their symbol tables at all and does not report shared library unsatisfied symbols. The detection of unsatisfied symbols is left to the The dynamic loader. If any of the shared libraries on the command line was modified, the linker reverts to an initial incremental link.

Performance

Performance of the incremental linker may suffer greatly if you change a high percentage of object files.

The incremental linker may not link small programs much faster, and the relative increase in size of the executable is greater than that for larger programs.

Do not use the incremental linker to create final production modules. Because it reserves additional padding space, modules created by the incremental linker are considerably larger than those created in regular links.

Security Restrictions

On a system that supports fine-grained privileges, if a process gains any privileges from the binary's extended attributes, dynamic path lookup is disabled. Similarly, on a system that supports compartments, if a process changes compartment due to the binary's extended attributes, the dynamic path lookup is disabled. See setfilexsec(1M) on how to set extended attributes on a binary. See privileges(5) and compartments(5) for more information on privileges and compartments.

Linking Secure Programs

Secure programs are programs that are commonly run by privileged users, such as root, or programs that run with elevated privileges due to setuid or setgid protection. Yous should take Special precautions when linking secure programs that use shared libraries. The default linker behavior may be sufficient for secure PA-RISC 32-bit applications, but not for PA-RISC 64-bit or Integrity system applications.

Secure programs should be linked with the option +noenvvar to disable the use of SHLIB_PATH and LD_LIBRARY_PATH for locating shared library dependencies. Secure programs should also link with +nodefaultrpath to prevent the automatic construction of an embedded search path based on search directories specified with -L options. Most directories searched at link time don't need to be searched at run time, and if these directories are specified as relative paths, they expose the program to the same security risks as the use of SHLIB_PATH and LD_LIBRARY_PATH.

Programs built with +compat are linked as if +noenvvar and +nodefaultrpath were specified. However, additional PA-RISC 32-bit compatibility features are also enabled by +compat.

Normal programs that depend on libraries that only exist in a directory specified in SHLIB_PATH or LD_LIBRARY_PATH must not be linked with +noenvvar, and if +compat is used, +s must also be used to enable searching SHLIB_PATH and LD_LIBRARY_PATH. Programs that depend on SHLIB_PATH or LD_LIBRARY_PATH cannot be protected as setuid or setgid programs.

dld uses the dynamic path lookup (with SHLIB_PATH and LD_LIBRARY_PATH) only if the following conditions are satisfied:

getuid() == geteuid() && getgid() == getegid()

That is, if the uid or gid does not match its effective counterpart, dld does not check the directories specified in SHLIB_PATH and LD_LIBRARY_PATH, which causes the runtime error "library not found".

EXTERNAL INFLUENCES

Environment Variables

LDOPTS

Arguments can be passed to the linker through the LDOPTS environment variable as well as on the command line. The linker gets the value of LDOPTS and places its contents before any arguments on the command line.

LPATH

Specifies default directories to search for library files. See the -l option.

LD_LIBRARY_PATH and SHLIB_PATH

Specifies, at runtime, directories to search for library files. See the -s option and the +help option for the Online HP-UX Linker and Libraries User's Guide for more information.

The following internationalization variables affect the execution of ld:

LANG

Determines the locale category for native language, local customs and coded character set in the absence of LC_ALL and other LC_* environment variables. If LANG is not specified or is set to the empty string, a default of C (see lang(5)) is used instead of LANG.

LC_ALL

Determines the values for all locale categories and has precedence over LANG and other LC_* environment variables.

LC_MESSAGES

Determines the locale that should be used to affect the format and contents of diagnostic messages written to standard error.

LC_NUMERIC

Determines the locale category for numeric formatting.

LC_CTYPE

Determines the locale category for character handling functions.

NLSPATH

Determines the location of message catalogs for the processing of LC_MESSAGES.

If any internationalization variable contains an invalid setting, ld behaves as if all internationalization variables are set to C. See environ(5).

In addition, the following environment variable affects ld:

TMPDIR

Specifies a directory for temporary files (see tmpnam(3S)).

BROWSER

Specifies the pathname of the browser to display the HP-UX Linker and Libraries Online User's Guide when you use the +help option.

RETURN VALUES

ld returns the following values:

0

Successful completion. The link is successful.

n!=0

Failure. An error has occurred.

EXAMPLES

Link part of a C program for later processing by ld. (Note the .o suffix for the output object file; this is an HP-UX convention for indicating a linkable object file):

ld -r file1.o file2.o -o prog.o

Link a shared bound program in standard mode. Note that crt0.o is not specified because for shared links, it is no longer necessary.

ld himom.o -lc

Link a simple Fortran program to use with a symbolic debugger (see wdb(1)). Because the -o option is not specified on the command line, the output file name is a.out.

ld ftn.o -lcl -lisamstub \ -lc /opt/langtools/lib/pa20_64/end.o

Create a shared library:

ld -b -o libfunc.so func1.o func2.o func3.o

Create a shared library with an internal name, and this shared library allows dynamic library searching:

ld -b -o libfoo1.so.1 foo1.o foo2.o +h libfoo1.so.1 ln -s libfoo1.so.1 libfoo1.so cc -g mytest.c -L . -lfoo1 chatr a.out ... shared library list: libfoo1.so.1

If you do not use +h, the shared library does not have an internal name. The linker does not check whether .so is a symbolic link. It records the library name that it looks at, if it does not have the internal name.

chatr a.out ... shared library list: libfoo1.so

Add $ORIGIN before the shared library name in the shared library list.

ld -dynamic main.o -L /usr/lib/hpux32/ +origin -lc ld -dynamic main.o +origin /usr/lib/hpux32/libc.so chatr a.out ... shared library list: $ORIGIN/libc.so

WARNINGS

ld recognizes several names as having special meanings. The symbol _end is reserved by the linker to refer to the first address beyond the end of the program's address space. Similarly, the symbol _edata refers to the first address beyond the initialized data, and the symbol _etext refers to the first address beyond the program text. The symbols end, edata, and etext are also defined by the linker, but only if the program contains a reference to these symbols and does not define them (see end(3C) for details).

The linker treats a user definition of any of the symbols listed here as an error.

Through its options, the linker gives users great flexibility. However, those who invoke the linker directly must assume some added responsibilities.

There is no guarantee that the linker will pick up files from archive libraries and include them in the final program in the same relative order that they occur within the library.

The linker emits warnings wherever it detects any compatibility issues. Among other things, these issues include architectural ones, as well as functionality that may change over time. Some of these include:

  • Checking of unsatisfied symbols by the linker, which sometimes skips certain object files from an archived library. This warning is only given if the -v option is also provided.

As noted in the Options section, this release of the linker no longer supports certain options.

The linker accepts the following options and issues a warning message.

  • -A name

  • -C n

  • -Fw

  • -S

  • +cg pathname

  • +Oreusedir=dir

  • +OselectiveO3

  • +Oselectivesize size

The following options are supported for compatibility. They are accepted and ignored:

  • -n

  • -q

  • -Fz

  • -N

  • -Q

  • -V

  • +cdp oldpath:newpath

  • +gstbuckets size

  • +nosmartbind

  • +pdzero

  • +plabel_cache flag

  • +tools

  • +vallcompatwarnings

  • +v[no]compatwarnings

  • +O[no]fastaccess

  • +Ostaticprediction

AUTHOR

ld was developed by AT&T, the University of California, Berkeley, and HP.

FILES

/usr/lib/hpux32/lib*

32-bit system archive and shared libraries

/usr/lib/hpux64/lib*

64-bit system archive and shared libraries

a.out

output file

/usr/lib/hpux32/dld.so

32-bit dynamic loader

/usr/lib/hpux64/dld.so

64-bit dynamic loader

/usr/ccs/lib/hpux32/crt0.o

32-bit run-time startup file

/usr/ccs/lib/hpux64/crt0.o

64-bit run-time startup file

/usr/lib/hpux32/milli.a

32-bit millicode library automatically searched by ld

/usr/lib/hpux64/milli.a

64-bit millicode library automatically searched by ld

/usr/lib/hpux64/millikern.a

64-bit millicode library automatically searched by ld for embedded systems

/usr/lib/nls/msg/$LANG/ld.cat

message catalog

/var/tmp/ld*

temporary files

flow.data

file containing profile data generated by running an instrumented executable

/usr/ccs/bin/fdp

program for creating the procedure link order from a profile database file created by an instrumented executable; forked by the -P option

/opt/langtools/bin/sin

static instrumentor to instrument an executable or a shared library. It is invoked if you use the -I option.

SEE ALSO

Profiling and Debugging Tools

adb(1)

absolute debugger

gprof(1)

display call graph profile data

prof(1)

display profile data

wdb(1)

C, C++, Fortran symbolic debugger

System Tools

aCC(1)

invoke the HP-UX aC++ compiler

ar(1)

create archived libraries

cc(1)

invoke the HP-UX C compiler

chatr(1)

change program's internal attributes

elfdump(1)

dump information contained in an object file

exec(2)

execute a file

f90(1)

invoke the HP-UX Fortran 90 compiler

fastbind(1)

invoke the fastbind tool

lorder(1)

find ordering relation for an object library

nm(1)

print name list of object file

size(1)

print section sizes of object files

strip(1)

strip symbol and line number information from an object file

Miscellaneous

a.out(4)

assembler, compiler, and linker output

ar(4)

archive format

setfilexsec(1M)

crt0(3)

execution startup routine

compartments(5)

privileges(5)

dld.so(5)

dynamic loader

end(3C)

symbol of the last locations in program

Texts and Tutorials

HP-UX Linker and Libraries Online User Guide

(Use the +help option)

HP-UX Linker and Libraries User's Guide

(See manuals(5) for ordering information)

STANDARDS CONFORMANCE

ld: SVID2, SVID3, XPG2, XPG4

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.