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 provide 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
routine.
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 program.
- __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.
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