From f52ecfe0411ce891d378169f5543bc9c06753693 Mon Sep 17 00:00:00 2001 From: James Hawkins Date: Sat, 3 May 2008 21:16:24 -0500 Subject: [PATCH] fusion: Add the missing assembly table structs. --- dlls/fusion/assembly.c | 67 ++++++------ dlls/fusion/fusionpriv.h | 226 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 259 insertions(+), 34 deletions(-) diff --git a/dlls/fusion/assembly.c b/dlls/fusion/assembly.c index eee889a409e..efffcca5c96 100644 --- a/dlls/fusion/assembly.c +++ b/dlls/fusion/assembly.c @@ -64,54 +64,53 @@ struct tagASSEMBLY BYTE *blobs; }; -/* FIXME: fill in */ const DWORD COR_TABLE_SIZES[64] = { sizeof(MODULETABLE), sizeof(TYPEREFTABLE), sizeof(TYPEDEFTABLE), 0, + sizeof(FIELDTABLE), 0, + sizeof(METHODDEFTABLE), 0, + sizeof(PARAMTABLE), + sizeof(INTERFACEIMPLTABLE), + sizeof(MEMBERREFTABLE), + sizeof(CONSTANTTABLE), + sizeof(CUSTOMATTRIBUTETABLE), + sizeof(FIELDMARSHALTABLE), + sizeof(DECLSECURITYTABLE), + sizeof(CLASSLAYOUTTABLE), + sizeof(FIELDLAYOUTTABLE), + sizeof(STANDALONESIGTABLE), + sizeof(EVENTMAPTABLE), 0, + sizeof(EVENTTABLE), + sizeof(PROPERTYMAPTABLE), 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + sizeof(PROPERTYTABLE), + sizeof(METHODSEMANTICSTABLE), + sizeof(METHODIMPLTABLE), + sizeof(MODULEREFTABLE), + sizeof(TYPESPECTABLE), + sizeof(IMPLMAPTABLE), + sizeof(FIELDRVATABLE), 0, 0, sizeof(ASSEMBLYTABLE), - 0, - 0, - 0, - 0, - 0, - 0, - 0, + sizeof(ASSEMBLYPROCESSORTABLE), + sizeof(ASSEMBLYOSTABLE), + sizeof(ASSEMBLYREFTABLE), + sizeof(ASSEMBLYREFPROCESSORTABLE), + sizeof(ASSEMBLYREFOSTABLE), + sizeof(FILETABLE), + sizeof(EXPORTEDTYPETABLE), sizeof(MANIFESTRESTABLE), - 0, - 0, - 0, - 0, + sizeof(NESTEDCLASSTABLE), + sizeof(GENERICPARAMTABLE), + sizeof(METHODSPECTABLE), + sizeof(GENERICPARAMCONSTRAINTTABLE), 0, 0, 0, diff --git a/dlls/fusion/fusionpriv.h b/dlls/fusion/fusionpriv.h index 829a6b70f84..08a2d5c88ab 100644 --- a/dlls/fusion/fusionpriv.h +++ b/dlls/fusion/fusionpriv.h @@ -84,6 +84,13 @@ typedef struct WORD Namespace; } TYPEREFTABLE; +typedef struct +{ + WORD Flags; + WORD Name; + WORD Signature; +} FIELDTABLE; + typedef struct { DWORD HashAlgId; @@ -105,6 +112,225 @@ typedef struct WORD Implementation; } MANIFESTRESTABLE; +typedef struct +{ + DWORD RVA; + WORD ImplFlags; + WORD Flags; + WORD Name; + WORD Signature; + WORD ParamList; +} METHODDEFTABLE; + +typedef struct +{ + WORD Flags; + WORD Sequence; + WORD Name; +} PARAMTABLE; + +typedef struct +{ + WORD Class; + WORD Interface; +} INTERFACEIMPLTABLE; + +typedef struct +{ + WORD Class; + WORD Name; + WORD Signature; +} MEMBERREFTABLE; + +typedef struct +{ + BYTE Type; + BYTE Reserved; + WORD Parent; + WORD Value; +} CONSTANTTABLE; + +typedef struct +{ + WORD Parent; + WORD Type; + WORD Value; +} CUSTOMATTRIBUTETABLE; + +typedef struct +{ + WORD Parent; + WORD NativeType; +} FIELDMARSHALTABLE; + +typedef struct +{ + WORD Action; + WORD Parent; + WORD PermissionSet; +} DECLSECURITYTABLE; + +typedef struct +{ + WORD PackingSize; + DWORD ClassSize; + WORD Parent; +} CLASSLAYOUTTABLE; + +typedef struct +{ + DWORD Offset; + WORD Field; +} FIELDLAYOUTTABLE; + +typedef struct +{ + WORD Signature; +} STANDALONESIGTABLE; + +typedef struct +{ + WORD Parent; + WORD EventList; +} EVENTMAPTABLE; + +typedef struct +{ + WORD EventFlags; + WORD Name; + WORD EventType; +} EVENTTABLE; + +typedef struct +{ + WORD Parent; + WORD PropertyList; +} PROPERTYMAPTABLE; + +typedef struct +{ + WORD Flags; + WORD Name; + WORD Type; +} PROPERTYTABLE; + +typedef struct +{ + WORD Semantics; + WORD Method; + WORD Association; +} METHODSEMANTICSTABLE; + +typedef struct +{ + WORD Class; + WORD MethodBody; + WORD MethodDeclaration; +} METHODIMPLTABLE; + +typedef struct +{ + WORD Name; +} MODULEREFTABLE; + +typedef struct +{ + WORD Signature; +} TYPESPECTABLE; + +typedef struct +{ + WORD MappingFlags; + WORD MemberForwarded; + WORD ImportName; + WORD ImportScope; +} IMPLMAPTABLE; + +typedef struct +{ + DWORD RVA; + WORD Field; +} FIELDRVATABLE; + +typedef struct +{ + DWORD Processor; +} ASSEMBLYPROCESSORTABLE; + +typedef struct +{ + DWORD OSPlatformID; + DWORD OSMajorVersion; + DWORD OSMinorVersion; +} ASSEMBLYOSTABLE; + +typedef struct +{ + WORD MajorVersion; + WORD MinorVersion; + WORD BuildNumber; + WORD RevisionNumber; + DWORD Flags; + WORD PublickKeyOrToken; + WORD Name; + WORD Culture; + WORD HashValue; +} ASSEMBLYREFTABLE; + +typedef struct +{ + DWORD Processor; + WORD AssemblyRef; +} ASSEMBLYREFPROCESSORTABLE; + +typedef struct +{ + DWORD OSPlatformId; + DWORD OSMajorVersion; + DWORD OSMinorVersion; + WORD AssemblyRef; +} ASSEMBLYREFOSTABLE; + +typedef struct +{ + DWORD Flags; + WORD Name; + WORD HashValue; +} FILETABLE; + +typedef struct +{ + DWORD Flags; + DWORD TypeDefId; + WORD TypeName; + WORD TypeNameSpace; + WORD Implementation; +} EXPORTEDTYPETABLE; + +typedef struct +{ + WORD NestedClass; + WORD EnclosingClass; +} NESTEDCLASSTABLE; + +typedef struct +{ + WORD Number; + WORD Flags; +} GENERICPARAMTABLE; + +typedef struct +{ + WORD MethodDef; + WORD Instantiation; +} METHODSPECTABLE; + +typedef struct +{ + WORD Owner; + WORD Constraint; +} GENERICPARAMCONSTRAINTTABLE; + typedef struct { DWORD ImportLookupTable;