You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
385 lines
15 KiB
385 lines
15 KiB
#ifndef COSMOPOLITAN_LIBC_NT_PEDEF_H_ |
|
#define COSMOPOLITAN_LIBC_NT_PEDEF_H_ |
|
/*───────────────────────────────────────────────────────────────────────────│─╗ |
|
│ αcτµαlly pδrταblε εxεcµταblε § portable executable ─╬─│┼ |
|
╚────────────────────────────────────────────────────────────────────────────│─╝ |
|
.text: Code |
|
.data: Initialized data |
|
.bss: Uninitialized data |
|
.rdata: Const/read-only (and initialized) data |
|
.edata: Export descriptors |
|
.idata: Import descriptors |
|
.reloc: Relocation table (for code instructions with absolute |
|
addressing when the module could not be loaded at its |
|
preferred base address) |
|
.rsrc: Resources (icon, bitmap, dialog, ...) |
|
.tls: __declspec(thread) data (Fails with dynamically loaded DLLs -> |
|
hard to find bugs) */ |
|
|
|
#define kNtImageDosSignature 0x5A4D |
|
#define kNtImageOs2Signature 0x454E |
|
#define kNtImageOs2SignatureLe 0x454C |
|
#define kNtImageVxdSignature 0x454C |
|
#define kNtImageNtSignature 0x00004550 |
|
|
|
#define kNtPeFileRelocsStripped 0x00001 |
|
#define kNtPeFileExecutableImage 0x00002 |
|
#define kNtPeFileLineNumsStripped 0x00004 |
|
#define kNtPeFileLocalSymsStripped 0x00008 |
|
#define kNtPeFile_32bitMachine 0x00100 |
|
#define kNtPeFileDll 0x02000 |
|
|
|
#define kNtPe32bit 0x010b |
|
#define kNtPe64bit 0x020b |
|
|
|
#define kNtPeSectionCntCode 0x000000020 |
|
#define kNtPeSectionCntInitializedData 0x000000040 |
|
#define kNtPeSectionCntUninitializedData 0x000000080 |
|
#define kNtPeSectionGprel 0x000008000 |
|
#define kNtPeSectionMemDiscardable 0x02000000 |
|
#define kNtPeSectionMemNotCached 0x04000000 |
|
#define kNtPeSectionMemNotPaged 0x08000000 |
|
#define kNtPeSectionMemShared 0x10000000 |
|
#define kNtPeSectionMemExecute 0x20000000 |
|
#define kNtPeSectionMemRead 0x40000000 |
|
#define kNtPeSectionMemWrite 0x80000000 |
|
|
|
#define kNtPeGuardCfInstrumented 0x000000100 |
|
#define kNtPeGuardCfwInstrumented 0x000000200 |
|
#define kNtPeGuardCfFunctionTablePresent 0x000000400 |
|
#define kNtPeGuardSecurityCookieUnused 0x000000800 |
|
|
|
#define kNtPeRelBasedAbsolute 0 |
|
#define kNtPeRelBasedHigh 1 |
|
#define kNtPeRelBasedLow 2 |
|
#define kNtPeRelBasedHighlow 3 |
|
#define kNtPeRelBasedHighadj 4 |
|
#define kNtPeRelBasedMipsJmpaddr 5 |
|
#define kNtPeRelBasedSection 6 |
|
#define kNtPeRelBasedRel32 7 |
|
#define kNtPeRelBasedMipsJmpaddr16 9 |
|
#define kNtPeRelBasedIa64Imm64 9 |
|
#define kNtPeRelBasedDir64 10 |
|
#define kNtPeRelBasedHigh3adj 11 |
|
|
|
#define kNtImageFileRelocsStripped 0x0001 |
|
#define kNtImageFileExecutableImage 0x0002 |
|
#define kNtImageFileLineNumsStripped 0x0004 |
|
#define kNtImageFileLocalSymsStripped 0x0008 |
|
#define kNtImageFileAggresiveWsTrim 0x0010 |
|
#define kNtImageFileLargeAddressAware 0x0020 |
|
#define kNtImageFileBytesReversedLo 0x0080 |
|
#define kNtImageFile32bitMachine 0x0100 |
|
#define kNtImageFileDebugStripped 0x0200 |
|
#define kNtImageFileRemovableRunFromSwap 0x0400 |
|
#define kNtImageFileNetRunFromSwap 0x0800 |
|
#define kNtImageFileSystem 0x1000 |
|
#define kNtImageFileDll 0x2000 |
|
#define kNtImageFileUpSystemOnly 0x4000 |
|
#define kNtImageFileBytesReversedHi 0x8000 |
|
|
|
#define kNtImageFileMachineUnknown 0 |
|
#define kNtImageFileMachineTargetHost 0x0001 |
|
#define kNtImageFileMachineI386 0x014c |
|
#define kNtImageFileMachineR3000 0x0162 |
|
#define kNtImageFileMachineR4000 0x0166 |
|
#define kNtImageFileMachineR10000 0x0168 |
|
#define kNtImageFileMachineWcemipsv2 0x0169 |
|
#define kNtImageFileMachineAlpha 0x0184 |
|
#define kNtImageFileMachineSh3 0x01a2 |
|
#define kNtImageFileMachineSh3dsp 0x01a3 |
|
#define kNtImageFileMachineSh3e 0x01a4 |
|
#define kNtImageFileMachineSh4 0x01a6 |
|
#define kNtImageFileMachineSh5 0x01a8 |
|
#define kNtImageFileMachineArm 0x01c0 |
|
#define kNtImageFileMachineThumb 0x01c2 |
|
#define kNtImageFileMachineArmnt 0x01c4 |
|
#define kNtImageFileMachineAm33 0x01d3 |
|
#define kNtImageFileMachinePowerpc 0x01F0 |
|
#define kNtImageFileMachinePowerpcfp 0x01f1 |
|
#define kNtImageFileMachineIa64 0x0200 |
|
#define kNtImageFileMachineMips16 0x0266 |
|
#define kNtImageFileMachineAlpha64 0x0284 |
|
#define kNtImageFileMachineMipsfpu 0x0366 |
|
#define kNtImageFileMachineMipsfpu16 0x0466 |
|
#define kNtImageFileMachineAxp64 kNtImageFileMachineAlpha64 |
|
#define kNtImageFileMachineTricore 0x0520 |
|
#define kNtImageFileMachineCef 0x0CEF |
|
#define kNtImageFileMachineEbc 0x0EBC |
|
#define kNtImageFileMachineNexgen32e 0x8664 |
|
#define kNtImageFileMachineM32r 0x9041 |
|
#define kNtImageFileMachineArm64 0xAA64 |
|
#define kNtImageFileMachineCee 0xC0EE |
|
|
|
#define kNtImageSubsystemUnknown 0 |
|
#define kNtImageSubsystemNative 1 |
|
#define kNtImageSubsystemWindowsGui 2 |
|
#define kNtImageSubsystemWindowsCui 3 |
|
#define kNtImageSubsystemOs2Cui 5 |
|
#define kNtImageSubsystemPosixCui 7 |
|
#define kNtImageSubsystemNativeWindows 8 |
|
#define kNtImageSubsystemWindowsCeGui 9 |
|
#define kNtImageSubsystemEfiApplication 1 |
|
#define kNtImageSubsystemEfiBootServiceDriver 11 |
|
#define kNtImageSubsystemEfiRuntimeDriver 12 |
|
#define kNtImageSubsystemEfiRom 13 |
|
#define kNtImageSubsystemXbox 14 |
|
#define kNtImageSubsystemWindowsBootApplication 16 |
|
#define kNtImageSubsystemXboxCodeCatalog 17 |
|
|
|
#define kNtImageDllcharacteristicsHighEntropyVa 0x0020 |
|
#define kNtImageDllcharacteristicsDynamicBase 0x0040 |
|
#define kNtImageDllcharacteristicsForceIntegrity 0x0080 |
|
#define kNtImageDllcharacteristicsNxCompat 0x0100 |
|
#define kNtImageDllcharacteristicsNoIsolation 0x0200 |
|
#define kNtImageDllcharacteristicsNoSeh 0x0400 |
|
#define kNtImageDllcharacteristicsNoBind 0x0800 |
|
#define kNtImageDllcharacteristicsAppcontainer 0x1000 |
|
#define kNtImageDllcharacteristicsWdmDriver 0x2000 |
|
#define kNtImageDllcharacteristicsGuardCf 0x4000 |
|
#define kNtImageDllcharacteristicsTerminalServerAware 0x8000 |
|
|
|
#define kNtImageDirectoryEntryExport 0 |
|
#define kNtImageDirectoryEntryImport 1 |
|
#define kNtImageDirectoryEntryResource 2 |
|
#define kNtImageDirectoryEntryException 3 |
|
#define kNtImageDirectoryEntrySecurity 4 |
|
#define kNtImageDirectoryEntryBasereloc 5 |
|
#define kNtImageDirectoryEntryDebug 6 |
|
#define kNtImageDirectoryEntryArchitecture 7 |
|
#define kNtImageDirectoryEntryGlobalptr 8 |
|
#define kNtImageDirectoryEntryTls 9 |
|
#define kNtImageDirectoryEntryLoadConfig 10 |
|
#define kNtImageDirectoryEntryBoundImport 11 |
|
#define kNtImageDirectoryEntryIat 12 |
|
#define kNtImageDirectoryEntryDelayImport 13 |
|
#define kNtImageDirectoryEntryComDescriptor 14 |
|
|
|
#define kNtImageScnTypeNoPad 0x00000008 |
|
#define kNtImageScnCntCode 0x00000020 |
|
#define kNtImageScnCntInitializedData 0x00000040 |
|
#define kNtImageScnCntUninitializedData 0x00000080 |
|
#define kNtImageScnLnkOther 0x00000100 |
|
#define kNtImageScnLnkInfo 0x00000200 |
|
#define kNtImageScnLnkRemove 0x00000800 |
|
#define kNtImageScnLnkComdat 0x00001000 |
|
#define kNtImageScnNoDeferSpecExc 0x00004000 |
|
#define kNtImageScnGprel 0x00008000 |
|
#define kNtImageScnMemFardata 0x00008000 |
|
#define kNtImageScnMemPurgeable 0x00020000 |
|
#define kNtImageScnMem16bit 0x00020000 |
|
#define kNtImageScnMemLocked 0x00040000 |
|
#define kNtImageScnMemPreload 0x00080000 |
|
|
|
#define kNtImageScnAlign1bytes 0x00100000 |
|
#define kNtImageScnAlign2bytes 0x00200000 |
|
#define kNtImageScnAlign4bytes 0x00300000 |
|
#define kNtImageScnAlign8bytes 0x00400000 |
|
#define kNtImageScnAlign16bytes 0x00500000 |
|
#define kNtImageScnAlign32bytes 0x00600000 |
|
#define kNtImageScnAlign64bytes 0x00700000 |
|
#define kNtImageScnAlign128bytes 0x00800000 |
|
#define kNtImageScnAlign256bytes 0x00900000 |
|
#define kNtImageScnAlign512bytes 0x00A00000 |
|
#define kNtImageScnAlign1024bytes 0x00B00000 |
|
#define kNtImageScnAlign2048bytes 0x00C00000 |
|
#define kNtImageScnAlign4096bytes 0x00D00000 |
|
#define kNtImageScnAlign8192bytes 0x00E00000 |
|
#define kNtImageScnAlignMask 0x00F00000 |
|
|
|
#define kNtImageScnLnkNrelocOvfl 0x01000000 |
|
#define kNtImageScnMemDiscardable 0x02000000 |
|
#define kNtImageScnMemNotCached 0x04000000 |
|
#define kNtImageScnMemNotPaged 0x08000000 |
|
#define kNtImageScnMemShared 0x10000000 |
|
#define kNtImageScnMemExecute 0x20000000 |
|
#define kNtImageScnMemRead 0x40000000 |
|
#define kNtImageScnMemWrite 0x80000000 |
|
#define kNtImageScnScaleIndex 0x00000001 |
|
|
|
#define kNtImageSymUndefined ((uint16_t)0) |
|
#define kNtImageSymAbsolute ((uint16_t)-1) |
|
#define kNtImageSymDebug ((uint16_t)-2) |
|
#define kNtImageSymSectionMax 0xFEFF |
|
#define kNtImageSymSectionMaxEx __LONG_MAX__ |
|
#define kNtImageSymTypeNull 0x0000 |
|
#define kNtImageSymTypeVoid 0x0001 |
|
#define kNtImageSymTypeChar 0x0002 |
|
#define kNtImageSymTypeShort 0x0003 |
|
#define kNtImageSymTypeInt 0x0004 |
|
#define kNtImageSymTypeLong 0x0005 |
|
#define kNtImageSymTypeFloat 0x0006 |
|
#define kNtImageSymTypeDouble 0x0007 |
|
#define kNtImageSymTypeStruct 0x0008 |
|
#define kNtImageSymTypeUnion 0x0009 |
|
#define kNtImageSymTypeEnum 0x000A |
|
#define kNtImageSymTypeMoe 0x000B |
|
#define kNtImageSymTypeByte 0x000C |
|
#define kNtImageSymTypeWord 0x000D |
|
#define kNtImageSymTypeUint 0x000E |
|
#define kNtImageSymTypeDword 0x000F |
|
#define kNtImageSymTypePcode 0x8000 |
|
#define kNtImageSymDtypeNull 0 |
|
#define kNtImageSymDtypePointer 1 |
|
#define kNtImageSymDtypeFunction 2 |
|
#define kNtImageSymDtypeArray 3 |
|
#define kNtImageSymClassEndOfFunction ((unsigned char)-1) |
|
#define kNtImageSymClassNull 0x0000 |
|
#define kNtImageSymClassAutomatic 0x0001 |
|
#define kNtImageSymClassExternal 0x0002 |
|
#define kNtImageSymClassStatic 0x0003 |
|
#define kNtImageSymClassRegister 0x0004 |
|
#define kNtImageSymClassExternalDef 0x0005 |
|
#define kNtImageSymClassLabel 0x0006 |
|
#define kNtImageSymClassUndefinedLabel 0x0007 |
|
#define kNtImageSymClassMemberOfStruct 0x0008 |
|
#define kNtImageSymClassArgument 0x0009 |
|
#define kNtImageSymClassStructTag 0x000A |
|
#define kNtImageSymClassMemberOfUnion 0x000B |
|
#define kNtImageSymClassUnionTag 0x000C |
|
#define kNtImageSymClassTypeDefinition 0x000D |
|
#define kNtImageSymClassUndefinedStatic 0x000E |
|
#define kNtImageSymClassEnumTag 0x000F |
|
#define kNtImageSymClassMemberOfEnum 0x0010 |
|
#define kNtImageSymClassRegisterParam 0x0011 |
|
#define kNtImageSymClassBitField 0x0012 |
|
#define kNtImageSymClassFarExternal 0x0044 |
|
#define kNtImageSymClassBlock 0x0064 |
|
#define kNtImageSymClassFunction 0x0065 |
|
#define kNtImageSymClassEndOfStruct 0x0066 |
|
#define kNtImageSymClassFile 0x0067 |
|
#define kNtImageSymClassSection 0x0068 |
|
#define kNtImageSymClassWeakExternal 0x0069 |
|
#define kNtImageSymClassClrToken 0x006B |
|
|
|
#define kNtImageComdatSelectNoduplicates 1 |
|
#define kNtImageComdatSelectAny 2 |
|
#define kNtImageComdatSelectSameSize 3 |
|
#define kNtImageComdatSelectExactMatch 4 |
|
#define kNtImageComdatSelectAssociative 5 |
|
#define kNtImageComdatSelectLargest 6 |
|
#define kNtImageComdatSelectNewest 7 |
|
|
|
#define kNtImageWeakExternSearchNolibrary 1 |
|
#define kNtImageWeakExternSearchLibrary 2 |
|
#define kNtImageWeakExternSearchAlias 3 |
|
#define kNtImageWeakExternAntiDependency 4 |
|
|
|
#define kNtImageRelNexgen32eAbsolute 0x0000 |
|
#define kNtImageRelNexgen32eAddr64 0x0001 |
|
#define kNtImageRelNexgen32eAddr32 0x0002 |
|
#define kNtImageRelNexgen32eAddr32nb 0x0003 |
|
#define kNtImageRelNexgen32eRel32 0x0004 |
|
#define kNtImageRelNexgen32eRel32_1 0x0005 |
|
#define kNtImageRelNexgen32eRel32_2 0x0006 |
|
#define kNtImageRelNexgen32eRel32_3 0x0007 |
|
#define kNtImageRelNexgen32eRel32_4 0x0008 |
|
#define kNtImageRelNexgen32eRel32_5 0x0009 |
|
#define kNtImageRelNexgen32eSection 0x000A |
|
#define kNtImageRelNexgen32eSecrel 0x000B |
|
#define kNtImageRelNexgen32eSecrel7 0x000C |
|
#define kNtImageRelNexgen32eToken 0x000D |
|
#define kNtImageRelNexgen32eSrel32 0x000E |
|
#define kNtImageRelNexgen32ePair 0x000F |
|
#define kNtImageRelNexgen32eSspan32 0x0010 |
|
|
|
#define kNtImageRelBasedAbsolute 0 |
|
#define kNtImageRelBasedHigh 1 |
|
#define kNtImageRelBasedLow 2 |
|
#define kNtImageRelBasedHighlow 3 |
|
#define kNtImageRelBasedHighadj 4 |
|
#define kNtImageRelBasedMachineSpecific_5 5 |
|
#define kNtImageRelBasedReserved 6 |
|
#define kNtImageRelBasedMachineSpecific_7 7 |
|
#define kNtImageRelBasedMachineSpecific_8 8 |
|
#define kNtImageRelBasedMachineSpecific_9 9 |
|
#define kNtImageRelBasedDir64 10 |
|
|
|
#define kNtImageArchiveStartSize 8 |
|
#define kNtImageArchiveStart "!<arch>\n" |
|
#define kNtImageArchiveEnd "`\n" |
|
#define kNtImageArchivePad "\n" |
|
#define kNtImageArchiveLinkerMember "/ " |
|
#define kNtImageArchiveLongnamesMember "// " |
|
#define kNtImageArchiveHybridmapMember "/<HYBRIDMAP>/ " |
|
|
|
#define kNtImageOrdinalFlag 0x8000000000000000 |
|
#define NtImageOrdinal(Ordinal) (Ordinal & 0xffff) |
|
#define NtImageSnapByOrdinal(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG64) != 0) |
|
|
|
#define kNtImageResourceNameIsString 0x80000000 |
|
#define kNtImageResourceDataIsDirectory 0x80000000 |
|
|
|
#define kNtImageDynamicRelocationGuardRfPrologue 0x00000001 |
|
#define kNtImageDynamicRelocationGuardRfEpilogue 0x00000002 |
|
|
|
#define kNtImageHotPatchBaseObligatory 0x00000001 |
|
#define kNtImageHotPatchChunkInverse 0x80000000 |
|
#define kNtImageHotPatchChunkObligatory 0x40000000 |
|
#define kNtImageHotPatchChunkReserved 0x3FF03000 |
|
#define kNtImageHotPatchChunkType 0x000FC000 |
|
#define kNtImageHotPatchChunkSourceRva 0x00008000 |
|
#define kNtImageHotPatchChunkTargetRva 0x00004000 |
|
#define kNtImageHotPatchChunkSize 0x00000FFF |
|
#define kNtImageHotPatchNone 0x00000000 |
|
#define kNtImageHotPatchFunction 0x0001C000 |
|
#define kNtImageHotPatchAbsolute 0x0002C000 |
|
#define kNtImageHotPatchRel32 0x0003C000 |
|
#define kNtImageHotPatchCallTarget 0x00044000 |
|
#define kNtImageHotPatchIndirect 0x0005C000 |
|
#define kNtImageHotPatchNoCallTarget 0x00064000 |
|
#define kNtImageHotPatchDynamicValue 0x00078000 |
|
#define kNtImageGuardCfInstrumented 0x00000100 |
|
#define kNtImageGuardCfwInstrumented 0x00000200 |
|
#define kNtImageGuardCfFunctionTablePresent 0x00000400 |
|
#define kNtImageGuardSecurityCookieUnused 0x00000800 |
|
#define kNtImageGuardProtectDelayloadIat 0x00001000 |
|
#define kNtImageGuardDelayloadIatInItsOwnSection 0x00002000 |
|
#define kNtImageGuardCfExportSuppressionInfoPresent 0x00004000 |
|
#define kNtImageGuardCfEnableExportSuppression 0x00008000 |
|
#define kNtImageGuardCfLongjumpTablePresent 0x00010000 |
|
#define kNtImageGuardRfInstrumented 0x00020000 |
|
#define kNtImageGuardRfEnable 0x00040000 |
|
#define kNtImageGuardRfStrict 0x00080000 |
|
#define kNtImageGuardCfFunctionTableSizeMask 0xF0000000 |
|
#define kNtImageGuardCfFunctionTableSizeShift 28 |
|
#define kNtImageGuardFlagFidSuppressed 0x01 |
|
#define kNtImageGuardFlagExportSuppressed 0x02 |
|
|
|
#define kNtImageEnclaveImportMatchNone 0x00000000 |
|
#define kNtImageEnclaveImportMatchUniqueId 0x00000001 |
|
#define kNtImageEnclaveImportMatchAuthorId 0x00000002 |
|
#define kNtImageEnclaveImportMatchFamilyId 0x00000003 |
|
#define kNtImageEnclaveImportMatchImageId 0x00000004 |
|
|
|
#define kNtImageDebugTypeUnknown 0 |
|
#define kNtImageDebugTypeCoff 1 |
|
#define kNtImageDebugTypeCodeview 2 |
|
#define kNtImageDebugTypeFpo 3 |
|
#define kNtImageDebugTypeMisc 4 |
|
#define kNtImageDebugTypeException 5 |
|
#define kNtImageDebugTypeFixup 6 |
|
#define kNtImageDebugTypeOmapToSrc 7 |
|
#define kNtImageDebugTypeOmapFromSrc 8 |
|
#define kNtImageDebugTypeBorland 9 |
|
#define kNtImageDebugTypeReserved10 10 |
|
#define kNtImageDebugTypeClsid 11 |
|
#define kNtImageDebugTypeVcFeature 12 |
|
#define kNtImageDebugTypePogo 13 |
|
#define kNtImageDebugTypeIltcg 14 |
|
#define kNtImageDebugTypeMpx 15 |
|
#define kNtImageDebugTypeRepro 16 |
|
|
|
#define kNtFrameFpo 0 |
|
#define kNtFrameTrap 1 |
|
#define kNtFrameTss 2 |
|
#define kNtFrameNonfpo 3 |
|
|
|
#define kNtImageSizeofShortName 8 |
|
#define kNtImageSizeofSectionHeader 40 |
|
#define kNtImageSizeofSymbol 18 |
|
#define kNtImageEnclaveLongIdLength 32 |
|
#define kNtImageEnclaveShortIdLength 16 |
|
#define kNtImageNumberofDirectoryEntries 16 |
|
|
|
#endif /* COSMOPOLITAN_LIBC_NT_PEDEF_H_ */
|
|
|