summaryrefslogtreecommitdiffhomepage
path: root/Private/KernelKit/PE.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'Private/KernelKit/PE.hpp')
-rw-r--r--Private/KernelKit/PE.hpp144
1 files changed, 74 insertions, 70 deletions
diff --git a/Private/KernelKit/PE.hpp b/Private/KernelKit/PE.hpp
index 9ab094d9..3a2db99f 100644
--- a/Private/KernelKit/PE.hpp
+++ b/Private/KernelKit/PE.hpp
@@ -17,23 +17,26 @@
#include <NewKit/Defines.hpp>
#include <KernelKit/PE.hpp>
-typedef HCore::UIntPtr U64;
-typedef HCore::UInt32 U32;
-typedef HCore::UInt16 U16;
-typedef HCore::UInt8 U8;
-typedef U8 BYTE;
+namespace Detail
+{
+ typedef HCore::UIntPtr U64;
+ typedef HCore::UInt32 U32;
+ typedef HCore::UInt16 U16;
+ typedef HCore::UInt8 U8;
+ typedef Detail::U8 BYTE;
+} // namespace Detail
#define kPeMagic 0x00004550
typedef struct ExecHeader final {
- U32 mMagic; // PE\0\0 or 0x00004550
- U16 mMachine;
- U16 mNumberOfSections;
- U32 mTimeDateStamp;
- U32 mPointerToSymbolTable;
- U32 mNumberOfSymbols;
- U16 mSizeOfOptionalHeader;
- U16 mCharacteristics;
+ Detail::U32 mMagic; // PE\0\0 or 0x00004550
+ Detail::U16 mMachine;
+ Detail::U16 mNumberOfSections;
+ Detail::U32 mTimeDateStamp;
+ Detail::U32 mPointerToSymbolTable;
+ Detail::U32 mNumberOfSymbols;
+ Detail::U16 mSizeOfOptionalHeader;
+ Detail::U16 mCharacteristics;
} ALIGN(8) ExecHeader, *ExecHeaderPtr;
#define kMagPE32 0x010b
@@ -43,79 +46,80 @@ typedef struct ExecHeader final {
#define kPEMachineARM64 0xaa64
typedef struct ExecOptionalHeader final {
- U16 mMagic; // 0x010b - PE32, 0x020b - PE32+ (64 bit)
- U8 mMajorLinkerVersion;
- U8 mMinorLinkerVersion;
- U64 mSizeOfCode;
- U64 mSizeOfInitializedData;
- U64 mSizeOfUninitializedData;
- U32 mAddressOfEntryPoint;
- U32 mBaseOfCode;
- U64 mImageBase;
- U32 mSectionAlignment;
- U32 mFileAlignment;
- U16 mMajorOperatingSystemVersion;
- U16 mMinorOperatingSystemVersion;
- U16 mMajorImageVersion;
- U16 mMinorImageVersion;
- U16 mMajorSubsystemVersion;
- U16 mMinorSubsystemVersion;
- U32 mWin32VersionValue;
- U64 mSizeOfImage;
- U64 mSizeOfHeaders;
- U32 mCheckSum;
- U16 mSubsystem;
- U16 mDllCharacteristics;
- U64 mSizeOfStackReserve;
- U64 mSizeOfStackCommit;
- U64 mSizeOfHeapReserve;
- U64 mSizeOfHeapCommit;
- U32 mLoaderFlags;
- U32 mNumberOfRvaAndSizes;
+ Detail::U16 mMagic; // 0x010b - PE32, 0x020b - PE32+ (64 bit)
+ Detail::U8 mMajorLinkerVersion;
+ Detail::U8 mMinorLinkerVersion;
+ Detail::U64 mSizeOfCode;
+ Detail::U64 mSizeOfInitializedData;
+ Detail::U64 mSizeOfUninitializedData;
+ Detail::U32 mAddressOfEntryPoint;
+ Detail::U32 mBaseOfCode;
+ Detail::U64 mImageBase;
+ Detail::U32 mSectionAlignment;
+ Detail::U32 mFileAlignment;
+ Detail::U16 mMajorOperatingSystemVersion;
+ Detail::U16 mMinorOperatingSystemVersion;
+ Detail::U16 mMajorImageVersion;
+ Detail::U16 mMinorImageVersion;
+ Detail::U16 mMajorSubsystemVersion;
+ Detail::U16 mMinorSubsystemVersion;
+ Detail::U32 mWin32VersionValue;
+ Detail::U64 mSizeOfImage;
+ Detail::U64 mSizeOfHeaders;
+ Detail::U32 mCheckSum;
+ Detail::U16 mSubsystem;
+ Detail::U16 mDllCharacteristics;
+ Detail::U64 mSizeOfStackReserve;
+ Detail::U64 mSizeOfStackCommit;
+ Detail::U64 mSizeOfHeapReserve;
+ Detail::U64 mSizeOfHeapCommit;
+ Detail::U32 mLoaderFlags;
+ Detail::U32 mNumberOfRvaAndSizes;
} ExecOptionalHeader, *ExecOptionalHeaderPtr;
typedef struct ExecSectionHeader final {
- BYTE mName[8];
- U32 mVirtualSize;
- U32 mVirtualAddress;
- U32 mSizeOfRawData;
- U32 mPointerToRawData;
- U32 mPointerToRelocations;
- U32 mPointerToLinenumbers;
- U16 mNumberOfRelocations;
- U16 mNumberOfLinenumbers;
- U32 mCharacteristics;
+ Detail::BYTE mName[8];
+ Detail::U32 mVirtualSize;
+ Detail::U32 mVirtualAddress;
+ Detail::U32 mSizeOfRawData;
+ Detail::U32 mPointerToRawData;
+ Detail::U32 mPointerToRelocations;
+ Detail::U32 mPointerToLinenumbers;
+ Detail::U16 mNumberOfRelocations;
+ Detail::U16 mNumberOfLinenumbers;
+ Detail::U32 mCharacteristics;
} ExecSectionHeader, *ExecSectionHeaderPtr;
enum kExecDataDirParams {
kExecExport,
kExecImport,
- kExecCnt,
+ kExecInvalid,
+ kExecCount,
};
typedef struct ExecExportDirectory {
- U32 mCharacteristics;
- U32 mTimeDateStamp;
- U16 mMajorVersion;
- U16 mMinorVersion;
- U32 mName;
- U32 mBase;
- U32 mNumberOfFunctions;
- U32 mNumberOfNames;
- U32 mAddressOfFunctions; // export table rva
- U32 mAddressOfNames;
- U32 mAddressOfNameOrdinal; // ordinal table rva
+ Detail::U32 mCharacteristics;
+ Detail::U32 mTimeDateStamp;
+ Detail::U16 mMajorVersion;
+ Detail::U16 mMinorVersion;
+ Detail::U32 mName;
+ Detail::U32 mBase;
+ Detail::U32 mNumberOfFunctions;
+ Detail::U32 mNumberOfNames;
+ Detail::U32 mAddressOfFunctions; // export table rva
+ Detail::U32 mAddressOfNames;
+ Detail::U32 mAddressOfNameOrdinal; // ordinal table rva
} ExecExportDirectory, *ExecExportDirectoryPtr;
typedef struct ExecImportDirectory {
union {
- U32 mCharacteristics;
- U32 mOriginalFirstThunk;
+ Detail::U32 mCharacteristics;
+ Detail::U32 mOriginalFirstThunk;
};
- U32 mTimeDateStamp;
- U32 mForwarderChain;
- U32 mNameRva;
- U32 mThunkTableRva;
+ Detail::U32 mTimeDateStamp;
+ Detail::U32 mForwarderChain;
+ Detail::U32 mNameRva;
+ Detail::U32 mThunkTableRva;
} ExecImportDirectory, *ExecImportDirectoryPtr;
#define kPeStart "__hcore_subsys_start"