### 5.9 Giving a Type a Name

To give a type a name, use the ‘`t`’ symbol descriptor. The type is specified by the type information (see String Field) for the stab. For example,

    .stabs "s_typedef:t16",128,0,0,0     # 128 is N_LSYM

specifies that `s_typedef` refers to type number 16. Such stabs have symbol type `N_LSYM` (or `C_DECL` for XCOFF). (The Sun documentation mentions using `N_GSYM` in some cases).

If you are specifying the tag name for a structure, union, or enumeration, use the ‘`T`’ symbol descriptor instead. I believe C is the only language with this feature.

If the type is an opaque type (I believe this is a Modula-2 feature), AIX provides a type descriptor to specify it. The type descriptor is ‘`o`’ and is followed by a name. I don’t know what the name means—is it always the same as the name of the type, or is this type descriptor used with a nameless stab (see String Field)? There optionally follows a comma followed by type information which defines the type of this type. If omitted, a semicolon is used in place of the comma and the type information, and the type is much like a generic pointer type—it has a known size but little else about it is specified.