| 1 | #undef vms | 
|---|
| 2 | /* vms.h -- Header file for VMS (Alpha and Vax) support. | 
|---|
| 3 | Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 | 
|---|
| 4 | Free Software Foundation, Inc. | 
|---|
| 5 |  | 
|---|
| 6 | Written by Klaus K"ampf (kkaempf@rmi.de) | 
|---|
| 7 |  | 
|---|
| 8 | This file is part of BFD, the Binary File Descriptor library. | 
|---|
| 9 |  | 
|---|
| 10 | This program is free software; you can redistribute it and/or modify | 
|---|
| 11 | it under the terms of the GNU General Public License as published by | 
|---|
| 12 | the Free Software Foundation; either version 2 of the License, or | 
|---|
| 13 | (at your option) any later version. | 
|---|
| 14 |  | 
|---|
| 15 | This program is distributed in the hope that it will be useful, | 
|---|
| 16 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|---|
| 17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|---|
| 18 | GNU General Public License for more details. | 
|---|
| 19 |  | 
|---|
| 20 | You should have received a copy of the GNU General Public License | 
|---|
| 21 | along with this program; if not, write to the Free Software | 
|---|
| 22 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */ | 
|---|
| 23 |  | 
|---|
| 24 | #ifndef VMS_H | 
|---|
| 25 | #define VMS_H | 
|---|
| 26 |  | 
|---|
| 27 | /* Constants starting with 'Exxx_' are for openVMS/Alpha (EVAX object language)  */ | 
|---|
| 28 |  | 
|---|
| 29 | /* VMS Text, information and relocation record (TIR/ETIR) definitions.  */ | 
|---|
| 30 |  | 
|---|
| 31 | #define TIR_S_C_STA_GBL         0 | 
|---|
| 32 | #define TIR_S_C_STA_SB          1 | 
|---|
| 33 | #define TIR_S_C_STA_SW          2 | 
|---|
| 34 | #define TIR_S_C_STA_LW          3 | 
|---|
| 35 | #define TIR_S_C_STA_PB          4 | 
|---|
| 36 | #define TIR_S_C_STA_PW          5 | 
|---|
| 37 | #define TIR_S_C_STA_PL          6 | 
|---|
| 38 | #define TIR_S_C_STA_UB          7 | 
|---|
| 39 | #define TIR_S_C_STA_UW          8 | 
|---|
| 40 | #define TIR_S_C_STA_BFI         9 | 
|---|
| 41 | #define TIR_S_C_STA_WFI         10 | 
|---|
| 42 | #define TIR_S_C_STA_LFI         11 | 
|---|
| 43 | #define TIR_S_C_STA_EPM         12 | 
|---|
| 44 | #define TIR_S_C_STA_CKARG       13 | 
|---|
| 45 | #define TIR_S_C_STA_WPB         14 | 
|---|
| 46 | #define TIR_S_C_STA_WPW         15 | 
|---|
| 47 | #define TIR_S_C_STA_WPL         16 | 
|---|
| 48 | #define TIR_S_C_STA_LSY         17 | 
|---|
| 49 | #define TIR_S_C_STA_LIT         18 | 
|---|
| 50 | #define TIR_S_C_STA_LEPM        19 | 
|---|
| 51 | #define TIR_S_C_MAXSTACOD       19 | 
|---|
| 52 | #define TIR_S_C_MINSTOCOD       20 | 
|---|
| 53 | #define TIR_S_C_STO_SB          20 | 
|---|
| 54 | #define TIR_S_C_STO_SW          21 | 
|---|
| 55 | #define TIR_S_C_STO_L           22 | 
|---|
| 56 | #define TIR_S_C_STO_LW          22 | 
|---|
| 57 | #define TIR_S_C_STO_BD          23 | 
|---|
| 58 | #define TIR_S_C_STO_WD          24 | 
|---|
| 59 | #define TIR_S_C_STO_LD          25 | 
|---|
| 60 | #define TIR_S_C_STO_LI          26 | 
|---|
| 61 | #define TIR_S_C_STO_PIDR        27 | 
|---|
| 62 | #define TIR_S_C_STO_PICR        28 | 
|---|
| 63 | #define TIR_S_C_STO_RSB         29 | 
|---|
| 64 | #define TIR_S_C_STO_RSW         30 | 
|---|
| 65 | #define TIR_S_C_STO_RL          31 | 
|---|
| 66 | #define TIR_S_C_STO_VPS         32 | 
|---|
| 67 | #define TIR_S_C_STO_USB         33 | 
|---|
| 68 | #define TIR_S_C_STO_USW         34 | 
|---|
| 69 | #define TIR_S_C_STO_RUB         35 | 
|---|
| 70 | #define TIR_S_C_STO_RUW         36 | 
|---|
| 71 | #define TIR_S_C_STO_B           37 | 
|---|
| 72 | #define TIR_S_C_STO_W           38 | 
|---|
| 73 | #define TIR_S_C_STO_RB          39 | 
|---|
| 74 | #define TIR_S_C_STO_RW          40 | 
|---|
| 75 | #define TIR_S_C_STO_RIVB        41 | 
|---|
| 76 | #define TIR_S_C_STO_PIRR        42 | 
|---|
| 77 | #define TIR_S_C_MAXSTOCOD       42 | 
|---|
| 78 | #define TIR_S_C_MINOPRCOD       50 | 
|---|
| 79 | #define TIR_S_C_OPR_NOP         50 | 
|---|
| 80 | #define TIR_S_C_OPR_ADD         51 | 
|---|
| 81 | #define TIR_S_C_OPR_SUB         52 | 
|---|
| 82 | #define TIR_S_C_OPR_MUL         53 | 
|---|
| 83 | #define TIR_S_C_OPR_DIV         54 | 
|---|
| 84 | #define TIR_S_C_OPR_AND         55 | 
|---|
| 85 | #define TIR_S_C_OPR_IOR         56 | 
|---|
| 86 | #define TIR_S_C_OPR_EOR         57 | 
|---|
| 87 | #define TIR_S_C_OPR_NEG         58 | 
|---|
| 88 | #define TIR_S_C_OPR_COM         59 | 
|---|
| 89 | #define TIR_S_C_OPR_INSV        60 | 
|---|
| 90 | #define TIR_S_C_OPR_ASH         61 | 
|---|
| 91 | #define TIR_S_C_OPR_USH         62 | 
|---|
| 92 | #define TIR_S_C_OPR_ROT         63 | 
|---|
| 93 | #define TIR_S_C_OPR_SEL         64 | 
|---|
| 94 | #define TIR_S_C_OPR_REDEF       65 | 
|---|
| 95 | #define TIR_S_C_OPR_DFLIT       66 | 
|---|
| 96 | #define TIR_S_C_MAXOPRCOD       66 | 
|---|
| 97 | #define TIR_S_C_MINCTLCOD       80 | 
|---|
| 98 | #define TIR_S_C_CTL_SETRB       80 | 
|---|
| 99 | #define TIR_S_C_CTL_AUGRB       81 | 
|---|
| 100 | #define TIR_S_C_CTL_DFLOC       82 | 
|---|
| 101 | #define TIR_S_C_CTL_STLOC       83 | 
|---|
| 102 | #define TIR_S_C_CTL_STKDL       84 | 
|---|
| 103 | #define TIR_S_C_MAXCTLCOD       84 | 
|---|
| 104 |  | 
|---|
| 105 | #define ETIR_S_C_MINSTACOD 0            /* Minimum store code           */ | 
|---|
| 106 | #define ETIR_S_C_STA_GBL 0              /* Stack global symbol value    */ | 
|---|
| 107 | #define ETIR_S_C_STA_LW 1               /* Stack longword               */ | 
|---|
| 108 | #define ETIR_S_C_STA_QW 2               /* Stack quadword               */ | 
|---|
| 109 | #define ETIR_S_C_STA_PQ 3               /* Stack psect base plus quadword offset  */ | 
|---|
| 110 | #define ETIR_S_C_STA_LI 4               /* Stack literal                */ | 
|---|
| 111 | #define ETIR_S_C_STA_MOD 5              /* Stack module                 */ | 
|---|
| 112 | #define ETIR_S_C_STA_CKARG 6            /* Check Arguments              */ | 
|---|
| 113 | #define ETIR_S_C_MAXSTACOD 6            /* Maximum stack code           */ | 
|---|
| 114 | #define ETIR_S_C_MINSTOCOD 50           /* Minimum store code           */ | 
|---|
| 115 | #define ETIR_S_C_STO_B 50               /* Store byte                   */ | 
|---|
| 116 | #define ETIR_S_C_STO_W 51               /* Store word                   */ | 
|---|
| 117 | #define ETIR_S_C_STO_LW 52              /* Store longword               */ | 
|---|
| 118 | #define ETIR_S_C_STO_QW 53              /* Store quadword               */ | 
|---|
| 119 | #define ETIR_S_C_STO_IMMR 54            /* Store immediate Repeated     */ | 
|---|
| 120 | #define ETIR_S_C_STO_GBL 55             /* Store global                 */ | 
|---|
| 121 | #define ETIR_S_C_STO_CA 56              /* Store code address           */ | 
|---|
| 122 | #define ETIR_S_C_STO_RB 57              /* Store relative branch        */ | 
|---|
| 123 | #define ETIR_S_C_STO_AB 58              /* Store absolute branch        */ | 
|---|
| 124 | #define ETIR_S_C_STO_OFF 59             /* Store offset within psect    */ | 
|---|
| 125 | #define ETIR_S_C_STO_IMM 61             /* Store immediate              */ | 
|---|
| 126 | #define ETIR_S_C_STO_GBL_LW 62          /* Store global Longword        */ | 
|---|
| 127 | #define ETIR_S_C_STO_LP_PSB 63          /* STO_LP_PSB not valid in level 2 use STC_LP_PSB                       */ | 
|---|
| 128 | #define ETIR_S_C_STO_HINT_GBL 64        /* Store 14 bit HINT at global address */ | 
|---|
| 129 | #define ETIR_S_C_STO_HINT_PS 65         /* Store 14 bit HINT at psect + offset */ | 
|---|
| 130 | #define ETIR_S_C_MAXSTOCOD 65           /* Maximum store code           */ | 
|---|
| 131 | #define ETIR_S_C_MINOPRCOD 100          /* Minimum operate code         */ | 
|---|
| 132 | #define ETIR_S_C_OPR_NOP 100            /* No-op                        */ | 
|---|
| 133 | #define ETIR_S_C_OPR_ADD 101            /* Add                          */ | 
|---|
| 134 | #define ETIR_S_C_OPR_SUB 102            /* Subtract                     */ | 
|---|
| 135 | #define ETIR_S_C_OPR_MUL 103            /* Multiply                     */ | 
|---|
| 136 | #define ETIR_S_C_OPR_DIV 104            /* Divide                       */ | 
|---|
| 137 | #define ETIR_S_C_OPR_AND 105            /* Logical AND                  */ | 
|---|
| 138 | #define ETIR_S_C_OPR_IOR 106            /* Logical inclusive OR         */ | 
|---|
| 139 | #define ETIR_S_C_OPR_EOR 107            /* Logical exclusive OR         */ | 
|---|
| 140 | #define ETIR_S_C_OPR_NEG 108            /* Negate                       */ | 
|---|
| 141 | #define ETIR_S_C_OPR_COM 109            /* Complement                   */ | 
|---|
| 142 | #define ETIR_S_C_OPR_INSV 110           /* Insert bit field             */ | 
|---|
| 143 | #define ETIR_S_C_OPR_ASH 111            /* Arithmetic shift             */ | 
|---|
| 144 | #define ETIR_S_C_OPR_USH 112            /* Unsigned shift               */ | 
|---|
| 145 | #define ETIR_S_C_OPR_ROT 113            /* Rotate                       */ | 
|---|
| 146 | #define ETIR_S_C_OPR_SEL 114            /* Select one of three longwords on top of stack  */ | 
|---|
| 147 | #define ETIR_S_C_OPR_REDEF 115          /* Redefine this symbol after pass 2  */ | 
|---|
| 148 | #define ETIR_S_C_OPR_DFLIT 116          /* Define a literal             */ | 
|---|
| 149 | #define ETIR_S_C_MAXOPRCOD 116          /* Maximum operate code         */ | 
|---|
| 150 | #define ETIR_S_C_MINCTLCOD 150          /* Minimum control code         */ | 
|---|
| 151 | #define ETIR_S_C_CTL_SETRB 150          /* Set relocation base          */ | 
|---|
| 152 | #define ETIR_S_C_CTL_AUGRB 151          /* Augment relocation base      */ | 
|---|
| 153 | #define ETIR_S_C_CTL_DFLOC 152          /* Define debug location        */ | 
|---|
| 154 | #define ETIR_S_C_CTL_STLOC 153          /* Set debug location           */ | 
|---|
| 155 | #define ETIR_S_C_CTL_STKDL 154          /* Stack debug location         */ | 
|---|
| 156 | #define ETIR_S_C_MAXCTLCOD 154          /* Maximum control code         */ | 
|---|
| 157 | #define ETIR_S_C_MINSTCCOD 200          /* Minimum store-conditional code    */ | 
|---|
| 158 | #define ETIR_S_C_STC_LP 200             /* Store-conditional Linkage Pair    */ | 
|---|
| 159 | #define ETIR_S_C_STC_LP_PSB 201         /* Store-conditional Linkage Pair with Procedure Signature */ | 
|---|
| 160 | #define ETIR_S_C_STC_GBL 202            /* Store-conditional Address at global address */ | 
|---|
| 161 | #define ETIR_S_C_STC_GCA 203            /* Store-conditional Code Address at global address */ | 
|---|
| 162 | #define ETIR_S_C_STC_PS 204             /* Store-conditional Address at psect + offset */ | 
|---|
| 163 | #define ETIR_S_C_STC_NOP_GBL 205        /* Store-conditional NOP at address of global */ | 
|---|
| 164 | #define ETIR_S_C_STC_NOP_PS 206         /* Store-conditional NOP at pect + offset */ | 
|---|
| 165 | #define ETIR_S_C_STC_BSR_GBL 207        /* Store-conditional BSR at global address */ | 
|---|
| 166 | #define ETIR_S_C_STC_BSR_PS 208         /* Store-conditional BSR at pect + offset */ | 
|---|
| 167 | #define ETIR_S_C_STC_LDA_GBL 209        /* Store-conditional LDA at global address */ | 
|---|
| 168 | #define ETIR_S_C_STC_LDA_PS 210         /* Store-conditional LDA at psect + offset */ | 
|---|
| 169 | #define ETIR_S_C_STC_BOH_GBL 211        /* Store-conditional BSR or Hint at global address */ | 
|---|
| 170 | #define ETIR_S_C_STC_BOH_PS 212         /* Store-conditional BSR or Hint at pect + offset */ | 
|---|
| 171 | #define ETIR_S_C_STC_NBH_GBL 213        /* Store-conditional NOP,BSR or HINT at global address */ | 
|---|
| 172 | #define ETIR_S_C_STC_NBH_PS 214         /* Store-conditional NOP,BSR or HINT at psect + offset */ | 
|---|
| 173 | #define ETIR_S_C_MAXSTCCOD 214          /* Maximum store-conditional code    */ | 
|---|
| 174 |  | 
|---|
| 175 | /* VMS Global symbol definition record (GSD/EGSD).  */ | 
|---|
| 176 |  | 
|---|
| 177 | #define GSD_S_K_ENTRIES 1 | 
|---|
| 178 | #define GSD_S_C_ENTRIES 1 | 
|---|
| 179 | #define GSD_S_C_PSC     0 | 
|---|
| 180 | #define GSD_S_C_SYM     1 | 
|---|
| 181 | #define GSD_S_C_EPM     2 | 
|---|
| 182 | #define GSD_S_C_PRO     3 | 
|---|
| 183 | #define GSD_S_C_SYMW    4 | 
|---|
| 184 | #define GSD_S_C_EPMW    5 | 
|---|
| 185 | #define GSD_S_C_PROW    6 | 
|---|
| 186 | #define GSD_S_C_IDC     7 | 
|---|
| 187 | #define GSD_S_C_ENV     8 | 
|---|
| 188 | #define GSD_S_C_LSY     9 | 
|---|
| 189 | #define GSD_S_C_LEPM    10 | 
|---|
| 190 | #define GSD_S_C_LPRO    11 | 
|---|
| 191 | #define GSD_S_C_SPSC    12 | 
|---|
| 192 | #define GSD_S_C_SYMV    13 | 
|---|
| 193 | #define GSD_S_C_EPMV    14 | 
|---|
| 194 | #define GSD_S_C_PROV    15 | 
|---|
| 195 | #define GSD_S_C_MAXRECTYP       15 | 
|---|
| 196 |  | 
|---|
| 197 | #define EGSD_S_K_ENTRIES 2      /* Offset to first entry in record      */ | 
|---|
| 198 | #define EGSD_S_C_ENTRIES 2      /* Offset to first entry in record      */ | 
|---|
| 199 | #define EGSD_S_C_PSC 0          /* Psect definition                     */ | 
|---|
| 200 | #define EGSD_S_C_SYM 1          /* Symbol specification                 */ | 
|---|
| 201 | #define EGSD_S_C_IDC 2          /* Random entity check                  */ | 
|---|
| 202 | #define EGSD_S_C_SPSC 5         /* Shareable image psect definition     */ | 
|---|
| 203 | #define EGSD_S_C_SYMV 6         /* Vectored (dual-valued) versions of SYM, */ | 
|---|
| 204 | #define EGSD_S_C_SYMM 7         /* Masked versions of SYM,              */ | 
|---|
| 205 | #define EGSD_S_C_SYMG 8         /* EGST - gst version of SYM            */ | 
|---|
| 206 | #define EGSD_S_C_MAXRECTYP 8    /* Maximum entry type defined           */ | 
|---|
| 207 |  | 
|---|
| 208 | #define GPS_S_M_PIC     1 | 
|---|
| 209 | #define GPS_S_M_LIB     2 | 
|---|
| 210 | #define GPS_S_M_OVR     4 | 
|---|
| 211 | #define GPS_S_M_REL     8 | 
|---|
| 212 | #define GPS_S_M_GBL     16 | 
|---|
| 213 | #define GPS_S_M_SHR     32 | 
|---|
| 214 | #define GPS_S_M_EXE     64 | 
|---|
| 215 | #define GPS_S_M_RD      128 | 
|---|
| 216 | #define GPS_S_M_WRT     256 | 
|---|
| 217 | #define GPS_S_M_VEC     512 | 
|---|
| 218 | #define GPS_S_K_NAME    9 | 
|---|
| 219 | #define GPS_S_C_NAME    9 | 
|---|
| 220 |  | 
|---|
| 221 | #define EGPS_S_V_PIC    0x0001 | 
|---|
| 222 | #define EGPS_S_V_LIB    0x0002 | 
|---|
| 223 | #define EGPS_S_V_OVR    0x0004 | 
|---|
| 224 | #define EGPS_S_V_REL    0x0008 | 
|---|
| 225 | #define EGPS_S_V_GBL    0x0010 | 
|---|
| 226 | #define EGPS_S_V_SHR    0x0020 | 
|---|
| 227 | #define EGPS_S_V_EXE    0x0040 | 
|---|
| 228 | #define EGPS_S_V_RD     0x0080 | 
|---|
| 229 | #define EGPS_S_V_WRT    0x0100 | 
|---|
| 230 | #define EGPS_S_V_VEC    0x0200 | 
|---|
| 231 | #define EGPS_S_V_NOMOD  0x0400 | 
|---|
| 232 | #define EGPS_S_V_COM    0x0800 | 
|---|
| 233 |  | 
|---|
| 234 | #define GSY_S_M_WEAK    1 | 
|---|
| 235 | #define GSY_S_M_DEF     2 | 
|---|
| 236 | #define GSY_S_M_UNI     4 | 
|---|
| 237 | #define GSY_S_M_REL     8 | 
|---|
| 238 |  | 
|---|
| 239 | #define EGSY_S_V_WEAK   0x0001 | 
|---|
| 240 | #define EGSY_S_V_DEF    0x0002 | 
|---|
| 241 | #define EGSY_S_V_UNI    0x0004 | 
|---|
| 242 | #define EGSY_S_V_REL    0x0008 | 
|---|
| 243 | #define EGSY_S_V_COMM   0x0010 | 
|---|
| 244 | #define EGSY_S_V_VECEP  0x0020 | 
|---|
| 245 | #define EGSY_S_V_NORM   0x0040 | 
|---|
| 246 |  | 
|---|
| 247 | #define LSY_S_M_DEF     2 | 
|---|
| 248 | #define LSY_S_M_REL     8 | 
|---|
| 249 |  | 
|---|
| 250 | #define ENV_S_M_DEF     1 | 
|---|
| 251 | #define ENV_S_M_NESTED  2 | 
|---|
| 252 |  | 
|---|
| 253 | /* | 
|---|
| 254 | *      Debugger symbol definitions:  These are done by hand, as no | 
|---|
| 255 | *                                      machine-readable version seems | 
|---|
| 256 | *                                      to be available. | 
|---|
| 257 | */ | 
|---|
| 258 | #define DST_S_C_C                 7     /* Language == "C"      */ | 
|---|
| 259 | #define DST_S_C_CXX              15     /* Language == "C++"    */ | 
|---|
| 260 | #define DST_S_C_VERSION         153 | 
|---|
| 261 | #define DST_S_C_SOURCE          155     /* Source file          */ | 
|---|
| 262 | #define DST_S_C_PROLOG          162 | 
|---|
| 263 | #define DST_S_C_BLKBEG          176     /* Beginning of block   */ | 
|---|
| 264 | #define DST_S_C_BLKEND          177     /* End of block */ | 
|---|
| 265 | #define DST_S_C_ENTRY           181 | 
|---|
| 266 | #define DST_S_C_PSECT           184 | 
|---|
| 267 | #define DST_S_C_LINE_NUM        185     /* Line Number          */ | 
|---|
| 268 | #define DST_S_C_LBLORLIT        186 | 
|---|
| 269 | #define DST_S_C_LABEL           187 | 
|---|
| 270 | #define DST_S_C_MODBEG          188     /* Beginning of module  */ | 
|---|
| 271 | #define DST_S_C_MODEND          189     /* End of module        */ | 
|---|
| 272 | #define DST_S_C_RTNBEG          190     /* Beginning of routine */ | 
|---|
| 273 | #define DST_S_C_RTNEND          191     /* End of routine       */ | 
|---|
| 274 | #define DST_S_C_DELTA_PC_W      1       /* Incr PC      */ | 
|---|
| 275 | #define DST_S_C_INCR_LINUM      2       /* Incr Line #  */ | 
|---|
| 276 | #define DST_S_C_INCR_LINUM_W    3       /* Incr Line #  */ | 
|---|
| 277 | #define DST_S_C_SET_LINUM_INCR  4 | 
|---|
| 278 | #define DST_S_C_SET_LINUM_INCR_W 5 | 
|---|
| 279 | #define DST_S_C_RESET_LINUM_INCR 6 | 
|---|
| 280 | #define DST_S_C_BEG_STMT_MODE   7 | 
|---|
| 281 | #define DST_S_C_END_STMT_MODE   8 | 
|---|
| 282 | #define DST_S_C_SET_LINE_NUM    9       /* Set Line #   */ | 
|---|
| 283 | #define DST_S_C_SET_PC          10 | 
|---|
| 284 | #define DST_S_C_SET_PC_W        11 | 
|---|
| 285 | #define DST_S_C_SET_PC_L        12 | 
|---|
| 286 | #define DST_S_C_SET_STMTNUM     13 | 
|---|
| 287 | #define DST_S_C_TERM            14      /* End of lines */ | 
|---|
| 288 | #define DST_S_C_TERM_W          15      /* End of lines */ | 
|---|
| 289 | #define DST_S_C_SET_ABS_PC      16      /* Set PC       */ | 
|---|
| 290 | #define DST_S_C_DELTA_PC_L      17      /* Incr PC      */ | 
|---|
| 291 | #define DST_S_C_INCR_LINUM_L    18      /* Incr Line #  */ | 
|---|
| 292 | #define DST_S_C_SET_LINUM_B     19      /* Set Line #   */ | 
|---|
| 293 | #define DST_S_C_SET_LINUM_L     20      /* Set Line #   */ | 
|---|
| 294 | #define DST_S_C_TERM_L          21      /* End of lines */ | 
|---|
| 295 | /* these are used with DST_S_C_SOURCE */ | 
|---|
| 296 | #define DST_S_C_SRC_DECLFILE     1      /* Declare source file */ | 
|---|
| 297 | #define DST_S_C_SRC_SETFILE      2      /* Set source file */ | 
|---|
| 298 | #define DST_S_C_SRC_SETREC_L     3      /* Set record, longword value */ | 
|---|
| 299 | #define DST_S_C_SRC_SETREC_W     4      /* Set record, word value */ | 
|---|
| 300 | #define DST_S_C_SRC_DEFLINES_W  10      /* # of line, word counter */ | 
|---|
| 301 | #define DST_S_C_SRC_DEFLINES_B  11      /* # of line, byte counter */ | 
|---|
| 302 | #define DST_S_C_SRC_FORMFEED    16      /* ^L counts as a record */ | 
|---|
| 303 | /* the following are the codes for the various data types.  Anything not on | 
|---|
| 304 | * the list is included under 'advanced_type' | 
|---|
| 305 | */ | 
|---|
| 306 | #define DBG_S_C_UCHAR           0x02 | 
|---|
| 307 | #define DBG_S_C_USINT           0x03 | 
|---|
| 308 | #define DBG_S_C_ULINT           0x04 | 
|---|
| 309 | #define DBG_S_C_UQUAD           0x05 | 
|---|
| 310 | #define DBG_S_C_SCHAR           0x06 | 
|---|
| 311 | #define DBG_S_C_SSINT           0x07 | 
|---|
| 312 | #define DBG_S_C_SLINT           0x08 | 
|---|
| 313 | #define DBG_S_C_SQUAD           0x09 | 
|---|
| 314 | #define DBG_S_C_REAL4           0x0a | 
|---|
| 315 | #define DBG_S_C_REAL8           0x0b            /* D_float double */ | 
|---|
| 316 | #define DBG_S_C_COMPLX4         0x0c            /* 2xF_float complex float */ | 
|---|
| 317 | #define DBG_S_C_COMPLX8         0x0d            /* 2xD_float complex double */ | 
|---|
| 318 | #define DBG_S_C_REAL8_G         0x1b            /* G_float double */ | 
|---|
| 319 | #define DBG_S_C_COMPLX8_G       0x1d            /* 2xG_float complex double */ | 
|---|
| 320 | #define DBG_S_C_FUNCTION_ADDR   0x17 | 
|---|
| 321 | #define DBG_S_C_ADVANCED_TYPE   0xa3 | 
|---|
| 322 | /*  Some of these are just for future reference.  [pr] | 
|---|
| 323 | */ | 
|---|
| 324 | #define DBG_S_C_UBITA           0x01    /* unsigned, aligned bit field */ | 
|---|
| 325 | #define DBG_S_C_UBITU           0x22    /* unsigned, unaligned bit field */ | 
|---|
| 326 | #define DBG_S_C_SBITA           0x29    /* signed, aligned bit field */ | 
|---|
| 327 | #define DBG_S_C_SBITU           0x2a    /* signed, unaligned bit field */ | 
|---|
| 328 | #define DBG_S_C_CSTRING         0x2e    /* asciz ('\0' terminated) string */ | 
|---|
| 329 | #define DBG_S_C_WCHAR           0x38    /* wchar_t */ | 
|---|
| 330 | /*  These are descriptor class codes. | 
|---|
| 331 | */ | 
|---|
| 332 | #define DSC_K_CLASS_S           0x01    /* static (fixed length) */ | 
|---|
| 333 | #define DSC_K_CLASS_D           0x02    /* dynamic string (not via malloc!) */ | 
|---|
| 334 | #define DSC_K_CLASS_A           0x04    /* array */ | 
|---|
| 335 | #define DSC_K_CLASS_UBS         0x0d    /* unaligned bit string */ | 
|---|
| 336 | /*  These are the codes that are used to generate the definitions of struct | 
|---|
| 337 | *  union and enum records | 
|---|
| 338 | */ | 
|---|
| 339 | #define DBG_S_C_ENUM_ITEM               0xa4 | 
|---|
| 340 | #define DBG_S_C_ENUM_START              0xa5 | 
|---|
| 341 | #define DBG_S_C_ENUM_END                0xa6 | 
|---|
| 342 | #define DBG_S_C_STRUCT_ITEM             DST_K_VFLAGS_BITOFFS    /* 0xff */ | 
|---|
| 343 | #define DBG_S_C_STRUCT_START            0xab | 
|---|
| 344 | #define DBG_S_C_STRUCT_END              0xac | 
|---|
| 345 | #define DST_K_TYPSPEC                   0xaf            /* type specification */ | 
|---|
| 346 | /* These codes are used in the generation of the symbol definition records | 
|---|
| 347 | */ | 
|---|
| 348 | #define DST_K_VFLAGS_NOVAL              0x80    /* struct definition only */ | 
|---|
| 349 | #define DST_K_VFLAGS_DSC                0xfa    /* descriptor used */ | 
|---|
| 350 | #define DST_K_VFLAGS_TVS                0xfb    /* trailing value specified */ | 
|---|
| 351 | #define DST_K_VS_FOLLOWS                0xfd    /* value spec follows */ | 
|---|
| 352 | #define DST_K_VFLAGS_BITOFFS            0xff    /* value contains bit offset */ | 
|---|
| 353 | #define DST_K_VALKIND_LITERAL   0 | 
|---|
| 354 | #define DST_K_VALKIND_ADDR      1 | 
|---|
| 355 | #define DST_K_VALKIND_DESC      2 | 
|---|
| 356 | #define DST_K_VALKIND_REG       3 | 
|---|
| 357 | #define DST_K_REG_VAX_AP        0x0c    /* R12 */ | 
|---|
| 358 | #define DST_K_REG_VAX_FP        0x0d    /* R13 */ | 
|---|
| 359 | #define DST_K_REG_VAX_SP        0x0e    /* R14 */ | 
|---|
| 360 | #define DST_V_VALKIND           0       /* offset of valkind field */ | 
|---|
| 361 | #define DST_V_INDIRECT          2       /* offset to indirect bit */ | 
|---|
| 362 | #define DST_V_DISP              3       /* offset to displacement bit */ | 
|---|
| 363 | #define DST_V_REGNUM            4       /* offset to register number */ | 
|---|
| 364 | #define DST_M_INDIRECT          (1<<DST_V_INDIRECT) | 
|---|
| 365 | #define DST_M_DISP              (1<<DST_V_DISP) | 
|---|
| 366 | #define DBG_C_FUNCTION_PARAM    /* 0xc9 */      \ | 
|---|
| 367 | (DST_K_VALKIND_ADDR|DST_M_DISP|(DST_K_REG_VAX_AP<<DST_V_REGNUM)) | 
|---|
| 368 | #define DBG_C_LOCAL_SYM         /* 0xd9 */      \ | 
|---|
| 369 | (DST_K_VALKIND_ADDR|DST_M_DISP|(DST_K_REG_VAX_FP<<DST_V_REGNUM)) | 
|---|
| 370 | /* Kinds of value specifications | 
|---|
| 371 | */ | 
|---|
| 372 | #define DST_K_VS_ALLOC_SPLIT    3       /* split lifetime */ | 
|---|
| 373 | /* Kinds of type specifications | 
|---|
| 374 | */ | 
|---|
| 375 | #define DST_K_TS_ATOM           0x01    /* atomic type specification */ | 
|---|
| 376 | #define DST_K_TS_DSC            0x02    /* descriptor type spec */ | 
|---|
| 377 | #define DST_K_TS_IND            0x03    /* indirect type specification */ | 
|---|
| 378 | #define DST_K_TS_TPTR           0x04    /* typed pointer type spec */ | 
|---|
| 379 | #define DST_K_TS_PTR            0x05    /* pointer type spec */ | 
|---|
| 380 | #define DST_K_TS_ARRAY          0x07    /* array type spec */ | 
|---|
| 381 | #define DST_K_TS_NOV_LENG       0x0e    /* novel length type spec */ | 
|---|
| 382 | /*  These are the codes that are used in the suffix records to determine the | 
|---|
| 383 | *  actual data type | 
|---|
| 384 | */ | 
|---|
| 385 | #define DBG_S_C_BASIC                   DST_K_TS_ATOM | 
|---|
| 386 | #define DBG_S_C_BASIC_ARRAY             DST_K_TS_DSC | 
|---|
| 387 | #define DBG_S_C_STRUCT                  DST_K_TS_IND | 
|---|
| 388 | #define DBG_S_C_POINTER                 DST_K_TS_TPTR | 
|---|
| 389 | #define DBG_S_C_VOID                    DST_K_TS_PTR | 
|---|
| 390 | #define DBG_S_C_COMPLEX_ARRAY           DST_K_TS_ARRAY | 
|---|
| 391 |  | 
|---|
| 392 | /* VMS Module header record (EMH) definitions.  */ | 
|---|
| 393 |  | 
|---|
| 394 | #define MHD_S_C_MHD 0 | 
|---|
| 395 | #define MHD_S_C_LNM 1 | 
|---|
| 396 | #define MHD_S_C_SRC 2 | 
|---|
| 397 | #define MHD_S_C_TTL 3 | 
|---|
| 398 | #define MHD_S_C_CPR 4 | 
|---|
| 399 | #define MHD_S_C_MTC 5 | 
|---|
| 400 | #define MHD_S_C_GTX 6 | 
|---|
| 401 | #define MHD_S_C_MAXHDRTYP 6 | 
|---|
| 402 |  | 
|---|
| 403 | #define EMH_S_C_MHD 0           /* Main header record           */ | 
|---|
| 404 | #define EMH_S_C_LNM 1           /* Language name and version    */ | 
|---|
| 405 | #define EMH_S_C_SRC 2           /* Source file specification    */ | 
|---|
| 406 | #define EMH_S_C_TTL 3           /* Title text of module         */ | 
|---|
| 407 | #define EMH_S_C_CPR 4           /* Copyright notice             */ | 
|---|
| 408 | #define EMH_S_C_MTC 5           /* Maintenance status           */ | 
|---|
| 409 | #define EMH_S_C_GTX 6           /* General text                 */ | 
|---|
| 410 | #define EMH_S_C_MAXHDRTYP 6     /* Maximum allowable type       */ | 
|---|
| 411 |  | 
|---|
| 412 | /* vms.c.  */ | 
|---|
| 413 |  | 
|---|
| 414 | extern asymbol *_bfd_vms_make_empty_symbol PARAMS ((bfd *abfd)); | 
|---|
| 415 |  | 
|---|
| 416 | /* vms-gsd.c.  */ | 
|---|
| 417 |  | 
|---|
| 418 | extern int _bfd_vms_slurp_gsd PARAMS ((bfd *abfd, int objtype)); | 
|---|
| 419 | extern int _bfd_vms_write_gsd PARAMS ((bfd *abfd, int objtype)); | 
|---|
| 420 |  | 
|---|
| 421 | /* vms-mhd.c.  */ | 
|---|
| 422 |  | 
|---|
| 423 | extern int _bfd_vms_slurp_hdr PARAMS ((bfd *abfd, int objtype)); | 
|---|
| 424 | extern int _bfd_vms_write_hdr PARAMS ((bfd *abfd, int objtype)); | 
|---|
| 425 | extern int _bfd_vms_slurp_eom PARAMS ((bfd *abfd, int objtype)); | 
|---|
| 426 | extern int _bfd_vms_write_eom PARAMS ((bfd *abfd, int objtype)); | 
|---|
| 427 |  | 
|---|
| 428 | /* vms-tir.c.  */ | 
|---|
| 429 |  | 
|---|
| 430 | extern int _bfd_vms_slurp_tir PARAMS ((bfd *abfd, int objtype)); | 
|---|
| 431 | extern int _bfd_vms_slurp_dbg PARAMS ((bfd *abfd, int objtype)); | 
|---|
| 432 | extern int _bfd_vms_slurp_tbt PARAMS ((bfd *abfd, int objtype)); | 
|---|
| 433 | extern int _bfd_vms_slurp_lnk PARAMS ((bfd *abfd, int objtype)); | 
|---|
| 434 |  | 
|---|
| 435 | extern int _bfd_vms_write_tir PARAMS ((bfd *abfd, int objtype)); | 
|---|
| 436 | extern int _bfd_vms_write_tbt PARAMS ((bfd *abfd, int objtype)); | 
|---|
| 437 | extern int _bfd_vms_write_dbg PARAMS ((bfd *abfd, int objtype)); | 
|---|
| 438 |  | 
|---|
| 439 | /* The r_type field in a reloc is one of the following values.  */ | 
|---|
| 440 | #define ALPHA_R_IGNORE          0 | 
|---|
| 441 | #define ALPHA_R_REFQUAD         1 | 
|---|
| 442 | #define ALPHA_R_BRADDR          2 | 
|---|
| 443 | #define ALPHA_R_HINT            3 | 
|---|
| 444 | #define ALPHA_R_SREL16          4 | 
|---|
| 445 | #define ALPHA_R_SREL32          5 | 
|---|
| 446 | #define ALPHA_R_SREL64          6 | 
|---|
| 447 | #define ALPHA_R_OP_PUSH         7 | 
|---|
| 448 | #define ALPHA_R_OP_STORE        8 | 
|---|
| 449 | #define ALPHA_R_OP_PSUB         9 | 
|---|
| 450 | #define ALPHA_R_OP_PRSHIFT      10 | 
|---|
| 451 | #define ALPHA_R_LINKAGE         11 | 
|---|
| 452 | #define ALPHA_R_REFLONG         12 | 
|---|
| 453 | #define ALPHA_R_CODEADDR        13 | 
|---|
| 454 |  | 
|---|
| 455 | /* Object language definitions.  */ | 
|---|
| 456 |  | 
|---|
| 457 | #define OBJ_S_C_HDR 0           /*VAX module header record              */ | 
|---|
| 458 | #define OBJ_S_C_GSD 1           /*VAX global symbol definition record   */ | 
|---|
| 459 | #define OBJ_S_C_TIR 2           /*VAX text information record           */ | 
|---|
| 460 | #define OBJ_S_C_EOM 3           /*VAX end of module record              */ | 
|---|
| 461 | #define OBJ_S_C_DBG 4           /*VAX Debugger information record       */ | 
|---|
| 462 | #define OBJ_S_C_TBT 5           /*VAX Traceback information record      */ | 
|---|
| 463 | #define OBJ_S_C_LNK 6           /*VAX linker options record             */ | 
|---|
| 464 | #define OBJ_S_C_EOMW 7          /*VAX end of module word-psect record   */ | 
|---|
| 465 | #define OBJ_S_C_MAXRECTYP 7     /*VAX Last assigned record type         */ | 
|---|
| 466 | #define EOBJ_S_C_EMH 8          /*EVAX module header record             */ | 
|---|
| 467 | #define EOBJ_S_C_EEOM 9         /*EVAX end of module record             */ | 
|---|
| 468 | #define EOBJ_S_C_EGSD 10        /*EVAX global symbol definition record  */ | 
|---|
| 469 | #define EOBJ_S_C_ETIR 11        /*EVAX text information record          */ | 
|---|
| 470 | #define EOBJ_S_C_EDBG 12        /*EVAX Debugger information record      */ | 
|---|
| 471 | #define EOBJ_S_C_ETBT 13        /*EVAX Traceback information record     */ | 
|---|
| 472 | #define EOBJ_S_C_MAXRECTYP 13   /*EVAX Last assigned record type        */ | 
|---|
| 473 | #define OBJ_S_K_SUBTYP 1 | 
|---|
| 474 | #define OBJ_S_C_SUBTYP 1 | 
|---|
| 475 | #define EOBJ_S_K_SUBTYP 4 | 
|---|
| 476 | #define EOBJ_S_C_SUBTYP 4 | 
|---|
| 477 | #define OBJ_S_C_MAXRECSIZ 2048  /*Maximum legal record size         */ | 
|---|
| 478 | #define EOBJ_S_C_MAXRECSIZ 8192 /*Maximum legal record size         */ | 
|---|
| 479 | #define OBJ_S_C_STRLVL 0        /*Structure level                   */ | 
|---|
| 480 | #define EOBJ_S_C_STRLVL 2       /*Structure level                   */ | 
|---|
| 481 | #define OBJ_S_C_SYMSIZ 31       /*Maximum symbol length         */ | 
|---|
| 482 | #define EOBJ_S_C_SYMSIZ 64      /*Maximum symbol length         */ | 
|---|
| 483 | #define EOBJ_S_C_SECSIZ 31      /*Maximum section name length           */ | 
|---|
| 484 | #define OBJ_S_C_STOREPLIM -1    /*Maximum repeat count on store commands  */ | 
|---|
| 485 | #define EOBJ_S_C_STOREPLIM -1   /*Maximum repeat count on store commands  */ | 
|---|
| 486 | #define OBJ_S_C_PSCALILIM 9     /*Maximum p-sect alignment          */ | 
|---|
| 487 | #define EOBJ_S_C_PSCALILIM 16   /*Maximum p-sect alignment          */ | 
|---|
| 488 |  | 
|---|
| 489 | #define EVAX_OFFSET     256     /*type offset for EVAX codes in switch  */ | 
|---|
| 490 | /* Miscellaneous definitions.  */ | 
|---|
| 491 |  | 
|---|
| 492 | #if __GNUC__ | 
|---|
| 493 | typedef unsigned long long uquad; | 
|---|
| 494 | #else | 
|---|
| 495 | typedef unsigned long uquad; | 
|---|
| 496 | #endif | 
|---|
| 497 |  | 
|---|
| 498 | #define MAX_OUTREC_SIZE 4096 | 
|---|
| 499 | #define MIN_OUTREC_LUFT 64 | 
|---|
| 500 |  | 
|---|
| 501 | typedef struct _vms_section { | 
|---|
| 502 | unsigned char *contents; | 
|---|
| 503 | bfd_vma offset; | 
|---|
| 504 | bfd_size_type size; | 
|---|
| 505 | struct _vms_section *next; | 
|---|
| 506 | } vms_section; | 
|---|
| 507 |  | 
|---|
| 508 | extern bfd_boolean _bfd_save_vms_section | 
|---|
| 509 | PARAMS ((bfd *abfd, asection *section, PTR data, file_ptr offset, | 
|---|
| 510 | bfd_size_type count)); | 
|---|
| 511 | extern vms_section *_bfd_get_vms_section PARAMS ((bfd *abfd, int index)); | 
|---|
| 512 |  | 
|---|
| 513 | typedef struct _vms_reloc { | 
|---|
| 514 | struct _vms_reloc *next; | 
|---|
| 515 | arelent *reloc; | 
|---|
| 516 | asection *section; | 
|---|
| 517 | } vms_reloc; | 
|---|
| 518 |  | 
|---|
| 519 | /* vms module header  */ | 
|---|
| 520 |  | 
|---|
| 521 | struct hdr_struc { | 
|---|
| 522 | int hdr_b_strlvl; | 
|---|
| 523 | long hdr_l_arch1; | 
|---|
| 524 | long hdr_l_arch2; | 
|---|
| 525 | long hdr_l_recsiz; | 
|---|
| 526 | char *hdr_t_name; | 
|---|
| 527 | char *hdr_t_version; | 
|---|
| 528 | char *hdr_t_date; | 
|---|
| 529 | char *hdr_c_lnm; | 
|---|
| 530 | char *hdr_c_src; | 
|---|
| 531 | char *hdr_c_ttl; | 
|---|
| 532 | }; | 
|---|
| 533 |  | 
|---|
| 534 | /* vms end of module  */ | 
|---|
| 535 |  | 
|---|
| 536 | struct eom_struc { | 
|---|
| 537 | long eom_l_total_lps; | 
|---|
| 538 | unsigned char eom_b_comcod; | 
|---|
| 539 | bfd_boolean eom_has_transfer; | 
|---|
| 540 | unsigned char eom_b_tfrflg; | 
|---|
| 541 | long eom_l_psindx; | 
|---|
| 542 | long eom_l_tfradr; | 
|---|
| 543 | }; | 
|---|
| 544 |  | 
|---|
| 545 | enum file_format_enum { FF_UNKNOWN, FF_FOREIGN, FF_NATIVE, FF_VAX }; | 
|---|
| 546 |  | 
|---|
| 547 | typedef struct vms_symbol_struct { | 
|---|
| 548 | struct bfd_hash_entry bfd_hash; | 
|---|
| 549 | asymbol *symbol; | 
|---|
| 550 | } vms_symbol_entry; | 
|---|
| 551 |  | 
|---|
| 552 | /* stack value for push/pop commands  */ | 
|---|
| 553 |  | 
|---|
| 554 | struct stack_struct { | 
|---|
| 555 | uquad value; | 
|---|
| 556 | int psect; | 
|---|
| 557 | }; | 
|---|
| 558 | #define STACKSIZE 8192 | 
|---|
| 559 |  | 
|---|
| 560 | /* location stack definitions for CTL_DFLOC, CTL_STLOC, and CTL_STKDL  */ | 
|---|
| 561 |  | 
|---|
| 562 | struct location_struct { | 
|---|
| 563 | unsigned long value; | 
|---|
| 564 | int psect; | 
|---|
| 565 | }; | 
|---|
| 566 | #define LOCATION_SAVE_SIZE 32 | 
|---|
| 567 |  | 
|---|
| 568 | #define VMS_SECTION_COUNT 1024 | 
|---|
| 569 |  | 
|---|
| 570 | struct vms_private_data_struct { | 
|---|
| 571 | int is_vax; | 
|---|
| 572 | bfd_boolean fixup_done;               /* Flag to indicate if all | 
|---|
| 573 | section pointers and PRIV(sections) | 
|---|
| 574 | are set up correctly  */ | 
|---|
| 575 | unsigned char *vms_buf;               /* buffer to record  */ | 
|---|
| 576 | int buf_size;                         /* max size of buffer  */ | 
|---|
| 577 | unsigned char *vms_rec;               /* actual record ptr  */ | 
|---|
| 578 | int rec_length;                       /* remaining record length  */ | 
|---|
| 579 | int rec_size;                         /* actual record size  */ | 
|---|
| 580 | int rec_type;                         /* actual record type  */ | 
|---|
| 581 | enum file_format_enum file_format; | 
|---|
| 582 |  | 
|---|
| 583 | struct hdr_struc hdr_data;            /* data from HDR/EMH record  */ | 
|---|
| 584 | struct eom_struc eom_data;            /* data from EOM/EEOM record  */ | 
|---|
| 585 | unsigned int section_count;           /* # of sections in following array  */ | 
|---|
| 586 | asection **sections;                  /* array of GSD/EGSD sections  */ | 
|---|
| 587 | int gsd_sym_count;                    /* # of GSD/EGSD symbols  */ | 
|---|
| 588 | asymbol **symbols;                    /* vector of GSD/EGSD symbols  */ | 
|---|
| 589 | struct proc_value *procedure; | 
|---|
| 590 |  | 
|---|
| 591 | struct stack_struct *stack; | 
|---|
| 592 | int stackptr; | 
|---|
| 593 |  | 
|---|
| 594 | vms_section *vms_section_table[VMS_SECTION_COUNT]; | 
|---|
| 595 |  | 
|---|
| 596 | struct bfd_hash_table *vms_symbol_table; | 
|---|
| 597 | struct symbol_cache_entry **symcache; | 
|---|
| 598 | int symnum; | 
|---|
| 599 |  | 
|---|
| 600 | struct location_struct *location_stack; | 
|---|
| 601 |  | 
|---|
| 602 | asection *image_section;              /* section for image_ptr  */ | 
|---|
| 603 | unsigned char *image_ptr;             /* a pointer to section->contents */ | 
|---|
| 604 |  | 
|---|
| 605 | unsigned char pdsc[8];                /* procedure descriptor */ | 
|---|
| 606 |  | 
|---|
| 607 | /* Output routine storage  */ | 
|---|
| 608 |  | 
|---|
| 609 | unsigned char *output_buf;            /* output data  */ | 
|---|
| 610 | int push_level; | 
|---|
| 611 | int pushed_size; | 
|---|
| 612 | int length_pos; | 
|---|
| 613 | int output_size; | 
|---|
| 614 | int output_alignment; | 
|---|
| 615 |  | 
|---|
| 616 | /* linkage index counter | 
|---|
| 617 | used by conditional store commands (ETIR_S_C_STC_)  */ | 
|---|
| 618 |  | 
|---|
| 619 | int vms_linkage_index; | 
|---|
| 620 |  | 
|---|
| 621 | /* see tc-alpha.c of gas for a description.  */ | 
|---|
| 622 | int flag_hash_long_names;     /* -+, hash instead of truncate */ | 
|---|
| 623 | int flag_show_after_trunc;    /* -H, show hashing/truncation */ | 
|---|
| 624 | }; | 
|---|
| 625 |  | 
|---|
| 626 | #define PRIV(name)      ((struct vms_private_data_struct *)abfd->tdata.any)->name | 
|---|
| 627 |  | 
|---|
| 628 | #define SECTION_NAME_TEMPLATE "__SEC__%d" | 
|---|
| 629 |  | 
|---|
| 630 | #if VMS_DEBUG | 
|---|
| 631 | extern void _bfd_vms_debug PARAMS((int level, char *format, ...)); | 
|---|
| 632 | extern void _bfd_hexdump | 
|---|
| 633 | PARAMS ((int level, unsigned char *ptr, int size, int offset)); | 
|---|
| 634 |  | 
|---|
| 635 | #define vms_debug _bfd_vms_debug | 
|---|
| 636 | #endif | 
|---|
| 637 |  | 
|---|
| 638 | extern struct bfd_hash_entry *_bfd_vms_hash_newfunc | 
|---|
| 639 | PARAMS ((struct bfd_hash_entry *entry, struct bfd_hash_table *table, | 
|---|
| 640 | const char *string)); | 
|---|
| 641 | extern void _bfd_vms_get_header_values | 
|---|
| 642 | PARAMS ((bfd *abfd, unsigned char *buf, int *type, int *length)); | 
|---|
| 643 | extern int _bfd_vms_get_record PARAMS ((bfd *abfd)); | 
|---|
| 644 | extern int _bfd_vms_next_record PARAMS ((bfd *abfd)); | 
|---|
| 645 |  | 
|---|
| 646 | extern char *_bfd_vms_save_sized_string PARAMS ((unsigned char *str, int size)); | 
|---|
| 647 | extern char *_bfd_vms_save_counted_string PARAMS ((unsigned char *ptr)); | 
|---|
| 648 | extern void _bfd_vms_push PARAMS ((bfd *abfd, uquad val, int psect)); | 
|---|
| 649 | extern uquad _bfd_vms_pop PARAMS ((bfd *abfd, int *psect)); | 
|---|
| 650 |  | 
|---|
| 651 | extern bfd_boolean _bfd_save_vms_section | 
|---|
| 652 | PARAMS ((bfd *abfd, asection *section, PTR data, file_ptr offset, | 
|---|
| 653 | bfd_size_type count)); | 
|---|
| 654 | extern void _bfd_vms_output_begin | 
|---|
| 655 | PARAMS ((bfd *abfd, int rectype, int rechead)); | 
|---|
| 656 | extern void _bfd_vms_output_alignment PARAMS ((bfd *abfd, int alignto)); | 
|---|
| 657 | extern void _bfd_vms_output_push PARAMS ((bfd *abfd)); | 
|---|
| 658 | extern void _bfd_vms_output_pop PARAMS ((bfd *abfd)); | 
|---|
| 659 | extern void _bfd_vms_output_flush PARAMS ((bfd *abfd)); | 
|---|
| 660 | extern void _bfd_vms_output_end PARAMS ((bfd *abfd)); | 
|---|
| 661 | extern int _bfd_vms_output_check PARAMS ((bfd *abfd, int size)); | 
|---|
| 662 | extern void _bfd_vms_output_byte PARAMS ((bfd *abfd, unsigned int value)); | 
|---|
| 663 | extern void _bfd_vms_output_short PARAMS ((bfd *abfd, unsigned int value)); | 
|---|
| 664 | extern void _bfd_vms_output_long PARAMS ((bfd *abfd, unsigned long value)); | 
|---|
| 665 | extern void _bfd_vms_output_quad PARAMS ((bfd *abfd, uquad value)); | 
|---|
| 666 | extern void _bfd_vms_output_counted PARAMS ((bfd *abfd, char *value)); | 
|---|
| 667 | extern void _bfd_vms_output_dump PARAMS ((bfd *abfd, unsigned char *data, | 
|---|
| 668 | int length)); | 
|---|
| 669 | extern void _bfd_vms_output_fill PARAMS ((bfd *abfd, int value, int length)); | 
|---|
| 670 | extern char *_bfd_vms_length_hash_symbol PARAMS ((bfd *abfd, const char *in, int maxlen)); | 
|---|
| 671 |  | 
|---|
| 672 | extern vms_symbol_entry *_bfd_vms_enter_symbol PARAMS ((bfd *abfd, char *name)); | 
|---|
| 673 |  | 
|---|
| 674 | #endif /* VMS_H */ | 
|---|