| /* |
| ** The compiler generates one of these structures for each module that |
| ** composes the executable (eg main.m). |
| ** |
| ** This data structure is the root of the definition tree for the module. |
| ** |
| ** A collect program runs between ld stages and creates a ObjC ctor array. |
| ** That array holds a pointer to each module structure of the executable. |
| */ |
| typedef struct objc_module { |
| unsigned long version; /* Version of the Module data structure. */ |
| unsigned long size; /* sizeof(Module) according to the compiler - |
| only used to sanity check that it matches |
| sizeof(Module) according to the |
| runtime. */ |
| const char* name; /* Name of the file used to compile the |
| module - not set by modern compilers for |
| security reasons. */ |
| Symtab_t symtab; /* Pointer to the Symtab of the module. The |
| Symtab holds an array of pointers to the |
| classes and categories defined in the |
| module. */ |
| } Module, *Module_t; |
| |