[ros-diffs] [tkreuzer] 52133: [OBJ2BIN] - Add new tool obj2bin, that converts a coff object file into a raw binary file - Move pe/coff types into a common header file pecoff.h

tkreuzer at svn.reactos.org tkreuzer at svn.reactos.org
Tue Jun 7 19:29:11 UTC 2011


Author: tkreuzer
Date: Tue Jun  7 19:29:09 2011
New Revision: 52133

URL: http://svn.reactos.org/svn/reactos?rev=52133&view=rev
Log:
[OBJ2BIN]
- Add new tool obj2bin, that converts a coff object file into a raw binary file
- Move pe/coff types into a common header file pecoff.h

Added:
    trunk/reactos/tools/obj2bin/   (with props)
    trunk/reactos/tools/obj2bin/CMakeLists.txt   (with props)
    trunk/reactos/tools/obj2bin/obj2bin.c   (with props)
    trunk/reactos/tools/pecoff.h   (with props)
Modified:
    trunk/reactos/tools/CMakeLists.txt
    trunk/reactos/tools/rsym/rsym.h

Modified: trunk/reactos/tools/CMakeLists.txt
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/CMakeLists.txt?rev=52133&r1=52132&r2=52133&view=diff
==============================================================================
--- trunk/reactos/tools/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/reactos/tools/CMakeLists.txt [iso-8859-1] Tue Jun  7 19:29:09 2011
@@ -6,6 +6,7 @@
 add_subdirectory(gendib)
 add_subdirectory(geninc)
 add_subdirectory(mkhive)
+add_subdirectory(obj2bin)
 add_subdirectory(spec2def)
 add_subdirectory(unicode)
 

Propchange: trunk/reactos/tools/obj2bin/
------------------------------------------------------------------------------
--- bugtraq:logregex (added)
+++ bugtraq:logregex Tue Jun  7 19:29:09 2011
@@ -1,0 +1,2 @@
+([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))?
+(\d+)

Propchange: trunk/reactos/tools/obj2bin/
------------------------------------------------------------------------------
    bugtraq:message = See issue #%BUGID% for more details.

Propchange: trunk/reactos/tools/obj2bin/
------------------------------------------------------------------------------
    bugtraq:url = http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%

Propchange: trunk/reactos/tools/obj2bin/
------------------------------------------------------------------------------
    tsvn:logminsize = 10

Added: trunk/reactos/tools/obj2bin/CMakeLists.txt
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/obj2bin/CMakeLists.txt?rev=52133&view=auto
==============================================================================
--- trunk/reactos/tools/obj2bin/CMakeLists.txt (added)
+++ trunk/reactos/tools/obj2bin/CMakeLists.txt [iso-8859-1] Tue Jun  7 19:29:09 2011
@@ -1,0 +1,1 @@
+add_executable(obj2bin obj2bin.c)

Propchange: trunk/reactos/tools/obj2bin/CMakeLists.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Added: trunk/reactos/tools/obj2bin/obj2bin.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/obj2bin/obj2bin.c?rev=52133&view=auto
==============================================================================
--- trunk/reactos/tools/obj2bin/obj2bin.c (added)
+++ trunk/reactos/tools/obj2bin/obj2bin.c [iso-8859-1] Tue Jun  7 19:29:09 2011
@@ -1,0 +1,112 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "../pecoff.h"
+
+static
+void
+Usage(void)
+{
+    printf("Converts a coff object file into a raw binary file.\n"
+           "Syntax: obj2bin <source file> <dest file>\n");
+}
+
+int main(int argc, char *argv[])
+{
+    char *pszSourceFile;
+    char *pszDestFile;
+    FILE *pSourceFile, *pDestFile;
+    IMAGE_FILE_HEADER FileHeader;
+    IMAGE_SECTION_HEADER SectionHeader;
+    unsigned int i, nSize;
+    void *pData;
+
+    if ((argc != 3) || (strcmp(argv[1], "--help") == 0)) Usage();
+
+    pszSourceFile = argv[1];
+    pszDestFile = argv[2];
+
+    pSourceFile = fopen(pszSourceFile, "rb");
+    if (!pSourceFile)
+    {
+        fprintf(stderr, "Couldn't open source file '%s'\n", pszSourceFile);
+        return -1;
+    }
+
+    pDestFile = fopen(pszDestFile, "wb");
+    if (!pszDestFile)
+    {
+        fprintf(stderr, "Couldn't open dest file '%s'\n", pszDestFile);
+        return -2;
+    }
+
+    /* Load the coff header */
+    nSize = fread(&FileHeader, 1, sizeof(FileHeader), pSourceFile);
+    if (nSize != sizeof(FileHeader))
+    {
+        fprintf(stderr, "Failed to read source file\n");
+        return -3;
+    }
+
+    /* Jump to section headers (skip optional header) */
+    if (fseek(pSourceFile, FileHeader.SizeOfOptionalHeader, SEEK_CUR))
+    {
+        fprintf(stderr, "Failed to set file pointer\n");
+        return -4;
+    }
+
+    /* Loop all sections */
+    for (i = 0; i < FileHeader.NumberOfSections; i++)
+    {
+        /* Read section header */
+        nSize = fread(&SectionHeader, 1, sizeof(SectionHeader), pSourceFile);
+        if (nSize != sizeof(SectionHeader))
+        {
+            fprintf(stderr, "Failed to read section %ld file\n", i);
+            return -5;
+        }
+
+        /* Check if this is '.text' section */
+        if (strcmp(SectionHeader.Name, ".text") == 0) break;
+    }
+
+    if (i == FileHeader.NumberOfSections)
+    {
+        fprintf(stderr, "No .text section found\n");
+        return -6;
+    }
+
+    /* Move file pointer to the start of the section*/
+    if (fseek(pSourceFile, SectionHeader.PointerToRawData, SEEK_SET))
+    {
+        fprintf(stderr, "Failed to set file pointer\n");
+        return -7;
+    }
+
+    /* Allocate memory for the section */
+    pData = malloc(SectionHeader.SizeOfRawData);
+    if (!pData)
+    {
+        fprintf(stderr, "Failed to allocate %ld bytes\n", SectionHeader.SizeOfRawData);
+        return -8;
+    }
+
+    /* Read section data */
+    if (!fread(pData, SectionHeader.SizeOfRawData, 1, pSourceFile))
+    {
+        fprintf(stderr, "Failed to read section %ld file\n", i);
+        return -5;
+    }
+
+    /* Write the section to the destination file */
+    if (!fwrite(pData, SectionHeader.SizeOfRawData, 1, pDestFile))
+    {
+        fprintf(stderr, "Failed to write data\n");
+        return -9;
+    }
+
+    fclose(pDestFile);
+    fclose(pSourceFile);
+
+    return 0;
+}
+

Propchange: trunk/reactos/tools/obj2bin/obj2bin.c
------------------------------------------------------------------------------
    svn:eol-style = native

Added: trunk/reactos/tools/pecoff.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/pecoff.h?rev=52133&view=auto
==============================================================================
--- trunk/reactos/tools/pecoff.h (added)
+++ trunk/reactos/tools/pecoff.h [iso-8859-1] Tue Jun  7 19:29:09 2011
@@ -1,0 +1,207 @@
+#pragma once
+
+#define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x010b
+#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x020b
+
+#define IMAGE_DOS_MAGIC 0x5a4d
+#define IMAGE_PE_MAGIC 0x00004550
+#define IMAGE_SIZEOF_SHORT_NAME 8
+
+#define IMAGE_FILE_LINE_NUMS_STRIPPED   0x0004
+#define IMAGE_FILE_LOCAL_SYMS_STRIPPED  0x0008
+#define IMAGE_FILE_DEBUG_STRIPPED   0x0200
+
+#define IMAGE_FILE_MACHINE_I386 0x14c
+#define IMAGE_FILE_MACHINE_AMD64 0x8664
+#define IMAGE_FILE_MACHINE_IA64 0x0200
+
+#define IMAGE_DIRECTORY_ENTRY_BASERELOC	5
+
+#define IMAGE_SCN_TYPE_NOLOAD     0x00000002
+#define IMAGE_SCN_TYPE_NO_PAD     0x00000008
+#define IMAGE_SCN_CNT_CODE        0x00000020
+#define IMAGE_SCN_CNT_INITIALIZED_DATA    0x00000040
+#define IMAGE_SCN_CNT_UNINITIALIZED_DATA  0x00000080
+#define IMAGE_SCN_LNK_OTHER       0x00000100
+#define IMAGE_SCN_LNK_INFO        0x00000200
+#define IMAGE_SCN_LNK_REMOVE      0x00000800
+#define IMAGE_SCN_NO_DEFER_SPEC_EXC 0x00004000
+#define IMAGE_SCN_GPREL           0x00008000
+#define IMAGE_SCN_MEM_PURGEABLE   0x00020000
+#define IMAGE_SCN_MEM_LOCKED      0x00040000
+#define IMAGE_SCN_MEM_PRELOAD     0x00080000
+#define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000
+#define IMAGE_SCN_MEM_DISCARDABLE 0x02000000
+#define IMAGE_SCN_MEM_NOT_CACHED  0x04000000
+#define IMAGE_SCN_MEM_NOT_PAGED   0x08000000
+#define IMAGE_SCN_MEM_SHARED      0x10000000
+#define IMAGE_SCN_MEM_EXECUTE     0x20000000
+#define IMAGE_SCN_MEM_READ        0x40000000
+#define IMAGE_SCN_MEM_WRITE       0x80000000
+
+#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
+
+typedef unsigned char BYTE;
+typedef unsigned char UCHAR;
+typedef unsigned short WORD;
+typedef unsigned short USHORT;
+typedef unsigned long long ULONGLONG;
+#if defined(__x86_64__) && !defined(_WIN64)
+typedef signed int LONG;
+typedef unsigned int ULONG;
+typedef unsigned int DWORD;
+#else
+typedef signed long LONG;
+typedef unsigned long ULONG;
+typedef unsigned long DWORD;
+#endif
+#if defined(_WIN64)
+typedef unsigned __int64 ULONG_PTR;
+#else
+#if defined(__x86_64__) && !defined(_WIN64)
+typedef  unsigned int  ULONG_PTR;
+#else
+typedef  unsigned long ULONG_PTR;
+#endif
+#endif
+
+#pragma pack(push,2)
+typedef struct _IMAGE_DOS_HEADER {
+  WORD e_magic;
+  WORD e_cblp;
+  WORD e_cp;
+  WORD e_crlc;
+  WORD e_cparhdr;
+  WORD e_minalloc;
+  WORD e_maxalloc;
+  WORD e_ss;
+  WORD e_sp;
+  WORD e_csum;
+  WORD e_ip;
+  WORD e_cs;
+  WORD e_lfarlc;
+  WORD e_ovno;
+  WORD e_res[4];
+  WORD e_oemid;
+  WORD e_oeminfo;
+  WORD e_res2[10];
+  LONG e_lfanew;
+} IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER;
+#pragma pack(pop)
+
+#pragma pack(push,4)
+typedef struct _IMAGE_FILE_HEADER {
+	WORD Machine;
+	WORD NumberOfSections;
+	DWORD TimeDateStamp;
+	DWORD PointerToSymbolTable;
+	DWORD NumberOfSymbols;
+	WORD SizeOfOptionalHeader;
+	WORD Characteristics;
+} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
+#pragma pack(pop)
+
+typedef struct _IMAGE_DATA_DIRECTORY {
+  DWORD VirtualAddress;
+  DWORD Size;
+} IMAGE_DATA_DIRECTORY,*PIMAGE_DATA_DIRECTORY;
+
+typedef struct _IMAGE_OPTIONAL_HEADER32 {
+	WORD Magic;
+	BYTE MajorLinkerVersion;
+	BYTE MinorLinkerVersion;
+	DWORD SizeOfCode;
+	DWORD SizeOfInitializedData;
+	DWORD SizeOfUninitializedData;
+	DWORD AddressOfEntryPoint;
+	DWORD BaseOfCode;
+	DWORD BaseOfData;
+	DWORD ImageBase;
+	DWORD SectionAlignment;
+	DWORD FileAlignment;
+	WORD MajorOperatingSystemVersion;
+	WORD MinorOperatingSystemVersion;
+	WORD MajorImageVersion;
+	WORD MinorImageVersion;
+	WORD MajorSubsystemVersion;
+	WORD MinorSubsystemVersion;
+	DWORD Win32VersionValue;
+	DWORD SizeOfImage;
+	DWORD SizeOfHeaders;
+	DWORD CheckSum;
+	WORD Subsystem;
+	WORD DllCharacteristics;
+	DWORD SizeOfStackReserve;
+	DWORD SizeOfStackCommit;
+	DWORD SizeOfHeapReserve;
+	DWORD SizeOfHeapCommit;
+	DWORD LoaderFlags;
+	DWORD NumberOfRvaAndSizes;
+	IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
+} IMAGE_OPTIONAL_HEADER32,*PIMAGE_OPTIONAL_HEADER32;
+
+typedef struct _IMAGE_OPTIONAL_HEADER64 {
+	WORD Magic;
+	BYTE MajorLinkerVersion;
+	BYTE MinorLinkerVersion;
+	DWORD SizeOfCode;
+	DWORD SizeOfInitializedData;
+	DWORD SizeOfUninitializedData;
+	DWORD AddressOfEntryPoint;
+	DWORD BaseOfCode;
+	ULONGLONG ImageBase;
+	DWORD SectionAlignment;
+	DWORD FileAlignment;
+	WORD MajorOperatingSystemVersion;
+	WORD MinorOperatingSystemVersion;
+	WORD MajorImageVersion;
+	WORD MinorImageVersion;
+	WORD MajorSubsystemVersion;
+	WORD MinorSubsystemVersion;
+	DWORD Win32VersionValue;
+	DWORD SizeOfImage;
+	DWORD SizeOfHeaders;
+	DWORD CheckSum;
+	WORD Subsystem;
+	WORD DllCharacteristics;
+	ULONGLONG SizeOfStackReserve;
+	ULONGLONG SizeOfStackCommit;
+	ULONGLONG SizeOfHeapReserve;
+	ULONGLONG SizeOfHeapCommit;
+	DWORD LoaderFlags;
+	DWORD NumberOfRvaAndSizes;
+	IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
+} IMAGE_OPTIONAL_HEADER64,*PIMAGE_OPTIONAL_HEADER64;
+
+#ifdef _TARGET_PE64
+typedef IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER;
+typedef PIMAGE_OPTIONAL_HEADER64 PIMAGE_OPTIONAL_HEADER;
+#else
+typedef IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER;
+typedef PIMAGE_OPTIONAL_HEADER32 PIMAGE_OPTIONAL_HEADER;
+#endif
+
+typedef struct _IMAGE_SECTION_HEADER {
+  BYTE Name[IMAGE_SIZEOF_SHORT_NAME];
+  union {
+    DWORD PhysicalAddress;
+    DWORD VirtualSize;
+  } Misc;
+  DWORD VirtualAddress;
+  DWORD SizeOfRawData;
+  DWORD PointerToRawData;
+  DWORD PointerToRelocations;
+  DWORD PointerToLinenumbers;
+  WORD NumberOfRelocations;
+  WORD NumberOfLinenumbers;
+  DWORD Characteristics;
+} IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER;
+
+#pragma pack(push,4)
+typedef struct _IMAGE_BASE_RELOCATION {
+	DWORD VirtualAddress;
+	DWORD SizeOfBlock;
+    WORD  TypeOffset[1];
+} IMAGE_BASE_RELOCATION,*PIMAGE_BASE_RELOCATION;
+#pragma pack(pop)
+

Propchange: trunk/reactos/tools/pecoff.h
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: trunk/reactos/tools/rsym/rsym.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rsym/rsym.h?rev=52133&r1=52132&r2=52133&view=diff
==============================================================================
--- trunk/reactos/tools/rsym/rsym.h [iso-8859-1] (original)
+++ trunk/reactos/tools/rsym/rsym.h [iso-8859-1] Tue Jun  7 19:29:09 2011
@@ -1,209 +1,7 @@
 /* rsym.h */
 
 #pragma once
-
-#define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x010b
-#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x020b
-
-#define IMAGE_DOS_MAGIC 0x5a4d
-#define IMAGE_PE_MAGIC 0x00004550
-#define IMAGE_SIZEOF_SHORT_NAME 8
-
-#define IMAGE_FILE_LINE_NUMS_STRIPPED   0x0004
-#define IMAGE_FILE_LOCAL_SYMS_STRIPPED  0x0008
-#define IMAGE_FILE_DEBUG_STRIPPED   0x0200
-
-#define IMAGE_DIRECTORY_ENTRY_BASERELOC	5
-
-#define IMAGE_SCN_TYPE_NOLOAD     0x00000002
-#define IMAGE_SCN_TYPE_NO_PAD     0x00000008
-#define IMAGE_SCN_CNT_CODE        0x00000020
-#define IMAGE_SCN_CNT_INITIALIZED_DATA    0x00000040
-#define IMAGE_SCN_CNT_UNINITIALIZED_DATA  0x00000080
-#define IMAGE_SCN_LNK_OTHER       0x00000100
-#define IMAGE_SCN_LNK_INFO        0x00000200
-#define IMAGE_SCN_LNK_REMOVE      0x00000800
-#define IMAGE_SCN_NO_DEFER_SPEC_EXC 0x00004000
-#define IMAGE_SCN_GPREL           0x00008000
-#define IMAGE_SCN_MEM_PURGEABLE   0x00020000
-#define IMAGE_SCN_MEM_LOCKED      0x00040000
-#define IMAGE_SCN_MEM_PRELOAD     0x00080000
-#define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000
-#define IMAGE_SCN_MEM_DISCARDABLE 0x02000000
-#define IMAGE_SCN_MEM_NOT_CACHED  0x04000000
-#define IMAGE_SCN_MEM_NOT_PAGED   0x08000000
-#define IMAGE_SCN_MEM_SHARED      0x10000000
-#define IMAGE_SCN_MEM_EXECUTE     0x20000000
-#define IMAGE_SCN_MEM_READ        0x40000000
-#define IMAGE_SCN_MEM_WRITE       0x80000000
-
-#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
-
-typedef unsigned char BYTE;
-typedef unsigned char UCHAR;
-typedef unsigned short WORD;
-typedef unsigned short USHORT;
-typedef unsigned long long ULONGLONG;
-#if defined(__x86_64__) && !defined(_WIN64)
-typedef signed int LONG;
-typedef unsigned int ULONG;
-typedef unsigned int DWORD;
-#else
-typedef signed long LONG;
-typedef unsigned long ULONG;
-typedef unsigned long DWORD;
-#endif
-#if defined(_WIN64)
-typedef unsigned __int64 ULONG_PTR;
-#else
-#if defined(__x86_64__) && !defined(_WIN64)
-typedef  unsigned int  ULONG_PTR;
-#else
-typedef  unsigned long ULONG_PTR;
-#endif
-#endif
-
-#pragma pack(push,2)
-
-typedef struct _IMAGE_DOS_HEADER {
-  WORD e_magic;
-  WORD e_cblp;
-  WORD e_cp;
-  WORD e_crlc;
-  WORD e_cparhdr;
-  WORD e_minalloc;
-  WORD e_maxalloc;
-  WORD e_ss;
-  WORD e_sp;
-  WORD e_csum;
-  WORD e_ip;
-  WORD e_cs;
-  WORD e_lfarlc;
-  WORD e_ovno;
-  WORD e_res[4];
-  WORD e_oemid;
-  WORD e_oeminfo;
-  WORD e_res2[10];
-  LONG e_lfanew;
-} IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER;
-#pragma pack(pop)
-
-#pragma pack(push,4)
-typedef struct _IMAGE_FILE_HEADER {
-	WORD Machine;
-	WORD NumberOfSections;
-	DWORD TimeDateStamp;
-	DWORD PointerToSymbolTable;
-	DWORD NumberOfSymbols;
-	WORD SizeOfOptionalHeader;
-	WORD Characteristics;
-} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
-#pragma pack(pop)
-
-typedef struct _IMAGE_DATA_DIRECTORY {
-  DWORD VirtualAddress;
-  DWORD Size;
-} IMAGE_DATA_DIRECTORY,*PIMAGE_DATA_DIRECTORY;
-
-typedef struct _IMAGE_OPTIONAL_HEADER32 {
-	WORD Magic;
-	BYTE MajorLinkerVersion;
-	BYTE MinorLinkerVersion;
-	DWORD SizeOfCode;
-	DWORD SizeOfInitializedData;
-	DWORD SizeOfUninitializedData;
-	DWORD AddressOfEntryPoint;
-	DWORD BaseOfCode;
-	DWORD BaseOfData;
-	DWORD ImageBase;
-	DWORD SectionAlignment;
-	DWORD FileAlignment;
-	WORD MajorOperatingSystemVersion;
-	WORD MinorOperatingSystemVersion;
-	WORD MajorImageVersion;
-	WORD MinorImageVersion;
-	WORD MajorSubsystemVersion;
-	WORD MinorSubsystemVersion;
-	DWORD Win32VersionValue;
-	DWORD SizeOfImage;
-	DWORD SizeOfHeaders;
-	DWORD CheckSum;
-	WORD Subsystem;
-	WORD DllCharacteristics;
-	DWORD SizeOfStackReserve;
-	DWORD SizeOfStackCommit;
-	DWORD SizeOfHeapReserve;
-	DWORD SizeOfHeapCommit;
-	DWORD LoaderFlags;
-	DWORD NumberOfRvaAndSizes;
-	IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
-} IMAGE_OPTIONAL_HEADER32,*PIMAGE_OPTIONAL_HEADER32;
-
-typedef struct _IMAGE_OPTIONAL_HEADER64 {
-	WORD Magic;
-	BYTE MajorLinkerVersion;
-	BYTE MinorLinkerVersion;
-	DWORD SizeOfCode;
-	DWORD SizeOfInitializedData;
-	DWORD SizeOfUninitializedData;
-	DWORD AddressOfEntryPoint;
-	DWORD BaseOfCode;
-	ULONGLONG ImageBase;
-	DWORD SectionAlignment;
-	DWORD FileAlignment;
-	WORD MajorOperatingSystemVersion;
-	WORD MinorOperatingSystemVersion;
-	WORD MajorImageVersion;
-	WORD MinorImageVersion;
-	WORD MajorSubsystemVersion;
-	WORD MinorSubsystemVersion;
-	DWORD Win32VersionValue;
-	DWORD SizeOfImage;
-	DWORD SizeOfHeaders;
-	DWORD CheckSum;
-	WORD Subsystem;
-	WORD DllCharacteristics;
-	ULONGLONG SizeOfStackReserve;
-	ULONGLONG SizeOfStackCommit;
-	ULONGLONG SizeOfHeapReserve;
-	ULONGLONG SizeOfHeapCommit;
-	DWORD LoaderFlags;
-	DWORD NumberOfRvaAndSizes;
-	IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
-} IMAGE_OPTIONAL_HEADER64,*PIMAGE_OPTIONAL_HEADER64;
-
-
-#ifdef _TARGET_PE64
-typedef IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER;
-typedef PIMAGE_OPTIONAL_HEADER64 PIMAGE_OPTIONAL_HEADER;
-#else
-typedef IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER;
-typedef PIMAGE_OPTIONAL_HEADER32 PIMAGE_OPTIONAL_HEADER;
-#endif
-
-typedef struct _IMAGE_SECTION_HEADER {
-  BYTE Name[IMAGE_SIZEOF_SHORT_NAME];
-  union {
-    DWORD PhysicalAddress;
-    DWORD VirtualSize;
-  } Misc;
-  DWORD VirtualAddress;
-  DWORD SizeOfRawData;
-  DWORD PointerToRawData;
-  DWORD PointerToRelocations;
-  DWORD PointerToLinenumbers;
-  WORD NumberOfRelocations;
-  WORD NumberOfLinenumbers;
-  DWORD Characteristics;
-} IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER;
-
-#pragma pack(push,4)
-typedef struct _IMAGE_BASE_RELOCATION {
-	DWORD VirtualAddress;
-	DWORD SizeOfBlock;
-    WORD  TypeOffset[1];
-} IMAGE_BASE_RELOCATION,*PIMAGE_BASE_RELOCATION;
-#pragma pack(pop)
+#include "../pecoff.h"
 
 typedef struct {
   USHORT f_magic;         /* magic number             */




More information about the Ros-diffs mailing list