IA-64 Attributes (Using the GNU Compiler Collection (GCC))

#### 6.4.2.11 IA-64 Attributes ¶

These attributes are supported on IA-64 targets:

`syscall_linkage` ¶

  This attribute applies to functions.

  It is used to modify the IA-64 calling convention by marking all input registers as live at all function exits. This makes it possible to restart a system call after an interrupt without having to save/restore the input registers. This also prevents kernel data from leaking into application code.

`version_id` ¶

  This attribute applies to global variables or functions.

  This IA-64 HP-UX attribute renames the symbol to contain a version string, thus allowing for function level versioning. HP-UX system header files may use function level versioning for some system calls.

      extern int foo () __attribute__((version_id ("20040821")));

  Calls to `foo` are mapped to calls to `foo{20040821}`.

`model (model-name)` ¶

  This attribute applies to variables.

  On IA-64, use this attribute to set the addressability of an object. At present, the only supported identifier for model-name is `small`, indicating addressability via “small” (22-bit) addresses (so that their addresses can be loaded with the `addl` instruction). Caveat: such addressing is by definition not position independent and hence this attribute must not be used for objects defined by shared libraries.