mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-01-31 19:43:32 +00:00
fa20edc44d
- Remove most __ASSEMBLER__ __LINKER__ ifdefs - Rename libc/intrin/bits.h to libc/serialize.h - Block pthread cancelation in fchmodat() polyfill - Remove `clang-format off` statements in third_party
66 lines
2.3 KiB
C
66 lines
2.3 KiB
C
#ifndef COSMOPOLITAN_LIBC_NT_STRUCT_IMAGESECTIONHEADER_H_
|
|
#define COSMOPOLITAN_LIBC_NT_STRUCT_IMAGESECTIONHEADER_H_
|
|
|
|
struct NtImageSectionHeader {
|
|
|
|
char Name[8];
|
|
|
|
union {
|
|
|
|
uint32_t PhysicalAddress;
|
|
|
|
/*
|
|
* The total size of the section when loaded into memory. If this
|
|
* value is greater than SizeOfRawData, the section is zero-padded.
|
|
* This field is valid only for executable images and should be set
|
|
* to zero for object files.
|
|
*/
|
|
uint32_t VirtualSize;
|
|
|
|
} Misc;
|
|
|
|
/*
|
|
* In an image file, the VAs for sections must be assigned by the
|
|
* linker so that they are in ascending order and adjacent, and they
|
|
* must be a multiple of the SectionAlignment value in the optional
|
|
* header.
|
|
*
|
|
* For executable images, the address of the first byte of the section
|
|
* relative to the image base when the section is loaded into memory.
|
|
* For object files, this field is the address of the first byte
|
|
* before relocation is applied; for simplicity, compilers should set
|
|
* this to zero. Otherwise, it is an arbitrary value that is
|
|
* subtracted from offsets during relocation.
|
|
*/
|
|
uint32_t VirtualAddress;
|
|
|
|
/*
|
|
* The size of the section (for object files) or the size of the
|
|
* initialized data on disk (for image files). For executable images,
|
|
* this must be a multiple of FileAlignment from the optional header.
|
|
* If this is less than VirtualSize, the remainder of the section is
|
|
* zero-filled. Because the SizeOfRawData field is rounded but the
|
|
* VirtualSize field is not, it is possible for SizeOfRawData to be
|
|
* greater than VirtualSize as well. When a section contains only
|
|
* uninitialized data, this field should be zero.
|
|
*/
|
|
uint32_t SizeOfRawData;
|
|
|
|
/*
|
|
* The file pointer to the first page of the section within the COFF
|
|
* file. For executable images, this must be a multiple of
|
|
* FileAlignment from the optional header. For object files, the value
|
|
* should be aligned on a 4-byte boundary for best performance. When a
|
|
* section contains only uninitialized data, this field should be
|
|
* zero.
|
|
*/
|
|
uint32_t PointerToRawData;
|
|
|
|
uint32_t PointerToRelocations;
|
|
uint32_t PointerToLinenumbers;
|
|
uint16_t NumberOfRelocations;
|
|
uint16_t NumberOfLinenumbers;
|
|
uint32_t Characteristics;
|
|
};
|
|
|
|
#endif /* COSMOPOLITAN_LIBC_NT_STRUCT_IMAGESECTIONHEADER_H_ */
|