123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430 |
- #pragma once
- #include <stdint.h>
- namespace hybridclr
- {
- namespace metadata
- {
- enum class TableType
- {
- MODULE,
- TYPEREF,
- TYPEDEF,
- FIELD_POINTER,
- FIELD,
- METHOD_POINTER,
- METHOD,
- PARAM_POINTER,
- PARAM,
- INTERFACEIMPL,
- MEMBERREF, /* 0xa */
- CONSTANT,
- CUSTOMATTRIBUTE,
- FIELDMARSHAL,
- DECLSECURITY,
- CLASSLAYOUT,
- FIELDLAYOUT, /* 0x10 */
- STANDALONESIG,
- EVENTMAP,
- EVENT_POINTER,
- EVENT,
- PROPERTYMAP,
- PROPERTY_POINTER,
- PROPERTY,
- METHODSEMANTICS,
- METHODIMPL,
- MODULEREF, /* 0x1a */
- TYPESPEC,
- IMPLMAP,
- FIELDRVA,
- UNUSED6,
- UNUSED7,
- ASSEMBLY, /* 0x20 */
- ASSEMBLYPROCESSOR,
- ASSEMBLYOS,
- ASSEMBLYREF,
- ASSEMBLYREFPROCESSOR,
- ASSEMBLYREFOS,
- FILE,
- EXPORTEDTYPE,
- MANIFESTRESOURCE,
- NESTEDCLASS,
- GENERICPARAM, /* 0x2a */
- METHODSPEC,
- GENERICPARAMCONSTRAINT,
- UNUSED8,
- UNUSED9,
- UNUSED10,
- /* Portable PDB tables */
- DOCUMENT, /* 0x30 */
- METHODBODY,
- LOCALSCOPE,
- LOCALVARIABLE,
- LOCALCONSTANT,
- IMPORTSCOPE,
- STATEMACHINEMETHOD,
- CUSTOMDEBUGINFORMATION,
- };
- // 0
- struct TbModule
- {
- uint16_t generation;
- uint32_t name;
- uint32_t mvid;
- uint32_t encid;
- uint32_t encBaseId;
- };
- // 1
- struct TbTypeRef
- {
- uint32_t resolutionScope;
- uint32_t typeName;
- uint32_t typeNamespace;
- };
- // 2
- struct TbTypeDef
- {
- uint32_t flags;
- uint32_t typeName;
- uint32_t typeNamespace;
- uint32_t extends;
- uint32_t fieldList;
- uint32_t methodList;
- };
- // 3 FIELD_POINTER
- // 4
- struct TbField
- {
- uint32_t flags;
- uint32_t name;
- uint32_t signature;
- };
- // 5 METHOD_POINTER
-
- // 6
- struct TbMethod
- {
- uint32_t rva;
- uint16_t implFlags;
- uint16_t flags;
- uint32_t name;
- uint32_t signature;
- uint32_t paramList;
- };
- // 7 PARAM_POINTER
- // 8
- struct TbParam
- {
- uint16_t flags;
- uint16_t sequence;
- uint32_t name;
- };
- // 9
- struct TbInterfaceImpl
- {
- uint32_t classIdx;
- uint32_t interfaceIdx;
- };
- // 0xa
- struct TbMemberRef
- {
- uint32_t classIdx;
- uint32_t name;
- uint32_t signature;
- };
- struct TbConstant
- {
- uint8_t type; // 实际上占2字节
- uint32_t parent;
- uint32_t value;
- };
- struct TbCustomAttribute
- {
- uint32_t parent;
- uint32_t type;
- uint32_t value;
- };
- struct TbFieldMarshal
- {
- uint32_t parent;
- uint32_t nativeType;
- };
- struct TbDeclSecurity
- {
- uint16_t action;
- uint32_t parent;
- uint32_t permissionSet;
- };
- struct TbClassLayout
- {
- uint16_t packingSize;
- uint32_t classSize;
- uint32_t parent;
- };
- // 0x10
- struct TbFieldLayout
- {
- uint32_t offset;
- uint32_t field;
- };
- struct TbStandAloneSig
- {
- uint32_t signature; // 指向 blob heap的位置
- };
- struct TbEventMap
- {
- uint32_t parent;
- uint32_t eventList;
- };
- // 0x13 EVENT_POINTER
- // 0x14
- struct TbEvent
- {
- uint16_t eventFlags;
- uint32_t name;
- uint32_t eventType;
- };
- struct TbPropertyMap
- {
- uint32_t parent;
- uint32_t propertyList;
- };
- // PROPERTY_POINTER
- struct TbProperty
- {
- uint16_t flags;
- uint32_t name;
- uint32_t type;
- };
- struct TbMethodSemantics
- {
- uint16_t semantics;
- uint32_t method;
- uint32_t association;
- };
- struct TbMethodImpl
- {
- uint32_t classIdx;
- uint32_t methodBody;
- uint32_t methodDeclaration;
- };
- struct TbModuleRef
- {
- uint32_t name;
- };
- struct TbTypeSpec
- {
- uint32_t signature;
- };
- struct TbImplMap
- {
- uint16_t mappingFlags;
- uint32_t memberForwarded;
- uint32_t importName;
- uint32_t importScope;
- };
- struct TbFieldRVA
- {
- uint32_t rva;
- uint32_t field;
- };
- // UNUSED 6
- // UNUSED 7
- struct TbAssembly
- {
- uint32_t hashAlgId;
- uint16_t majorVersion;
- uint16_t minorVersion;
- uint16_t buildNumber;
- uint16_t revisionNumber;
- uint32_t flags;
- uint32_t publicKey;
- uint32_t name;
- uint32_t culture;
- };
- struct TbAssemblyProcessor
- {
- uint32_t processor;
- };
- struct TbAssemblyOS
- {
- uint32_t osPlatformID;
- uint32_t osMajorVersion;
- uint32_t osMinorVersion;
- };
- struct TbAssemblyRef
- {
- uint16_t majorVersion;
- uint16_t minorVersion;
- uint16_t buildNumber;
- uint16_t revisionNumber;
- uint32_t flags;
- uint32_t publicKeyOrToken;
- uint32_t name;
- uint32_t culture;
- uint32_t hashValue;
- };
- struct TbAssemblyRefProcessor
- {
- uint32_t processor;
- uint32_t assemblyRef;
- };
- struct TbAssemblyRefOS
- {
- uint32_t osPlatformID;
- uint32_t osMajorVersion;
- uint32_t osMinorVersion;
- uint32_t assemblyRef;
- };
- struct TbFile
- {
- uint32_t flags;
- uint32_t name;
- uint32_t hashValue;
- };
- struct TbExportedType
- {
- uint32_t flags;
- uint32_t typeDefId;
- uint32_t typeName;
- uint32_t typeNamespace;
- uint32_t implementation;
- };
- struct TbManifestResource
- {
- uint32_t offset;
- uint32_t flags;
- uint32_t name;
- uint32_t implementation;
- };
- struct TbNestedClass
- {
- uint32_t nestedClass;
- uint32_t enclosingClass;
- };
- struct TbGenericParam
- {
- uint16_t number;
- uint16_t flags;
- uint32_t owner;
- uint32_t name;
- };
- struct TbMethodSpec
- {
- uint32_t method;
- uint32_t instantiation;
- };
- struct TbGenericParamConstraint
- {
- uint32_t owner;
- uint32_t constraint;
- };
- // 以下这些都不是tables的类型
- // 但mono特殊处理一下,额外也加到这个表中
- struct TbSymbolDocument
- {
- uint32_t name;
- uint32_t hashAlgorithm;
- uint32_t hash;
- uint32_t language;
- };
- struct TbSymbolMethodBody
- {
- uint32_t document;
- uint32_t sequencePoints;
- };
- struct TbSymbolLocalScope
- {
- uint32_t method;
- uint32_t importScope;
- uint32_t variables;
- uint32_t constants;
- uint32_t startOffset;
- uint32_t length;
- };
- struct TbSymbolLocalVariable
- {
- uint16_t attributes;
- uint16_t index;
- uint32_t name;
- };
- struct TbSymbolConstant
- {
- uint32_t name;
- uint32_t signature;
- };
- struct TbSymbolImportScope
- {
- uint32_t parent;
- uint32_t imports;
- };
- struct TbSymbolStateMachineMethod
- {
- uint32_t moveNextMethod;
- uint32_t kickoffMethod;
- };
- struct TbSymbolCustomDebugInformation
- {
- uint32_t parent;
- uint32_t kind;
- uint32_t value;
- };
- }
- }
|