Index: bootcd/isolinux/syslinux-6.03/efi/wrapper.h
===================================================================
--- bootcd/isolinux/syslinux-6.03/efi/wrapper.h	(revision e16e8f2a41938d263af54a9fd6b4020d6c0d69fa)
+++ bootcd/isolinux/syslinux-6.03/efi/wrapper.h	(revision e16e8f2a41938d263af54a9fd6b4020d6c0d69fa)
@@ -0,0 +1,170 @@
+#ifndef EFI_WRAPPER_H
+#define EFI_WRAPPER_H
+
+#define MSDOS_SIGNATURE	0x5a4d
+#define PE_SIGNATURE	0x4550
+#define PE32_FORMAT	0x10b
+#define PE32P_FORMAT	0x20b	/* PE32+ */
+
+#define IMAGE_FILE_MACHINE_I386			0x14c
+#define IMAGE_FILE_MACHINE_X86_64		0x8664
+#define IMAGE_FILE_EXECUTABLE_IMAGE		0x0002
+#define IMAGE_FILE_LINE_NUMBERS_STRIPPED	0x0004
+#define IMAGE_FILE_32BIT_MACHINE		0x0100
+#define IMAGE_FILE_DEBUG_STRIPPED		0x0200
+
+#define IMAGE_SUBSYSTEM_EFI_APPLICATION		0x0a
+
+#define IMAGE_SCN_CNT_CODE		0x00000020
+#define IMAGE_SCN_CNT_INITIALIZED_DATA	0x00000040
+#define IMAGE_SCN_ALIGN_1BYTES		0x00100000
+#define IMAGE_SCN_ALIGN_16BYTES		0x00500000
+#define IMAGE_SCN_MEM_DISCARDABLE	0x02000000
+#define IMAGE_SCN_MEM_EXECUTE		0x20000000
+#define IMAGE_SCN_MEM_READ		0x40000000
+
+#define __packed	__attribute__((packed))
+#define OFFSETOF(t,m)	((size_t)&((t *)0)->m)
+
+struct header {
+	__uint16_t msdos_signature;
+	__uint8_t _pad1[0x16];
+	__uint16_t relocs_ptr;
+	__uint8_t __pad2[0x3c - 0x1a];
+	__uint32_t pe_hdr;
+	__uint16_t pe_signature;
+	__uint16_t _pad2;
+} __packed;
+
+/* FIXME: when setting up coff_hdr, set up optional_hdr_sz
+ * based on PE32 or PE32+ format
+ */
+/*
+ * COFF header
+ */
+struct coff_hdr {
+	__uint16_t arch;
+	__uint16_t nr_sections;
+	__uint32_t timedatestamp;
+	__uint32_t symtab;
+	__uint32_t nr_syms;
+	__uint16_t optional_hdr_sz;
+	__uint16_t characteristics;
+} __packed;
+
+struct optional_hdr {
+	__uint16_t format;
+	__uint8_t major_linker_version;
+	__uint8_t minor_linker_version;
+	__uint32_t code_sz;
+	__uint32_t initialized_data_sz;
+	__uint32_t uninitialized_data_sz;
+	__uint32_t entry_point;
+	__uint32_t base_code;
+	__uint32_t data;
+} __packed;
+
+/* For PE32+, the optional_header does NOT have
+ * data after base_code
+ */
+struct optional_hdr_pe32p {
+	__uint16_t format;
+	__uint8_t major_linker_version;
+	__uint8_t minor_linker_version;
+	__uint32_t code_sz;
+	__uint32_t initialized_data_sz;
+	__uint32_t uninitialized_data_sz;
+	__uint32_t entry_point;
+	__uint32_t base_code;
+} __packed;
+/*
+ * Extra header fields
+ */
+struct extra_hdr {
+	__uint32_t image_base;
+	__uint32_t section_align;
+	__uint32_t file_align;
+	__uint16_t major_os_version;
+	__uint16_t minor_os_version;
+	__uint16_t major_image_version;
+	__uint16_t minor_image_version;
+	__uint16_t major_subsystem_version;
+	__uint16_t minor_subsystem_version;
+	__uint32_t win32_version;
+	__uint32_t image_sz;
+	__uint32_t headers_sz;
+	__uint32_t checksum;
+	__uint16_t subsystem;
+	__uint16_t dll_characteristics;
+	__uint32_t stack_reserve_sz;
+	__uint32_t stack_commit_sz;
+	__uint32_t heap_reserve_sz;
+	__uint32_t heap_commit_sz;
+	__uint32_t loader_flags;
+	__uint32_t rva_and_sizes_nr;
+	struct {
+		__uint64_t export_table;
+		__uint64_t import_table;
+		__uint64_t resource_table;
+		__uint64_t exception_table;
+		__uint64_t certification_table;
+		__uint64_t base_relocation_table;
+	} data_directory;
+} __packed;
+
+/* Extra header for PE32+ format 
+ * FIXME: There are additional fields in Microsoft PE COFF v8
+ */
+
+struct extra_hdr_pe32p {
+	__uint64_t image_base;
+	__uint32_t section_align;
+	__uint32_t file_align;
+	__uint16_t major_os_version;
+	__uint16_t minor_os_version;
+	__uint16_t major_image_version;
+	__uint16_t minor_image_version;
+	__uint16_t major_subsystem_version;
+	__uint16_t minor_subsystem_version;
+	__uint32_t win32_version;
+	__uint32_t image_sz;
+	__uint32_t headers_sz;
+	__uint32_t checksum;
+	__uint16_t subsystem;
+	__uint16_t dll_characteristics;
+	__uint64_t stack_reserve_sz;
+	__uint64_t stack_commit_sz;
+	__uint64_t heap_reserve_sz;
+	__uint64_t heap_commit_sz;
+	__uint32_t loader_flags;
+	__uint32_t rva_and_sizes_nr;
+	struct {
+		__uint64_t export_table;
+		__uint64_t import_table;
+		__uint64_t resource_table;
+		__uint64_t exception_table;
+		__uint64_t certification_table;
+		__uint64_t base_relocation_table;
+	} data_directory;
+} __packed;
+
+struct section {
+	__uint8_t name[8];
+	__uint32_t virtual_sz;
+	__uint32_t virtual_address;
+	__uint32_t raw_data_sz;
+	__uint32_t raw_data;
+	__uint32_t relocs;
+	__uint32_t line_numbers;
+	__uint16_t relocs_nr;
+	__uint16_t line_numbers_nr;
+	__uint32_t characteristics;
+} __packed;
+
+struct coff_reloc {
+	__uint32_t virtual_address;
+	__uint32_t symtab_index;
+	__uint16_t type;
+};
+
+#endif /* EFI_WRAPPER_H */
