2020-06-15 07:18:57 -07:00
|
|
|
#ifndef COSMOPOLITAN_LIBC_NT_STRUCT_IMAGEFILEHEADER_H_
|
|
|
|
#define COSMOPOLITAN_LIBC_NT_STRUCT_IMAGEFILEHEADER_H_
|
|
|
|
|
|
|
|
struct NtImageFileHeader {
|
2023-08-09 00:29:01 -07:00
|
|
|
|
|
|
|
/*
|
|
|
|
* E.g. kNtImageFileMachineNexgen32e
|
|
|
|
*/
|
2020-06-15 07:18:57 -07:00
|
|
|
uint16_t Machine;
|
2023-08-09 00:29:01 -07:00
|
|
|
|
|
|
|
/*
|
|
|
|
* The number of sections. This indicates the size of the section
|
|
|
|
* table, which immediately follows the headers.
|
|
|
|
*/
|
2020-06-15 07:18:57 -07:00
|
|
|
uint16_t NumberOfSections;
|
2023-08-09 00:29:01 -07:00
|
|
|
|
2020-06-15 07:18:57 -07:00
|
|
|
uint32_t TimeDateStamp;
|
2023-08-09 00:29:01 -07:00
|
|
|
|
2020-06-15 07:18:57 -07:00
|
|
|
uint32_t PointerToSymbolTable;
|
2023-08-09 00:29:01 -07:00
|
|
|
|
2020-06-15 07:18:57 -07:00
|
|
|
uint32_t NumberOfSymbols;
|
2023-08-09 00:29:01 -07:00
|
|
|
|
|
|
|
/*
|
2023-08-09 18:36:38 -07:00
|
|
|
* [file size] The size of the optional header, which is required for
|
2023-08-09 00:29:01 -07:00
|
|
|
* executable files but not for object files. This value should be
|
|
|
|
* zero for an object file. For a description of the header format,
|
|
|
|
* see Optional Header (Image Only).
|
|
|
|
*/
|
2020-06-15 07:18:57 -07:00
|
|
|
uint16_t SizeOfOptionalHeader;
|
2023-08-09 00:29:01 -07:00
|
|
|
|
|
|
|
/*
|
|
|
|
* E.g. kNtPeFileExecutableImage | kNtImageFileLargeAddressAware
|
|
|
|
*/
|
2020-06-15 07:18:57 -07:00
|
|
|
uint16_t Characteristics;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif /* COSMOPOLITAN_LIBC_NT_STRUCT_IMAGEFILEHEADER_H_ */
|