/*++ Copyright (c) 1992 Digital Equipment Corporation Module Name: a2coff.h Abstract: Include file for a2coff.c Author: Wim Colgate 06-April-1992 --*/ #ifndef A2COFF_HEADER #define A2COFF_HEADER // // define some missing NT-like types // #define INT int #define UINT unsigned int // // Define constant values. // #define FILENAMELEN 256 #define FALSE 0 #define TRUE 1 #define NOTUSED FALSE #define USED TRUE #ifndef SEEK_SET #define SEEK_SET 0 #endif #ifndef SEEK_CUR #define SEEK_CUR 1 #endif #ifndef SEEK_END #define SEEK_END 2 #endif // // Define Alpha Symbol Types // #define ST_ALPHA_NIL 0 // dummy entry #define ST_ALPHA_GLOBAL 1 // #define ST_ALPHA_STATIC 2 #define ST_ALPHA_PARAM 3 #define ST_ALPHA_LOCAL 4 #define ST_ALPHA_LABEL 5 #define ST_ALPHA_PROC 6 #define ST_ALPHA_BLOCK 7 #define ST_ALPHA_END 8 #define ST_ALPHA_MEMBER 9 #define ST_ALPHA_TYPEDEF 10 #define ST_ALPHA_FILE 11 #define ST_ALPHA_STATIC_PROC 14 #define ST_ALPHA_CONSTANT 15 // // Define Alpha Storage Classes // #define SC_ALPHA_NIL 0 #define SC_ALPHA_TEXT 1 #define SC_ALPHA_DATA 2 #define SC_ALPHA_BSS 3 #define SC_ALPHA_REGISTER 4 #define SC_ALPHA_ABS 5 #define SC_ALPHA_UNDEFINED 6 // 7 is reserved #define SC_ALPHA_BITS 8 #define SC_ALPHA_DBX 9 #define SC_ALPHA_REGIMAGE 10 #define SC_ALPHA_INFO 11 #define SC_ALPHA_USERSTRUCT 12 #define SC_ALPHA_SDATA 13 #define SC_ALPHA_SBSS 14 #define SC_ALPHA_RDATA 15 #define SC_ALPHA_VAR 16 #define SC_ALPHA_COMMON 17 #define SC_ALPHA_SCOMMON 18 #define SC_ALPHA_VARREGISTER 19 #define SC_ALPHA_VARIANT 20 #define SC_ALPHA_UNDEFSMALL 21 #define SC_ALPHA_INIT 22 // 23 is reserved #define SC_ALPHA_XDATA 24 #define SC_ALPHA_PDATA 25 #define SC_ALPHA_FINI 26 #define SC_ALPHA_MAX 32 // // Define Alpha relocation and symbol table structures. // typedef struct _ALPHARELOC { // from reloc.h ULONG r_vaddr_lo ; // lo longword of 64 bit address ULONG r_vaddr_hi ; // hi longword of 64 bit address ULONG r_symindex ; ULONG r_type: 8, r_external: 1, r_reserved: 23 ; } ALPHARELOC; typedef struct _ALPHA_SYML { // from sym.h ULONG s_value_lo ; // lo longword of 64 bit value ULONG s_value_hi ; // hi longword of 64 bit value ULONG s_iss; ULONG s_st:6, s_sc:5, s_reserved:1, s_index:20; } ALPHA_SYML; typedef struct _ALPHA_SYME { // from sym.h ALPHA_SYML e_asym ; USHORT e_jmptbl: 1, e_cobol_main: 1, e_weakext: 1, e_reserved: 13; ULONG ifd; } ALPHA_SYME; typedef struct _ALPHA_SYMBOL_HEADER { USHORT s_magic ; USHORT s_vstamp ; LONG s_ilineMax ; LONG s_idnMax ; LONG s_ipdMax ; LONG s_isymMax ; LONG s_ioptMax ; LONG s_iauxMax ; LONG s_issMax ; LONG s_issExtMax ; LONG s_ifdMax ; LONG s_crfd ; LONG s_iextMax ; ULONG s_cbLine_lo ; ULONG s_cbLine_hi ; ULONG s_cbLineOffset_lo ; ULONG s_cbLineOffset_hi ; ULONG s_cbDnOffset_lo ; ULONG s_cbDnOffset_hi ; ULONG s_cbPdOffset_lo ; ULONG s_cbPdOffset_hi ; ULONG s_cbSymOffset_lo ; ULONG s_cbSymOffset_hi ; ULONG s_cbOptOffset_lo ; ULONG s_cbOptOffset_hi ; ULONG s_cbAuxOffset_lo ; ULONG s_cbAuxOffset_hi ; ULONG s_cbSsOffset_lo ; ULONG s_cbSsOffset_hi ; ULONG s_cbSsExtOffset_lo ; ULONG s_cbSsExtOffset_hi ; ULONG s_cbFdOffset_lo ; ULONG s_cbFdOffset_hi ; ULONG s_cbRfdOffset_lo ; ULONG s_cbRfdOffset_hi ; ULONG s_cbExtOffset_lo ; ULONG s_cbExtOffset_hi ; } ALPHA_SYMBOL_HEADER ; typedef struct _ALPHA_PDES { // from sym.h ULONG p_addr_lo; // lo longword of 64 bit address ULONG p_addr_hi; // hi longword of 64 bit address ULONG p_cbLineOffset_lo; // lo longword of 64 bit offset ULONG p_cbLineOffset_hi; // hi longword of 64 bit offset LONG p_isym; LONG p_iline; LONG p_regmask; LONG p_regoffset; LONG p_iopt; LONG p_fregmask; LONG p_fregoffset; LONG p_frameoffset; LONG p_lnLow; LONG p_lnHigh; ULONG p_gp_prologue: 8, p_gp_used: 1, p_reserved: 23 ; SHORT p_framereg ; SHORT p_pcreg ; } ALPHA_PDES; typedef struct _ALPHA_FDES { // from sym.h ULONG f_addr_lo; // lo longword of 64 bit address ULONG f_addr_hi; // hi longword of 64 bit address ULONG f_cbLineOffset_lo; // lo longword of 64 bit offset ULONG f_cbLineOffset_hi; // hi longword of 64 bit offset ULONG f_cbLine_lo; // lo longword of 64 bit count ULONG f_cbLine_hi; // hi longword of 64 bit count ULONG f_cbSs_lo; // lo longword of 64 bit count ULONG f_cbSs_hi; // hi longword of 64 bit count LONG f_rss; LONG f_issBase; LONG f_isymBase; LONG f_csym; LONG f_ilineBase; LONG f_cline; LONG f_ioptBase; LONG f_copt; LONG f_ipdFirst; LONG f_iauxBase; LONG f_caux; LONG f_rfdBase; LONG f_cfd; ULONG f_lan: 5, f_fMerge: 1, f_fReadin: 1, f_fBigEndian: 1, f_glevel: 2, f_reserved: 22; } ALPHA_FDES; typedef struct _ALPHA_SECTION_HEADER { // from scnhdr.h UCHAR s_name[8]; ULONG s_paddr_lo ; // lo longword of 64 bit physical address ULONG s_paddr_hi ; // hi longword of 64 bit physical address ULONG s_vaddr_lo ; // lo longword of 64 bit virtual address ULONG s_vaddr_hi ; // hi longword of 64 bit virtual address ULONG s_size_lo ; // lo longword of 64 bit size ULONG s_size_hi ; // hi longword of 64 bit size ULONG s_scnptr_lo ; // lo longword of 64 bit pointer ULONG s_scnptr_hi ; // hi longword of 64 bit pointer ULONG s_relptr_lo ; // lo longword of 64 bit pointer ULONG s_relptr_hi ; // hi longword of 64 bit pointer ULONG s_lnnoptr_lo ; // lo longword of 64 bit pointer ULONG s_lnnoptr_hi ; // hi longword of 64 bit pointer USHORT s_nreloc ; USHORT s_nlnno ; ULONG s_flags ; } ALPHA_SECTION_HEADER ; typedef struct _ALPHA_OPT_HDR { // from aouthdr.h USHORT o_magic ; USHORT o_vstamp ; ULONG o_quadwordpadding ;// padding to force quadword alignment on size ULONG o_tsize_lo ; // lo longword of 64 bit count ULONG o_tsize_hi ; // hi longword of 64 bit count ULONG o_dsize_lo ; // lo longword of 64 bit count ULONG o_dsize_hi ; // hi longword of 64 bit count ULONG o_bsize_lo ; // lo longword of 64 bit count ULONG o_bsize_hi ; // hi longword of 64 bit count ULONG o_entry_lo ; // lo longword of 64 bit entry point ULONG o_entry_hi ; // hi longword of 64 bit entry point ULONG o_text_start_lo ; // lo longword of 64 bit start ULONG o_text_start_hi ; // hi longword of 64 bit start ULONG o_data_start_lo ; // lo longword of 64 bit start ULONG o_data_start_hi ; // hi longword of 64 bit start ULONG o_bss_start_lo ; // lo longword of 64 bit start ULONG o_bss_start_hi ; // hi longword of 64 bit start ULONG o_gpmask ; ULONG o_fpmask ; ULONG o_gp_value_lo ; // lo longword of 64 bit gp ULONG o_gp_value_hi ; // hi longword of 64 bit gp } ALPHA_OPT_HDR ; typedef struct _ALPHA_IMAGE_FILE_HEADER { // from filehdr.h USHORT a_magic ; USHORT a_nscns ; ULONG a_timdat ; ULONG a_symptr_lo ; // lo longword of 64 bit pointer ULONG a_symptr_hi ; // hi longword of 64 bit pointer ULONG a_nsyms ; USHORT a_opthdr ; USHORT a_flags ; } ALPHA_IMAGE_FILE_HEADER ; // // alpha's magic number // #define ALPHA_MAGIC 0x184 // octal 604 // // define Alpha's relocation types. // #define IMAGE_REL_ALPHA_ABSOLUTE 0x0 #define IMAGE_REL_ALPHA_REFLONG 0x1 #define IMAGE_REL_ALPHA_REFQUAD 0x2 #define IMAGE_REL_ALPHA_GPREL32 0x3 #define IMAGE_REL_ALPHA_LITERAL 0x4 #define IMAGE_REL_ALPHA_LITUSE 0x5 #define IMAGE_REL_ALPHA_GPDISP 0x6 #define IMAGE_REL_ALPHA_BRADDR 0x7 #define IMAGE_REL_ALPHA_HINT 0x8 // // literal usage types for ALPHA_RELOC_LITUSE // #define ALPHA_LITUSE_BASE 0x1 #define ALPHA_LITUSE_BYTEOFF 0x2 #define ALPHA_LITUSE_JSR 0x3 // // Define COFF section numbers. // #undef TEXT #define TEXT 1 #define RDATA 2 #define DATA 3 #define SDATA 4 #define SBSS 5 #define BSS 6 #define INIT 7 #define LIT8 8 #define LIT4 9 #define XDATA 10 #define PDATA 11 #define FINI 12 #define LITA 13 #define MAX_SECTIONS 13 // // Define GP displacement used by the compiler for local references to // symbols in small sections. // #define GP_VAL (32768 - 16) // // Define size of runtime function table entry. // #define SIZEOF_RUNTIME_FUNCTION 20 // // Define size of symbol index table. // #define NUMSYMINDEX 65534 #endif