29 #ifndef COFFI_TYPES_HPP
30 #define COFFI_TYPES_HPP
36 #if !defined(COFFI_NO_OWN_TYPES) && !defined(COFFI_NO_CSTDINT) && \
37 !defined(COFFI_NO_INTTYPES) && !defined(DOXYGEN)
40 typedef unsigned char uint8_t;
41 typedef signed char int8_t;
42 typedef uint16_t uint16_t;
43 typedef signed short int16_t;
45 typedef unsigned __int32 uint32_t;
46 typedef signed __int32 int32_t;
47 typedef unsigned __int64 uint64_t;
48 typedef signed __int64 int64_t;
50 typedef unsigned int uint32_t;
51 typedef signed int int32_t;
52 typedef unsigned long long uint64_t;
53 typedef signed long long int64_t;
62 #define COFFI_NAME_SIZE 8
90 #define OH_MAGIC_PE32 0x10B
91 #define OH_MAGIC_PE32ROM 0x107
92 #define OH_MAGIC_PE32PLUS 0x20B
99 #define IMAGE_FILE_RELOCS_STRIPPED 0x0001
100 #define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002
101 #define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004
102 #define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008
103 #define IMAGE_FILE_AGGRESSIVE_WS_TRIM 0x0010
104 #define IMAGE_FILE_LARGE_ADDRESS_AWARE 0x0020
105 #define IMAGE_FILE_16BIT_MACHINE 0x0040
106 #define IMAGE_FILE_BYTES_REVERSED_LO 0x0080
107 #define IMAGE_FILE_32BIT_MACHINE 0x0100
108 #define IMAGE_FILE_DEBUG_STRIPPED 0x0200
109 #define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 0x0400
110 #define IMAGE_FILE_SYSTEM 0x1000
111 #define IMAGE_FILE_DLL 0x2000
112 #define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000
113 #define IMAGE_FILE_BYTES_REVERSED_HI 0x8000
119 #define IMAGE_FILE_MACHINE_UNKNOWN 0x0000
120 #define IMAGE_FILE_MACHINE_AM33 0x01d3
121 #define IMAGE_FILE_MACHINE_AMD64 0x8664
122 #define IMAGE_FILE_MACHINE_ARM 0x01c0
123 #define IMAGE_FILE_MACHINE_ARMNT 0x01c4
124 #define IMAGE_FILE_MACHINE_ARM64 0xaa64
125 #define IMAGE_FILE_MACHINE_EBC 0x0ebc
126 #define IMAGE_FILE_MACHINE_I386 0x014c
127 #define IMAGE_FILE_MACHINE_IA64 0x0200
128 #define IMAGE_FILE_MACHINE_M32R 0x9041
129 #define IMAGE_FILE_MACHINE_MIPS16 0x0266
130 #define IMAGE_FILE_MACHINE_MIPSFPU 0x0366
131 #define IMAGE_FILE_MACHINE_MIPSFPU16 0x0466
132 #define IMAGE_FILE_MACHINE_POWERPC 0x01f0
133 #define IMAGE_FILE_MACHINE_POWERPCFP 0x01f1
134 #define IMAGE_FILE_MACHINE_R4000 0x0166
135 #define IMAGE_FILE_MACHINE_SH3 0x01a2
136 #define IMAGE_FILE_MACHINE_SH3DSP 0x01a3
137 #define IMAGE_FILE_MACHINE_SH4 0x01a6
138 #define IMAGE_FILE_MACHINE_SH5 0x01a8
139 #define IMAGE_FILE_MACHINE_THUMB 0x01c2
140 #define IMAGE_FILE_MACHINE_WCEMIPSV2 0x0169
146 #define IMAGE_SCN_TYPE_NO_PAD 0x00000008
147 #define IMAGE_SCN_CNT_CODE 0x00000020
148 #define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040
149 #define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080
150 #define IMAGE_SCN_LNK_OTHER 0x00000100
151 #define IMAGE_SCN_LNK_INFO 0x00000200
152 #define IMAGE_SCN_LNK_REMOVE 0x00000800
153 #define IMAGE_SCN_LNK_COMDAT 0x00001000
154 #define IMAGE_SCN_GPREL 0x00008000
155 #define IMAGE_SCN_MEM_PURGEABLE 0x00020000
156 #define IMAGE_SCN_MEM_16BIT 0x00020000
157 #define IMAGE_SCN_MEM_LOCKED 0x00040000
158 #define IMAGE_SCN_MEM_PRELOAD 0x00080000
159 #define IMAGE_SCN_ALIGN_1BYTES 0x00100000
160 #define IMAGE_SCN_ALIGN_2BYTES 0x00200000
161 #define IMAGE_SCN_ALIGN_4BYTES 0x00300000
162 #define IMAGE_SCN_ALIGN_8BYTES 0x00400000
163 #define IMAGE_SCN_ALIGN_16BYTES 0x00500000
164 #define IMAGE_SCN_ALIGN_32BYTES 0x00600000
165 #define IMAGE_SCN_ALIGN_64BYTES 0x00700000
166 #define IMAGE_SCN_ALIGN_128BYTES 0x00800000
167 #define IMAGE_SCN_ALIGN_256BYTES 0x00900000
168 #define IMAGE_SCN_ALIGN_512BYTES 0x00A00000
169 #define IMAGE_SCN_ALIGN_1024BYTES 0x00B00000
170 #define IMAGE_SCN_ALIGN_2048BYTES 0x00C00000
171 #define IMAGE_SCN_ALIGN_4096BYTES 0x00D00000
172 #define IMAGE_SCN_ALIGN_8192BYTES 0x00E00000
173 #define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000
174 #define IMAGE_SCN_MEM_DISCARDABLE 0x02000000
175 #define IMAGE_SCN_MEM_NOT_CACHED 0x04000000
176 #define IMAGE_SCN_MEM_NOT_PAGED 0x08000000
177 #define IMAGE_SCN_MEM_SHARED 0x10000000
178 #define IMAGE_SCN_MEM_EXECUTE 0x20000000
179 #define IMAGE_SCN_MEM_READ 0x40000000
180 #define IMAGE_SCN_MEM_WRITE 0x80000000
186 #define DIRECTORY_EXPORT_TABLE 0
187 #define DIRECTORY_IMPORT_TABLE 1
188 #define DIRECTORY_RESOURCE_TABLE 2
189 #define DIRECTORY_EXCEPTION_TABLE 3
190 #define DIRECTORY_CERTIFICATE_TABLE 4
191 #define DIRECTORY_BASE_RELOCATION_TABLE 5
192 #define DIRECTORY_DEBUG 6
193 #define DIRECTORY_ARCHITECTURE 7
194 #define DIRECTORY_GLOBAL_PTR 8
195 #define DIRECTORY_TLS_TABLE 9
196 #define DIRECTORY_LOAD_CONFIG_TABLE 10
197 #define DIRECTORY_BOUND_IMPORT 11
198 #define DIRECTORY_IAT 12
199 #define DIRECTORY_DELAY_IMPORT_DESCRIPTOR 13
200 #define DIRECTORY_COMPLUS_RUNTIME_HEADER 14
201 #define DIRECTORY_RESERVED 15
207 #define IMAGE_REL_I386_ABSOLUTE 0x0000
208 #define IMAGE_REL_I386_DIR16 0x0001
209 #define IMAGE_REL_I386_REL16 0x0002
210 #define IMAGE_REL_I386_DIR32 0x0006
211 #define IMAGE_REL_I386_DIR32NB 0x0007
212 #define IMAGE_REL_I386_SEG12 0x0009
213 #define IMAGE_REL_I386_SECTION 0x000A
214 #define IMAGE_REL_I386_SECREL 0x000B
215 #define IMAGE_REL_I386_REL32 0x0014
221 #define IMAGE_REL_MIPS_ABSOLUTE 0x0000
222 #define IMAGE_REL_MIPS_REFHALF 0x0001
223 #define IMAGE_REL_MIPS_REFWORD 0x0002
224 #define IMAGE_REL_MIPS_JMPADDR 0x0003
225 #define IMAGE_REL_MIPS_REFHI 0x0004
226 #define IMAGE_REL_MIPS_REFLO 0x0005
227 #define IMAGE_REL_MIPS_GPREL 0x0006
228 #define IMAGE_REL_MIPS_LITERAL 0x0007
229 #define IMAGE_REL_MIPS_SECTION 0x000A
230 #define IMAGE_REL_MIPS_SECREL 0x000B
231 #define IMAGE_REL_MIPS_SECRELLO 0x000C
232 #define IMAGE_REL_MIPS_SECRELHI 0x000D
233 #define IMAGE_REL_MIPS_JMPADDR16 0x0010
234 #define IMAGE_REL_MIPS_REFWORDNB 0x0022
235 #define IMAGE_REL_MIPS_PAIR 0x0025
241 #define IMAGE_REL_ALPHA_ABSOLUTE 0x0000
242 #define IMAGE_REL_ALPHA_REFLONG 0x0001
243 #define IMAGE_REL_ALPHA_REFQUAD 0x0002
244 #define IMAGE_REL_ALPHA_GPREL32 0x0003
245 #define IMAGE_REL_ALPHA_LITERAL 0x0004
246 #define IMAGE_REL_ALPHA_LITUSE 0x0005
247 #define IMAGE_REL_ALPHA_GPDISP 0x0006
248 #define IMAGE_REL_ALPHA_BRADDR 0x0007
249 #define IMAGE_REL_ALPHA_HINT 0x0008
250 #define IMAGE_REL_ALPHA_INLINE_REFLONG 0x0009
251 #define IMAGE_REL_ALPHA_REFHI 0x000A
252 #define IMAGE_REL_ALPHA_REFLO 0x000B
253 #define IMAGE_REL_ALPHA_PAIR 0x000C
254 #define IMAGE_REL_ALPHA_MATCH 0x000D
255 #define IMAGE_REL_ALPHA_SECTION 0x000E
256 #define IMAGE_REL_ALPHA_SECREL 0x000F
257 #define IMAGE_REL_ALPHA_REFLONGNB 0x0010
258 #define IMAGE_REL_ALPHA_SECRELHI 0x0012
259 #define IMAGE_REL_ALPHA_REFQ3 0x0013
260 #define IMAGE_REL_ALPHA_REFQ2 0x0014
261 #define IMAGE_REL_ALPHA_REFQ1 0x0015
262 #define IMAGE_REL_ALPHA_GPRELLO 0x0016
263 #define IMAGE_REL_ALPHA_GPRELHI 0x0017
269 #define IMAGE_REL_PPC_ABSOLUTE 0x0000
270 #define IMAGE_REL_PPC_ADDR64 0x0001
271 #define IMAGE_REL_PPC_ADDR32 0x0002
272 #define IMAGE_REL_PPC_ADDR24 0x0003
273 #define IMAGE_REL_PPC_ADDR16 0x0004
274 #define IMAGE_REL_PPC_ADDR14 0x0005
275 #define IMAGE_REL_PPC_REL24 0x0006
276 #define IMAGE_REL_PPC_REL14 0x0007
277 #define IMAGE_REL_PPC_ADDR32NB 0x000A
278 #define IMAGE_REL_PPC_SECREL 0x000B
279 #define IMAGE_REL_PPC_SECTION 0x000C
280 #define IMAGE_REL_PPC_SECREL16 0x000F
281 #define IMAGE_REL_PPC_REFHI 0x0010
282 #define IMAGE_REL_PPC_REFLO 0x0011
283 #define IMAGE_REL_PPC_PAIR 0x0012
284 #define IMAGE_REL_PPC_SECRELLO 0x0013
285 #define IMAGE_REL_PPC_SECRELHI 0x0014
286 #define IMAGE_REL_PPC_GPREL 0x0015
292 #define IMAGE_REL_SH3_ABSOLUTE 0x0000
293 #define IMAGE_REL_SH3_DIRECT16 0x0001
294 #define IMAGE_REL_SH3_DIRECT32 0x0002
295 #define IMAGE_REL_SH3_DIRECT8 0x0003
296 #define IMAGE_REL_SH3_DIRECT8_WORD 0x0004
297 #define IMAGE_REL_SH3_DIRECT8_LONG 0x0005
298 #define IMAGE_REL_SH3_DIRECT4 0x0006
299 #define IMAGE_REL_SH3_DIRECT4_WORD 0x0007
300 #define IMAGE_REL_SH3_DIRECT4_LONG 0x0008
301 #define IMAGE_REL_SH3_PCREL8_WORD 0x0009
302 #define IMAGE_REL_SH3_PCREL8_LONG 0x000A
303 #define IMAGE_REL_SH3_PCREL12_WORD 0x000B
304 #define IMAGE_REL_SH3_STARTOF_SECTION 0x000C
305 #define IMAGE_REL_SH3_SIZEOF_SECTION 0x000D
306 #define IMAGE_REL_SH3_SECTION 0x000E
307 #define IMAGE_REL_SH3_SECREL 0x000F
308 #define IMAGE_REL_SH3_DIRECT32_NB 0x0010
314 #define IMAGE_REL_ARM_ABSOLUTE 0x0000
315 #define IMAGE_REL_ARM_ADDR32 0x0001
316 #define IMAGE_REL_ARM_ADDR32NB 0x0002
317 #define IMAGE_REL_ARM_BRANCH24 0x0003
318 #define IMAGE_REL_ARM_BRANCH11 0x0004
319 #define IMAGE_REL_ARM_SECTION 0x000E
320 #define IMAGE_REL_ARM_SECREL 0x000F
326 #define IMAGE_SYM_UNDEFINED 0
327 #define IMAGE_SYM_ABSOLUTE -1
328 #define IMAGE_SYM_DEBUG -2
334 #define IMAGE_SYM_TYPE_NULL 0
335 #define IMAGE_SYM_TYPE_VOID 1
336 #define IMAGE_SYM_TYPE_CHAR 2
337 #define IMAGE_SYM_TYPE_SHORT 3
338 #define IMAGE_SYM_TYPE_INT 4
339 #define IMAGE_SYM_TYPE_LONG 5
340 #define IMAGE_SYM_TYPE_FLOAT 6
341 #define IMAGE_SYM_TYPE_DOUBLE 7
342 #define IMAGE_SYM_TYPE_STRUCT 8
343 #define IMAGE_SYM_TYPE_UNION 9
344 #define IMAGE_SYM_TYPE_ENUM 10
345 #define IMAGE_SYM_TYPE_MOE 11
346 #define IMAGE_SYM_TYPE_BYTE 12
347 #define IMAGE_SYM_TYPE_WORD 13
348 #define IMAGE_SYM_TYPE_UINT 14
349 #define IMAGE_SYM_TYPE_DWORD 15
355 #define IMAGE_SYM_TYPE_NOT_FUNCTION 0
356 #define IMAGE_SYM_TYPE_FUNCTION 0x20
362 #define IMAGE_SYM_DTYPE_NULL 0
363 #define IMAGE_SYM_DTYPE_POINTER 1
364 #define IMAGE_SYM_DTYPE_FUNCTION 2
365 #define IMAGE_SYM_DTYPE_ARRAY 3
371 #define IMAGE_SYM_CLASS_END_OF_FUNCTION -1
372 #define IMAGE_SYM_CLASS_NULL 0
373 #define IMAGE_SYM_CLASS_AUTOMATIC 1
374 #define IMAGE_SYM_CLASS_EXTERNAL 2
375 #define IMAGE_SYM_CLASS_STATIC 3
376 #define IMAGE_SYM_CLASS_REGISTER 4
377 #define IMAGE_SYM_CLASS_EXTERNAL_DEF 5
378 #define IMAGE_SYM_CLASS_LABEL 6
379 #define IMAGE_SYM_CLASS_UNDEFINED_LABEL 7
380 #define IMAGE_SYM_CLASS_ARGUMENT 9
381 #define IMAGE_SYM_CLASS_STRUCT_TAG 10
382 #define IMAGE_SYM_CLASS_MEMBER_OF_UNION 11
383 #define IMAGE_SYM_CLASS_UNION_TAG 12
384 #define IMAGE_SYM_CLASS_TYPE_DEFINITION 13
385 #define IMAGE_SYM_CLASS_UNDEFINED_STATIC 14
386 #define IMAGE_SYM_CLASS_ENUM_TAG 15
387 #define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 16
388 #define IMAGE_SYM_CLASS_REGISTER_PARAM 17
389 #define IMAGE_SYM_CLASS_BIT_FIELD 18
390 #define IMAGE_SYM_CLASS_BLOCK 100
391 #define IMAGE_SYM_CLASS_FUNCTION 101
392 #define IMAGE_SYM_CLASS_END_OF_STRUCT 102
393 #define IMAGE_SYM_CLASS_FILE 103
394 #define IMAGE_SYM_CLASS_SECTION 104
395 #define IMAGE_SYM_CLASS_WEAK_EXTERNAL 105
401 #define IMAGE_COMDAT_SELECT_NODUPLICATES 1
402 #define IMAGE_COMDAT_SELECT_ANY 2
403 #define IMAGE_COMDAT_SELECT_SAME_SIZE 3
404 #define IMAGE_COMDAT_SELECT_EXACT_MATCH 4
405 #define IMAGE_COMDAT_SELECT_ASSOCIATIVE 5
406 #define IMAGE_COMDAT_SELECT_LARGEST 6
414 #define F_RELFLG 0x0001
415 #define F_EXEC 0x0002
416 #define F_LNNO 0x0004
417 #define F_LSYMS 0x0008
418 #define F_LITTLE 0x0100
420 #define F_SYMMERGE 0x1000
426 #define STYP_REG 0x00000000
427 #define STYP_DSECT 0x00000001
428 #define STYP_NOLOAD 0x00000002
429 #define STYP_GROUP 0x00000004
430 #define STYP_PAD 0x00000008
431 #define STYP_COPY 0x00000010
432 #define STYP_TEXT 0x00000020
433 #define STYP_DATA 0x00000040
434 #define STYP_BSS 0x00000080
435 #define STYP_BLOCK 0x00001000
436 #define STYP_PASS 0x00002000
437 #define STYP_CLINK 0x00004000
438 #define STYP_VECTOR 0x00008000
439 #define STYP_PADDED 0x00010000
440 #define STYP_ALIGN_2 0x00000100
441 #define STYP_ALIGN_4 0x00000200
442 #define STYP_ALIGN_8 0x00000300
443 #define STYP_ALIGN_16 0x00000400
444 #define STYP_ALIGN_32 0x00000500
445 #define STYP_ALIGN_64 0x00000600
446 #define STYP_ALIGN_128 0x00000700
447 #define STYP_ALIGN_256 0x00000800
448 #define STYP_ALIGN_512 0x00000900
449 #define STYP_ALIGN_1024 0x00000A00
450 #define STYP_ALIGN_2048 0x00000B00
451 #define STYP_ALIGN_4096 0x00000C00
452 #define STYP_ALIGN_8192 0x00000D00
453 #define STYP_ALIGN_16384 0x00000E00
454 #define STYP_ALIGN_32768 0x00000F00
460 #define TMS470 0x0097
461 #define TMS320C5400 0x0098
462 #define TMS320C6000 0x0099
463 #define TMS320C5500 0x009C
464 #define TMS320C2800 0x009D
465 #define MSP430 0x00A0
466 #define TMS320C5500plus 0x00A1
472 #define RE_ADD 0x4000
473 #define RE_SUB 0x4001
474 #define RE_NEG 0x4002
475 #define RE_MPY 0x4003
476 #define RE_DIV 0x4004
477 #define RE_MOD 0x4005
479 #define RE_ASR 0x4007
481 #define RE_AND 0x4009
483 #define RE_XOR 0x400B
484 #define RE_NOTB 0x400C
485 #define RE_ULDFLD 0x400D
486 #define RE_SLDFLD 0x400E
487 #define RE_USTFLD 0x400F
488 #define RE_SSTFLD 0x4010
489 #define RE_PUSH 0x4011
490 #define RE_PUSHSK 0x4012
491 #define RE_PUSHUK 0x4013
492 #define RE_PUSHPC 0x4014
493 #define RE_DUP 0x4015
494 #define RE_XSTFLD 0x4016
495 #define RE_PUSHSV 0xC011
501 #define R_C60_ABS 0x0000
502 #define R_C60_RELBYTE 0x000F
503 #define R_C60_RELWORD 0x0010
504 #define R_C60_RELLONG 0x0011
505 #define R_C60_BASE 0x0050
506 #define R_C60_DIR15 0x0051
507 #define R_C60_PCR21 0x0052
508 #define R_C60_PCR10 0x0053
509 #define R_C60_LO16 0x0054
510 #define R_C60_HI16 0x0055
511 #define R_C60_SECT 0x0056
512 #define R_C60_S16 0x0057
513 #define R_C60_PCR7 0x0070
514 #define R_C60_PCR12 0x0071
520 #define R_C28_ABS 0x0000
521 #define R_C28_RELBYTE 0x000F
522 #define R_C28_RELWORD 0x0010
523 #define R_C28_RELLONG 0x0011
524 #define R_C28_PARTLS7 0x0028
525 #define R_C28_PARTLS6 0x005D
526 #define R_C28_PARTMID10 0x005E
527 #define R_C28_REL22 0x005F
528 #define R_C28_PARTMS6 0x0060
529 #define R_C28_PARTMS16 0x0061
530 #define R_C28_PCR16 0x0062
531 #define R_C28_PCR8 0x0063
532 #define R_C28_PTR 0x0064
533 #define R_C28_HI16 0x0065
534 #define R_C28_LOPTR 0x0066
535 #define R_C28_NWORD 0x0067
536 #define R_C28_NBYTE 0x0068
537 #define R_C28_HIBYTE 0x0069
538 #define R_C28_RELS13 0x006A
544 #define R_C54_ABS 0x0000
545 #define R_C54_REL24 0x0005
546 #define R_C54_RELBYTE 0x0017
547 #define R_C54_RELWORD 0x0020
548 #define R_C54_RELLONG 0x0021
549 #define R_C54_PARTLS7 0x0028
550 #define R_C54_PARTMS9 0x0029
551 #define R_C54_REL13 0x002A
557 #define R_C55_ABS 0x0000
558 #define R_C55_REL24 0x0005
559 #define R_C55_RELBYTE 0x0017
560 #define R_C55_RELWORD 0x0020
561 #define R_C55_RELLONG 0x0021
562 #define R_C55_LD3_DMA 0x0170
563 #define R_C55_LD3_MDP 0x0172
564 #define R_C55_LD3_PDP 0x0173
565 #define R_C55_LD3_REL23 0x0174
566 #define R_C55_LD3_k8 0x0210
567 #define R_C55_LD3_k16 0x0211
568 #define R_C55_LD3_K8 0x0212
569 #define R_C55_LD3_K16 0x0213
570 #define R_C55_LD3_I8 0x0214
571 #define R_C55_LD3_I16 0x0215
572 #define R_C55_LD3_L8 0x0216
573 #define R_C55_LD3_L16 0x0217
574 #define R_C55_LD3_k4 0x0220
575 #define R_C55_LD3_k5 0x0221
576 #define R_C55_LD3_K5 0x0222
577 #define R_C55_LD3_k6 0x0223
578 #define R_C55_LD3_k12 0x0224
584 #define R_MSP430_RELLONG 0x0011
585 #define R_MSP430_PCR23H 0x0016
586 #define R_MSP430_PCR24W 0x0017
630 #define CEVA_MACHINE_XC4210_LIB 0xDCA6
631 #define CEVA_MACHINE_XC4210_OBJ 0x8CA6
632 #define CEVA_INVALID_SYMBOL_TABLE_INDEX 0xFFFFFFFF
633 #define CEVA_UNINITIALIZED_DATA 0x80
706 uint16_t reserved1[4];
709 uint16_t reserved2[10];
812 uint32_t section_alignment;
813 uint32_t file_alignment;
814 uint16_t major_os_version;
815 uint16_t minor_os_version;
816 uint16_t major_image_version;
817 uint16_t minor_image_version;
818 uint16_t major_subsystem_version;
819 uint16_t minor_subsystem_version;
820 uint32_t win32_version_value;
822 uint32_t headers_size;
826 uint32_t stack_reserve_size;
827 uint32_t stack_commit_size;
828 uint32_t heap_reserve_size;
829 uint32_t heap_commit_size;
830 uint32_t loader_flags;
831 uint32_t number_of_rva_and_sizes;
838 uint32_t section_alignment;
839 uint32_t file_alignment;
840 uint16_t major_os_version;
841 uint16_t minor_os_version;
842 uint16_t major_image_version;
843 uint16_t minor_image_version;
844 uint16_t major_subsystem_version;
845 uint16_t minor_subsystem_version;
846 uint32_t win32_version_value;
848 uint32_t headers_size;
852 uint64_t stack_reserve_size;
853 uint64_t stack_commit_size;
854 uint64_t heap_reserve_size;
855 uint64_t heap_commit_size;
856 uint32_t loader_flags;
857 uint32_t number_of_rva_and_sizes;
868 uint16_t section_number;
870 uint8_t storage_class;
871 uint8_t aux_symbols_number;
885 uint32_t pointer_to_linenumber;
886 uint32_t pointer_to_next_function;
896 uint32_t pointer_to_next_function;
904 uint32_t characteristics;
918 uint16_t number_of_relocations;
919 uint16_t number_of_linenumbers;
930 uint32_t virtual_address;
941 uint32_t virtual_size;
942 uint32_t virtual_address;
944 uint32_t data_offset;
945 uint32_t reloc_offset;
946 uint32_t line_num_offset;
947 uint16_t reloc_count;
948 uint16_t line_num_count;
956 uint32_t physical_address;
957 uint32_t virtual_address;
959 uint32_t data_offset;
960 uint32_t reloc_offset;
962 uint32_t reloc_count;
963 uint32_t line_num_count;
966 uint16_t page_number;
975 uint32_t virtual_address;
976 uint32_t symbol_table_index;
983 uint32_t virtual_address;
984 uint32_t symbol_table_index;
992 uint32_t virtual_address;
993 uint32_t symbol_table_index;
1000 uint32_t virtual_address;
1001 uint32_t symbol_table_index;
Interface for architecture information.
virtual coffi_architecture_t get_architecture() const =0
Returns the coffi object architecture.
virtual int get_addressable_unit() const =0
Returns the character type size in bytes.
Interface that gives the headers and sections.
virtual const optional_header * get_optional_header() const =0
Returns the COFF optional header.
virtual const coff_header * get_header() const =0
Returns the COFF file header.
virtual const sections & get_sections() const =0
Returns the sections.
virtual const win_header * get_win_header() const =0
Returns the Windows NT header.
virtual const dos_header * get_msdos_header() const =0
Returns the MS-DOS header.
Interface for accessing to the string table.
virtual void name_to_section_string(const std::string &name, char *str)=0
Converts section full name into an 8-bytes short name, eventually creating an entry in the strings ta...
virtual std::string string_to_name(const char *str) const =0
Converts an 8-bytes symbol short name into a full name, eventually by looking into the strings table.
virtual std::string section_string_to_name(const char *str) const =0
Converts an 8-bytes section short name into a full name, eventually by looking into the strings table...
virtual void name_to_string(const std::string &name, char *str)=0
Converts symbol full name into an 8-bytes short name, eventually creating an entry in the strings tab...
Interface for accessing to the symbol table.
virtual symbol * add_symbol(const std::string &name)=0
Adds a symbol in the table.
virtual const symbol * get_symbol(const std::string &name) const =0
Gets a symbol from its name.
virtual symbol * get_symbol(const std::string &name)=0
Gets a symbol from its name.
virtual const symbol * get_symbol(uint32_t index) const =0
Gets a symbol from its index.
virtual symbol * get_symbol(uint32_t index)=0
Gets a symbol from its index.
Class for accessing a COFF symbol.
coffi_architecture_t
Architectures supported by COFFI.
@ COFFI_ARCHITECTURE_PE
Windows portable executable (PE or PE+)
@ COFFI_ARCHITECTURE_NONE
Architecture unknown, or file not initialized.
@ COFFI_ARCHITECTURE_CEVA
CEVA Inc.
@ COFFI_ARCHITECTURE_TI
Texas Instruments.
PE auxiliary format 1: Function definitions.
PE auxiliary format 2: .bf and .ef symbols.
PE auxiliary format 3: Weak externals.
PE auxiliary format 4: Files.
PE auxiliary format 5: Section definitions.
Generic auxiliary symbol record, covers any type of auxiliary symbol.
Line number structure in a COFF binary file.
uint16_t line_number
When nonzero, this field specifies a one-based line number. When zero, the Type field is interpreted ...
uint32_t type
Symbol table index or virtual address. Whether symbol table index or RVA is used depends on the value...
Structure capable of storing all the architecture-specific relocation entry structures.
Texas Instruments relocation entry.