tcc-stupidos/libtcc/include/tcc/object/coff.h
2025-02-11 13:07:04 +01:00

69 lines
No EOL
1.2 KiB
C

#ifndef TCC_OBJECT_COFF_H
# define TCC_OBJECT_COFF_H 1
# include <stdint.h>
/**
* @defgroup object_coff COFF Object
* @ingroup object
* @{
*/
# define COFF_MAGIC 0x14c
typedef struct COFFFileHeader {
uint16_t magic;
uint16_t nscns;
int32_t timdat;
int32_t nsyms;
uint16_t opthdr;
uint16_t flags;
} COFFFileHeader;
# define COFF_FILHSZ sizeof(COFFFileHeader)
# define COFF_F_RELFLG 0x0001
# define COFF_F_EXEC 0x0002
# define COFF_F_LNNO 0x0004
# define COFF_F_LSYMS 0x0008
# define COFF_F_LITTLE 0x0100
# define COFF_F_BIG 0x0200
# define COFF_F_SYMMERGE 0x1000
typedef struct AOutHeader {
int16_t magic;
int16_t vstamp;
int32_t tsize;
int32_t dsize;
int32_t bsize;
int32_t entry;
int32_t text_start;
int32_t data_start;
} AOutHeader;
# define AOUT_HSZ sizeof(AOutHeader)
# define AOUT_OMAGIC 0404
# define AOUT_NMAGIC 0410
# define AOUT_ZMAGIC 0413
# define AOUT_STMAGIC 0401
# define AOUT_SHMAGIC 0443
typedef struct COFFSectionHeader {
int8_t name[8];
int32_t paddr;
int32_t vaddr;
int32_t size;
int32_t scnptr;
int32_t relptr;
int32_t lnnoptr;
uint16_t nreloc;
uint16_t nlnno;
int32_t flags;
} COFFSectionHeader;
/**
* @}
*/
#endif /* !TCC_COFF_H */