]> git.proxmox.com Git - efi-boot-shim.git/blobdiff - include/peimage.h
New upstream version 15.6
[efi-boot-shim.git] / include / peimage.h
index 3b3f01a79af8106368d693ce9862421f0d569055..e97b29c4d84c0b6b6969786e39338ed79fb959b9 100644 (file)
 \r
 #include "wincert.h"\r
 \r
-#define SIGNATURE_16(A, B)        ((A) | (B << 8))\r
-#define SIGNATURE_32(A, B, C, D)  (SIGNATURE_16 (A, B) | (SIGNATURE_16 (C, D) << 16))\r
-#define SIGNATURE_64(A, B, C, D, E, F, G, H) \\r
-       (SIGNATURE_32 (A, B, C, D) | ((UINT64) (SIGNATURE_32 (E, F, G, H)) << 32))\r
+#define SIGNATURE_16(A, B) \\r
+       ((UINT16)(((UINT16)(A)) | (((UINT16)(B)) << ((UINT16)8))))\r
+#define SIGNATURE_32(A, B, C, D)                 \\r
+       ((UINT32)(((UINT32)SIGNATURE_16(A, B)) | \\r
+                 (((UINT32)SIGNATURE_16(C, D)) << (UINT32)16)))\r
+#define SIGNATURE_64(A, B, C, D, E, F, G, H)         \\r
+       ((UINT64)((UINT64)SIGNATURE_32(A, B, C, D) | \\r
+                 ((UINT64)(SIGNATURE_32(E, F, G, H)) << (UINT64)32)))\r
 \r
 #define ALIGN_VALUE(Value, Alignment) ((Value) + (((Alignment) - (Value)) & ((Alignment) - 1)))\r
 #define ALIGN_POINTER(Pointer, Alignment) ((VOID *) (ALIGN_VALUE ((UINTN)(Pointer), (Alignment))))\r
@@ -236,6 +240,24 @@ typedef struct {
   EFI_IMAGE_DATA_DIRECTORY  DataDirectory[EFI_IMAGE_NUMBER_OF_DIRECTORY_ENTRIES];\r
 } EFI_IMAGE_OPTIONAL_HEADER64;\r
 \r
+#define EFI_IMAGE_DLLCHARACTERISTICS_RESERVED_0001         0x0001\r
+#define EFI_IMAGE_DLLCHARACTERISTICS_RESERVED_0002         0x0002\r
+#define EFI_IMAGE_DLLCHARACTERISTICS_RESERVED_0004         0x0004\r
+#define EFI_IMAGE_DLLCHARACTERISTICS_RESERVED_0008         0x0008\r
+#if 0 /* This is not in the PE spec. */\r
+#define EFI_IMAGE_DLLCHARACTERISTICS_RESERVED_0010         0x0010\r
+#endif\r
+#define EFI_IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA       0x0020\r
+#define EFI_IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE          0x0040\r
+#define EFI_IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY       0x0080\r
+#define EFI_IMAGE_DLLCHARACTERISTICS_NX_COMPAT             0x0100\r
+#define EFI_IMAGE_DLLCHARACTERISTICS_NO_ISOLATION          0x0200\r
+#define EFI_IMAGE_DLLCHARACTERISTICS_NO_SEH                0x0400\r
+#define EFI_IMAGE_DLLCHARACTERISTICS_NO_BIND               0x0800\r
+#define EFI_IMAGE_DLLCHARACTERISTICS_APPCONTAINER          0x1000\r
+#define EFI_IMAGE_DLLCHARACTERISTICS_WDM_DRIVER            0x2000\r
+#define EFI_IMAGE_DLLCHARACTERISTICS_GUARD_CF              0x4000\r
+#define EFI_IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE 0x8000\r
 \r
 ///\r
 /// @attention\r
@@ -303,16 +325,31 @@ typedef struct {
 //\r
 // Section Flags Values\r
 //\r
-#define EFI_IMAGE_SCN_TYPE_NO_PAD                  0x00000008  ///< Reserved.\r
+#define EFI_IMAGE_SCN_RESERVED_00000000            0x00000000\r
+#define EFI_IMAGE_SCN_RESERVED_00000001            0x00000001\r
+#define EFI_IMAGE_SCN_RESERVED_00000002            0x00000002\r
+#define EFI_IMAGE_SCN_RESERVED_00000004            0x00000004\r
+#define EFI_IMAGE_SCN_TYPE_NO_PAD                  0x00000008\r
+#define EFI_IMAGE_SCN_RESERVED_00000010            0x00000010\r
 #define EFI_IMAGE_SCN_CNT_CODE                     0x00000020\r
 #define EFI_IMAGE_SCN_CNT_INITIALIZED_DATA         0x00000040\r
 #define EFI_IMAGE_SCN_CNT_UNINITIALIZED_DATA       0x00000080\r
-\r
-#define EFI_IMAGE_SCN_LNK_OTHER                    0x00000100  ///< Reserved.\r
-#define EFI_IMAGE_SCN_LNK_INFO                     0x00000200  ///< Section contains comments or some other type of information.\r
-#define EFI_IMAGE_SCN_LNK_REMOVE                   0x00000800  ///< Section contents will not become part of image.\r
+#define EFI_IMAGE_SCN_LNK_OTHER                    0x00000100\r
+#define EFI_IMAGE_SCN_LNK_INFO                     0x00000200\r
+#define EFI_IMAGE_SCN_RESERVED_00000400            0x00000400\r
+#define EFI_IMAGE_SCN_LNK_REMOVE                   0x00000800\r
 #define EFI_IMAGE_SCN_LNK_COMDAT                   0x00001000\r
-\r
+#define EFI_IMAGE_SCN_RESERVED_00002000            0x00002000\r
+#define EFI_IMAGE_SCN_RESERVED_00004000            0x00004000\r
+#define EFI_IMAGE_SCN_GPREL                        0x00008000\r
+/*\r
+ * PE 9.3 says both IMAGE_SCN_MEM_PURGEABLE and IMAGE_SCN_MEM_16BIT are\r
+ * 0x00020000, but I think it's wrong. --pjones\r
+ */\r
+#define EFI_IMAGE_SCN_MEM_PURGEABLE                0x00010000 // "Reserved for future use."\r
+#define EFI_IMAGE_SCN_MEM_16BIT                    0x00020000 // "Reserved for future use."\r
+#define EFI_IMAGE_SCN_MEM_LOCKED                   0x00040000 // "Reserved for future use."\r
+#define EFI_IMAGE_SCN_MEM_PRELOAD                  0x00080000 // "Reserved for future use."\r
 #define EFI_IMAGE_SCN_ALIGN_1BYTES                 0x00100000\r
 #define EFI_IMAGE_SCN_ALIGN_2BYTES                 0x00200000\r
 #define EFI_IMAGE_SCN_ALIGN_4BYTES                 0x00300000\r
@@ -320,7 +357,14 @@ typedef struct {
 #define EFI_IMAGE_SCN_ALIGN_16BYTES                0x00500000\r
 #define EFI_IMAGE_SCN_ALIGN_32BYTES                0x00600000\r
 #define EFI_IMAGE_SCN_ALIGN_64BYTES                0x00700000\r
-\r
+#define EFI_IMAGE_SCN_ALIGN_128BYTES               0x00800000\r
+#define EFI_IMAGE_SCN_ALIGN_256BYTES               0x00900000\r
+#define EFI_IMAGE_SCN_ALIGN_512BYTES               0x00a00000\r
+#define EFI_IMAGE_SCN_ALIGN_1024BYTES              0x00b00000\r
+#define EFI_IMAGE_SCN_ALIGN_2048BYTES              0x00c00000\r
+#define EFI_IMAGE_SCN_ALIGN_4096BYTES              0x00d00000\r
+#define EFI_IMAGE_SCN_ALIGN_8192BYTES              0x00e00000\r
+#define EFI_IMAGE_SCN_LNK_NRELOC_OVFL              0x01000000\r
 #define EFI_IMAGE_SCN_MEM_DISCARDABLE              0x02000000\r
 #define EFI_IMAGE_SCN_MEM_NOT_CACHED               0x04000000\r
 #define EFI_IMAGE_SCN_MEM_NOT_PAGED                0x08000000\r