⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 coff_defs.h

📁 dm642的相关驱动程序
💻 H
字号:

#ifndef COFF_DEFS_H
#define COFF_DEFS_H

//#include "ntddk.h"
//#include "thakral.h"
#define UINT16 unsigned short
#define UINT32 unsigned long
/* COFF main file header flags (bytes 18 & 19 in header) */
#define COFF_FLAG_RELO_STRIPPED        0x0001
#define COFF_FLAG_RELOCATABLE          0x0002
#define COFF_FLAG_LINE_NUMS_STRIPPED   0x0004
#define COFF_FLAG_LOCAL_SYMS_STRIPPED  0x0008
#define COFF_FLAG_LITTLE_ENDIAN        0x0100
#define COFF_FLAG_BIG_ENDIAN           0x0200

/* COFF main file header layout */
typedef struct
{
	UINT16      version;
	UINT16      sectionCount;
	UINT32      dateStamp;
	UINT32      symbolTableOffset;
	UINT32      symbolTableEntriesCount;
	UINT16      optionalHeaderSize;
	UINT16      flags;
   UINT16      targetID;
} tCOFFMainHeader;

#define COFF_MAIN_HEADER_SIZE ((sizeof(UINT16) * 5) + (sizeof(UINT32) * 3))


/* COFF optional file header layout */
typedef struct
{
	UINT16      magicNumber;            /* must be 0x0108 */
	UINT16      version;
	UINT32      executableSize;         /* bytes */
	UINT32      initializedDataSize;    /* bytes */
	UINT32      uninitializedDataSize;  /* bytes */
	UINT32      entryPoint;
	UINT32      executableStart;
   UINT32      initializedDataStart;
} tCOFFOptionalHeader;

#define COFF_OPTIONAL_HEADER_SIZE ((sizeof(UINT16) * 2) + (sizeof(UINT32) * 6))

/* COFF optional file header flags (bytes 40->43 in header) */
#define COFF_SECTION_FLAG_REGULAR      0x00000000
#define COFF_SECTION_FLAG_DUMMY        0x00000001
#define COFF_SECTION_FLAG_NOLOAD       0x00000002
#define COFF_SECTION_FLAG_GROUP        0x00000004
#define COFF_SECTION_FLAG_PAD          0x00000008
#define COFF_SECTION_FLAG_COPY         0x00000010
#define COFF_SECTION_FLAG_TEXT         0x00000020
#define COFF_SECTION_FLAG_DATA         0x00000040
#define COFF_SECTION_FLAG_BSS          0x00000080
#define COFF_SECTION_FLAG_CONDITIONAL  0x00004000


/* COFF section header layout */
typedef struct
{
	char        sectionName[8];    
	UINT32      physicalAddress;
	UINT32      virtualAddress;
	UINT32      size;    /* words (bytes*4) */
	UINT32      rawDataOffset;
	UINT32      relocationsOffset;
	UINT32      lineNumberEntriesOffset;
	UINT32      relocationEntriesCount;
	UINT32      lineNumberEntriesCount;
	UINT32      flags;
	UINT16      reserved;
	UINT16      memPage;
} tCOFFSectionHeader;

#define COFF_SECTION_HEADER_SIZE ((sizeof(UINT16) * 2) + (sizeof(UINT32) * 9) + 8)

/* COFF optional file header flags (bytes 40->43 in header) */
#define COFF_RELO_TYPE_ABS             0x0000
#define COFF_RELO_TYPE_RELBYTE         0x000F
#define COFF_RELO_TYPE_RELWORD         0x0010
#define COFF_RELO_TYPE_RELLONG         0x0011
#define COFF_RELO_TYPE_C60BASE         0x0050
#define COFF_RELO_TYPE_C60DIR15        0x0051
#define COFF_RELO_TYPE_C60PCR21        0x0052
#define COFF_RELO_TYPE_C60LO16         0x0054
#define COFF_RELO_TYPE_C60HI16         0x0055
#define COFF_RELO_TYPE_C60SECT         0x0056


/* COFF relocation entry layout */
typedef struct
{
	UINT32      virtualAddress;
	UINT16      symbolTableIndex;
	UINT16      reserved;
	UINT16      type;
} tCOFFRelocationEntry;

#define COFF_RELOCATION_ENTRY_SIZE ((sizeof(UINT16) * 3) + (sizeof(UINT32) * 1))

/* COFF line number table entry layout */
typedef struct
{
	UINT32      indexAddress;
	UINT16      functionLine;
} tCOFFLineNumberTableEntry;

#define COFF_LINE_NUMBER_ENTRY_SIZE ((sizeof(UINT16) * 1) + (sizeof(UINT32) * 1))

/* COFF symbol table entry layout */
typedef struct
{
	char        name[8];
   UINT32      value;
   UINT16      sectionNumber;
   UINT16      type;
   char        symbolClass;
   char        auxiliary;
} tCOFFSymbolTableEntry;

#define COFF_SYMBOL_TABLE_ENTRY_SIZE ((sizeof(UINT16) * 2) + (sizeof(UINT32) * 1) + 10)



#endif   /* #ifndef COFF_DEFFS_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -