7.4. Process Initialization

LSB-conforming applications shall use the Process Startup as defined in Section 3.3.5 of the Intel® Itanium™ Processor-specific Application Binary Interface.

7.4.1. Special Registers

Intel® Itanium™ Processor-specific Application Binary Interface, section 3.3.5, defines required register initializations for process startup.

7.4.2. Process Stack (on entry)

As defined in Intel® Itanium™ Processor-specific Application Binary Interface, section 3.3.5, the return pointer register (rp) shall contain a valid return address, such that if the application program returns from the main entry routine, the implementation shall cause the application to exit normally, using the returned value as the exit status. Further, the unwind information for this "bottom of stack" routine in the implementation shall provide a mechanism for recognizing the bottom of the stack during a stack unwind.

7.4.3. Auxiliary Vector

The auxiliary vector conveys information from the operating system to the application. Only the terminating null auxiliary vector entry is required, but if any other entries are present, they shall be interpreted as follows. This vector is an array of the following structures.

typedef struct
{
  long int a_type;              /* Entry type */
  union
    {
      long int a_val;           /* Integer value */
      void *a_ptr;              /* Pointer value */
      void (*a_fcn) (void);     /* Function pointer value */
    } a_un;
} auxv_t;

The application shall interpret the a_un value according to the a_type. Other auxiliary vector types are reserved.

The a_type field shall contain one of the following values:

AT_NULL 

The last entry in the array has type AT_NULL. The value in a_un is undefined.

AT_IGNORE 

The value in a_un is undefined, and should be ignored.

AT_EXECFD 

File descriptor of program

AT_PHDR 

Program headers for program

AT_PHENT 

Size of program header entry

AT_PHNUM 

Number of program headers

AT_PAGESZ 

System page size

AT_BASE 

Base address of interpreter

AT_FLAGS 

Flags

AT_ENTRY 

Entry point of program

AT_NOTELF 

Program is not ELF

AT_UID 

Real uid

AT_EUID 

Effective uid

AT_GID 

Real gid

AT_EGID 

Effective gid

AT_CLKTCK 

Frequency of times()

AT_PLATFORM 

String identifying platform.

AT_HWCAP 

Machine dependent hints about processor capabilities.

AT_FPUCW 

Used FPU control word

AT_DCACHEBSIZE 

Data cache block size

AT_ICACHEBSIZE 

Instruction cache block size

AT_UCACHEBSIZE 

Unified cache block size

Note: The auxiliary vector is intended for passing information from the operating system to the program interpreter.

7.4.4. Environment

Although a pointer to the environment vector should be available as a third argument to the main() entry point, conforming applications should use getenv() to access the environment. (See POSIX 1003.1-2001 (ISO/IEC 9945-2003), Section exec()).