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.