154 lines
5 KiB
C
154 lines
5 KiB
C
/* radare - LGPL - Copyright 2014 - Fedor Sakharov */
|
|
#ifndef COFF_SPECS_H
|
|
#define COFF_SPECS_H
|
|
|
|
#include <r_types_base.h>
|
|
|
|
#define IMAGE_FILE_MACHINE_UNKNOWN 0x0
|
|
#define IMAGE_FILE_MACHINE_AM33 0x1d3
|
|
#define IMAGE_FILE_MACHINE_AMD64 0x8664
|
|
#define IMAGE_FILE_MACHINE_ARM 0x1c0
|
|
#define IMAGE_FILE_MACHINE_ARMNT 0x1c4
|
|
#define IMAGE_FILE_MACHINE_ARM64 0xaa64
|
|
#define IMAGE_FILE_MACHINE_EBC 0xebc
|
|
#define IMAGE_FILE_MACHINE_I386 0x14c
|
|
#define IMAGE_FILE_MACHINE_IA64 0x200
|
|
#define IMAGE_FILE_MACHINE_M32R 0x9041
|
|
#define IMAGE_FILE_MACHINE_MIPS16 0x266
|
|
#define IMAGE_FILE_MACHINE_MIPSFPU 0x366
|
|
#define IMAGE_FILE_MACHINE_MIPSFPU16 0x466
|
|
#define IMAGE_FILE_MACHINE_POWERPC 0x1f0
|
|
#define IMAGE_FILE_MACHINE_POWERPCFP 0x1f1
|
|
#define IMAGE_FILE_MACHINE_R4000 0x166
|
|
#define IMAGE_FILE_MACHINE_SH3 0x1a2
|
|
#define IMAGE_FILE_MACHINE_SH3DSP 0x1a3
|
|
#define IMAGE_FILE_MACHINE_SH4 0x1a6
|
|
#define IMAGE_FILE_MACHINE_SH5 0x1a8
|
|
#define IMAGE_FILE_MACHINE_THUMB 0x1c2
|
|
#define IMAGE_FILE_MACHINE_WCEMIPSV2 0x169
|
|
#define IMAGE_FILE_MACHINE_H8300 0x0083
|
|
|
|
#define IMAGE_FILE_TI_COFF 0xc1
|
|
#define IMAGE_FILE_MACHINE_TMS470 0x0097
|
|
#define IMAGE_FILE_MACHINE_TMS320C54 0x0098
|
|
#define IMAGE_FILE_MACHINE_TMS320C60 0x0099
|
|
#define IMAGE_FILE_MACHINE_TMS320C55 0x009C
|
|
#define IMAGE_FILE_MACHINE_TMS320C28 0x009D
|
|
#define IMAGE_FILE_MACHINE_MSP430 0x00A0
|
|
#define IMAGE_FILE_MACHINE_TMS320C55PLUS 0x00A1
|
|
|
|
#define IMAGE_FLAGS_TI_F_RELFLG 0x0001
|
|
#define IMAGE_FLAGS_TI_F_EXEC 0x0002
|
|
#define IMAGE_FLAGS_TI_F_LNNO 0x0004
|
|
#define IMAGE_FLAGS_TI_F_LSYMS 0x0008
|
|
#define IMAGE_FLAGS_TI_F_BIG 0x0200
|
|
#define IMAGE_FLAGS_TI_F_LITTLE 0x0100
|
|
|
|
#define IMAGE_SCN_TYPE_NO_PAD 0x00000008
|
|
#define IMAGE_SCN_CNT_CODE 0x00000020
|
|
#define IMAGE_SCN_CNT_INIT_DATA 0x00000040
|
|
#define IMAGE_SCN_LNK_OTHER 0x00000100
|
|
#define IMAGE_SCN_LNK_INFO 0x00000200
|
|
#define IMAGE_SCN_LNK_REMOVE 0x00000800
|
|
#define IMAGE_SCN_LNK_COMDAT 0x00001000
|
|
#define IMAGE_SCN_GPREL 0x00008000
|
|
#define IMAGE_SCN_MEM_PURGEABLE 0x00010000
|
|
#define IMAGE_SCN_MEM_16BIT 0x00020000
|
|
#define IMAGE_SCN_MEM_LOCKED 0x00040000
|
|
#define IMAGE_SCN_MEM_PRELOAD 0x00080000
|
|
#define IMAGE_SCN_ALIGN_1BYTES 0x00100000
|
|
#define IMAGE_SCN_ALIGN_2BYTES 0x00200000
|
|
#define IMAGE_SCN_ALIGN_4BYTES 0x00300000
|
|
#define IMAGE_SCN_ALIGN_8BYTES 0x00400000
|
|
#define IMAGE_SCN_ALIGN_16BYTES 0x00500000
|
|
#define IMAGE_SCN_ALIGN_32BYTES 0x00600000
|
|
#define IMAGE_SCN_ALIGN_64BYTES 0x00700000
|
|
#define IMAGE_SCN_ALIGN_128BYTES 0x00800000
|
|
#define IMAGE_SCN_ALIGN_256BYTES 0x00900000
|
|
#define IMAGE_SCN_ALIGN_512BYTES 0x00A00000
|
|
#define IMAGE_SCN_ALIGN_1024BYTES 0x00B00000
|
|
#define IMAGE_SCN_ALIGN_2048BYTES 0x00C00000
|
|
#define IMAGE_SCN_ALIGN_4096BYTES 0x00D00000
|
|
#define IMAGE_SCN_ALIGN_8192BYTES 0x00E00000
|
|
#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_SYM_TYPE_NULL 0
|
|
#define IMAGE_SYM_TYPE_VOID 1
|
|
#define IMAGE_SYM_TYPE_CHAR 2
|
|
#define IMAGE_SYM_TYPE_SHORT 3
|
|
#define IMAGE_SYM_TYPE_INT 4
|
|
#define IMAGE_SYM_TYPE_LONG 5
|
|
#define IMAGE_SYM_TYPE_FLOAT 6
|
|
#define IMAGE_SYM_TYPE_DOUBLE 7
|
|
#define IMAGE_SYM_TYPE_STRUCT 8
|
|
#define IMAGE_SYM_TYPE_UNION 9
|
|
#define IMAGE_SYM_TYPE_ENUM 10
|
|
#define IMAGE_SYM_TYPE_MOE 11
|
|
#define IMAGE_SYM_TYPE_BYTE 12
|
|
#define IMAGE_SYM_TYPE_WORD 13
|
|
#define IMAGE_SYM_TYPE_UINT 14
|
|
#define IMAGE_SYM_TYPE_DWORD 15
|
|
|
|
#define IMAGE_SYM_DTYPE_NULL 0
|
|
#define IMAGE_SYM_DTYPE_POINTER 1
|
|
#define IMAGE_SYM_DTYPE_FUNCTION 2
|
|
#define IMAGE_SYM_DTYPE_ARRAY 3
|
|
|
|
#define IMAGE_SYM_CLASS_END_OF_FUNCTION 0xFF
|
|
#define IMAGE_SYM_CLASS_NULL 0
|
|
#define IMAGE_SYM_CLASS_AUTOMATIC 1
|
|
#define IMAGE_SYM_CLASS_EXTERNAL 2
|
|
#define IMAGE_SYM_CLASS_STATIC 3
|
|
#define IMAGE_SYM_CLASS_REGISTER 4
|
|
#define IMAGE_SYM_CLASS_EXTERNAL_DEF 5
|
|
#define IMAGE_SYM_CLASS_LABEL 6
|
|
#define IMAGE_SYM_CLASS_UNDEFINED_LABEL 7
|
|
#define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 8
|
|
#define IMAGE_SYM_CLASS_ARGUMENT 9
|
|
#define IMAGE_SYM_CLASS_STRUCT_TAG 10
|
|
#define IMAGE_SYM_CLASS_MEMBER_OF_UNION 11
|
|
#define IMAGE_SYM_CLASS_UNION_TAG 12
|
|
#define IMAGE_SYM_CLASS_TYPE_DEFINITION 13
|
|
#define IMAGE_SYM_CLASS_UNDEFINED_STATIC 14
|
|
#define IMAGE_SYM_CLASS_ENUM_TAG 15
|
|
#define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 16
|
|
#define IMAGE_SYM_CLASS_REGISTER_PARAM 17
|
|
#define IMAGE_SYM_CLASS_BIT_FIELD 18
|
|
#define IMAGE_SYM_CLASS_BLOCK 100
|
|
#define IMAGE_SYM_CLASS_FUNCTION 101
|
|
#define IMAGE_SYM_CLASS_END_OF_STRUCT 102
|
|
#define IMAGE_SYM_CLASS_FILE 103
|
|
#define IMAGE_SYM_CLASS_SECTION 104
|
|
#define IMAGE_SYM_CLASS_WEAK_EXTERNAL 105
|
|
#define IMAGE_SYM_CLASS_CLR_TOKEN 107
|
|
|
|
struct coff_hdr {
|
|
ut16 machine;
|
|
ut16 sections_num;
|
|
ut32 timestamp;
|
|
ut32 symtable_offset;
|
|
ut32 symbols_num;
|
|
ut16 opt_hdr_size;
|
|
ut16 flags;
|
|
ut16 target_id; // TI COFF specific
|
|
};
|
|
|
|
struct coff_opt_hdr {
|
|
ut16 magic;
|
|
ut8 major_linker_version;
|
|
ut8 minor_linker_version;
|
|
ut32 size_of_code;
|
|
ut32 size_of_init_data;
|
|
ut32 size_of_uninit_data;
|
|
ut32 entry_point;
|
|
ut32 base_of_code;
|
|
};
|
|
|
|
#endif /* COFF_SPECS_H */
|