The rtti descriptor classes and associated variables are constructed as needed during compilation. On the modules branch I found it best to write them by special reference and reconstruct them on read back. That meant some changes to how rtti currently handles them. This patch implements most of those changes, which are useful in their own right. Internally we use an enumeration to identify the different __FOO_type_info classes, and create pseudo versions that don't escape the compilation. These match definitions in the cxxabi.h header file. However, we were tangling up 'tell me the index for the typeinfo container for type X', with 'construct the typeinfo container for type X'. This patch cleanly separates those questions (between which I can insert module streaming). The typeinfo construction now lazily constructs all these descriptor types. It removes a hole in the enumeration (there are no VMI descriptors with zero bases). Also, when looking to see if we're building the runtime (needed to enable a piece of internal magic), we no longer use xref_tag, which will construct an incomplete type. Instead use regular qualified lookup in the ABI namespace. Applied to trunk. nathan -- Nathan Sidwell