HP-UX Reference (11i v2 07/12) - 3 Library Functions A-M (vol 6)

c
crt0_ia(3)
Integrity Systems Only
crt0_ia(3)
NAME
crt0_ia: crt0.o - execution startup routines for Integrity systems
SYNOPSIS
Remarks
This manpage describes crt0.o for Integrity systems. For
crt0.o on PA-RISC systems, see crt0_pa(3).
DESCRIPTION
The C, aC++, and FORTRAN compilers link in the object file
crt0.o for statically-bound programs to pro-
vide startup capabilities and environments for program execution. It contains startup code that must be
linked using
ld to every statically-bound program. In a dynamically linked program (the default method),
the crt0.o object file is not used, and all actions normally associated with it are instead done by the
dynamic loader dld.so(5).
crt0.o processes initializers and terminators. Initializers are routines that are called before the program
entry point and terminators are routines that are called when the program terminates via the
exit rou-
tine. Initializers are invoked in reverse order of the link line so that dependent libraries are initialized
before the libraries that depend on them. Terminators, on the other hand, are invoked in the forward
order.
crt0.o does not define any variables. It, however, sets the following global variables:
_ _argc A variable of type long containing the number of arguments.
_ _argv An array of character pointers to the arguments themselves.
_environ, __envp
An array of character pointers to the environment in which the program will
run. This array is terminated by a null pointer.
_SYSTEM_ID A variable of type long containing the system id value for an executable pro-
gram.
__tls_size A variable of type long containing the requested thread local storage size. This
variable is initialized with data from the kernel.
__load_info A variable of type void * containing load information passed from the kernel.
__gp A variable of type void * whose value equals to the global pointer.
A symbol named __gp is also declared in <machine/sys/uregs.h>
as an
enumeration constant, and is incompatible with the declaration in
<crt0.h>.
In order to include both header files, it is necessary to define the macro
__UREGS_SKIP__GP
before including <machine/sys/uregs.h>. This
will force the
<machine/sys/uregs.h>
header file to omit the conflicting
definition of
__gp. The enumeration constant __r1 is equivalent to __gp in
that context, and may be used instead. See ttrace(2).
AUTHOR
The features described in this entry originated from AT&T UNIX System III.
FILES
crt0.h
SEE ALSO
System Tools
aCC(1) invoke the HP-UX aC++ compiler
cc(1) invoke the HP-UX C compiler
dld.so(5) the dynamic loader
exec(2) execute a file
f90(1) invoke the HP-UX FORTRAN compiler
ld(1) invoke the link editor
Miscellaneous
end(3C) symbol of the last locations in program
HP-UX 11i Version 2: December 2007 Update 1 Hewlett-Packard Company 233