Why is this needed? ie: what missing functionality of obj2dump does
this tool add?

I'm only asking because whenever I build ARM binaries with GCC I use
obj2dump to do exactly this -- convert a PE/COFF to a raw binary for
the boot-loader or firmware.

So maybe I'm missing something?

Best regards,
Alex Ionescu



On Tue, Jun 7, 2011 at 3:29 PM,  <[email protected]> wrote:
> 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             */
>
>
>

_______________________________________________
Ros-dev mailing list
[email protected]
http://www.reactos.org/mailman/listinfo/ros-dev

Reply via email to