Developer's Topics
Chapter 7, Common Object File Format (COFF)

Type entry

Type entry

The type field in the symbol table entry contains information about the basic and derived type for the symbol. This information is generated by the C compilation system only if the -g option is used. Each symbol has exactly one basic or fundamental type but can have more than one derived type. The format of the 16-bit type entry is:

                     -----------------------------------
                    |   |    |    |    |    |    |     |
                    | d6|  d5|  d4|  d3|  d2|  d1|  typ|
                    |   |    |    |    |    |    |     |
                    |---|----|----|----|----|----|-----|

Bits 0 through 3, called typ, indicate one of the fundamental types given in Table 7-24, ``Fundamental types''.



Table 7-24 Fundamental types

 Mnemonic   Value   Type
 -------------------------------------------------------
 T_NULL       0     type not assigned
 T_ARG        1     function argument
                    (used only by compiler)
 T_CHAR       2     character
 T_SHORT      3     short integer
 T_INT        4     integer
 T_LONG       5     long integer
 T_FLOAT      6     floating point
 T_DOUBLE     7     double word
 T_STRUCT     8     structure
 T_UNION      9     union
 T_ENUM      10     enumeration
 T_MOE       11     member of enumeration
 T_UCHAR     12     unsigned character
 T_USHORT    13     unsigned short
 T_UINT      14     unsigned integer
 T_ULONG     15     unsigned long

Bits 4 through 15 are arranged as six 2-bit fields marked d1 through d6. These d fields represent levels of the derived types given in Table 7-25, ``Derived types''.



Table 7-25 Derived types

 Mnemonic   Value   Type
 -----------------------------------------------
 DT_NON       0     no derived type
 DT_PTR       1     pointer
 DT_FCN       2     function
 DT_ARY       3     array

The following examples demonstrate the interpretation of the symbol table entry representing type:

   char *func();
Here func is the name of a function that returns a pointer to a character. The fundamental type of func is 2 (character), the d1 field is 2 (function), and the d2 field is 1 (pointer). Therefore, the type word in the symbol table for func contains the hexadecimal number 0x62, which is interpreted to mean a function that returns a pointer to a character:
   short *tabptr[10][25][3];

Here tabptr is a three-dimensional array of pointers to short integers. The fundamental type of tabptr is 3 (short integer); the d1, d2, and d3 fields each contains a 3 (array), and the d4 field is 1 (pointer). Therefore, the type entry in the symbol table contains the hexadecimal number 0x7f3 indicating a three-dimensional array of pointers to short integers.