vms.h
来自「基于4个mips核的noc设计」· C头文件 代码 · 共 674 行 · 第 1/2 页
H
674 行
#define DBG_S_C_ENUM_ITEM 0xa4#define DBG_S_C_ENUM_START 0xa5#define DBG_S_C_ENUM_END 0xa6#define DBG_S_C_STRUCT_ITEM DST_K_VFLAGS_BITOFFS /* 0xff */#define DBG_S_C_STRUCT_START 0xab#define DBG_S_C_STRUCT_END 0xac#define DST_K_TYPSPEC 0xaf /* type specification *//* These codes are used in the generation of the symbol definition records */#define DST_K_VFLAGS_NOVAL 0x80 /* struct definition only */#define DST_K_VFLAGS_DSC 0xfa /* descriptor used */#define DST_K_VFLAGS_TVS 0xfb /* trailing value specified */#define DST_K_VS_FOLLOWS 0xfd /* value spec follows */#define DST_K_VFLAGS_BITOFFS 0xff /* value contains bit offset */#define DST_K_VALKIND_LITERAL 0#define DST_K_VALKIND_ADDR 1#define DST_K_VALKIND_DESC 2#define DST_K_VALKIND_REG 3#define DST_K_REG_VAX_AP 0x0c /* R12 */#define DST_K_REG_VAX_FP 0x0d /* R13 */#define DST_K_REG_VAX_SP 0x0e /* R14 */#define DST_V_VALKIND 0 /* offset of valkind field */#define DST_V_INDIRECT 2 /* offset to indirect bit */#define DST_V_DISP 3 /* offset to displacement bit */#define DST_V_REGNUM 4 /* offset to register number */#define DST_M_INDIRECT (1<<DST_V_INDIRECT)#define DST_M_DISP (1<<DST_V_DISP)#define DBG_C_FUNCTION_PARAM /* 0xc9 */ \ (DST_K_VALKIND_ADDR|DST_M_DISP|(DST_K_REG_VAX_AP<<DST_V_REGNUM))#define DBG_C_LOCAL_SYM /* 0xd9 */ \ (DST_K_VALKIND_ADDR|DST_M_DISP|(DST_K_REG_VAX_FP<<DST_V_REGNUM))/* Kinds of value specifications */#define DST_K_VS_ALLOC_SPLIT 3 /* split lifetime *//* Kinds of type specifications */#define DST_K_TS_ATOM 0x01 /* atomic type specification */#define DST_K_TS_DSC 0x02 /* descriptor type spec */#define DST_K_TS_IND 0x03 /* indirect type specification */#define DST_K_TS_TPTR 0x04 /* typed pointer type spec */#define DST_K_TS_PTR 0x05 /* pointer type spec */#define DST_K_TS_ARRAY 0x07 /* array type spec */#define DST_K_TS_NOV_LENG 0x0e /* novel length type spec *//* These are the codes that are used in the suffix records to determine the * actual data type */#define DBG_S_C_BASIC DST_K_TS_ATOM#define DBG_S_C_BASIC_ARRAY DST_K_TS_DSC#define DBG_S_C_STRUCT DST_K_TS_IND#define DBG_S_C_POINTER DST_K_TS_TPTR#define DBG_S_C_VOID DST_K_TS_PTR#define DBG_S_C_COMPLEX_ARRAY DST_K_TS_ARRAY/* VMS Module header record (EMH) definitions. */#define MHD_S_C_MHD 0#define MHD_S_C_LNM 1#define MHD_S_C_SRC 2#define MHD_S_C_TTL 3#define MHD_S_C_CPR 4#define MHD_S_C_MTC 5#define MHD_S_C_GTX 6#define MHD_S_C_MAXHDRTYP 6#define EMH_S_C_MHD 0 /* Main header record */#define EMH_S_C_LNM 1 /* Language name and version */#define EMH_S_C_SRC 2 /* Source file specification */#define EMH_S_C_TTL 3 /* Title text of module */#define EMH_S_C_CPR 4 /* Copyright notice */#define EMH_S_C_MTC 5 /* Maintenance status */#define EMH_S_C_GTX 6 /* General text */#define EMH_S_C_MAXHDRTYP 6 /* Maximum allowable type *//* vms.c. */extern asymbol *_bfd_vms_make_empty_symbol PARAMS ((bfd *abfd));/* vms-gsd.c. */extern int _bfd_vms_slurp_gsd PARAMS ((bfd *abfd, int objtype));extern int _bfd_vms_write_gsd PARAMS ((bfd *abfd, int objtype));/* vms-mhd.c. */extern int _bfd_vms_slurp_hdr PARAMS ((bfd *abfd, int objtype));extern int _bfd_vms_write_hdr PARAMS ((bfd *abfd, int objtype));extern int _bfd_vms_slurp_eom PARAMS ((bfd *abfd, int objtype));extern int _bfd_vms_write_eom PARAMS ((bfd *abfd, int objtype));/* vms-tir.c. */extern int _bfd_vms_slurp_tir PARAMS ((bfd *abfd, int objtype));extern int _bfd_vms_slurp_dbg PARAMS ((bfd *abfd, int objtype));extern int _bfd_vms_slurp_tbt PARAMS ((bfd *abfd, int objtype));extern int _bfd_vms_slurp_lnk PARAMS ((bfd *abfd, int objtype));extern int _bfd_vms_write_tir PARAMS ((bfd *abfd, int objtype));extern int _bfd_vms_write_tbt PARAMS ((bfd *abfd, int objtype));extern int _bfd_vms_write_dbg PARAMS ((bfd *abfd, int objtype));/* The r_type field in a reloc is one of the following values. */#define ALPHA_R_IGNORE 0#define ALPHA_R_REFQUAD 1#define ALPHA_R_BRADDR 2#define ALPHA_R_HINT 3#define ALPHA_R_SREL16 4#define ALPHA_R_SREL32 5#define ALPHA_R_SREL64 6#define ALPHA_R_OP_PUSH 7#define ALPHA_R_OP_STORE 8#define ALPHA_R_OP_PSUB 9#define ALPHA_R_OP_PRSHIFT 10#define ALPHA_R_LINKAGE 11#define ALPHA_R_REFLONG 12#define ALPHA_R_CODEADDR 13/* Object language definitions. */#define OBJ_S_C_HDR 0 /*VAX module header record */#define OBJ_S_C_GSD 1 /*VAX global symbol definition record */#define OBJ_S_C_TIR 2 /*VAX text information record */#define OBJ_S_C_EOM 3 /*VAX end of module record */#define OBJ_S_C_DBG 4 /*VAX Debugger information record */#define OBJ_S_C_TBT 5 /*VAX Traceback information record */#define OBJ_S_C_LNK 6 /*VAX linker options record */#define OBJ_S_C_EOMW 7 /*VAX end of module word-psect record */#define OBJ_S_C_MAXRECTYP 7 /*VAX Last assigned record type */#define EOBJ_S_C_EMH 8 /*EVAX module header record */#define EOBJ_S_C_EEOM 9 /*EVAX end of module record */#define EOBJ_S_C_EGSD 10 /*EVAX global symbol definition record */#define EOBJ_S_C_ETIR 11 /*EVAX text information record */#define EOBJ_S_C_EDBG 12 /*EVAX Debugger information record */#define EOBJ_S_C_ETBT 13 /*EVAX Traceback information record */#define EOBJ_S_C_MAXRECTYP 13 /*EVAX Last assigned record type */#define OBJ_S_K_SUBTYP 1#define OBJ_S_C_SUBTYP 1#define EOBJ_S_K_SUBTYP 4#define EOBJ_S_C_SUBTYP 4#define OBJ_S_C_MAXRECSIZ 2048 /*Maximum legal record size */#define EOBJ_S_C_MAXRECSIZ 8192 /*Maximum legal record size */#define OBJ_S_C_STRLVL 0 /*Structure level */#define EOBJ_S_C_STRLVL 2 /*Structure level */#define OBJ_S_C_SYMSIZ 31 /*Maximum symbol length */#define EOBJ_S_C_SYMSIZ 64 /*Maximum symbol length */#define EOBJ_S_C_SECSIZ 31 /*Maximum section name length */#define OBJ_S_C_STOREPLIM -1 /*Maximum repeat count on store commands */#define EOBJ_S_C_STOREPLIM -1 /*Maximum repeat count on store commands */#define OBJ_S_C_PSCALILIM 9 /*Maximum p-sect alignment */#define EOBJ_S_C_PSCALILIM 16 /*Maximum p-sect alignment */#define EVAX_OFFSET 256 /*type offset for EVAX codes in switch *//* Miscellaneous definitions. */#if __GNUC__typedef unsigned long long uquad;#elsetypedef unsigned long uquad;#endif#define MAX_OUTREC_SIZE 4096#define MIN_OUTREC_LUFT 64typedef struct _vms_section { unsigned char *contents; bfd_vma offset; bfd_size_type size; struct _vms_section *next;} vms_section;extern boolean _bfd_save_vms_section PARAMS ((bfd *abfd, asection *section, PTR data, file_ptr offset, bfd_size_type count));extern vms_section *_bfd_get_vms_section PARAMS ((bfd *abfd, int index));typedef struct _vms_reloc { struct _vms_reloc *next; arelent *reloc; asection *section;} vms_reloc;/* vms module header */struct hdr_struc { int hdr_b_strlvl; long hdr_l_arch1; long hdr_l_arch2; long hdr_l_recsiz; char *hdr_t_name; char *hdr_t_version; char *hdr_t_date; char *hdr_c_lnm; char *hdr_c_src; char *hdr_c_ttl;};/* vms end of module */struct eom_struc { long eom_l_total_lps; unsigned char eom_b_comcod; boolean eom_has_transfer; unsigned char eom_b_tfrflg; long eom_l_psindx; long eom_l_tfradr;};enum file_format_enum { FF_UNKNOWN, FF_FOREIGN, FF_NATIVE, FF_VAX };typedef struct vms_symbol_struct { struct bfd_hash_entry bfd_hash; asymbol *symbol;} vms_symbol_entry;/* stack value for push/pop commands */struct stack_struct { uquad value; int psect;};#define STACKSIZE 8192/* location stack definitions for CTL_DFLOC, CTL_STLOC, and CTL_STKDL */struct location_struct { unsigned long value; int psect;};#define LOCATION_SAVE_SIZE 32#define VMS_SECTION_COUNT 1024struct vms_private_data_struct { int is_vax; boolean fixup_done; /* Flag to indicate if all section pointers and PRIV(sections) are set up correctly */ unsigned char *vms_buf; /* buffer to record */ int buf_size; /* max size of buffer */ unsigned char *vms_rec; /* actual record ptr */ int rec_length; /* remaining record length */ int rec_size; /* actual record size */ int rec_type; /* actual record type */ enum file_format_enum file_format; struct hdr_struc hdr_data; /* data from HDR/EMH record */ struct eom_struc eom_data; /* data from EOM/EEOM record */ unsigned int section_count; /* # of sections in following array */ asection **sections; /* array of GSD/EGSD sections */ int gsd_sym_count; /* # of GSD/EGSD symbols */ asymbol **symbols; /* vector of GSD/EGSD symbols */ struct proc_value *procedure; struct stack_struct *stack; int stackptr; vms_section *vms_section_table[VMS_SECTION_COUNT]; struct bfd_hash_table *vms_symbol_table; struct symbol_cache_entry **symcache; int symnum; struct location_struct *location_stack; asection *image_section; /* section for image_ptr */ unsigned char *image_ptr; /* a pointer to section->contents */ unsigned char pdsc[8]; /* procedure descriptor */ /* Output routine storage */ unsigned char *output_buf; /* output data */ int push_level; int pushed_size; int length_pos; int output_size; int output_alignment; /* linkage index counter used by conditional store commands (ETIR_S_C_STC_) */ int vms_linkage_index; /* see tc-alpha.c of gas for a description. */ int flag_hash_long_names; /* -+, hash instead of truncate */ int flag_show_after_trunc; /* -H, show hashing/truncation */};#define PRIV(name) ((struct vms_private_data_struct *)abfd->tdata.any)->name#define SECTION_NAME_TEMPLATE "__SEC__%d"#if VMS_DEBUGextern void _bfd_vms_debug PARAMS((int level, char *format, ...));extern void _bfd_hexdump PARAMS ((int level, unsigned char *ptr, int size, int offset));#define vms_debug _bfd_vms_debug#endifextern struct bfd_hash_entry *_bfd_vms_hash_newfunc PARAMS ((struct bfd_hash_entry *entry, struct bfd_hash_table *table, const char *string));extern void _bfd_vms_get_header_values PARAMS ((bfd *abfd, unsigned char *buf, int *type, int *length));extern int _bfd_vms_get_record PARAMS ((bfd *abfd));extern int _bfd_vms_next_record PARAMS ((bfd *abfd));extern char *_bfd_vms_save_sized_string PARAMS ((unsigned char *str, int size));extern char *_bfd_vms_save_counted_string PARAMS ((unsigned char *ptr));extern void _bfd_vms_push PARAMS ((bfd *abfd, uquad val, int psect));extern uquad _bfd_vms_pop PARAMS ((bfd *abfd, int *psect));extern boolean _bfd_save_vms_section PARAMS ((bfd *abfd, asection *section, PTR data, file_ptr offset, bfd_size_type count));extern void _bfd_vms_output_begin PARAMS ((bfd *abfd, int rectype, int rechead));extern void _bfd_vms_output_alignment PARAMS ((bfd *abfd, int alignto));extern void _bfd_vms_output_push PARAMS ((bfd *abfd));extern void _bfd_vms_output_pop PARAMS ((bfd *abfd));extern void _bfd_vms_output_flush PARAMS ((bfd *abfd));extern void _bfd_vms_output_end PARAMS ((bfd *abfd));extern int _bfd_vms_output_check PARAMS ((bfd *abfd, int size));extern void _bfd_vms_output_byte PARAMS ((bfd *abfd, unsigned int value));extern void _bfd_vms_output_short PARAMS ((bfd *abfd, unsigned int value));extern void _bfd_vms_output_long PARAMS ((bfd *abfd, unsigned long value));extern void _bfd_vms_output_quad PARAMS ((bfd *abfd, uquad value));extern void _bfd_vms_output_counted PARAMS ((bfd *abfd, char *value));extern void _bfd_vms_output_dump PARAMS ((bfd *abfd, unsigned char *data, int length));extern void _bfd_vms_output_fill PARAMS ((bfd *abfd, int value, int length));extern char *_bfd_vms_length_hash_symbol PARAMS ((bfd *abfd, const char *in, int maxlen));extern vms_symbol_entry *_bfd_vms_enter_symbol PARAMS ((bfd *abfd, char *name));#endif /* VMS_H */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?