OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gdb-6.8/] [bfd/] [vms.h] - Diff between revs 157 and 225

Show entire file | Details | Blame | View Log

Rev 157 Rev 225
Line 1... Line 1...
/* vms.h -- Header file for VMS (Alpha and Vax) support.
/* vms.h -- Header file for VMS (Alpha and Vax) support.
   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2007
   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007,
   Free Software Foundation, Inc.
   2008, 2009 Free Software Foundation, Inc.
 
 
 
   Main header file.
 
 
   Written by Klaus K"ampf (kkaempf@rmi.de)
   Written by Klaus K"ampf (kkaempf@rmi.de)
 
 
   This file is part of BFD, the Binary File Descriptor library.
   This file is part of BFD, the Binary File Descriptor library.
 
 
Line 23... Line 25...
 
 
#undef vms
#undef vms
#ifndef VMS_H
#ifndef VMS_H
#define VMS_H
#define VMS_H
 
 
/* Constants starting with 'Exxx_' are for openVMS/Alpha (EVAX object language)  */
/* Constants starting with 'Exxx_' are for openVMS/Alpha (EVAX object
 
   language).  */
 
 
 
#define VMS_BLOCK_SIZE  512
 
 
/* VMS Text, information and relocation record (TIR/ETIR) definitions.  */
/* VMS Text Information and Relocation Records (TIR/ETIR).  */
 
 
#define TIR_S_C_STA_GBL         0
#define TIR_S_C_STA_GBL         0
#define TIR_S_C_STA_SB          1
#define TIR_S_C_STA_SB          1
#define TIR_S_C_STA_SW          2
#define TIR_S_C_STA_SW          2
#define TIR_S_C_STA_LW          3
#define TIR_S_C_STA_LW          3
Line 105... Line 110...
 
 
#define ETIR_S_C_MINSTACOD 0            /* Minimum store code.          */
#define ETIR_S_C_MINSTACOD 0            /* Minimum store code.          */
#define ETIR_S_C_STA_GBL 0              /* Stack global symbol value.   */
#define ETIR_S_C_STA_GBL 0              /* Stack global symbol value.   */
#define ETIR_S_C_STA_LW 1               /* Stack longword.              */
#define ETIR_S_C_STA_LW 1               /* Stack longword.              */
#define ETIR_S_C_STA_QW 2               /* Stack quadword.              */
#define ETIR_S_C_STA_QW 2               /* Stack quadword.              */
#define ETIR_S_C_STA_PQ 3               /* Stack psect base plus quadword offset.  */
#define ETIR_S_C_STA_PQ 3               /* Stack psect base + quadword off.  */
#define ETIR_S_C_STA_LI 4               /* Stack literal.               */
#define ETIR_S_C_STA_LI 4               /* Stack literal.               */
#define ETIR_S_C_STA_MOD 5              /* Stack module.                */
#define ETIR_S_C_STA_MOD 5              /* Stack module.                */
#define ETIR_S_C_STA_CKARG 6            /* Check Arguments.             */
#define ETIR_S_C_STA_CKARG 6            /* Check Arguments.             */
#define ETIR_S_C_MAXSTACOD 6            /* Maximum stack code.          */
#define ETIR_S_C_MAXSTACOD 6            /* Maximum stack code.          */
#define ETIR_S_C_MINSTOCOD 50           /* Minimum store code.          */
#define ETIR_S_C_MINSTOCOD 50           /* Minimum store code.          */
Line 171... Line 176...
#define ETIR_S_C_STC_BOH_PS 212         /* Store-conditional BSR or Hint at pect + offset.  */
#define ETIR_S_C_STC_BOH_PS 212         /* Store-conditional BSR or Hint at pect + offset.  */
#define ETIR_S_C_STC_NBH_GBL 213        /* Store-conditional NOP,BSR or HINT at global address.  */
#define ETIR_S_C_STC_NBH_GBL 213        /* Store-conditional NOP,BSR or HINT at global address.  */
#define ETIR_S_C_STC_NBH_PS 214         /* Store-conditional NOP,BSR or HINT at psect + offset.  */
#define ETIR_S_C_STC_NBH_PS 214         /* Store-conditional NOP,BSR or HINT at psect + offset.  */
#define ETIR_S_C_MAXSTCCOD 214          /* Maximum store-conditional code.   */
#define ETIR_S_C_MAXSTCCOD 214          /* Maximum store-conditional code.   */
 
 
/* VMS Global symbol definition record (GSD/EGSD).  */
#define ETIR_S_C_HEADER_SIZE 4          /* Size of the header of a command */
 
 
 
/* VMS Global Symbol Directory Records (GSD/EGSD).  */
 
 
#define GSD_S_K_ENTRIES 1
#define GSD_S_K_ENTRIES 1
#define GSD_S_C_ENTRIES 1
#define GSD_S_C_ENTRIES 1
#define GSD_S_C_PSC     0
#define GSD_S_C_PSC     0
#define GSD_S_C_SYM     1
#define GSD_S_C_SYM     1
Line 204... Line 211...
#define EGSD_S_C_SYMV 6         /* Vectored (dual-valued) versions of SYM.  */
#define EGSD_S_C_SYMV 6         /* Vectored (dual-valued) versions of SYM.  */
#define EGSD_S_C_SYMM 7         /* Masked versions of SYM.              */
#define EGSD_S_C_SYMM 7         /* Masked versions of SYM.              */
#define EGSD_S_C_SYMG 8         /* EGST - gst version of SYM.           */
#define EGSD_S_C_SYMG 8         /* EGST - gst version of SYM.           */
#define EGSD_S_C_MAXRECTYP 8    /* Maximum entry type defined.          */
#define EGSD_S_C_MAXRECTYP 8    /* Maximum entry type defined.          */
 
 
 
/* Program Section Definition.  */
#define GPS_S_M_PIC     1
#define GPS_S_M_PIC     1
#define GPS_S_M_LIB     2
#define GPS_S_M_LIB     2
#define GPS_S_M_OVR     4
#define GPS_S_M_OVR     4
#define GPS_S_M_REL     8
#define GPS_S_M_REL     8
#define GPS_S_M_GBL     16
#define GPS_S_M_GBL     16
Line 217... Line 225...
#define GPS_S_M_WRT     256
#define GPS_S_M_WRT     256
#define GPS_S_M_VEC     512
#define GPS_S_M_VEC     512
#define GPS_S_K_NAME    9
#define GPS_S_K_NAME    9
#define GPS_S_C_NAME    9
#define GPS_S_C_NAME    9
 
 
 
#define EGPS_S_B_ALIGN    4
 
#define EGPS_S_W_FLAGS    6
 
#define EGPS_S_L_ALLOC    8
 
#define EGPS_S_B_NAMLNG  12
 
 
#define EGPS_S_V_PIC    0x0001
#define EGPS_S_V_PIC    0x0001
#define EGPS_S_V_LIB    0x0002
#define EGPS_S_V_LIB    0x0002
#define EGPS_S_V_OVR    0x0004
#define EGPS_S_V_OVR    0x0004
#define EGPS_S_V_REL    0x0008
#define EGPS_S_V_REL    0x0008
#define EGPS_S_V_GBL    0x0010
#define EGPS_S_V_GBL    0x0010
Line 229... Line 242...
#define EGPS_S_V_RD     0x0080
#define EGPS_S_V_RD     0x0080
#define EGPS_S_V_WRT    0x0100
#define EGPS_S_V_WRT    0x0100
#define EGPS_S_V_VEC    0x0200
#define EGPS_S_V_VEC    0x0200
#define EGPS_S_V_NOMOD  0x0400
#define EGPS_S_V_NOMOD  0x0400
#define EGPS_S_V_COM    0x0800
#define EGPS_S_V_COM    0x0800
 
#define EGPS_S_V_ALLOC_64BIT    0x1000
 
 
 
/* Symbol Defintion or Reference.  */
#define GSY_S_M_WEAK    1
#define GSY_S_M_WEAK    1
#define GSY_S_M_DEF     2
#define GSY_S_M_DEF     2
#define GSY_S_M_UNI     4
#define GSY_S_M_UNI     4
#define GSY_S_M_REL     8
#define GSY_S_M_REL     8
 
 
 
#define EGSY_S_W_FLAGS  6
 
 
#define EGSY_S_V_WEAK   0x0001
#define EGSY_S_V_WEAK   0x0001
#define EGSY_S_V_DEF    0x0002
#define EGSY_S_V_DEF    0x0002
#define EGSY_S_V_UNI    0x0004
#define EGSY_S_V_UNI    0x0004
#define EGSY_S_V_REL    0x0008
#define EGSY_S_V_REL    0x0008
#define EGSY_S_V_COMM   0x0010
#define EGSY_S_V_COMM   0x0010
#define EGSY_S_V_VECEP  0x0020
#define EGSY_S_V_VECEP  0x0020
#define EGSY_S_V_NORM   0x0040
#define EGSY_S_V_NORM   0x0040
 
#define EGSY_S_V_QUAD_VAL       0x0080
 
 
#define LSY_S_M_DEF     2
#define LSY_S_M_DEF     2
#define LSY_S_M_REL     8
#define LSY_S_M_REL     8
 
 
#define ENV_S_M_DEF     1
#define ENV_S_M_DEF     1
#define ENV_S_M_NESTED  2
#define ENV_S_M_NESTED  2
 
 
 
/* Symbol Definition.  */
 
#define ESDF_S_L_VALUE     8
 
#define ESDF_S_L_PSINDX   28
 
#define ESDF_S_B_NAMLNG   32
 
 
 
/* Universal Symbol Definition.  */
 
#define EGST_S_W_FLAGS    6
 
#define EGST_S_Q_LP_1    16
 
#define EGST_S_Q_LP_2    24
 
#define EGST_S_L_PSINDX  32
 
#define EGST_S_B_NAMLNG  36
 
 
 
/* Symbol Reference.  */
 
#define ESRF_S_B_NAMLNG   8
 
 
/* Debugger symbol definitions:  These are done by hand,
/* Debugger symbol definitions:  These are done by hand,
   as no machine-readable version seems to be available.  */
   as no machine-readable version seems to be available.  */
#define DST_S_C_C                 7     /* Language == "C".     */
#define DST_S_C_C                 7     /* Language == "C".     */
#define DST_S_C_CXX              15     /* Language == "C++".   */
#define DST_S_C_CXX              15     /* Language == "C++".   */
 
#define DST_S_C_EPILOG          127
#define DST_S_C_VERSION         153
#define DST_S_C_VERSION         153
#define DST_S_C_SOURCE          155     /* Source file.         */
#define DST_S_C_SOURCE          155     /* Source file.         */
#define DST_S_C_PROLOG          162
#define DST_S_C_PROLOG          162
#define DST_S_C_BLKBEG          176     /* Beginning of block.  */
#define DST_S_C_BLKBEG          176     /* Beginning of block.  */
#define DST_S_C_BLKEND          177     /* End of block.        */
#define DST_S_C_BLKEND          177     /* End of block.        */
Line 267... Line 301...
#define DST_S_C_LABEL           187
#define DST_S_C_LABEL           187
#define DST_S_C_MODBEG          188     /* Beginning of module. */
#define DST_S_C_MODBEG          188     /* Beginning of module. */
#define DST_S_C_MODEND          189     /* End of module.       */
#define DST_S_C_MODEND          189     /* End of module.       */
#define DST_S_C_RTNBEG          190     /* Beginning of routine.*/
#define DST_S_C_RTNBEG          190     /* Beginning of routine.*/
#define DST_S_C_RTNEND          191     /* End of routine.      */
#define DST_S_C_RTNEND          191     /* End of routine.      */
 
 
 
/* These are used with DST_S_C_LINE_NUM.  */
 
#define DST_S_C_LINE_NUM_HEADER_SIZE 4
 
 
#define DST_S_C_DELTA_PC_W      1       /* Incr PC.             */
#define DST_S_C_DELTA_PC_W      1       /* Incr PC.             */
#define DST_S_C_INCR_LINUM      2       /* Incr Line #.         */
#define DST_S_C_INCR_LINUM      2       /* Incr Line #.         */
#define DST_S_C_INCR_LINUM_W    3       /* Incr Line #.         */
#define DST_S_C_INCR_LINUM_W    3       /* Incr Line #.         */
#define DST_S_C_SET_LINUM_INCR  4
#define DST_S_C_SET_LINUM_INCR  4
#define DST_S_C_SET_LINUM_INCR_W 5
#define DST_S_C_SET_LINUM_INCR_W 5
Line 293... Line 331...
/* These are used with DST_S_C_SOURCE */
/* These are used with DST_S_C_SOURCE */
#define DST_S_C_SRC_DECLFILE     1      /* Declare source file.  */
#define DST_S_C_SRC_DECLFILE     1      /* Declare source file.  */
#define DST_S_C_SRC_SETFILE      2      /* Set source file.      */
#define DST_S_C_SRC_SETFILE      2      /* Set source file.      */
#define DST_S_C_SRC_SETREC_L     3      /* Set record, longword value.  */
#define DST_S_C_SRC_SETREC_L     3      /* Set record, longword value.  */
#define DST_S_C_SRC_SETREC_W     4      /* Set record, word value.  */
#define DST_S_C_SRC_SETREC_W     4      /* Set record, word value.  */
 
#define DST_S_C_SRC_SETLNUM_L    5      /* Set line, longword value.  */
 
#define DST_S_C_SRC_SETLNUM_W    6      /* Set line, word value.  */
 
#define DST_S_C_SRC_INCRLNUM_B   7      /* Increment line.  */
#define DST_S_C_SRC_DEFLINES_W  10      /* # of line, word counter.  */
#define DST_S_C_SRC_DEFLINES_W  10      /* # of line, word counter.  */
#define DST_S_C_SRC_DEFLINES_B  11      /* # of line, byte counter.  */
#define DST_S_C_SRC_DEFLINES_B  11      /* # of line, byte counter.  */
#define DST_S_C_SRC_FORMFEED    16      /* ^L counts as a record.  */
#define DST_S_C_SRC_FORMFEED    16      /* ^L counts as a record.  */
 
 
 
#define DST_S_B_PCLINE_UNSBYTE   1
 
#define DST_S_W_PCLINE_UNSWORD   1
 
#define DST_S_L_PCLINE_UNSLONG   1
 
 
 
#define DST_S_B_MODBEG_NAME     14
 
#define DST_S_L_RTNBEG_ADDRESS   5
 
#define DST_S_B_RTNBEG_NAME     13
 
#define DST_S_L_RTNEND_SIZE      5
 
 
 
/* These are used with DST_S_C_SOURCE.  */
 
#define DST_S_C_SOURCE_HEADER_SIZE 4
 
 
 
#define DST_S_B_SRC_DF_LENGTH     1
 
#define DST_S_W_SRC_DF_FILEID     3
 
#define DST_S_B_SRC_DF_FILENAME  20
 
#define DST_S_B_SRC_UNSBYTE       1
 
#define DST_S_W_SRC_UNSWORD       1
 
#define DST_S_L_SRC_UNSLONG       1
 
 
/* The following are the codes for the various data types.  Anything not on
/* The following are the codes for the various data types.  Anything not on
   the list is included under 'advanced_type'.  */
   the list is included under 'advanced_type'.  */
#define DBG_S_C_UCHAR           0x02
#define DBG_S_C_UCHAR           0x02
#define DBG_S_C_USINT           0x03
#define DBG_S_C_USINT           0x03
#define DBG_S_C_ULINT           0x04
#define DBG_S_C_ULINT           0x04
Line 326... Line 387...
/*  These are descriptor class codes.  */
/*  These are descriptor class codes.  */
#define DSC_K_CLASS_S           0x01    /* Static (fixed length).  */
#define DSC_K_CLASS_S           0x01    /* Static (fixed length).  */
#define DSC_K_CLASS_D           0x02    /* Dynamic string (not via malloc!).  */
#define DSC_K_CLASS_D           0x02    /* Dynamic string (not via malloc!).  */
#define DSC_K_CLASS_A           0x04    /* Array.  */
#define DSC_K_CLASS_A           0x04    /* Array.  */
#define DSC_K_CLASS_UBS         0x0d    /* Unaligned bit string.  */
#define DSC_K_CLASS_UBS         0x0d    /* Unaligned bit string.  */
 
 
/*  These are the codes that are used to generate the definitions of struct
/*  These are the codes that are used to generate the definitions of struct
    union and enum records.  */
    union and enum records.  */
#define DBG_S_C_ENUM_ITEM               0xa4
#define DBG_S_C_ENUM_ITEM               0xa4
#define DBG_S_C_ENUM_START              0xa5
#define DBG_S_C_ENUM_START              0xa5
#define DBG_S_C_ENUM_END                0xa6
#define DBG_S_C_ENUM_END                0xa6
Line 377... Line 439...
#define DBG_S_C_STRUCT                  DST_K_TS_IND
#define DBG_S_C_STRUCT                  DST_K_TS_IND
#define DBG_S_C_POINTER                 DST_K_TS_TPTR
#define DBG_S_C_POINTER                 DST_K_TS_TPTR
#define DBG_S_C_VOID                    DST_K_TS_PTR
#define DBG_S_C_VOID                    DST_K_TS_PTR
#define DBG_S_C_COMPLEX_ARRAY           DST_K_TS_ARRAY
#define DBG_S_C_COMPLEX_ARRAY           DST_K_TS_ARRAY
 
 
/* VMS Module header record (EMH) definitions.  */
/* VMS Module Header Records (MHD/EMH).  */
 
 
#define MHD_S_C_MHD 0
#define MHD_S_C_MHD 0
#define MHD_S_C_LNM 1
#define MHD_S_C_LNM 1
#define MHD_S_C_SRC 2
#define MHD_S_C_SRC 2
#define MHD_S_C_TTL 3
#define MHD_S_C_TTL 3
Line 400... Line 462...
#define EMH_S_C_MAXHDRTYP 6     /* Maximum allowable type.      */
#define EMH_S_C_MAXHDRTYP 6     /* Maximum allowable type.      */
 
 
/* vms.c.  */
/* vms.c.  */
 
 
extern asymbol *_bfd_vms_make_empty_symbol (bfd *);
extern asymbol *_bfd_vms_make_empty_symbol (bfd *);
 
extern int _bfd_vms_slurp_object_records (bfd *abfd);
 
 
/* vms-gsd.c.  */
/* vms-gsd.c.  */
 
 
extern int _bfd_vms_slurp_gsd (bfd *, int);
extern int _bfd_vms_slurp_gsd (bfd *abfd, int objtype);
extern int _bfd_vms_write_gsd (bfd *, int);
extern int _bfd_vms_write_gsd (bfd *abfd, int objtype);
 
extern int _bfd_vms_slurp_dbg (bfd *abfd, int objtype);
/* vms-mhd.c.  */
extern int _bfd_vms_write_dbg (bfd *abfd, int objtype);
 
extern int _bfd_vms_slurp_tbt (bfd *abfd, int objtype);
extern int _bfd_vms_slurp_hdr (bfd *, int);
extern int _bfd_vms_write_tbt (bfd *abfd, int objtype);
extern int _bfd_vms_write_hdr (bfd *, int);
 
extern int _bfd_vms_slurp_eom (bfd *, int);
/* vms-misc.c.  */
extern int _bfd_vms_write_eom (bfd *, int);
 
 
extern int _bfd_vms_get_object_record (bfd *abfd);
 
extern int _bfd_vms_get_first_record (bfd *abfd);
 
 
 
/* vms-hdr.c.  */
 
 
 
extern int _bfd_vms_slurp_hdr (bfd *abfd, int objtype);
 
extern int _bfd_vms_write_hdr (bfd *abfd, int objtype);
 
extern int _bfd_vms_slurp_eom (bfd *abfd, int objtype);
 
extern int _bfd_vms_write_eom (bfd *abfd, int objtype);
 
extern bfd_boolean _bfd_vms_find_nearest_dst_line
 
  (bfd *abfd, asection *section, asymbol **symbols, bfd_vma offset,
 
           const char **file, const char **func, unsigned int *line);
 
extern int _bfd_vms_slurp_ihd
 
  (bfd *abfd, unsigned int *isd_offset, unsigned int *ihs_offset);
 
extern int _bfd_vms_slurp_isd (bfd *abfd, unsigned int offset);
 
extern int _bfd_vms_slurp_ihs (bfd *abfd, unsigned int offset);
 
 
/* vms-tir.c.  */
/* vms-tir.c.  */
 
 
extern int _bfd_vms_slurp_tir (bfd *, int);
extern int _bfd_vms_slurp_tir (bfd *abfd, int objtype);
extern int _bfd_vms_slurp_dbg (bfd *, int);
extern int _bfd_vms_write_tir (bfd *abfd, int objtype);
extern int _bfd_vms_slurp_tbt (bfd *, int);
extern int _bfd_vms_slurp_lnk (bfd *abfd, int objtype);
extern int _bfd_vms_slurp_lnk (bfd *, int);
 
 
extern int _bfd_vms_slurp_relocs (bfd *abfd);
extern int _bfd_vms_write_tir (bfd *, int);
extern int _bfd_vms_decode_relocs
extern int _bfd_vms_write_tbt (bfd *, int);
  (bfd *abfd, arelent *relocs, asection *section, asymbol **symbols);
extern int _bfd_vms_write_dbg (bfd *, int);
 
 
 
/* The r_type field in a reloc is one of he following values.  */
/* The r_type field in a reloc is one of the following values.  */
#define ALPHA_R_IGNORE          0         
#define ALPHA_R_IGNORE          0         
#define ALPHA_R_REFQUAD         1        
#define ALPHA_R_REFQUAD         1        
#define ALPHA_R_BRADDR          2        
#define ALPHA_R_BRADDR          2        
#define ALPHA_R_HINT            3        
#define ALPHA_R_HINT            3        
#define ALPHA_R_SREL16          4        
#define ALPHA_R_SREL16          4        
Line 439... Line 517...
#define ALPHA_R_OP_PSUB         9        
#define ALPHA_R_OP_PSUB         9        
#define ALPHA_R_OP_PRSHIFT      10       
#define ALPHA_R_OP_PRSHIFT      10       
#define ALPHA_R_LINKAGE         11       
#define ALPHA_R_LINKAGE         11       
#define ALPHA_R_REFLONG         12       
#define ALPHA_R_REFLONG         12       
#define ALPHA_R_CODEADDR        13       
#define ALPHA_R_CODEADDR        13       
 
#define ALPHA_R_NOP             14
 
#define ALPHA_R_BSR             15
 
#define ALPHA_R_LDA             16
 
#define ALPHA_R_BOH             17
 
 
/* Object language definitions.  */
/* VMS Object Language (OBJ/EOBJ).  */
 
 
#define OBJ_S_C_HDR 0           /* VAX moule header record.             */
#define OBJ_S_C_HDR 0           /* VAX moule header record.             */
#define OBJ_S_C_GSD 1           /* VAX glbal symbol definition record.  */
#define OBJ_S_C_GSD 1           /* VAX glbal symbol definition record.  */
#define OBJ_S_C_TIR 2           /* VAX tet information record.          */
#define OBJ_S_C_TIR 2           /* VAX tet information record.          */
#define OBJ_S_C_EOM 3           /* VAX en of module record.             */
#define OBJ_S_C_EOM 3           /* VAX en of module record.             */
#define OBJ_S_C_DBG 4           /* VAX Deugger information record.      */
#define OBJ_S_C_DBG 4           /* VAX Deugger information record.      */
#define OBJ_S_C_TBT 5           /* VAX Trceback information record.     */
#define OBJ_S_C_TBT 5           /* VAX Trceback information record.     */
#define OBJ_S_C_LNK 6           /* VAX liker options record.            */
#define OBJ_S_C_LNK 6           /* VAX liker options record.            */
#define OBJ_S_C_EOMW 7          /* VAX en of module word-psect record.  */
#define OBJ_S_C_EOMW 7          /* VAX en of module word-psect record.  */
#define OBJ_S_C_MAXRECTYP 7     /* VAX Lat assigned record type.        */
#define OBJ_S_C_MAXRECTYP 7     /* VAX Lat assigned record type.        */
 
 
#define EOBJ_S_C_EMH 8          /* EVAX mdule header record.            */
#define EOBJ_S_C_EMH 8          /* EVAX mdule header record.            */
#define EOBJ_S_C_EEOM 9         /* EVAX ed of module record.            */
#define EOBJ_S_C_EEOM 9         /* EVAX ed of module record.            */
#define EOBJ_S_C_EGSD 10        /* EVAX gobal symbol definition record.*/
#define EOBJ_S_C_EGSD 10        /* EVAX gobal symbol definition record.*/
#define EOBJ_S_C_ETIR 11        /* EVAX txt information record. */
#define EOBJ_S_C_ETIR 11        /* EVAX txt information record. */
#define EOBJ_S_C_EDBG 12        /* EVAX Dbugger information record.     */
#define EOBJ_S_C_EDBG 12        /* EVAX Dbugger information record.     */
#define EOBJ_S_C_ETBT 13        /* EVAX Taceback information record.    */
#define EOBJ_S_C_ETBT 13        /* EVAX Taceback information record.    */
#define EOBJ_S_C_MAXRECTYP 13   /* EVAX Lst assigned record type.       */
#define EOBJ_S_C_MAXRECTYP 13   /* EVAX Lst assigned record type.       */
 
 
#define OBJ_S_K_SUBTYP 1                 
#define OBJ_S_K_SUBTYP 1                 
#define OBJ_S_C_SUBTYP 1                 
#define OBJ_S_C_SUBTYP 1                 
#define EOBJ_S_K_SUBTYP 4                
#define EOBJ_S_K_SUBTYP 4                
#define EOBJ_S_C_SUBTYP 4                
#define EOBJ_S_C_SUBTYP 4                
#define OBJ_S_C_MAXRECSIZ 2048  /* Maximu legal record size.           */
#define OBJ_S_C_MAXRECSIZ 2048  /* Maximu legal record size.           */
Line 475... Line 559...
#define EOBJ_S_C_STOREPLIM -1   /* Maximu repeat count on store commands.  */
#define EOBJ_S_C_STOREPLIM -1   /* Maximu repeat count on store commands.  */
#define OBJ_S_C_PSCALILIM 9     /* Maximu p-sect alignment.            */
#define OBJ_S_C_PSCALILIM 9     /* Maximu p-sect alignment.            */
#define EOBJ_S_C_PSCALILIM 16   /* Maximu p-sect alignment.            */
#define EOBJ_S_C_PSCALILIM 16   /* Maximu p-sect alignment.            */
 
 
#define EVAX_OFFSET     256     /* Type ofset for EVAX codes in switch.  */
#define EVAX_OFFSET     256     /* Type ofset for EVAX codes in switch.  */
 
 
/* Miscellaneous definitions.  */
/* Miscellaneous definitions.  */
 
 
#if __GNUC__                             
#if __GNUC__                             
typedef unsigned long long uquad;
typedef unsigned long long uquad;
#else                                    
#else                                    
Line 486... Line 571...
#endif                                   
#endif                                   
 
 
#define MAX_OUTREC_SIZE 4096             
#define MAX_OUTREC_SIZE 4096             
#define MIN_OUTREC_LUFT 64               
#define MIN_OUTREC_LUFT 64               
 
 
typedef struct _vms_section
 
{
 
  unsigned char *contents;
 
  bfd_vma offset;
 
  bfd_size_type size;
 
  struct _vms_section *next;
 
} vms_section;
 
 
 
extern vms_section * _bfd_get_vms_section (bfd *, int);
 
 
 
typedef struct _vms_reloc
 
{
 
  struct _vms_reloc *next;
 
  arelent *reloc;
 
  asection *section;
 
} vms_reloc;
 
 
 
/* VMS module header.  */
/* VMS module header.  */
 
 
struct hdr_struc
struct hdr_struct
{
{
  int    hdr_b_strlvl;
  char hdr_b_strlvl;
  long   hdr_l_arch1;
  int hdr_l_arch1;
  long   hdr_l_arch2;
  int hdr_l_arch2;
  long   hdr_l_recsiz;
  int hdr_l_recsiz;
  char * hdr_t_name;
  char * hdr_t_name;
  char * hdr_t_version;
  char * hdr_t_version;
  char * hdr_t_date;
  char * hdr_t_date;
  char * hdr_c_lnm;
  char * hdr_c_lnm;
  char * hdr_c_src;
  char * hdr_c_src;
  char * hdr_c_ttl;
  char * hdr_c_ttl;
 
  char *hdr_c_cpr;
};
};
 
 
/* VMS end of module.  */
#define EMH_S_W_HDRTYP   4
 
#define EMH_S_B_STRLVL   6
 
#define EMH_S_L_ARCH1    8
 
#define EMH_S_L_ARCH2   12
 
#define EH_S_L_RECSIZ  16
 
#define EMH_S_B_NAMLNG  20
 
 
struct eom_struc
#define EMH_DATE_LENGTH  17
 
 
 
/* VMS End-Of-Module records (EOM/EEOM).  */
 
 
 
struct eom_struct
{
{
  long          eom_l_total_lps;
  int eom_l_total_lps;
  unsigned char eom_b_comcod;
  short eom_w_comcod;
  bfd_boolean   eom_has_transfer;
  bfd_boolean   eom_has_transfer;
  unsigned char eom_b_tfrflg;
  char eom_b_tfrflg;
  long          eom_l_psindx;
  int eom_l_psindx;
  long          eom_l_tfradr;
  int eom_l_tfradr;
};
};
 
 
enum file_format_enum { FF_UNKNOWN, FF_FOREIGN, FF_NATIVE, FF_VAX };
#define EEOM_S_L_TOTAL_LPS   4
 
#define EEOM_S_W_COMCOD      8
 
#define EEOM_S_B_TFRFLG     10
 
#define EEOM_S_L_PSINDX     12
 
#define EEOM_S_L_TFRADR     16
 
 
 
/* VMS Image Header Records (IHD/EIHD).  */
 
 
 
#define EIHD_S_K_MAJORID        3       /* Major id constant    */
 
#define EIHD_S_K_MINORID        0        /* Minor id constant    */
 
#define EIHD_S_K_EXE            1       /* Executable image     */
 
 
 
#define EIHD_S_L_SIZE           8
 
#define EIHD_S_L_ISDOFF         12
 
#define EIHD_S_L_SYMDBGOFF      20
 
#define EIHD_S_Q_SYMVVA         40
 
#define EIHD_S_L_IMGTYPE        52
 
 
 
/* VMS Image Section Description Records (ISD/EISD).  */
 
 
 
#define EISD_S_L_EISDSIZE        8
 
#define EISD_S_L_SECSIZE        12
 
#define EISD_S_Q_VIR_ADDR       16
 
#define EISD_S_L_FLAGS          24
 
#define EISD_S_L_VBN            28
 
#define EISD_S_R_CONTROL        32
 
#define EISD_S_L_IDENT          36
 
#define EISD_S_T_GBLNAM         40
 
 
 
#define EISD_S_M_GBL            0x0001
 
#define EISD_S_M_CRF            0x0002
 
#define EISD_S_M_DZRO           0x0004
 
#define EISD_S_M_WRT            0x0008
 
#define EISD_S_M_INITALCODE     0x0010
 
#define EISD_S_M_BASED          0x0020
 
#define EISD_S_M_FIXUPVEC       0x0040
 
#define EISD_S_M_RESIDENT       0x0080
 
#define EISD_S_M_VECTOR         0x0100
 
#define EISD_S_M_PROTECT        0x0200
 
#define EISD_S_M_LASTCLU        0x0400
 
#define EISD_S_M_EXE            0x0800
 
#define EISD_S_M_NONSHRADR      0x1000
 
#define EISD_S_M_QUAD_LENGTH    0x2000
 
#define EISD_S_M_ALLOC_64BIT    0x4000
 
 
 
/* VMS Image Header Symbol Records (IHS/EIHS).  */
 
 
 
#define EIHS_S_L_DSTVBN          8
 
#define EIHS_S_L_DSTSIZE        12
 
#define EIHS_S_L_GSTVBN         16
 
#define EIHS_S_L_GSTSIZE        20
 
#define EIHS_S_L_DMTVBN         24
 
#define EIHS_S_L_DMTBYTES       28
 
 
 
/* Debugger symbol definitions.  */
 
 
 
#define DBG_S_L_DMT_MODBEG       0
 
#define DBG_S_L_DST_SIZE         4
 
#define DBG_S_W_DMT_PSECT_COUNT  8
 
#define DBG_S_C_DMT_HEADER_SIZE 12
 
 
 
#define DBG_S_L_DMT_PSECT_START  0
 
#define DBG_S_L_DMT_PSECT_LENGTH 4
 
#define DBG_S_C_DMT_PSECT_SIZE   8
 
 
 
 
 
enum file_format_enum { FF_UNKNOWN, FF_FOREIGN, FF_NATIVE };
 
enum file_type_enum { FT_UNKNOWN, FT_MODULE, FT_IMAGE };
 
 
typedef struct vms_symbol_struct
typedef struct vms_symbol_struct
{
{
  struct bfd_hash_entry bfd_hash;
  struct bfd_hash_entry bfd_hash;
  asymbol *symbol;
  asymbol *symbol;
Line 546... Line 691...
struct stack_struct
struct stack_struct
{
{
  uquad value;
  uquad value;
  int psect;
  int psect;
};
};
 
 
#define STACKSIZE 8192                   
#define STACKSIZE 8192                   
 
 
/* location stack definitions for CTL_DFLC, CTL_STLOC, and CTL_STKDL  */
/* A minimal decoding of DST compilation units.  We only decode
 
   what's needed to get to the line number information.  */
 
 
struct location_struct
struct fileinfo
{
{
  unsigned long value;
  char *name;
  int psect;
  unsigned int srec;
 
};
 
 
 
struct srecinfo
 
{
 
  struct srecinfo *next;
 
  unsigned int line;
 
  unsigned int sfile;
 
  unsigned int srec;
 
};
 
 
 
struct lineinfo
 
{
 
  struct lineinfo *next;
 
  bfd_vma address;
 
  unsigned int line;
 
};
 
 
 
struct funcinfo
 
{
 
  struct funcinfo *next;
 
  char *name;
 
  bfd_vma low;
 
  bfd_vma high;
};
};
#define LOCATION_SAVE_SIZE 32            
 
 
 
#define VMS_SECTION_COUNT 1024           
struct module
 
{
 
  /* Chain the previously read compilation unit.  */
 
  struct module *next;
 
 
 
  /* The module name.  */
 
  char *name;
 
 
 
  /* The start offset and size of debug info in the DST section.  */
 
  unsigned int modbeg;
 
  unsigned int size;
 
 
 
  /* The lowest and highest addresses contained in this compilation
 
     unit as specified in the compilation unit header.  */
 
  bfd_vma low;
 
  bfd_vma high;
 
 
 
  /* The listing line table.  */
 
  struct lineinfo *line_table;
 
 
 
  /* The source record table.  */
 
  struct srecinfo *srec_table;
 
 
 
  /* A list of the functions found in this module.  */
 
  struct funcinfo *func_table;
 
 
 
  /* Current allocation of file_table.  */
 
  unsigned int file_table_count;
 
 
 
  /* An array of the files making up this module.  */
 
  struct fileinfo *file_table;
 
};
 
 
struct vms_private_data_struct
struct vms_private_data_struct
{
{
  bfd_boolean is_vax;
  bfd_boolean is_vax;
  bfd_boolean fixup_done;               /* Flag to indicate if all
  bfd_boolean fixup_done;               /* Flag to indicate if all
                                           section pointers and PRIV(sections)
                                           section pointers and PRIV(sections)
                                           are set up correctly.  */
                                           are set up correctly.  */
  unsigned char *vms_buf;               /* Buffer to record.  */
  unsigned char *vms_buf;               /* record buffer */
  int buf_size;                         /* Max size of buffer.  */
  unsigned int buf_size;                /* size of record buffer  */
  unsigned char *vms_rec;               /* Actual record ptr.  */
  unsigned char *vms_rec;               /* record pointer in record buffer */
  int rec_length;                       /* Remaining record length.  */
  unsigned int rec_size;                /* record size  */
  int rec_size;                         /* Actual record size.  */
 
  int rec_type;                         /* Actual record type.  */
 
  enum file_format_enum file_format;
  enum file_format_enum file_format;
 
 
  struct hdr_struc hdr_data;            /* Data from HDR/EMH record.  */
  struct hdr_struct hdr_data;           /* data from HDR/EMH record  */
  struct eom_struc eom_data;            /* Data from EOM/EEOM record.  */
  struct eom_struct eom_data;           /* data from EOM/EEOM record  */
  unsigned int section_count;           /* # of sections in following array.  */
  unsigned int section_count;           /* # of sections in following array  */
  asection **sections;                  /* Array of GSD/EGSD sections.  */
  asection **sections;                  /* array of GSD/EGSD sections  */
  int gsd_sym_count;                    /* # of GSD/EGSD symbols.  */
  unsigned int gsd_sym_count;           /* # of GSD/EGSD symbols  */
  asymbol **symbols;                    /* Vector of GSD/EGSD symbols.  */
  asymbol **symbols;                    /* vector of GSD/EGSD symbols  */
  struct proc_value *procedure;
  struct proc_value *procedure;
 
 
  struct stack_struct *stack;
  struct stack_struct *stack;
  int stackptr;
  int stackptr;
 
 
  vms_section *vms_section_table[VMS_SECTION_COUNT];
 
 
 
  struct bfd_hash_table *vms_symbol_table;
  struct bfd_hash_table *vms_symbol_table;
  struct bfd_symbol **symcache;
  struct bfd_symbol **symcache;
  int symnum;
  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 */
 
 
  asection *image_section;              /* Section for image_ptr.  */
  struct module *modules;               /* list of all compilation units */
  unsigned char *image_ptr;             /* A pointer to section->contents.  */
 
 
 
  unsigned char pdsc[8];                /* Procedure descriptor.  */
  struct dst_info *dst_info;
 
  asection *dst_section;
 
  unsigned char *dst_ptr_end;
 
  unsigned int dst_ptr_offsets_count;   /* # of offsets in following array  */
 
  unsigned int *dst_ptr_offsets;        /* array of saved image_ptr offsets */
 
 
  /* Output routine storage.  */
  /* Shared library support */
  unsigned char *output_buf;            /* Output data.  */
  bfd_vma symvva; /* relative virtual address of symbol vector */
 
 
 
  /* Output routine storage  */
 
  unsigned char *output_buf;            /* output data  */
  int push_level;
  int push_level;
  int pushed_size;
  int pushed_size;
  int length_pos;
  int length_pos;
  int output_size;
  int output_size;
  int output_alignment;
  int output_alignment;
 
 
  /* Linkage index counter
  /* linkage index counter used by conditional store commands */
     used by conditional store commands (TIR_S_C_STC_).   */
 
  int vms_linkage_index;
  int vms_linkage_index;
 
 
  /* see tc-alpha.c of gas for a descripton.  */
  /* see tc-alpha.c of gas for a description.  */
  int flag_hash_long_names;     /* -+, hash instead of truncate.  */
  int flag_hash_long_names;     /* -+, hash instead of truncate */
  int flag_show_after_trunc;    /* -H, shw hashing/truncation.  */
  int flag_show_after_trunc;    /* -H, show hashing/truncation */
};
};
 
 
#define PRIV(name)      ((struct vms_private_data_struct *) abfd->tdata.any)->name
#define PRIV(name)      ((struct vms_private_data_struct *) abfd->tdata.any)->name
 
 
 
/* Used to keep extra VMS specific information for a given section.
 
 
 
   reloc_size holds the size of the relocation stream, note this
 
   is very different from the number of relocations as VMS relocations
 
   are variable length.
 
 
 
   reloc_stream is the actual stream of relocation entries.  */
 
 
 
struct vms_section_data_struct
 
{
 
  bfd_size_type reloc_size;
 
  unsigned char *reloc_stream;
 
  bfd_size_type reloc_offset;
 
  flagword vflags;
 
};
 
 
 
#define vms_section_data(sec) \
 
  ((struct vms_section_data_struct *)sec->used_by_bfd)
 
 
 
struct evax_private_udata_struct
 
{
 
  asymbol *bsym;
 
  asymbol *enbsym;
 
  char *origname;
 
  int lkindex;
 
};
 
 
#define SECTION_NAME_TEMPLATE "__SEC__%d"
#define SECTION_NAME_TEMPLATE "__SEC__%d"
 
 
#if VMS_DEBUG                            
#if VMS_DEBUG                            
extern void _bfd_vms_debug (int, char *, ...) ATTRIBUTE_PRINTF_2;
extern void _bfd_vms_debug (int, char *, ...) ATTRIBUTE_PRINTF_2;
extern void _bfd_hexdump   (int, unsigned char *, int, int);
extern void _bfd_hexdump   (int, unsigned char *, int, int);
Line 633... Line 864...
extern int         _bfd_vms_next_record (bfd *abf);
extern int         _bfd_vms_next_record (bfd *abf);
extern char *      _bfd_vms_save_sized_string (unsigned char *, int);
extern char *      _bfd_vms_save_sized_string (unsigned char *, int);
extern char *      _bfd_vms_save_counted_string (unsigned char *);
extern char *      _bfd_vms_save_counted_string (unsigned char *);
extern void        _bfd_vms_push (bfd *, uquad, int);
extern void        _bfd_vms_push (bfd *, uquad, int);
extern uquad       _bfd_vms_pop (bfd *, int *);
extern uquad       _bfd_vms_pop (bfd *, int *);
extern bfd_boolean _bfd_save_vms_section (bfd *, asection *, const void *, file_ptr, bfd_size_type);
 
extern void        _bfd_vms_output_begin (bfd *, int, int);
extern void        _bfd_vms_output_begin (bfd *, int, int);
extern void        _bfd_vms_output_alignment (bfd *, int);
extern void        _bfd_vms_output_alignment (bfd *, int);
extern void        _bfd_vms_output_push (bfd *);
extern void        _bfd_vms_output_push (bfd *);
extern void        _bfd_vms_output_pop (bfd *);
extern void        _bfd_vms_output_pop (bfd *);
extern void        _bfd_vms_output_flush (bfd *);
extern void        _bfd_vms_output_flush (bfd *);
Line 651... Line 881...
extern void        _bfd_vms_output_dump (bfd *, unsigned char *, int);
extern void        _bfd_vms_output_dump (bfd *, unsigned char *, int);
extern void        _bfd_vms_output_fill (bfd *, int, int);
extern void        _bfd_vms_output_fill (bfd *, int, int);
extern char *      _bfd_vms_length_hash_symbol (bfd *, const char *, int);
extern char *      _bfd_vms_length_hash_symbol (bfd *, const char *, int);
extern vms_symbol_entry * _bfd_vms_enter_symbol (bfd *, char *);
extern vms_symbol_entry * _bfd_vms_enter_symbol (bfd *, char *);
 
 
 
#define EGPS_S_V_NO_SHIFT 16
 
 
 
extern void        bfd_vms_set_section_flags (bfd *, asection *, flagword);
#endif /* VMS_H */
#endif /* VMS_H */
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.