Size-variant variable types

The size-variant variable types have both a 32-bit mode and a 64-bit mode.

Size variant data types are listed below:

Type 32-bit size 64-bit size
long 4 8
Pointer types 4 8

In the preceding table, a pointer type refers to types like char *, int *, struct foo *, unsigned long *, and so on.

The following semantic rules apply for variables that are defined with any of the preceding types, that is, for "longs" and "pointers". The rules apply whether the variables are members of a structure or union, or whether they are declared as individual variables:

Automatic class
The mode of the variable will depend upon the probed process's mode (32 or 64).
Thread-local class
The mode of the variable will depend upon the probed process's mode (32 or 64).
Global class
The variable is always treated as being in 64-bit mode irrespective of the probed process's mode. This allows the variable to be used safely by both 32-bit and 64-bit processes without losing any data.
Kernel global class
Kernel variables that are longs or pointers are always 64-bit mode as the only supported kernel for AIX® 6.1 and beyond is the 64-bit kernel.
Entry class
If a long or pointer type is defined in the function prototype for any of the parameters to the function, the modes of the corresponding entry class variables (__arg1 through __arg32) will depend upon the mode of the probed process (32 or 64).
Exit class
If a long or pointer type is defined in the function prototype as the type of the return value of the function, the mode of the exit class variable (__rv) will depend upon the mode of the probed process (32 or 64).
Built-in class
These variables generally have a size-invariant type with the exception of the __r3 through __r10 built-ins that are defined as having an unsigned long type and hence are 32-bit long for 32-processes and 64-bit long for 64-bit processes.

The @@BEGIN and @@END probes are always issued in 64-bit mode.

Data types in Vue

The Vue language accepts three special data types in addition to the traditional C-89 data types.