binutils-gdb/bfd/vms.h

144 lines
4.3 KiB
C
Raw Normal View History

1999-05-03 15:29:11 +08:00
/* vms.h -- Header file for VMS (Alpha and Vax) support.
2009-09-02 15:25:43 +08:00
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007,
2008, 2009, 2010 Free Software Foundation, Inc.
2009-02-23 Tristan Gingold <gingold@adacore.com> * vms.h: Update copyright year, fix comments, reorder declarations. (_bfd_save_vms_section): Remove the prototype. (EGPS_S_V_NO_SHIFT): New constant. (bfd_vms_set_section_flags): New prototype. (EGPS_S_B_ALIGN, EGPS_S_W_FLAGS, EGPS_S_L_ALLOC, EGPS_S_B_NAMLNG): New constants. (EGSY_S_W_FLAGS): Ditto. (EGSY_S_V_QUAD_VAL): Ditto. (ESDF_S_L_VALUE, ESDF_S_L_PSINDX, ESDF_S_B_NAMLNG): Ditto. (EGST_S_W_FLAGS, EGST_S_Q_LP_1, EGST_S_Q_LP_2, EGST_S_L_PSINDX, EGST_S_B_NAMLNG): Ditto. (ESRF_S_B_NAMLNG): Ditto. (ETIR_S_C_HEADER_SIZE): Ditto. (EGPS_S_V_ALLOC_64BIT): Ditto. (DST_S_C_EPILOG): Ditto. (DST_S_C_SRC_SETLNUM_L, DST_S_C_SRC_SETLNUM_W) : Ditto. (DST_S_C_SRC_INCRLNUM_B): Ditto. (DST_S_B_PCLINE_UNSBYTE, DST_S_W_PCLINE_UNSWORD): Ditto. (DST_S_L_PCLINE_UNSLONG): Ditto. (DST_S_B_MODBEG_NAME, DST_S_L_RTNBEG_ADDRESS) : Ditto (DST_S_B_RTNBEG_NAME, DST_S_L_RTNEND_SIZE): Ditto (DST_S_C_SOURCE_HEADER_SIZE): Ditto. (DST_S_B_SRC_DF_LENGTH, DST_S_W_SRC_DF_FILEID): Ditto. (DST_S_B_SRC_DF_FILENAME, DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_W_SRC_UNSWORD, DST_S_L_SRC_UNSLONG): Ditto. Add prototypes. (vms_section, vms_reloc): Remove types. (hdr_struc): Replaced by ... (hdr_struct): ... new type. (EMH_S_W_HDRTYP, EMH_S_B_STRLVL, EMH_S_L_ARCH1): New constants. (EMH_S_L_ARCH2, EMH_S_L_RECSIZ, EMH_S_B_NAMLNG): Ditto. (EMH_DATE_LENGTH): Ditto. (eom_struc): Replaced by ... (eom_struct): ... new type. (EEOM_S_L_TOTAL_LPS, EEOM_S_W_COMCOD, EEOM_S_B_TFRFLG): New constants. (EEOM_S_L_PSINDX, EEOM_S_L_TFRADR): Ditto. (EIHD_S_K_MAJORID, EIHD_S_K_MINORID, EIHD_S_K_EXE): Ditto. (EIHD_S_L_SIZE, EIHD_S_L_ISDOFF, EIHD_S_L_SYMDBGOFF): Ditto. (EIHD_S_Q_SYMVVA, EIHD_S_L_IMGTYPE): Ditto. (EISD_S_L_EISDSIZE, EISD_S_L_SECSIZE, EISD_S_Q_VIR_ADDR): Ditto. (EISD_S_L_FLAGS, EISD_S_L_VBN, EISD_S_R_CONTROL): Ditto. (EISD_S_L_IDENT, EISD_S_T_GBLNAM): Ditto. (EISD_S_M_GBL, EISD_S_M_CRF, EISD_S_M_DZRO, EISD_S_M_WRT): Ditto. (EISD_S_M_INITALCODE, EISD_S_M_BASED, EISD_S_M_FIXUPVEC): Ditto. (EISD_S_M_RESIDENT, EISD_S_M_VECTOR, EISD_S_M_PROTECT): Ditto. (EISD_S_M_LASTCLU, EISD_S_M_EXE, EISD_S_M_NONSHRADR): Ditto. (EISD_S_M_QUAD_LENGTH, EISD_S_M_ALLOC_64BIT): Ditto. (EIHS_S_L_DSTVBN, EIHS_S_L_DSTSIZE, EIHS_S_L_GSTVBN): Ditto. (EIHS_S_L_GSTSIZE, EIHS_S_L_DMTVBN, EIHS_S_L_DMTBYTES): Ditto. (DBG_S_L_DMT_MODBEG, DBG_S_L_DST_SIZE): Ditto. (DBG_S_W_DMT_PSECT_COUNT, DBG_S_C_DMT_HEADER_SIZE): Ditto. (DBG_S_L_DMT_PSECT_START, DBG_S_L_DMT_PSECT_LENGTH) (DBG_S_C_DMT_PSECT_SIZE): Ditto. (enum file_type_enum): New type. (struct location_struct): Removed. (struct fileinfo, struct srecinfo, struct lineinfo): New types. (struct funcinfo, struct module): Ditto. (struct vms_private_data_struct): Update fields. (struct vms_section_data_struct): New type. * vms.c: Update copyright year, fix comments, Fix includes for DECC, add prototypes. (vms_initialize): Use bfd_alloc instead of bfd_zalloc and remove some initializers. Use flavour to set is_vax, location_stack is removed. (struct pair): Declare. (fill_section_ptr): Initialize variables at declaration. Add guard to set SECTION_SYM flag, handlde und section. (vms_fixup_sections): Use struct pair for fill_section_ptr argument. (_bfd_vms_slurp_object_records): New function, replaces previous vms_object_p. (vms_slurp_module): New function. (vms_slurp_image): Ditto. (vms_object_p): Complete rewrite. (vms_mkobject): Use is_vax field to slect architecture. (free_reloc_stream): New function. (vms_convert_to_var): Ditto. (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_close_and_cleanup): Call free_reloc_stream, convert file to VAR format on VMS. (vms_new_section_hook): Set alignment to 0, allocate private data. (vms_get_section_contents): Load content. (vms_get_symbol_info): Handle undefined section. (vms_find_nearest_line): Handle. (alloc_reloc_stream): New function. (vms_slurp_reloc_table): Ditto. (vms_get_reloc_upper_bound): Make it real. (vms_canonicalize_reloc): Do the real work. (alpha_howto_table): Add ALPHA_R_NOP, ALPHA_R_BSR, ALPHA_R_LDA, ALPHA_R_BOH. (vms_bfd_reloc_type_lookup): Handle NOP, BSR, LDA and BOH. (vms_set_arch_mach): Check arch. (vms_set_section_contents): Copy the content after allocation. (vms_alpha_vec): Update object flags. * vms-tir.c: Update copyright year, fix comments, add prototypes for new functions. (dst_define_location): New function. (dst_restore_location): New function. (dst_retrieve_location): New function. (dst_check_allocation): New function. (image_dump): Call dst_check_allocation. (image_write_b): Ditto. (image_write_w): Ditto. (image_write_l): Ditto. (image_write_q): Ditto. (cmd_name): Handle STA_LW, STA_QW, STO_OFF, STO_IMM, STO_IMMR, STO_LW, STO_QW, OPR_ADD, CTL_SETRB, STC_LP_PSB, CTL_DFLOC, CTL_STLOC, CTL_STKDL. Call error handler instead of abort if name is not known. (etir_sta): Add quarter_relocs argument and set it. Fix cast. (etir_sto): Ditto. (etir_opr): Ditto, return FALSE in case of error. (etir_ctl): Add quarter_relocs argument and set it, fix cast. Fix CTL_DFLOC, CTL_STLOC, CTL_STKDL. (etir_stc): Add quarter_relocs argument and set it, fix cast. Fix STC_LP, STC_LP_PSB, STC_GBL and STC_CGA. Handle STC_LP_PSB, STC_BSR_GBL, STC_LDA_GBL, STC_BOH_GBL. Move STC_NOP_PS, STC_BSR_PS, STC_LDA_PS, STC_BOH_PS, STC_NBH_PS. Return FALSE in case of error. (tir_sta): Change sign of psect. (tir_ctl): Ditto. (tir_cmd): Fix cast. Makes tir_table static const. (etir_cmd): Add quarter_relocs argument, makes etir_table const, add argument to explain. (analyze_etir): Initialize maxptr, add quarter_relocs declaration, move some declarations into inner scopes. Handle quarter_relocs and STO_IMM. (_bfd_vms_slurp_tir): Use constant instead of hard-coded values. (_bfd_vms_slurp_relocs): New function. (_bfd_vms_decode_relocs): New function. (sto_imm): Rewritten. (start_first_etbt_record): New function. (start_another_etbt_record): Ditto. (etir_output_check): Ditto. (defer_reloc_p): Ditto. (_bfd_vms_write_tir): Remove nextoffset, convert a while-loop to a for-loop. Correctly deals with contents, deals with .vmsdebug, rewritte relocations handling. (_bfd_vms_write_tbt): Removed. (_bfd_vms_write_dbg): Ditto. * vms-misc.c: Update copyright year, Fix comments. (_bfd_vms_get_header_values): Use 'size' instead of 'length'. (maybe_adjust_record_pointer_for_object): New function. (_bfd_vms_get_first_record): New function, replaces ... (_bfd_vms_get_record): .. removed. (_bfd_vms_get_object_record): New function. (_bfd_vms_get_object_record): New function. (vms_get_remaining_object_record): New function, replaces ... (_bfd_vms_get_next_record): ... removed. (add_new_contents): Removed. (_bfd_save_vms_section): Removed. (_bfd_get_vms_section): Removed. (_bfd_vms_output_flush): Write in VAR format. (new_symbol): Don't make UND section. * vms-hdr.c: Update copyright year, update list of record handled. (_bfd_vms_slurp_hdr): rec_length renamed to rec_size. (_bfd_vms_write_hdr): Strip vms and unix patches, add comments, truncate module name at 31 characters, use constants instead of hard-coded value, write BFD version instead of a fixed string. (_bfd_vms_slurp_ihd): New function. (_bfd_vms_slurp_isd): Ditto. (_bfd_vms_slurp_ihs): Ditto. (new_module): Ditto. (parse_module): Ditto (build_module_list): Ditto. (module_find_nearest_line): Ditto. (_bfd_vms_find_nearest_dst_line): Ditto. (vms_slurp_debug): Ditto. (_bfd_vms_slurp_dbg): Ditto. (_bfd_vms_slurp_tbt): Ditto. (_bfd_vms_write_dbg): Ditto. (_bfd_vms_write_tbt): Ditto. * vms-gsd.c: Update copyright year, update list of records handled. (EVAX_LITERALS_NAME): New macro. (evax_section_flags): Add an entry for EVAX_LITERALS_NAME. (gpsflagdesc, gsyflagdesc): Moved out of _bfd_vms_slurp_gsd. (register_universal_symbol): New function and prototype. (_bfd_vms_slurp_gsd): Fix indentations and casts, improve debug messages, use constants instead of hard-coded value, fix missing endianness conversion, handle global symbol (SYMG). (bfd_vms_set_section_flags): New function. (_bfd_vms_write_gsd): Don't write .vmsdebug section, handle section literals, fix indentation, handle section bfd and vms flags, don't output LIB$INITIALIZE symbol, fix handling of weak symbols, fix evax vs vax procedure descriptor, handle absolute symbols. * reloc.c (BFD_RELOC_ALPHA_NOP, BFD_RELOC_ALPHA_BSR, BFD_RELOC_ALPHA_LDA, BFD_RELOC_ALPHA_BOH): New relocations. * makefile.vms (DEFS): Fix flags for VMS. * bfdio.c (real_fopen): Handle multiple VMS fopen attributes. * bfd-in2.h: Regenerated. * libbfd.h: Regenerated.
2009-02-23 17:28:43 +08:00
Main header file.
1999-05-03 15:29:11 +08:00
Written by Klaus K"ampf (kkaempf@rmi.de)
2005-04-21 15:45:39 +08:00
This file is part of BFD, the Binary File Descriptor library.
1999-05-03 15:29:11 +08:00
2005-04-21 15:45:39 +08:00
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
2005-04-21 15:45:39 +08:00
(at your option) any later version.
1999-05-03 15:29:11 +08:00
2005-04-21 15:45:39 +08:00
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
1999-05-03 15:29:11 +08:00
2005-04-21 15:45:39 +08:00
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
MA 02110-1301, USA. */
1999-05-03 15:29:11 +08:00
#undef vms
1999-05-03 15:29:11 +08:00
#ifndef VMS_H
#define VMS_H
2010-04-14 Tristan Gingold <gingold@adacore.com> * Makefile.am (BFD32_BACKENDS): Remove vms-gsd.lo, vms-hdr.lo, vms-tir.lo, vms.lo and add vms-alpha.lo (BFD32_BACKENDS_CFILES): Remove vms-gsd.c, vms-hdr.c, vms-tir.c, vms.c and add vms-alpha.c * Makefile.in: Regenerate. * configure.in (TDEFINES): Adjust file list for vms_alpha_vec. Remove vms_vax_vec. * configure: Regenerate. * targets.c (vms_vax_vec): Remove the declaration. (_bfd_target_vector): Remove vms_vax_vec. * vms-alpha.c: New file. * vms-gsd.c: Removed, rewritten in vms-alpha.c * vms-hdr.c: Ditto. * vms-tir.c: Ditto. * vms.c: Ditto. * vms-misc.c: Fix indentation and comments. Replace most of #if VMS_DEBUG/vms_debug with vms_debug2. (_bfd_vms_hash_newfunc): Moved to vms-alpha.c (hash_string): Ditto. (_bfd_vms_length_hash_symbol): Ditto. (maybe_adjust_record_pointer_for_object): Ditto. (_bfd_vms_get_object_record): Ditto. (vms_get_remaining_object_record): Ditto. (_bfd_vms_push): Ditto. (_bfd_vms_pop): Ditto. (_bfd_vms_get_header_values): Removed. (_bfd_vms_get_first_record): Removed. (vms_get_remaining_image_record): Removed. (new_symbol): Removed. (_bfd_vms_enter_symbol): Removed. (_bfd_vms_save_sized_string): Use memcpy instead of strncpy. (_bfd_vms_output_begin): Remove rechead parameter. Replace bfd parameter with struct vms_rec_wr. (_bfd_vms_output_push): Removed and replaced by ... (_bfd_vms_output_begin_subrec): ... new function. (_bfd_vms_output_alignment): Replace bfd parameter with struct vms_rec_wr, and adjust. (_bfd_vms_output_check): Ditto (_bfd_vms_output_byte): Ditto. (_bfd_vms_output_short): Ditto. (_bfd_vms_output_long): Ditto. (_bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted): Ditto. (_bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (_bfd_vms_output_pop): Removed and replaced by ... (_bfd_vms_output_end_subrec): ... new function. (_bfd_vms_output_flush): Removed. (_bfd_vms_output_align): New function. (_bfd_vms_output_end): Add recwr parameter. Adjust for this new parameter. (vms_convert_to_var): New function imported from vms.c (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_get_module_name): Ditto. (get_vms_time_string): Ditto. (vms_time_to_time_t): Ditto. (vms_rawtime_to_time_t): Ditto. * vms.h: All macros for the VMS file format are now in include/vms. Prototypes for vms.c, vms-gsd.c, vms-misc.c, vms-hdr.c, vms-tir.c have been removed. (struct vms_symbol_struct, struct stack_struct): Moved to vms-alpha.c (struct fileinfo, struct srecinfo, struct lineinfo): Ditto. (struct funcinfo, struct vms_private_data_struct): Ditto. (struct vms_section_data_struct): Ditto. (struct vms_rec_rd, stryct vms_rec_wr): New declarations. (vms_get_module_name, get_vms_time_string): New declarations. (vms_time_to_time_t, vms_rawtime_to_time_t): Ditto. (_bfd_vms_output_begin_subrec, _bfd_vms_output_end_subrec): Ditto. (_bfd_vms_save_sized_string, _bfd_vms_save_counted_string): Adjusted. (_bfd_vms_output_begin, _bfd_vms_output_alignment): Ditto. (_bfd_vms_output_end,_bfd_vms_output_check): Ditto. (_bfd_vms_output_byte, _bfd_vms_output_short): Ditto. (_bfd_vms_output_long, _bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted, _bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (bfd_vms_set_section_flags): Ditto.
2010-04-14 17:24:59 +08:00
#include <time.h>
2009-02-23 Tristan Gingold <gingold@adacore.com> * vms.h: Update copyright year, fix comments, reorder declarations. (_bfd_save_vms_section): Remove the prototype. (EGPS_S_V_NO_SHIFT): New constant. (bfd_vms_set_section_flags): New prototype. (EGPS_S_B_ALIGN, EGPS_S_W_FLAGS, EGPS_S_L_ALLOC, EGPS_S_B_NAMLNG): New constants. (EGSY_S_W_FLAGS): Ditto. (EGSY_S_V_QUAD_VAL): Ditto. (ESDF_S_L_VALUE, ESDF_S_L_PSINDX, ESDF_S_B_NAMLNG): Ditto. (EGST_S_W_FLAGS, EGST_S_Q_LP_1, EGST_S_Q_LP_2, EGST_S_L_PSINDX, EGST_S_B_NAMLNG): Ditto. (ESRF_S_B_NAMLNG): Ditto. (ETIR_S_C_HEADER_SIZE): Ditto. (EGPS_S_V_ALLOC_64BIT): Ditto. (DST_S_C_EPILOG): Ditto. (DST_S_C_SRC_SETLNUM_L, DST_S_C_SRC_SETLNUM_W) : Ditto. (DST_S_C_SRC_INCRLNUM_B): Ditto. (DST_S_B_PCLINE_UNSBYTE, DST_S_W_PCLINE_UNSWORD): Ditto. (DST_S_L_PCLINE_UNSLONG): Ditto. (DST_S_B_MODBEG_NAME, DST_S_L_RTNBEG_ADDRESS) : Ditto (DST_S_B_RTNBEG_NAME, DST_S_L_RTNEND_SIZE): Ditto (DST_S_C_SOURCE_HEADER_SIZE): Ditto. (DST_S_B_SRC_DF_LENGTH, DST_S_W_SRC_DF_FILEID): Ditto. (DST_S_B_SRC_DF_FILENAME, DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_W_SRC_UNSWORD, DST_S_L_SRC_UNSLONG): Ditto. Add prototypes. (vms_section, vms_reloc): Remove types. (hdr_struc): Replaced by ... (hdr_struct): ... new type. (EMH_S_W_HDRTYP, EMH_S_B_STRLVL, EMH_S_L_ARCH1): New constants. (EMH_S_L_ARCH2, EMH_S_L_RECSIZ, EMH_S_B_NAMLNG): Ditto. (EMH_DATE_LENGTH): Ditto. (eom_struc): Replaced by ... (eom_struct): ... new type. (EEOM_S_L_TOTAL_LPS, EEOM_S_W_COMCOD, EEOM_S_B_TFRFLG): New constants. (EEOM_S_L_PSINDX, EEOM_S_L_TFRADR): Ditto. (EIHD_S_K_MAJORID, EIHD_S_K_MINORID, EIHD_S_K_EXE): Ditto. (EIHD_S_L_SIZE, EIHD_S_L_ISDOFF, EIHD_S_L_SYMDBGOFF): Ditto. (EIHD_S_Q_SYMVVA, EIHD_S_L_IMGTYPE): Ditto. (EISD_S_L_EISDSIZE, EISD_S_L_SECSIZE, EISD_S_Q_VIR_ADDR): Ditto. (EISD_S_L_FLAGS, EISD_S_L_VBN, EISD_S_R_CONTROL): Ditto. (EISD_S_L_IDENT, EISD_S_T_GBLNAM): Ditto. (EISD_S_M_GBL, EISD_S_M_CRF, EISD_S_M_DZRO, EISD_S_M_WRT): Ditto. (EISD_S_M_INITALCODE, EISD_S_M_BASED, EISD_S_M_FIXUPVEC): Ditto. (EISD_S_M_RESIDENT, EISD_S_M_VECTOR, EISD_S_M_PROTECT): Ditto. (EISD_S_M_LASTCLU, EISD_S_M_EXE, EISD_S_M_NONSHRADR): Ditto. (EISD_S_M_QUAD_LENGTH, EISD_S_M_ALLOC_64BIT): Ditto. (EIHS_S_L_DSTVBN, EIHS_S_L_DSTSIZE, EIHS_S_L_GSTVBN): Ditto. (EIHS_S_L_GSTSIZE, EIHS_S_L_DMTVBN, EIHS_S_L_DMTBYTES): Ditto. (DBG_S_L_DMT_MODBEG, DBG_S_L_DST_SIZE): Ditto. (DBG_S_W_DMT_PSECT_COUNT, DBG_S_C_DMT_HEADER_SIZE): Ditto. (DBG_S_L_DMT_PSECT_START, DBG_S_L_DMT_PSECT_LENGTH) (DBG_S_C_DMT_PSECT_SIZE): Ditto. (enum file_type_enum): New type. (struct location_struct): Removed. (struct fileinfo, struct srecinfo, struct lineinfo): New types. (struct funcinfo, struct module): Ditto. (struct vms_private_data_struct): Update fields. (struct vms_section_data_struct): New type. * vms.c: Update copyright year, fix comments, Fix includes for DECC, add prototypes. (vms_initialize): Use bfd_alloc instead of bfd_zalloc and remove some initializers. Use flavour to set is_vax, location_stack is removed. (struct pair): Declare. (fill_section_ptr): Initialize variables at declaration. Add guard to set SECTION_SYM flag, handlde und section. (vms_fixup_sections): Use struct pair for fill_section_ptr argument. (_bfd_vms_slurp_object_records): New function, replaces previous vms_object_p. (vms_slurp_module): New function. (vms_slurp_image): Ditto. (vms_object_p): Complete rewrite. (vms_mkobject): Use is_vax field to slect architecture. (free_reloc_stream): New function. (vms_convert_to_var): Ditto. (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_close_and_cleanup): Call free_reloc_stream, convert file to VAR format on VMS. (vms_new_section_hook): Set alignment to 0, allocate private data. (vms_get_section_contents): Load content. (vms_get_symbol_info): Handle undefined section. (vms_find_nearest_line): Handle. (alloc_reloc_stream): New function. (vms_slurp_reloc_table): Ditto. (vms_get_reloc_upper_bound): Make it real. (vms_canonicalize_reloc): Do the real work. (alpha_howto_table): Add ALPHA_R_NOP, ALPHA_R_BSR, ALPHA_R_LDA, ALPHA_R_BOH. (vms_bfd_reloc_type_lookup): Handle NOP, BSR, LDA and BOH. (vms_set_arch_mach): Check arch. (vms_set_section_contents): Copy the content after allocation. (vms_alpha_vec): Update object flags. * vms-tir.c: Update copyright year, fix comments, add prototypes for new functions. (dst_define_location): New function. (dst_restore_location): New function. (dst_retrieve_location): New function. (dst_check_allocation): New function. (image_dump): Call dst_check_allocation. (image_write_b): Ditto. (image_write_w): Ditto. (image_write_l): Ditto. (image_write_q): Ditto. (cmd_name): Handle STA_LW, STA_QW, STO_OFF, STO_IMM, STO_IMMR, STO_LW, STO_QW, OPR_ADD, CTL_SETRB, STC_LP_PSB, CTL_DFLOC, CTL_STLOC, CTL_STKDL. Call error handler instead of abort if name is not known. (etir_sta): Add quarter_relocs argument and set it. Fix cast. (etir_sto): Ditto. (etir_opr): Ditto, return FALSE in case of error. (etir_ctl): Add quarter_relocs argument and set it, fix cast. Fix CTL_DFLOC, CTL_STLOC, CTL_STKDL. (etir_stc): Add quarter_relocs argument and set it, fix cast. Fix STC_LP, STC_LP_PSB, STC_GBL and STC_CGA. Handle STC_LP_PSB, STC_BSR_GBL, STC_LDA_GBL, STC_BOH_GBL. Move STC_NOP_PS, STC_BSR_PS, STC_LDA_PS, STC_BOH_PS, STC_NBH_PS. Return FALSE in case of error. (tir_sta): Change sign of psect. (tir_ctl): Ditto. (tir_cmd): Fix cast. Makes tir_table static const. (etir_cmd): Add quarter_relocs argument, makes etir_table const, add argument to explain. (analyze_etir): Initialize maxptr, add quarter_relocs declaration, move some declarations into inner scopes. Handle quarter_relocs and STO_IMM. (_bfd_vms_slurp_tir): Use constant instead of hard-coded values. (_bfd_vms_slurp_relocs): New function. (_bfd_vms_decode_relocs): New function. (sto_imm): Rewritten. (start_first_etbt_record): New function. (start_another_etbt_record): Ditto. (etir_output_check): Ditto. (defer_reloc_p): Ditto. (_bfd_vms_write_tir): Remove nextoffset, convert a while-loop to a for-loop. Correctly deals with contents, deals with .vmsdebug, rewritte relocations handling. (_bfd_vms_write_tbt): Removed. (_bfd_vms_write_dbg): Ditto. * vms-misc.c: Update copyright year, Fix comments. (_bfd_vms_get_header_values): Use 'size' instead of 'length'. (maybe_adjust_record_pointer_for_object): New function. (_bfd_vms_get_first_record): New function, replaces ... (_bfd_vms_get_record): .. removed. (_bfd_vms_get_object_record): New function. (_bfd_vms_get_object_record): New function. (vms_get_remaining_object_record): New function, replaces ... (_bfd_vms_get_next_record): ... removed. (add_new_contents): Removed. (_bfd_save_vms_section): Removed. (_bfd_get_vms_section): Removed. (_bfd_vms_output_flush): Write in VAR format. (new_symbol): Don't make UND section. * vms-hdr.c: Update copyright year, update list of record handled. (_bfd_vms_slurp_hdr): rec_length renamed to rec_size. (_bfd_vms_write_hdr): Strip vms and unix patches, add comments, truncate module name at 31 characters, use constants instead of hard-coded value, write BFD version instead of a fixed string. (_bfd_vms_slurp_ihd): New function. (_bfd_vms_slurp_isd): Ditto. (_bfd_vms_slurp_ihs): Ditto. (new_module): Ditto. (parse_module): Ditto (build_module_list): Ditto. (module_find_nearest_line): Ditto. (_bfd_vms_find_nearest_dst_line): Ditto. (vms_slurp_debug): Ditto. (_bfd_vms_slurp_dbg): Ditto. (_bfd_vms_slurp_tbt): Ditto. (_bfd_vms_write_dbg): Ditto. (_bfd_vms_write_tbt): Ditto. * vms-gsd.c: Update copyright year, update list of records handled. (EVAX_LITERALS_NAME): New macro. (evax_section_flags): Add an entry for EVAX_LITERALS_NAME. (gpsflagdesc, gsyflagdesc): Moved out of _bfd_vms_slurp_gsd. (register_universal_symbol): New function and prototype. (_bfd_vms_slurp_gsd): Fix indentations and casts, improve debug messages, use constants instead of hard-coded value, fix missing endianness conversion, handle global symbol (SYMG). (bfd_vms_set_section_flags): New function. (_bfd_vms_write_gsd): Don't write .vmsdebug section, handle section literals, fix indentation, handle section bfd and vms flags, don't output LIB$INITIALIZE symbol, fix handling of weak symbols, fix evax vs vax procedure descriptor, handle absolute symbols. * reloc.c (BFD_RELOC_ALPHA_NOP, BFD_RELOC_ALPHA_BSR, BFD_RELOC_ALPHA_LDA, BFD_RELOC_ALPHA_BOH): New relocations. * makefile.vms (DEFS): Fix flags for VMS. * bfdio.c (real_fopen): Handle multiple VMS fopen attributes. * bfd-in2.h: Regenerated. * libbfd.h: Regenerated.
2009-02-23 17:28:43 +08:00
2010-04-14 Tristan Gingold <gingold@adacore.com> * Makefile.am (BFD32_BACKENDS): Remove vms-gsd.lo, vms-hdr.lo, vms-tir.lo, vms.lo and add vms-alpha.lo (BFD32_BACKENDS_CFILES): Remove vms-gsd.c, vms-hdr.c, vms-tir.c, vms.c and add vms-alpha.c * Makefile.in: Regenerate. * configure.in (TDEFINES): Adjust file list for vms_alpha_vec. Remove vms_vax_vec. * configure: Regenerate. * targets.c (vms_vax_vec): Remove the declaration. (_bfd_target_vector): Remove vms_vax_vec. * vms-alpha.c: New file. * vms-gsd.c: Removed, rewritten in vms-alpha.c * vms-hdr.c: Ditto. * vms-tir.c: Ditto. * vms.c: Ditto. * vms-misc.c: Fix indentation and comments. Replace most of #if VMS_DEBUG/vms_debug with vms_debug2. (_bfd_vms_hash_newfunc): Moved to vms-alpha.c (hash_string): Ditto. (_bfd_vms_length_hash_symbol): Ditto. (maybe_adjust_record_pointer_for_object): Ditto. (_bfd_vms_get_object_record): Ditto. (vms_get_remaining_object_record): Ditto. (_bfd_vms_push): Ditto. (_bfd_vms_pop): Ditto. (_bfd_vms_get_header_values): Removed. (_bfd_vms_get_first_record): Removed. (vms_get_remaining_image_record): Removed. (new_symbol): Removed. (_bfd_vms_enter_symbol): Removed. (_bfd_vms_save_sized_string): Use memcpy instead of strncpy. (_bfd_vms_output_begin): Remove rechead parameter. Replace bfd parameter with struct vms_rec_wr. (_bfd_vms_output_push): Removed and replaced by ... (_bfd_vms_output_begin_subrec): ... new function. (_bfd_vms_output_alignment): Replace bfd parameter with struct vms_rec_wr, and adjust. (_bfd_vms_output_check): Ditto (_bfd_vms_output_byte): Ditto. (_bfd_vms_output_short): Ditto. (_bfd_vms_output_long): Ditto. (_bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted): Ditto. (_bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (_bfd_vms_output_pop): Removed and replaced by ... (_bfd_vms_output_end_subrec): ... new function. (_bfd_vms_output_flush): Removed. (_bfd_vms_output_align): New function. (_bfd_vms_output_end): Add recwr parameter. Adjust for this new parameter. (vms_convert_to_var): New function imported from vms.c (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_get_module_name): Ditto. (get_vms_time_string): Ditto. (vms_time_to_time_t): Ditto. (vms_rawtime_to_time_t): Ditto. * vms.h: All macros for the VMS file format are now in include/vms. Prototypes for vms.c, vms-gsd.c, vms-misc.c, vms-hdr.c, vms-tir.c have been removed. (struct vms_symbol_struct, struct stack_struct): Moved to vms-alpha.c (struct fileinfo, struct srecinfo, struct lineinfo): Ditto. (struct funcinfo, struct vms_private_data_struct): Ditto. (struct vms_section_data_struct): Ditto. (struct vms_rec_rd, stryct vms_rec_wr): New declarations. (vms_get_module_name, get_vms_time_string): New declarations. (vms_time_to_time_t, vms_rawtime_to_time_t): Ditto. (_bfd_vms_output_begin_subrec, _bfd_vms_output_end_subrec): Ditto. (_bfd_vms_save_sized_string, _bfd_vms_save_counted_string): Adjusted. (_bfd_vms_output_begin, _bfd_vms_output_alignment): Ditto. (_bfd_vms_output_end,_bfd_vms_output_check): Ditto. (_bfd_vms_output_byte, _bfd_vms_output_short): Ditto. (_bfd_vms_output_long, _bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted, _bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (bfd_vms_set_section_flags): Ditto.
2010-04-14 17:24:59 +08:00
/* Size of a VMS block on disk. */
2010-04-14 Tristan Gingold <gingold@adacore.com> * Makefile.am (BFD32_BACKENDS): Remove vms-gsd.lo, vms-hdr.lo, vms-tir.lo, vms.lo and add vms-alpha.lo (BFD32_BACKENDS_CFILES): Remove vms-gsd.c, vms-hdr.c, vms-tir.c, vms.c and add vms-alpha.c * Makefile.in: Regenerate. * configure.in (TDEFINES): Adjust file list for vms_alpha_vec. Remove vms_vax_vec. * configure: Regenerate. * targets.c (vms_vax_vec): Remove the declaration. (_bfd_target_vector): Remove vms_vax_vec. * vms-alpha.c: New file. * vms-gsd.c: Removed, rewritten in vms-alpha.c * vms-hdr.c: Ditto. * vms-tir.c: Ditto. * vms.c: Ditto. * vms-misc.c: Fix indentation and comments. Replace most of #if VMS_DEBUG/vms_debug with vms_debug2. (_bfd_vms_hash_newfunc): Moved to vms-alpha.c (hash_string): Ditto. (_bfd_vms_length_hash_symbol): Ditto. (maybe_adjust_record_pointer_for_object): Ditto. (_bfd_vms_get_object_record): Ditto. (vms_get_remaining_object_record): Ditto. (_bfd_vms_push): Ditto. (_bfd_vms_pop): Ditto. (_bfd_vms_get_header_values): Removed. (_bfd_vms_get_first_record): Removed. (vms_get_remaining_image_record): Removed. (new_symbol): Removed. (_bfd_vms_enter_symbol): Removed. (_bfd_vms_save_sized_string): Use memcpy instead of strncpy. (_bfd_vms_output_begin): Remove rechead parameter. Replace bfd parameter with struct vms_rec_wr. (_bfd_vms_output_push): Removed and replaced by ... (_bfd_vms_output_begin_subrec): ... new function. (_bfd_vms_output_alignment): Replace bfd parameter with struct vms_rec_wr, and adjust. (_bfd_vms_output_check): Ditto (_bfd_vms_output_byte): Ditto. (_bfd_vms_output_short): Ditto. (_bfd_vms_output_long): Ditto. (_bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted): Ditto. (_bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (_bfd_vms_output_pop): Removed and replaced by ... (_bfd_vms_output_end_subrec): ... new function. (_bfd_vms_output_flush): Removed. (_bfd_vms_output_align): New function. (_bfd_vms_output_end): Add recwr parameter. Adjust for this new parameter. (vms_convert_to_var): New function imported from vms.c (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_get_module_name): Ditto. (get_vms_time_string): Ditto. (vms_time_to_time_t): Ditto. (vms_rawtime_to_time_t): Ditto. * vms.h: All macros for the VMS file format are now in include/vms. Prototypes for vms.c, vms-gsd.c, vms-misc.c, vms-hdr.c, vms-tir.c have been removed. (struct vms_symbol_struct, struct stack_struct): Moved to vms-alpha.c (struct fileinfo, struct srecinfo, struct lineinfo): Ditto. (struct funcinfo, struct vms_private_data_struct): Ditto. (struct vms_section_data_struct): Ditto. (struct vms_rec_rd, stryct vms_rec_wr): New declarations. (vms_get_module_name, get_vms_time_string): New declarations. (vms_time_to_time_t, vms_rawtime_to_time_t): Ditto. (_bfd_vms_output_begin_subrec, _bfd_vms_output_end_subrec): Ditto. (_bfd_vms_save_sized_string, _bfd_vms_save_counted_string): Adjusted. (_bfd_vms_output_begin, _bfd_vms_output_alignment): Ditto. (_bfd_vms_output_end,_bfd_vms_output_check): Ditto. (_bfd_vms_output_byte, _bfd_vms_output_short): Ditto. (_bfd_vms_output_long, _bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted, _bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (bfd_vms_set_section_flags): Ditto.
2010-04-14 17:24:59 +08:00
#define VMS_BLOCK_SIZE 512
2009-02-23 Tristan Gingold <gingold@adacore.com> * vms.h: Update copyright year, fix comments, reorder declarations. (_bfd_save_vms_section): Remove the prototype. (EGPS_S_V_NO_SHIFT): New constant. (bfd_vms_set_section_flags): New prototype. (EGPS_S_B_ALIGN, EGPS_S_W_FLAGS, EGPS_S_L_ALLOC, EGPS_S_B_NAMLNG): New constants. (EGSY_S_W_FLAGS): Ditto. (EGSY_S_V_QUAD_VAL): Ditto. (ESDF_S_L_VALUE, ESDF_S_L_PSINDX, ESDF_S_B_NAMLNG): Ditto. (EGST_S_W_FLAGS, EGST_S_Q_LP_1, EGST_S_Q_LP_2, EGST_S_L_PSINDX, EGST_S_B_NAMLNG): Ditto. (ESRF_S_B_NAMLNG): Ditto. (ETIR_S_C_HEADER_SIZE): Ditto. (EGPS_S_V_ALLOC_64BIT): Ditto. (DST_S_C_EPILOG): Ditto. (DST_S_C_SRC_SETLNUM_L, DST_S_C_SRC_SETLNUM_W) : Ditto. (DST_S_C_SRC_INCRLNUM_B): Ditto. (DST_S_B_PCLINE_UNSBYTE, DST_S_W_PCLINE_UNSWORD): Ditto. (DST_S_L_PCLINE_UNSLONG): Ditto. (DST_S_B_MODBEG_NAME, DST_S_L_RTNBEG_ADDRESS) : Ditto (DST_S_B_RTNBEG_NAME, DST_S_L_RTNEND_SIZE): Ditto (DST_S_C_SOURCE_HEADER_SIZE): Ditto. (DST_S_B_SRC_DF_LENGTH, DST_S_W_SRC_DF_FILEID): Ditto. (DST_S_B_SRC_DF_FILENAME, DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_W_SRC_UNSWORD, DST_S_L_SRC_UNSLONG): Ditto. Add prototypes. (vms_section, vms_reloc): Remove types. (hdr_struc): Replaced by ... (hdr_struct): ... new type. (EMH_S_W_HDRTYP, EMH_S_B_STRLVL, EMH_S_L_ARCH1): New constants. (EMH_S_L_ARCH2, EMH_S_L_RECSIZ, EMH_S_B_NAMLNG): Ditto. (EMH_DATE_LENGTH): Ditto. (eom_struc): Replaced by ... (eom_struct): ... new type. (EEOM_S_L_TOTAL_LPS, EEOM_S_W_COMCOD, EEOM_S_B_TFRFLG): New constants. (EEOM_S_L_PSINDX, EEOM_S_L_TFRADR): Ditto. (EIHD_S_K_MAJORID, EIHD_S_K_MINORID, EIHD_S_K_EXE): Ditto. (EIHD_S_L_SIZE, EIHD_S_L_ISDOFF, EIHD_S_L_SYMDBGOFF): Ditto. (EIHD_S_Q_SYMVVA, EIHD_S_L_IMGTYPE): Ditto. (EISD_S_L_EISDSIZE, EISD_S_L_SECSIZE, EISD_S_Q_VIR_ADDR): Ditto. (EISD_S_L_FLAGS, EISD_S_L_VBN, EISD_S_R_CONTROL): Ditto. (EISD_S_L_IDENT, EISD_S_T_GBLNAM): Ditto. (EISD_S_M_GBL, EISD_S_M_CRF, EISD_S_M_DZRO, EISD_S_M_WRT): Ditto. (EISD_S_M_INITALCODE, EISD_S_M_BASED, EISD_S_M_FIXUPVEC): Ditto. (EISD_S_M_RESIDENT, EISD_S_M_VECTOR, EISD_S_M_PROTECT): Ditto. (EISD_S_M_LASTCLU, EISD_S_M_EXE, EISD_S_M_NONSHRADR): Ditto. (EISD_S_M_QUAD_LENGTH, EISD_S_M_ALLOC_64BIT): Ditto. (EIHS_S_L_DSTVBN, EIHS_S_L_DSTSIZE, EIHS_S_L_GSTVBN): Ditto. (EIHS_S_L_GSTSIZE, EIHS_S_L_DMTVBN, EIHS_S_L_DMTBYTES): Ditto. (DBG_S_L_DMT_MODBEG, DBG_S_L_DST_SIZE): Ditto. (DBG_S_W_DMT_PSECT_COUNT, DBG_S_C_DMT_HEADER_SIZE): Ditto. (DBG_S_L_DMT_PSECT_START, DBG_S_L_DMT_PSECT_LENGTH) (DBG_S_C_DMT_PSECT_SIZE): Ditto. (enum file_type_enum): New type. (struct location_struct): Removed. (struct fileinfo, struct srecinfo, struct lineinfo): New types. (struct funcinfo, struct module): Ditto. (struct vms_private_data_struct): Update fields. (struct vms_section_data_struct): New type. * vms.c: Update copyright year, fix comments, Fix includes for DECC, add prototypes. (vms_initialize): Use bfd_alloc instead of bfd_zalloc and remove some initializers. Use flavour to set is_vax, location_stack is removed. (struct pair): Declare. (fill_section_ptr): Initialize variables at declaration. Add guard to set SECTION_SYM flag, handlde und section. (vms_fixup_sections): Use struct pair for fill_section_ptr argument. (_bfd_vms_slurp_object_records): New function, replaces previous vms_object_p. (vms_slurp_module): New function. (vms_slurp_image): Ditto. (vms_object_p): Complete rewrite. (vms_mkobject): Use is_vax field to slect architecture. (free_reloc_stream): New function. (vms_convert_to_var): Ditto. (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_close_and_cleanup): Call free_reloc_stream, convert file to VAR format on VMS. (vms_new_section_hook): Set alignment to 0, allocate private data. (vms_get_section_contents): Load content. (vms_get_symbol_info): Handle undefined section. (vms_find_nearest_line): Handle. (alloc_reloc_stream): New function. (vms_slurp_reloc_table): Ditto. (vms_get_reloc_upper_bound): Make it real. (vms_canonicalize_reloc): Do the real work. (alpha_howto_table): Add ALPHA_R_NOP, ALPHA_R_BSR, ALPHA_R_LDA, ALPHA_R_BOH. (vms_bfd_reloc_type_lookup): Handle NOP, BSR, LDA and BOH. (vms_set_arch_mach): Check arch. (vms_set_section_contents): Copy the content after allocation. (vms_alpha_vec): Update object flags. * vms-tir.c: Update copyright year, fix comments, add prototypes for new functions. (dst_define_location): New function. (dst_restore_location): New function. (dst_retrieve_location): New function. (dst_check_allocation): New function. (image_dump): Call dst_check_allocation. (image_write_b): Ditto. (image_write_w): Ditto. (image_write_l): Ditto. (image_write_q): Ditto. (cmd_name): Handle STA_LW, STA_QW, STO_OFF, STO_IMM, STO_IMMR, STO_LW, STO_QW, OPR_ADD, CTL_SETRB, STC_LP_PSB, CTL_DFLOC, CTL_STLOC, CTL_STKDL. Call error handler instead of abort if name is not known. (etir_sta): Add quarter_relocs argument and set it. Fix cast. (etir_sto): Ditto. (etir_opr): Ditto, return FALSE in case of error. (etir_ctl): Add quarter_relocs argument and set it, fix cast. Fix CTL_DFLOC, CTL_STLOC, CTL_STKDL. (etir_stc): Add quarter_relocs argument and set it, fix cast. Fix STC_LP, STC_LP_PSB, STC_GBL and STC_CGA. Handle STC_LP_PSB, STC_BSR_GBL, STC_LDA_GBL, STC_BOH_GBL. Move STC_NOP_PS, STC_BSR_PS, STC_LDA_PS, STC_BOH_PS, STC_NBH_PS. Return FALSE in case of error. (tir_sta): Change sign of psect. (tir_ctl): Ditto. (tir_cmd): Fix cast. Makes tir_table static const. (etir_cmd): Add quarter_relocs argument, makes etir_table const, add argument to explain. (analyze_etir): Initialize maxptr, add quarter_relocs declaration, move some declarations into inner scopes. Handle quarter_relocs and STO_IMM. (_bfd_vms_slurp_tir): Use constant instead of hard-coded values. (_bfd_vms_slurp_relocs): New function. (_bfd_vms_decode_relocs): New function. (sto_imm): Rewritten. (start_first_etbt_record): New function. (start_another_etbt_record): Ditto. (etir_output_check): Ditto. (defer_reloc_p): Ditto. (_bfd_vms_write_tir): Remove nextoffset, convert a while-loop to a for-loop. Correctly deals with contents, deals with .vmsdebug, rewritte relocations handling. (_bfd_vms_write_tbt): Removed. (_bfd_vms_write_dbg): Ditto. * vms-misc.c: Update copyright year, Fix comments. (_bfd_vms_get_header_values): Use 'size' instead of 'length'. (maybe_adjust_record_pointer_for_object): New function. (_bfd_vms_get_first_record): New function, replaces ... (_bfd_vms_get_record): .. removed. (_bfd_vms_get_object_record): New function. (_bfd_vms_get_object_record): New function. (vms_get_remaining_object_record): New function, replaces ... (_bfd_vms_get_next_record): ... removed. (add_new_contents): Removed. (_bfd_save_vms_section): Removed. (_bfd_get_vms_section): Removed. (_bfd_vms_output_flush): Write in VAR format. (new_symbol): Don't make UND section. * vms-hdr.c: Update copyright year, update list of record handled. (_bfd_vms_slurp_hdr): rec_length renamed to rec_size. (_bfd_vms_write_hdr): Strip vms and unix patches, add comments, truncate module name at 31 characters, use constants instead of hard-coded value, write BFD version instead of a fixed string. (_bfd_vms_slurp_ihd): New function. (_bfd_vms_slurp_isd): Ditto. (_bfd_vms_slurp_ihs): Ditto. (new_module): Ditto. (parse_module): Ditto (build_module_list): Ditto. (module_find_nearest_line): Ditto. (_bfd_vms_find_nearest_dst_line): Ditto. (vms_slurp_debug): Ditto. (_bfd_vms_slurp_dbg): Ditto. (_bfd_vms_slurp_tbt): Ditto. (_bfd_vms_write_dbg): Ditto. (_bfd_vms_write_tbt): Ditto. * vms-gsd.c: Update copyright year, update list of records handled. (EVAX_LITERALS_NAME): New macro. (evax_section_flags): Add an entry for EVAX_LITERALS_NAME. (gpsflagdesc, gsyflagdesc): Moved out of _bfd_vms_slurp_gsd. (register_universal_symbol): New function and prototype. (_bfd_vms_slurp_gsd): Fix indentations and casts, improve debug messages, use constants instead of hard-coded value, fix missing endianness conversion, handle global symbol (SYMG). (bfd_vms_set_section_flags): New function. (_bfd_vms_write_gsd): Don't write .vmsdebug section, handle section literals, fix indentation, handle section bfd and vms flags, don't output LIB$INITIALIZE symbol, fix handling of weak symbols, fix evax vs vax procedure descriptor, handle absolute symbols. * reloc.c (BFD_RELOC_ALPHA_NOP, BFD_RELOC_ALPHA_BSR, BFD_RELOC_ALPHA_LDA, BFD_RELOC_ALPHA_BOH): New relocations. * makefile.vms (DEFS): Fix flags for VMS. * bfdio.c (real_fopen): Handle multiple VMS fopen attributes. * bfd-in2.h: Regenerated. * libbfd.h: Regenerated.
2009-02-23 17:28:43 +08:00
/* Miscellaneous definitions. */
2005-04-21 15:45:39 +08:00
2009-02-23 Tristan Gingold <gingold@adacore.com> * vms.h: Update copyright year, fix comments, reorder declarations. (_bfd_save_vms_section): Remove the prototype. (EGPS_S_V_NO_SHIFT): New constant. (bfd_vms_set_section_flags): New prototype. (EGPS_S_B_ALIGN, EGPS_S_W_FLAGS, EGPS_S_L_ALLOC, EGPS_S_B_NAMLNG): New constants. (EGSY_S_W_FLAGS): Ditto. (EGSY_S_V_QUAD_VAL): Ditto. (ESDF_S_L_VALUE, ESDF_S_L_PSINDX, ESDF_S_B_NAMLNG): Ditto. (EGST_S_W_FLAGS, EGST_S_Q_LP_1, EGST_S_Q_LP_2, EGST_S_L_PSINDX, EGST_S_B_NAMLNG): Ditto. (ESRF_S_B_NAMLNG): Ditto. (ETIR_S_C_HEADER_SIZE): Ditto. (EGPS_S_V_ALLOC_64BIT): Ditto. (DST_S_C_EPILOG): Ditto. (DST_S_C_SRC_SETLNUM_L, DST_S_C_SRC_SETLNUM_W) : Ditto. (DST_S_C_SRC_INCRLNUM_B): Ditto. (DST_S_B_PCLINE_UNSBYTE, DST_S_W_PCLINE_UNSWORD): Ditto. (DST_S_L_PCLINE_UNSLONG): Ditto. (DST_S_B_MODBEG_NAME, DST_S_L_RTNBEG_ADDRESS) : Ditto (DST_S_B_RTNBEG_NAME, DST_S_L_RTNEND_SIZE): Ditto (DST_S_C_SOURCE_HEADER_SIZE): Ditto. (DST_S_B_SRC_DF_LENGTH, DST_S_W_SRC_DF_FILEID): Ditto. (DST_S_B_SRC_DF_FILENAME, DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_W_SRC_UNSWORD, DST_S_L_SRC_UNSLONG): Ditto. Add prototypes. (vms_section, vms_reloc): Remove types. (hdr_struc): Replaced by ... (hdr_struct): ... new type. (EMH_S_W_HDRTYP, EMH_S_B_STRLVL, EMH_S_L_ARCH1): New constants. (EMH_S_L_ARCH2, EMH_S_L_RECSIZ, EMH_S_B_NAMLNG): Ditto. (EMH_DATE_LENGTH): Ditto. (eom_struc): Replaced by ... (eom_struct): ... new type. (EEOM_S_L_TOTAL_LPS, EEOM_S_W_COMCOD, EEOM_S_B_TFRFLG): New constants. (EEOM_S_L_PSINDX, EEOM_S_L_TFRADR): Ditto. (EIHD_S_K_MAJORID, EIHD_S_K_MINORID, EIHD_S_K_EXE): Ditto. (EIHD_S_L_SIZE, EIHD_S_L_ISDOFF, EIHD_S_L_SYMDBGOFF): Ditto. (EIHD_S_Q_SYMVVA, EIHD_S_L_IMGTYPE): Ditto. (EISD_S_L_EISDSIZE, EISD_S_L_SECSIZE, EISD_S_Q_VIR_ADDR): Ditto. (EISD_S_L_FLAGS, EISD_S_L_VBN, EISD_S_R_CONTROL): Ditto. (EISD_S_L_IDENT, EISD_S_T_GBLNAM): Ditto. (EISD_S_M_GBL, EISD_S_M_CRF, EISD_S_M_DZRO, EISD_S_M_WRT): Ditto. (EISD_S_M_INITALCODE, EISD_S_M_BASED, EISD_S_M_FIXUPVEC): Ditto. (EISD_S_M_RESIDENT, EISD_S_M_VECTOR, EISD_S_M_PROTECT): Ditto. (EISD_S_M_LASTCLU, EISD_S_M_EXE, EISD_S_M_NONSHRADR): Ditto. (EISD_S_M_QUAD_LENGTH, EISD_S_M_ALLOC_64BIT): Ditto. (EIHS_S_L_DSTVBN, EIHS_S_L_DSTSIZE, EIHS_S_L_GSTVBN): Ditto. (EIHS_S_L_GSTSIZE, EIHS_S_L_DMTVBN, EIHS_S_L_DMTBYTES): Ditto. (DBG_S_L_DMT_MODBEG, DBG_S_L_DST_SIZE): Ditto. (DBG_S_W_DMT_PSECT_COUNT, DBG_S_C_DMT_HEADER_SIZE): Ditto. (DBG_S_L_DMT_PSECT_START, DBG_S_L_DMT_PSECT_LENGTH) (DBG_S_C_DMT_PSECT_SIZE): Ditto. (enum file_type_enum): New type. (struct location_struct): Removed. (struct fileinfo, struct srecinfo, struct lineinfo): New types. (struct funcinfo, struct module): Ditto. (struct vms_private_data_struct): Update fields. (struct vms_section_data_struct): New type. * vms.c: Update copyright year, fix comments, Fix includes for DECC, add prototypes. (vms_initialize): Use bfd_alloc instead of bfd_zalloc and remove some initializers. Use flavour to set is_vax, location_stack is removed. (struct pair): Declare. (fill_section_ptr): Initialize variables at declaration. Add guard to set SECTION_SYM flag, handlde und section. (vms_fixup_sections): Use struct pair for fill_section_ptr argument. (_bfd_vms_slurp_object_records): New function, replaces previous vms_object_p. (vms_slurp_module): New function. (vms_slurp_image): Ditto. (vms_object_p): Complete rewrite. (vms_mkobject): Use is_vax field to slect architecture. (free_reloc_stream): New function. (vms_convert_to_var): Ditto. (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_close_and_cleanup): Call free_reloc_stream, convert file to VAR format on VMS. (vms_new_section_hook): Set alignment to 0, allocate private data. (vms_get_section_contents): Load content. (vms_get_symbol_info): Handle undefined section. (vms_find_nearest_line): Handle. (alloc_reloc_stream): New function. (vms_slurp_reloc_table): Ditto. (vms_get_reloc_upper_bound): Make it real. (vms_canonicalize_reloc): Do the real work. (alpha_howto_table): Add ALPHA_R_NOP, ALPHA_R_BSR, ALPHA_R_LDA, ALPHA_R_BOH. (vms_bfd_reloc_type_lookup): Handle NOP, BSR, LDA and BOH. (vms_set_arch_mach): Check arch. (vms_set_section_contents): Copy the content after allocation. (vms_alpha_vec): Update object flags. * vms-tir.c: Update copyright year, fix comments, add prototypes for new functions. (dst_define_location): New function. (dst_restore_location): New function. (dst_retrieve_location): New function. (dst_check_allocation): New function. (image_dump): Call dst_check_allocation. (image_write_b): Ditto. (image_write_w): Ditto. (image_write_l): Ditto. (image_write_q): Ditto. (cmd_name): Handle STA_LW, STA_QW, STO_OFF, STO_IMM, STO_IMMR, STO_LW, STO_QW, OPR_ADD, CTL_SETRB, STC_LP_PSB, CTL_DFLOC, CTL_STLOC, CTL_STKDL. Call error handler instead of abort if name is not known. (etir_sta): Add quarter_relocs argument and set it. Fix cast. (etir_sto): Ditto. (etir_opr): Ditto, return FALSE in case of error. (etir_ctl): Add quarter_relocs argument and set it, fix cast. Fix CTL_DFLOC, CTL_STLOC, CTL_STKDL. (etir_stc): Add quarter_relocs argument and set it, fix cast. Fix STC_LP, STC_LP_PSB, STC_GBL and STC_CGA. Handle STC_LP_PSB, STC_BSR_GBL, STC_LDA_GBL, STC_BOH_GBL. Move STC_NOP_PS, STC_BSR_PS, STC_LDA_PS, STC_BOH_PS, STC_NBH_PS. Return FALSE in case of error. (tir_sta): Change sign of psect. (tir_ctl): Ditto. (tir_cmd): Fix cast. Makes tir_table static const. (etir_cmd): Add quarter_relocs argument, makes etir_table const, add argument to explain. (analyze_etir): Initialize maxptr, add quarter_relocs declaration, move some declarations into inner scopes. Handle quarter_relocs and STO_IMM. (_bfd_vms_slurp_tir): Use constant instead of hard-coded values. (_bfd_vms_slurp_relocs): New function. (_bfd_vms_decode_relocs): New function. (sto_imm): Rewritten. (start_first_etbt_record): New function. (start_another_etbt_record): Ditto. (etir_output_check): Ditto. (defer_reloc_p): Ditto. (_bfd_vms_write_tir): Remove nextoffset, convert a while-loop to a for-loop. Correctly deals with contents, deals with .vmsdebug, rewritte relocations handling. (_bfd_vms_write_tbt): Removed. (_bfd_vms_write_dbg): Ditto. * vms-misc.c: Update copyright year, Fix comments. (_bfd_vms_get_header_values): Use 'size' instead of 'length'. (maybe_adjust_record_pointer_for_object): New function. (_bfd_vms_get_first_record): New function, replaces ... (_bfd_vms_get_record): .. removed. (_bfd_vms_get_object_record): New function. (_bfd_vms_get_object_record): New function. (vms_get_remaining_object_record): New function, replaces ... (_bfd_vms_get_next_record): ... removed. (add_new_contents): Removed. (_bfd_save_vms_section): Removed. (_bfd_get_vms_section): Removed. (_bfd_vms_output_flush): Write in VAR format. (new_symbol): Don't make UND section. * vms-hdr.c: Update copyright year, update list of record handled. (_bfd_vms_slurp_hdr): rec_length renamed to rec_size. (_bfd_vms_write_hdr): Strip vms and unix patches, add comments, truncate module name at 31 characters, use constants instead of hard-coded value, write BFD version instead of a fixed string. (_bfd_vms_slurp_ihd): New function. (_bfd_vms_slurp_isd): Ditto. (_bfd_vms_slurp_ihs): Ditto. (new_module): Ditto. (parse_module): Ditto (build_module_list): Ditto. (module_find_nearest_line): Ditto. (_bfd_vms_find_nearest_dst_line): Ditto. (vms_slurp_debug): Ditto. (_bfd_vms_slurp_dbg): Ditto. (_bfd_vms_slurp_tbt): Ditto. (_bfd_vms_write_dbg): Ditto. (_bfd_vms_write_tbt): Ditto. * vms-gsd.c: Update copyright year, update list of records handled. (EVAX_LITERALS_NAME): New macro. (evax_section_flags): Add an entry for EVAX_LITERALS_NAME. (gpsflagdesc, gsyflagdesc): Moved out of _bfd_vms_slurp_gsd. (register_universal_symbol): New function and prototype. (_bfd_vms_slurp_gsd): Fix indentations and casts, improve debug messages, use constants instead of hard-coded value, fix missing endianness conversion, handle global symbol (SYMG). (bfd_vms_set_section_flags): New function. (_bfd_vms_write_gsd): Don't write .vmsdebug section, handle section literals, fix indentation, handle section bfd and vms flags, don't output LIB$INITIALIZE symbol, fix handling of weak symbols, fix evax vs vax procedure descriptor, handle absolute symbols. * reloc.c (BFD_RELOC_ALPHA_NOP, BFD_RELOC_ALPHA_BSR, BFD_RELOC_ALPHA_LDA, BFD_RELOC_ALPHA_BOH): New relocations. * makefile.vms (DEFS): Fix flags for VMS. * bfdio.c (real_fopen): Handle multiple VMS fopen attributes. * bfd-in2.h: Regenerated. * libbfd.h: Regenerated.
2009-02-23 17:28:43 +08:00
#define MAX_OUTREC_SIZE 4096
#define MIN_OUTREC_LUFT 64
/* File format. */
2010-04-14 Tristan Gingold <gingold@adacore.com> * Makefile.am (BFD32_BACKENDS): Remove vms-gsd.lo, vms-hdr.lo, vms-tir.lo, vms.lo and add vms-alpha.lo (BFD32_BACKENDS_CFILES): Remove vms-gsd.c, vms-hdr.c, vms-tir.c, vms.c and add vms-alpha.c * Makefile.in: Regenerate. * configure.in (TDEFINES): Adjust file list for vms_alpha_vec. Remove vms_vax_vec. * configure: Regenerate. * targets.c (vms_vax_vec): Remove the declaration. (_bfd_target_vector): Remove vms_vax_vec. * vms-alpha.c: New file. * vms-gsd.c: Removed, rewritten in vms-alpha.c * vms-hdr.c: Ditto. * vms-tir.c: Ditto. * vms.c: Ditto. * vms-misc.c: Fix indentation and comments. Replace most of #if VMS_DEBUG/vms_debug with vms_debug2. (_bfd_vms_hash_newfunc): Moved to vms-alpha.c (hash_string): Ditto. (_bfd_vms_length_hash_symbol): Ditto. (maybe_adjust_record_pointer_for_object): Ditto. (_bfd_vms_get_object_record): Ditto. (vms_get_remaining_object_record): Ditto. (_bfd_vms_push): Ditto. (_bfd_vms_pop): Ditto. (_bfd_vms_get_header_values): Removed. (_bfd_vms_get_first_record): Removed. (vms_get_remaining_image_record): Removed. (new_symbol): Removed. (_bfd_vms_enter_symbol): Removed. (_bfd_vms_save_sized_string): Use memcpy instead of strncpy. (_bfd_vms_output_begin): Remove rechead parameter. Replace bfd parameter with struct vms_rec_wr. (_bfd_vms_output_push): Removed and replaced by ... (_bfd_vms_output_begin_subrec): ... new function. (_bfd_vms_output_alignment): Replace bfd parameter with struct vms_rec_wr, and adjust. (_bfd_vms_output_check): Ditto (_bfd_vms_output_byte): Ditto. (_bfd_vms_output_short): Ditto. (_bfd_vms_output_long): Ditto. (_bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted): Ditto. (_bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (_bfd_vms_output_pop): Removed and replaced by ... (_bfd_vms_output_end_subrec): ... new function. (_bfd_vms_output_flush): Removed. (_bfd_vms_output_align): New function. (_bfd_vms_output_end): Add recwr parameter. Adjust for this new parameter. (vms_convert_to_var): New function imported from vms.c (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_get_module_name): Ditto. (get_vms_time_string): Ditto. (vms_time_to_time_t): Ditto. (vms_rawtime_to_time_t): Ditto. * vms.h: All macros for the VMS file format are now in include/vms. Prototypes for vms.c, vms-gsd.c, vms-misc.c, vms-hdr.c, vms-tir.c have been removed. (struct vms_symbol_struct, struct stack_struct): Moved to vms-alpha.c (struct fileinfo, struct srecinfo, struct lineinfo): Ditto. (struct funcinfo, struct vms_private_data_struct): Ditto. (struct vms_section_data_struct): Ditto. (struct vms_rec_rd, stryct vms_rec_wr): New declarations. (vms_get_module_name, get_vms_time_string): New declarations. (vms_time_to_time_t, vms_rawtime_to_time_t): Ditto. (_bfd_vms_output_begin_subrec, _bfd_vms_output_end_subrec): Ditto. (_bfd_vms_save_sized_string, _bfd_vms_save_counted_string): Adjusted. (_bfd_vms_output_begin, _bfd_vms_output_alignment): Ditto. (_bfd_vms_output_end,_bfd_vms_output_check): Ditto. (_bfd_vms_output_byte, _bfd_vms_output_short): Ditto. (_bfd_vms_output_long, _bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted, _bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (bfd_vms_set_section_flags): Ditto.
2010-04-14 17:24:59 +08:00
enum file_format_enum
{
/* Not yet known. */
FF_UNKNOWN,
/* Unix format. Each record is preceeded by the record length,
on 2 bytes. */
FF_FOREIGN,
/* Native (=VMS) format. The file only contains the content of the
records. This may also appear on Unix, depending on which tool
was used to transfer files. */
FF_NATIVE
};
2009-02-23 Tristan Gingold <gingold@adacore.com> * vms.h: Update copyright year, fix comments, reorder declarations. (_bfd_save_vms_section): Remove the prototype. (EGPS_S_V_NO_SHIFT): New constant. (bfd_vms_set_section_flags): New prototype. (EGPS_S_B_ALIGN, EGPS_S_W_FLAGS, EGPS_S_L_ALLOC, EGPS_S_B_NAMLNG): New constants. (EGSY_S_W_FLAGS): Ditto. (EGSY_S_V_QUAD_VAL): Ditto. (ESDF_S_L_VALUE, ESDF_S_L_PSINDX, ESDF_S_B_NAMLNG): Ditto. (EGST_S_W_FLAGS, EGST_S_Q_LP_1, EGST_S_Q_LP_2, EGST_S_L_PSINDX, EGST_S_B_NAMLNG): Ditto. (ESRF_S_B_NAMLNG): Ditto. (ETIR_S_C_HEADER_SIZE): Ditto. (EGPS_S_V_ALLOC_64BIT): Ditto. (DST_S_C_EPILOG): Ditto. (DST_S_C_SRC_SETLNUM_L, DST_S_C_SRC_SETLNUM_W) : Ditto. (DST_S_C_SRC_INCRLNUM_B): Ditto. (DST_S_B_PCLINE_UNSBYTE, DST_S_W_PCLINE_UNSWORD): Ditto. (DST_S_L_PCLINE_UNSLONG): Ditto. (DST_S_B_MODBEG_NAME, DST_S_L_RTNBEG_ADDRESS) : Ditto (DST_S_B_RTNBEG_NAME, DST_S_L_RTNEND_SIZE): Ditto (DST_S_C_SOURCE_HEADER_SIZE): Ditto. (DST_S_B_SRC_DF_LENGTH, DST_S_W_SRC_DF_FILEID): Ditto. (DST_S_B_SRC_DF_FILENAME, DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_W_SRC_UNSWORD, DST_S_L_SRC_UNSLONG): Ditto. Add prototypes. (vms_section, vms_reloc): Remove types. (hdr_struc): Replaced by ... (hdr_struct): ... new type. (EMH_S_W_HDRTYP, EMH_S_B_STRLVL, EMH_S_L_ARCH1): New constants. (EMH_S_L_ARCH2, EMH_S_L_RECSIZ, EMH_S_B_NAMLNG): Ditto. (EMH_DATE_LENGTH): Ditto. (eom_struc): Replaced by ... (eom_struct): ... new type. (EEOM_S_L_TOTAL_LPS, EEOM_S_W_COMCOD, EEOM_S_B_TFRFLG): New constants. (EEOM_S_L_PSINDX, EEOM_S_L_TFRADR): Ditto. (EIHD_S_K_MAJORID, EIHD_S_K_MINORID, EIHD_S_K_EXE): Ditto. (EIHD_S_L_SIZE, EIHD_S_L_ISDOFF, EIHD_S_L_SYMDBGOFF): Ditto. (EIHD_S_Q_SYMVVA, EIHD_S_L_IMGTYPE): Ditto. (EISD_S_L_EISDSIZE, EISD_S_L_SECSIZE, EISD_S_Q_VIR_ADDR): Ditto. (EISD_S_L_FLAGS, EISD_S_L_VBN, EISD_S_R_CONTROL): Ditto. (EISD_S_L_IDENT, EISD_S_T_GBLNAM): Ditto. (EISD_S_M_GBL, EISD_S_M_CRF, EISD_S_M_DZRO, EISD_S_M_WRT): Ditto. (EISD_S_M_INITALCODE, EISD_S_M_BASED, EISD_S_M_FIXUPVEC): Ditto. (EISD_S_M_RESIDENT, EISD_S_M_VECTOR, EISD_S_M_PROTECT): Ditto. (EISD_S_M_LASTCLU, EISD_S_M_EXE, EISD_S_M_NONSHRADR): Ditto. (EISD_S_M_QUAD_LENGTH, EISD_S_M_ALLOC_64BIT): Ditto. (EIHS_S_L_DSTVBN, EIHS_S_L_DSTSIZE, EIHS_S_L_GSTVBN): Ditto. (EIHS_S_L_GSTSIZE, EIHS_S_L_DMTVBN, EIHS_S_L_DMTBYTES): Ditto. (DBG_S_L_DMT_MODBEG, DBG_S_L_DST_SIZE): Ditto. (DBG_S_W_DMT_PSECT_COUNT, DBG_S_C_DMT_HEADER_SIZE): Ditto. (DBG_S_L_DMT_PSECT_START, DBG_S_L_DMT_PSECT_LENGTH) (DBG_S_C_DMT_PSECT_SIZE): Ditto. (enum file_type_enum): New type. (struct location_struct): Removed. (struct fileinfo, struct srecinfo, struct lineinfo): New types. (struct funcinfo, struct module): Ditto. (struct vms_private_data_struct): Update fields. (struct vms_section_data_struct): New type. * vms.c: Update copyright year, fix comments, Fix includes for DECC, add prototypes. (vms_initialize): Use bfd_alloc instead of bfd_zalloc and remove some initializers. Use flavour to set is_vax, location_stack is removed. (struct pair): Declare. (fill_section_ptr): Initialize variables at declaration. Add guard to set SECTION_SYM flag, handlde und section. (vms_fixup_sections): Use struct pair for fill_section_ptr argument. (_bfd_vms_slurp_object_records): New function, replaces previous vms_object_p. (vms_slurp_module): New function. (vms_slurp_image): Ditto. (vms_object_p): Complete rewrite. (vms_mkobject): Use is_vax field to slect architecture. (free_reloc_stream): New function. (vms_convert_to_var): Ditto. (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_close_and_cleanup): Call free_reloc_stream, convert file to VAR format on VMS. (vms_new_section_hook): Set alignment to 0, allocate private data. (vms_get_section_contents): Load content. (vms_get_symbol_info): Handle undefined section. (vms_find_nearest_line): Handle. (alloc_reloc_stream): New function. (vms_slurp_reloc_table): Ditto. (vms_get_reloc_upper_bound): Make it real. (vms_canonicalize_reloc): Do the real work. (alpha_howto_table): Add ALPHA_R_NOP, ALPHA_R_BSR, ALPHA_R_LDA, ALPHA_R_BOH. (vms_bfd_reloc_type_lookup): Handle NOP, BSR, LDA and BOH. (vms_set_arch_mach): Check arch. (vms_set_section_contents): Copy the content after allocation. (vms_alpha_vec): Update object flags. * vms-tir.c: Update copyright year, fix comments, add prototypes for new functions. (dst_define_location): New function. (dst_restore_location): New function. (dst_retrieve_location): New function. (dst_check_allocation): New function. (image_dump): Call dst_check_allocation. (image_write_b): Ditto. (image_write_w): Ditto. (image_write_l): Ditto. (image_write_q): Ditto. (cmd_name): Handle STA_LW, STA_QW, STO_OFF, STO_IMM, STO_IMMR, STO_LW, STO_QW, OPR_ADD, CTL_SETRB, STC_LP_PSB, CTL_DFLOC, CTL_STLOC, CTL_STKDL. Call error handler instead of abort if name is not known. (etir_sta): Add quarter_relocs argument and set it. Fix cast. (etir_sto): Ditto. (etir_opr): Ditto, return FALSE in case of error. (etir_ctl): Add quarter_relocs argument and set it, fix cast. Fix CTL_DFLOC, CTL_STLOC, CTL_STKDL. (etir_stc): Add quarter_relocs argument and set it, fix cast. Fix STC_LP, STC_LP_PSB, STC_GBL and STC_CGA. Handle STC_LP_PSB, STC_BSR_GBL, STC_LDA_GBL, STC_BOH_GBL. Move STC_NOP_PS, STC_BSR_PS, STC_LDA_PS, STC_BOH_PS, STC_NBH_PS. Return FALSE in case of error. (tir_sta): Change sign of psect. (tir_ctl): Ditto. (tir_cmd): Fix cast. Makes tir_table static const. (etir_cmd): Add quarter_relocs argument, makes etir_table const, add argument to explain. (analyze_etir): Initialize maxptr, add quarter_relocs declaration, move some declarations into inner scopes. Handle quarter_relocs and STO_IMM. (_bfd_vms_slurp_tir): Use constant instead of hard-coded values. (_bfd_vms_slurp_relocs): New function. (_bfd_vms_decode_relocs): New function. (sto_imm): Rewritten. (start_first_etbt_record): New function. (start_another_etbt_record): Ditto. (etir_output_check): Ditto. (defer_reloc_p): Ditto. (_bfd_vms_write_tir): Remove nextoffset, convert a while-loop to a for-loop. Correctly deals with contents, deals with .vmsdebug, rewritte relocations handling. (_bfd_vms_write_tbt): Removed. (_bfd_vms_write_dbg): Ditto. * vms-misc.c: Update copyright year, Fix comments. (_bfd_vms_get_header_values): Use 'size' instead of 'length'. (maybe_adjust_record_pointer_for_object): New function. (_bfd_vms_get_first_record): New function, replaces ... (_bfd_vms_get_record): .. removed. (_bfd_vms_get_object_record): New function. (_bfd_vms_get_object_record): New function. (vms_get_remaining_object_record): New function, replaces ... (_bfd_vms_get_next_record): ... removed. (add_new_contents): Removed. (_bfd_save_vms_section): Removed. (_bfd_get_vms_section): Removed. (_bfd_vms_output_flush): Write in VAR format. (new_symbol): Don't make UND section. * vms-hdr.c: Update copyright year, update list of record handled. (_bfd_vms_slurp_hdr): rec_length renamed to rec_size. (_bfd_vms_write_hdr): Strip vms and unix patches, add comments, truncate module name at 31 characters, use constants instead of hard-coded value, write BFD version instead of a fixed string. (_bfd_vms_slurp_ihd): New function. (_bfd_vms_slurp_isd): Ditto. (_bfd_vms_slurp_ihs): Ditto. (new_module): Ditto. (parse_module): Ditto (build_module_list): Ditto. (module_find_nearest_line): Ditto. (_bfd_vms_find_nearest_dst_line): Ditto. (vms_slurp_debug): Ditto. (_bfd_vms_slurp_dbg): Ditto. (_bfd_vms_slurp_tbt): Ditto. (_bfd_vms_write_dbg): Ditto. (_bfd_vms_write_tbt): Ditto. * vms-gsd.c: Update copyright year, update list of records handled. (EVAX_LITERALS_NAME): New macro. (evax_section_flags): Add an entry for EVAX_LITERALS_NAME. (gpsflagdesc, gsyflagdesc): Moved out of _bfd_vms_slurp_gsd. (register_universal_symbol): New function and prototype. (_bfd_vms_slurp_gsd): Fix indentations and casts, improve debug messages, use constants instead of hard-coded value, fix missing endianness conversion, handle global symbol (SYMG). (bfd_vms_set_section_flags): New function. (_bfd_vms_write_gsd): Don't write .vmsdebug section, handle section literals, fix indentation, handle section bfd and vms flags, don't output LIB$INITIALIZE symbol, fix handling of weak symbols, fix evax vs vax procedure descriptor, handle absolute symbols. * reloc.c (BFD_RELOC_ALPHA_NOP, BFD_RELOC_ALPHA_BSR, BFD_RELOC_ALPHA_LDA, BFD_RELOC_ALPHA_BOH): New relocations. * makefile.vms (DEFS): Fix flags for VMS. * bfdio.c (real_fopen): Handle multiple VMS fopen attributes. * bfd-in2.h: Regenerated. * libbfd.h: Regenerated.
2009-02-23 17:28:43 +08:00
2010-04-14 Tristan Gingold <gingold@adacore.com> * Makefile.am (BFD32_BACKENDS): Remove vms-gsd.lo, vms-hdr.lo, vms-tir.lo, vms.lo and add vms-alpha.lo (BFD32_BACKENDS_CFILES): Remove vms-gsd.c, vms-hdr.c, vms-tir.c, vms.c and add vms-alpha.c * Makefile.in: Regenerate. * configure.in (TDEFINES): Adjust file list for vms_alpha_vec. Remove vms_vax_vec. * configure: Regenerate. * targets.c (vms_vax_vec): Remove the declaration. (_bfd_target_vector): Remove vms_vax_vec. * vms-alpha.c: New file. * vms-gsd.c: Removed, rewritten in vms-alpha.c * vms-hdr.c: Ditto. * vms-tir.c: Ditto. * vms.c: Ditto. * vms-misc.c: Fix indentation and comments. Replace most of #if VMS_DEBUG/vms_debug with vms_debug2. (_bfd_vms_hash_newfunc): Moved to vms-alpha.c (hash_string): Ditto. (_bfd_vms_length_hash_symbol): Ditto. (maybe_adjust_record_pointer_for_object): Ditto. (_bfd_vms_get_object_record): Ditto. (vms_get_remaining_object_record): Ditto. (_bfd_vms_push): Ditto. (_bfd_vms_pop): Ditto. (_bfd_vms_get_header_values): Removed. (_bfd_vms_get_first_record): Removed. (vms_get_remaining_image_record): Removed. (new_symbol): Removed. (_bfd_vms_enter_symbol): Removed. (_bfd_vms_save_sized_string): Use memcpy instead of strncpy. (_bfd_vms_output_begin): Remove rechead parameter. Replace bfd parameter with struct vms_rec_wr. (_bfd_vms_output_push): Removed and replaced by ... (_bfd_vms_output_begin_subrec): ... new function. (_bfd_vms_output_alignment): Replace bfd parameter with struct vms_rec_wr, and adjust. (_bfd_vms_output_check): Ditto (_bfd_vms_output_byte): Ditto. (_bfd_vms_output_short): Ditto. (_bfd_vms_output_long): Ditto. (_bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted): Ditto. (_bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (_bfd_vms_output_pop): Removed and replaced by ... (_bfd_vms_output_end_subrec): ... new function. (_bfd_vms_output_flush): Removed. (_bfd_vms_output_align): New function. (_bfd_vms_output_end): Add recwr parameter. Adjust for this new parameter. (vms_convert_to_var): New function imported from vms.c (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_get_module_name): Ditto. (get_vms_time_string): Ditto. (vms_time_to_time_t): Ditto. (vms_rawtime_to_time_t): Ditto. * vms.h: All macros for the VMS file format are now in include/vms. Prototypes for vms.c, vms-gsd.c, vms-misc.c, vms-hdr.c, vms-tir.c have been removed. (struct vms_symbol_struct, struct stack_struct): Moved to vms-alpha.c (struct fileinfo, struct srecinfo, struct lineinfo): Ditto. (struct funcinfo, struct vms_private_data_struct): Ditto. (struct vms_section_data_struct): Ditto. (struct vms_rec_rd, stryct vms_rec_wr): New declarations. (vms_get_module_name, get_vms_time_string): New declarations. (vms_time_to_time_t, vms_rawtime_to_time_t): Ditto. (_bfd_vms_output_begin_subrec, _bfd_vms_output_end_subrec): Ditto. (_bfd_vms_save_sized_string, _bfd_vms_save_counted_string): Adjusted. (_bfd_vms_output_begin, _bfd_vms_output_alignment): Ditto. (_bfd_vms_output_end,_bfd_vms_output_check): Ditto. (_bfd_vms_output_byte, _bfd_vms_output_short): Ditto. (_bfd_vms_output_long, _bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted, _bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (bfd_vms_set_section_flags): Ditto.
2010-04-14 17:24:59 +08:00
/* VMS records input buffer. */
2009-02-23 Tristan Gingold <gingold@adacore.com> * vms.h: Update copyright year, fix comments, reorder declarations. (_bfd_save_vms_section): Remove the prototype. (EGPS_S_V_NO_SHIFT): New constant. (bfd_vms_set_section_flags): New prototype. (EGPS_S_B_ALIGN, EGPS_S_W_FLAGS, EGPS_S_L_ALLOC, EGPS_S_B_NAMLNG): New constants. (EGSY_S_W_FLAGS): Ditto. (EGSY_S_V_QUAD_VAL): Ditto. (ESDF_S_L_VALUE, ESDF_S_L_PSINDX, ESDF_S_B_NAMLNG): Ditto. (EGST_S_W_FLAGS, EGST_S_Q_LP_1, EGST_S_Q_LP_2, EGST_S_L_PSINDX, EGST_S_B_NAMLNG): Ditto. (ESRF_S_B_NAMLNG): Ditto. (ETIR_S_C_HEADER_SIZE): Ditto. (EGPS_S_V_ALLOC_64BIT): Ditto. (DST_S_C_EPILOG): Ditto. (DST_S_C_SRC_SETLNUM_L, DST_S_C_SRC_SETLNUM_W) : Ditto. (DST_S_C_SRC_INCRLNUM_B): Ditto. (DST_S_B_PCLINE_UNSBYTE, DST_S_W_PCLINE_UNSWORD): Ditto. (DST_S_L_PCLINE_UNSLONG): Ditto. (DST_S_B_MODBEG_NAME, DST_S_L_RTNBEG_ADDRESS) : Ditto (DST_S_B_RTNBEG_NAME, DST_S_L_RTNEND_SIZE): Ditto (DST_S_C_SOURCE_HEADER_SIZE): Ditto. (DST_S_B_SRC_DF_LENGTH, DST_S_W_SRC_DF_FILEID): Ditto. (DST_S_B_SRC_DF_FILENAME, DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_W_SRC_UNSWORD, DST_S_L_SRC_UNSLONG): Ditto. Add prototypes. (vms_section, vms_reloc): Remove types. (hdr_struc): Replaced by ... (hdr_struct): ... new type. (EMH_S_W_HDRTYP, EMH_S_B_STRLVL, EMH_S_L_ARCH1): New constants. (EMH_S_L_ARCH2, EMH_S_L_RECSIZ, EMH_S_B_NAMLNG): Ditto. (EMH_DATE_LENGTH): Ditto. (eom_struc): Replaced by ... (eom_struct): ... new type. (EEOM_S_L_TOTAL_LPS, EEOM_S_W_COMCOD, EEOM_S_B_TFRFLG): New constants. (EEOM_S_L_PSINDX, EEOM_S_L_TFRADR): Ditto. (EIHD_S_K_MAJORID, EIHD_S_K_MINORID, EIHD_S_K_EXE): Ditto. (EIHD_S_L_SIZE, EIHD_S_L_ISDOFF, EIHD_S_L_SYMDBGOFF): Ditto. (EIHD_S_Q_SYMVVA, EIHD_S_L_IMGTYPE): Ditto. (EISD_S_L_EISDSIZE, EISD_S_L_SECSIZE, EISD_S_Q_VIR_ADDR): Ditto. (EISD_S_L_FLAGS, EISD_S_L_VBN, EISD_S_R_CONTROL): Ditto. (EISD_S_L_IDENT, EISD_S_T_GBLNAM): Ditto. (EISD_S_M_GBL, EISD_S_M_CRF, EISD_S_M_DZRO, EISD_S_M_WRT): Ditto. (EISD_S_M_INITALCODE, EISD_S_M_BASED, EISD_S_M_FIXUPVEC): Ditto. (EISD_S_M_RESIDENT, EISD_S_M_VECTOR, EISD_S_M_PROTECT): Ditto. (EISD_S_M_LASTCLU, EISD_S_M_EXE, EISD_S_M_NONSHRADR): Ditto. (EISD_S_M_QUAD_LENGTH, EISD_S_M_ALLOC_64BIT): Ditto. (EIHS_S_L_DSTVBN, EIHS_S_L_DSTSIZE, EIHS_S_L_GSTVBN): Ditto. (EIHS_S_L_GSTSIZE, EIHS_S_L_DMTVBN, EIHS_S_L_DMTBYTES): Ditto. (DBG_S_L_DMT_MODBEG, DBG_S_L_DST_SIZE): Ditto. (DBG_S_W_DMT_PSECT_COUNT, DBG_S_C_DMT_HEADER_SIZE): Ditto. (DBG_S_L_DMT_PSECT_START, DBG_S_L_DMT_PSECT_LENGTH) (DBG_S_C_DMT_PSECT_SIZE): Ditto. (enum file_type_enum): New type. (struct location_struct): Removed. (struct fileinfo, struct srecinfo, struct lineinfo): New types. (struct funcinfo, struct module): Ditto. (struct vms_private_data_struct): Update fields. (struct vms_section_data_struct): New type. * vms.c: Update copyright year, fix comments, Fix includes for DECC, add prototypes. (vms_initialize): Use bfd_alloc instead of bfd_zalloc and remove some initializers. Use flavour to set is_vax, location_stack is removed. (struct pair): Declare. (fill_section_ptr): Initialize variables at declaration. Add guard to set SECTION_SYM flag, handlde und section. (vms_fixup_sections): Use struct pair for fill_section_ptr argument. (_bfd_vms_slurp_object_records): New function, replaces previous vms_object_p. (vms_slurp_module): New function. (vms_slurp_image): Ditto. (vms_object_p): Complete rewrite. (vms_mkobject): Use is_vax field to slect architecture. (free_reloc_stream): New function. (vms_convert_to_var): Ditto. (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_close_and_cleanup): Call free_reloc_stream, convert file to VAR format on VMS. (vms_new_section_hook): Set alignment to 0, allocate private data. (vms_get_section_contents): Load content. (vms_get_symbol_info): Handle undefined section. (vms_find_nearest_line): Handle. (alloc_reloc_stream): New function. (vms_slurp_reloc_table): Ditto. (vms_get_reloc_upper_bound): Make it real. (vms_canonicalize_reloc): Do the real work. (alpha_howto_table): Add ALPHA_R_NOP, ALPHA_R_BSR, ALPHA_R_LDA, ALPHA_R_BOH. (vms_bfd_reloc_type_lookup): Handle NOP, BSR, LDA and BOH. (vms_set_arch_mach): Check arch. (vms_set_section_contents): Copy the content after allocation. (vms_alpha_vec): Update object flags. * vms-tir.c: Update copyright year, fix comments, add prototypes for new functions. (dst_define_location): New function. (dst_restore_location): New function. (dst_retrieve_location): New function. (dst_check_allocation): New function. (image_dump): Call dst_check_allocation. (image_write_b): Ditto. (image_write_w): Ditto. (image_write_l): Ditto. (image_write_q): Ditto. (cmd_name): Handle STA_LW, STA_QW, STO_OFF, STO_IMM, STO_IMMR, STO_LW, STO_QW, OPR_ADD, CTL_SETRB, STC_LP_PSB, CTL_DFLOC, CTL_STLOC, CTL_STKDL. Call error handler instead of abort if name is not known. (etir_sta): Add quarter_relocs argument and set it. Fix cast. (etir_sto): Ditto. (etir_opr): Ditto, return FALSE in case of error. (etir_ctl): Add quarter_relocs argument and set it, fix cast. Fix CTL_DFLOC, CTL_STLOC, CTL_STKDL. (etir_stc): Add quarter_relocs argument and set it, fix cast. Fix STC_LP, STC_LP_PSB, STC_GBL and STC_CGA. Handle STC_LP_PSB, STC_BSR_GBL, STC_LDA_GBL, STC_BOH_GBL. Move STC_NOP_PS, STC_BSR_PS, STC_LDA_PS, STC_BOH_PS, STC_NBH_PS. Return FALSE in case of error. (tir_sta): Change sign of psect. (tir_ctl): Ditto. (tir_cmd): Fix cast. Makes tir_table static const. (etir_cmd): Add quarter_relocs argument, makes etir_table const, add argument to explain. (analyze_etir): Initialize maxptr, add quarter_relocs declaration, move some declarations into inner scopes. Handle quarter_relocs and STO_IMM. (_bfd_vms_slurp_tir): Use constant instead of hard-coded values. (_bfd_vms_slurp_relocs): New function. (_bfd_vms_decode_relocs): New function. (sto_imm): Rewritten. (start_first_etbt_record): New function. (start_another_etbt_record): Ditto. (etir_output_check): Ditto. (defer_reloc_p): Ditto. (_bfd_vms_write_tir): Remove nextoffset, convert a while-loop to a for-loop. Correctly deals with contents, deals with .vmsdebug, rewritte relocations handling. (_bfd_vms_write_tbt): Removed. (_bfd_vms_write_dbg): Ditto. * vms-misc.c: Update copyright year, Fix comments. (_bfd_vms_get_header_values): Use 'size' instead of 'length'. (maybe_adjust_record_pointer_for_object): New function. (_bfd_vms_get_first_record): New function, replaces ... (_bfd_vms_get_record): .. removed. (_bfd_vms_get_object_record): New function. (_bfd_vms_get_object_record): New function. (vms_get_remaining_object_record): New function, replaces ... (_bfd_vms_get_next_record): ... removed. (add_new_contents): Removed. (_bfd_save_vms_section): Removed. (_bfd_get_vms_section): Removed. (_bfd_vms_output_flush): Write in VAR format. (new_symbol): Don't make UND section. * vms-hdr.c: Update copyright year, update list of record handled. (_bfd_vms_slurp_hdr): rec_length renamed to rec_size. (_bfd_vms_write_hdr): Strip vms and unix patches, add comments, truncate module name at 31 characters, use constants instead of hard-coded value, write BFD version instead of a fixed string. (_bfd_vms_slurp_ihd): New function. (_bfd_vms_slurp_isd): Ditto. (_bfd_vms_slurp_ihs): Ditto. (new_module): Ditto. (parse_module): Ditto (build_module_list): Ditto. (module_find_nearest_line): Ditto. (_bfd_vms_find_nearest_dst_line): Ditto. (vms_slurp_debug): Ditto. (_bfd_vms_slurp_dbg): Ditto. (_bfd_vms_slurp_tbt): Ditto. (_bfd_vms_write_dbg): Ditto. (_bfd_vms_write_tbt): Ditto. * vms-gsd.c: Update copyright year, update list of records handled. (EVAX_LITERALS_NAME): New macro. (evax_section_flags): Add an entry for EVAX_LITERALS_NAME. (gpsflagdesc, gsyflagdesc): Moved out of _bfd_vms_slurp_gsd. (register_universal_symbol): New function and prototype. (_bfd_vms_slurp_gsd): Fix indentations and casts, improve debug messages, use constants instead of hard-coded value, fix missing endianness conversion, handle global symbol (SYMG). (bfd_vms_set_section_flags): New function. (_bfd_vms_write_gsd): Don't write .vmsdebug section, handle section literals, fix indentation, handle section bfd and vms flags, don't output LIB$INITIALIZE symbol, fix handling of weak symbols, fix evax vs vax procedure descriptor, handle absolute symbols. * reloc.c (BFD_RELOC_ALPHA_NOP, BFD_RELOC_ALPHA_BSR, BFD_RELOC_ALPHA_LDA, BFD_RELOC_ALPHA_BOH): New relocations. * makefile.vms (DEFS): Fix flags for VMS. * bfdio.c (real_fopen): Handle multiple VMS fopen attributes. * bfd-in2.h: Regenerated. * libbfd.h: Regenerated.
2009-02-23 17:28:43 +08:00
2010-04-14 Tristan Gingold <gingold@adacore.com> * Makefile.am (BFD32_BACKENDS): Remove vms-gsd.lo, vms-hdr.lo, vms-tir.lo, vms.lo and add vms-alpha.lo (BFD32_BACKENDS_CFILES): Remove vms-gsd.c, vms-hdr.c, vms-tir.c, vms.c and add vms-alpha.c * Makefile.in: Regenerate. * configure.in (TDEFINES): Adjust file list for vms_alpha_vec. Remove vms_vax_vec. * configure: Regenerate. * targets.c (vms_vax_vec): Remove the declaration. (_bfd_target_vector): Remove vms_vax_vec. * vms-alpha.c: New file. * vms-gsd.c: Removed, rewritten in vms-alpha.c * vms-hdr.c: Ditto. * vms-tir.c: Ditto. * vms.c: Ditto. * vms-misc.c: Fix indentation and comments. Replace most of #if VMS_DEBUG/vms_debug with vms_debug2. (_bfd_vms_hash_newfunc): Moved to vms-alpha.c (hash_string): Ditto. (_bfd_vms_length_hash_symbol): Ditto. (maybe_adjust_record_pointer_for_object): Ditto. (_bfd_vms_get_object_record): Ditto. (vms_get_remaining_object_record): Ditto. (_bfd_vms_push): Ditto. (_bfd_vms_pop): Ditto. (_bfd_vms_get_header_values): Removed. (_bfd_vms_get_first_record): Removed. (vms_get_remaining_image_record): Removed. (new_symbol): Removed. (_bfd_vms_enter_symbol): Removed. (_bfd_vms_save_sized_string): Use memcpy instead of strncpy. (_bfd_vms_output_begin): Remove rechead parameter. Replace bfd parameter with struct vms_rec_wr. (_bfd_vms_output_push): Removed and replaced by ... (_bfd_vms_output_begin_subrec): ... new function. (_bfd_vms_output_alignment): Replace bfd parameter with struct vms_rec_wr, and adjust. (_bfd_vms_output_check): Ditto (_bfd_vms_output_byte): Ditto. (_bfd_vms_output_short): Ditto. (_bfd_vms_output_long): Ditto. (_bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted): Ditto. (_bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (_bfd_vms_output_pop): Removed and replaced by ... (_bfd_vms_output_end_subrec): ... new function. (_bfd_vms_output_flush): Removed. (_bfd_vms_output_align): New function. (_bfd_vms_output_end): Add recwr parameter. Adjust for this new parameter. (vms_convert_to_var): New function imported from vms.c (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_get_module_name): Ditto. (get_vms_time_string): Ditto. (vms_time_to_time_t): Ditto. (vms_rawtime_to_time_t): Ditto. * vms.h: All macros for the VMS file format are now in include/vms. Prototypes for vms.c, vms-gsd.c, vms-misc.c, vms-hdr.c, vms-tir.c have been removed. (struct vms_symbol_struct, struct stack_struct): Moved to vms-alpha.c (struct fileinfo, struct srecinfo, struct lineinfo): Ditto. (struct funcinfo, struct vms_private_data_struct): Ditto. (struct vms_section_data_struct): Ditto. (struct vms_rec_rd, stryct vms_rec_wr): New declarations. (vms_get_module_name, get_vms_time_string): New declarations. (vms_time_to_time_t, vms_rawtime_to_time_t): Ditto. (_bfd_vms_output_begin_subrec, _bfd_vms_output_end_subrec): Ditto. (_bfd_vms_save_sized_string, _bfd_vms_save_counted_string): Adjusted. (_bfd_vms_output_begin, _bfd_vms_output_alignment): Ditto. (_bfd_vms_output_end,_bfd_vms_output_check): Ditto. (_bfd_vms_output_byte, _bfd_vms_output_short): Ditto. (_bfd_vms_output_long, _bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted, _bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (bfd_vms_set_section_flags): Ditto.
2010-04-14 17:24:59 +08:00
struct vms_rec_rd
2009-02-23 Tristan Gingold <gingold@adacore.com> * vms.h: Update copyright year, fix comments, reorder declarations. (_bfd_save_vms_section): Remove the prototype. (EGPS_S_V_NO_SHIFT): New constant. (bfd_vms_set_section_flags): New prototype. (EGPS_S_B_ALIGN, EGPS_S_W_FLAGS, EGPS_S_L_ALLOC, EGPS_S_B_NAMLNG): New constants. (EGSY_S_W_FLAGS): Ditto. (EGSY_S_V_QUAD_VAL): Ditto. (ESDF_S_L_VALUE, ESDF_S_L_PSINDX, ESDF_S_B_NAMLNG): Ditto. (EGST_S_W_FLAGS, EGST_S_Q_LP_1, EGST_S_Q_LP_2, EGST_S_L_PSINDX, EGST_S_B_NAMLNG): Ditto. (ESRF_S_B_NAMLNG): Ditto. (ETIR_S_C_HEADER_SIZE): Ditto. (EGPS_S_V_ALLOC_64BIT): Ditto. (DST_S_C_EPILOG): Ditto. (DST_S_C_SRC_SETLNUM_L, DST_S_C_SRC_SETLNUM_W) : Ditto. (DST_S_C_SRC_INCRLNUM_B): Ditto. (DST_S_B_PCLINE_UNSBYTE, DST_S_W_PCLINE_UNSWORD): Ditto. (DST_S_L_PCLINE_UNSLONG): Ditto. (DST_S_B_MODBEG_NAME, DST_S_L_RTNBEG_ADDRESS) : Ditto (DST_S_B_RTNBEG_NAME, DST_S_L_RTNEND_SIZE): Ditto (DST_S_C_SOURCE_HEADER_SIZE): Ditto. (DST_S_B_SRC_DF_LENGTH, DST_S_W_SRC_DF_FILEID): Ditto. (DST_S_B_SRC_DF_FILENAME, DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_W_SRC_UNSWORD, DST_S_L_SRC_UNSLONG): Ditto. Add prototypes. (vms_section, vms_reloc): Remove types. (hdr_struc): Replaced by ... (hdr_struct): ... new type. (EMH_S_W_HDRTYP, EMH_S_B_STRLVL, EMH_S_L_ARCH1): New constants. (EMH_S_L_ARCH2, EMH_S_L_RECSIZ, EMH_S_B_NAMLNG): Ditto. (EMH_DATE_LENGTH): Ditto. (eom_struc): Replaced by ... (eom_struct): ... new type. (EEOM_S_L_TOTAL_LPS, EEOM_S_W_COMCOD, EEOM_S_B_TFRFLG): New constants. (EEOM_S_L_PSINDX, EEOM_S_L_TFRADR): Ditto. (EIHD_S_K_MAJORID, EIHD_S_K_MINORID, EIHD_S_K_EXE): Ditto. (EIHD_S_L_SIZE, EIHD_S_L_ISDOFF, EIHD_S_L_SYMDBGOFF): Ditto. (EIHD_S_Q_SYMVVA, EIHD_S_L_IMGTYPE): Ditto. (EISD_S_L_EISDSIZE, EISD_S_L_SECSIZE, EISD_S_Q_VIR_ADDR): Ditto. (EISD_S_L_FLAGS, EISD_S_L_VBN, EISD_S_R_CONTROL): Ditto. (EISD_S_L_IDENT, EISD_S_T_GBLNAM): Ditto. (EISD_S_M_GBL, EISD_S_M_CRF, EISD_S_M_DZRO, EISD_S_M_WRT): Ditto. (EISD_S_M_INITALCODE, EISD_S_M_BASED, EISD_S_M_FIXUPVEC): Ditto. (EISD_S_M_RESIDENT, EISD_S_M_VECTOR, EISD_S_M_PROTECT): Ditto. (EISD_S_M_LASTCLU, EISD_S_M_EXE, EISD_S_M_NONSHRADR): Ditto. (EISD_S_M_QUAD_LENGTH, EISD_S_M_ALLOC_64BIT): Ditto. (EIHS_S_L_DSTVBN, EIHS_S_L_DSTSIZE, EIHS_S_L_GSTVBN): Ditto. (EIHS_S_L_GSTSIZE, EIHS_S_L_DMTVBN, EIHS_S_L_DMTBYTES): Ditto. (DBG_S_L_DMT_MODBEG, DBG_S_L_DST_SIZE): Ditto. (DBG_S_W_DMT_PSECT_COUNT, DBG_S_C_DMT_HEADER_SIZE): Ditto. (DBG_S_L_DMT_PSECT_START, DBG_S_L_DMT_PSECT_LENGTH) (DBG_S_C_DMT_PSECT_SIZE): Ditto. (enum file_type_enum): New type. (struct location_struct): Removed. (struct fileinfo, struct srecinfo, struct lineinfo): New types. (struct funcinfo, struct module): Ditto. (struct vms_private_data_struct): Update fields. (struct vms_section_data_struct): New type. * vms.c: Update copyright year, fix comments, Fix includes for DECC, add prototypes. (vms_initialize): Use bfd_alloc instead of bfd_zalloc and remove some initializers. Use flavour to set is_vax, location_stack is removed. (struct pair): Declare. (fill_section_ptr): Initialize variables at declaration. Add guard to set SECTION_SYM flag, handlde und section. (vms_fixup_sections): Use struct pair for fill_section_ptr argument. (_bfd_vms_slurp_object_records): New function, replaces previous vms_object_p. (vms_slurp_module): New function. (vms_slurp_image): Ditto. (vms_object_p): Complete rewrite. (vms_mkobject): Use is_vax field to slect architecture. (free_reloc_stream): New function. (vms_convert_to_var): Ditto. (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_close_and_cleanup): Call free_reloc_stream, convert file to VAR format on VMS. (vms_new_section_hook): Set alignment to 0, allocate private data. (vms_get_section_contents): Load content. (vms_get_symbol_info): Handle undefined section. (vms_find_nearest_line): Handle. (alloc_reloc_stream): New function. (vms_slurp_reloc_table): Ditto. (vms_get_reloc_upper_bound): Make it real. (vms_canonicalize_reloc): Do the real work. (alpha_howto_table): Add ALPHA_R_NOP, ALPHA_R_BSR, ALPHA_R_LDA, ALPHA_R_BOH. (vms_bfd_reloc_type_lookup): Handle NOP, BSR, LDA and BOH. (vms_set_arch_mach): Check arch. (vms_set_section_contents): Copy the content after allocation. (vms_alpha_vec): Update object flags. * vms-tir.c: Update copyright year, fix comments, add prototypes for new functions. (dst_define_location): New function. (dst_restore_location): New function. (dst_retrieve_location): New function. (dst_check_allocation): New function. (image_dump): Call dst_check_allocation. (image_write_b): Ditto. (image_write_w): Ditto. (image_write_l): Ditto. (image_write_q): Ditto. (cmd_name): Handle STA_LW, STA_QW, STO_OFF, STO_IMM, STO_IMMR, STO_LW, STO_QW, OPR_ADD, CTL_SETRB, STC_LP_PSB, CTL_DFLOC, CTL_STLOC, CTL_STKDL. Call error handler instead of abort if name is not known. (etir_sta): Add quarter_relocs argument and set it. Fix cast. (etir_sto): Ditto. (etir_opr): Ditto, return FALSE in case of error. (etir_ctl): Add quarter_relocs argument and set it, fix cast. Fix CTL_DFLOC, CTL_STLOC, CTL_STKDL. (etir_stc): Add quarter_relocs argument and set it, fix cast. Fix STC_LP, STC_LP_PSB, STC_GBL and STC_CGA. Handle STC_LP_PSB, STC_BSR_GBL, STC_LDA_GBL, STC_BOH_GBL. Move STC_NOP_PS, STC_BSR_PS, STC_LDA_PS, STC_BOH_PS, STC_NBH_PS. Return FALSE in case of error. (tir_sta): Change sign of psect. (tir_ctl): Ditto. (tir_cmd): Fix cast. Makes tir_table static const. (etir_cmd): Add quarter_relocs argument, makes etir_table const, add argument to explain. (analyze_etir): Initialize maxptr, add quarter_relocs declaration, move some declarations into inner scopes. Handle quarter_relocs and STO_IMM. (_bfd_vms_slurp_tir): Use constant instead of hard-coded values. (_bfd_vms_slurp_relocs): New function. (_bfd_vms_decode_relocs): New function. (sto_imm): Rewritten. (start_first_etbt_record): New function. (start_another_etbt_record): Ditto. (etir_output_check): Ditto. (defer_reloc_p): Ditto. (_bfd_vms_write_tir): Remove nextoffset, convert a while-loop to a for-loop. Correctly deals with contents, deals with .vmsdebug, rewritte relocations handling. (_bfd_vms_write_tbt): Removed. (_bfd_vms_write_dbg): Ditto. * vms-misc.c: Update copyright year, Fix comments. (_bfd_vms_get_header_values): Use 'size' instead of 'length'. (maybe_adjust_record_pointer_for_object): New function. (_bfd_vms_get_first_record): New function, replaces ... (_bfd_vms_get_record): .. removed. (_bfd_vms_get_object_record): New function. (_bfd_vms_get_object_record): New function. (vms_get_remaining_object_record): New function, replaces ... (_bfd_vms_get_next_record): ... removed. (add_new_contents): Removed. (_bfd_save_vms_section): Removed. (_bfd_get_vms_section): Removed. (_bfd_vms_output_flush): Write in VAR format. (new_symbol): Don't make UND section. * vms-hdr.c: Update copyright year, update list of record handled. (_bfd_vms_slurp_hdr): rec_length renamed to rec_size. (_bfd_vms_write_hdr): Strip vms and unix patches, add comments, truncate module name at 31 characters, use constants instead of hard-coded value, write BFD version instead of a fixed string. (_bfd_vms_slurp_ihd): New function. (_bfd_vms_slurp_isd): Ditto. (_bfd_vms_slurp_ihs): Ditto. (new_module): Ditto. (parse_module): Ditto (build_module_list): Ditto. (module_find_nearest_line): Ditto. (_bfd_vms_find_nearest_dst_line): Ditto. (vms_slurp_debug): Ditto. (_bfd_vms_slurp_dbg): Ditto. (_bfd_vms_slurp_tbt): Ditto. (_bfd_vms_write_dbg): Ditto. (_bfd_vms_write_tbt): Ditto. * vms-gsd.c: Update copyright year, update list of records handled. (EVAX_LITERALS_NAME): New macro. (evax_section_flags): Add an entry for EVAX_LITERALS_NAME. (gpsflagdesc, gsyflagdesc): Moved out of _bfd_vms_slurp_gsd. (register_universal_symbol): New function and prototype. (_bfd_vms_slurp_gsd): Fix indentations and casts, improve debug messages, use constants instead of hard-coded value, fix missing endianness conversion, handle global symbol (SYMG). (bfd_vms_set_section_flags): New function. (_bfd_vms_write_gsd): Don't write .vmsdebug section, handle section literals, fix indentation, handle section bfd and vms flags, don't output LIB$INITIALIZE symbol, fix handling of weak symbols, fix evax vs vax procedure descriptor, handle absolute symbols. * reloc.c (BFD_RELOC_ALPHA_NOP, BFD_RELOC_ALPHA_BSR, BFD_RELOC_ALPHA_LDA, BFD_RELOC_ALPHA_BOH): New relocations. * makefile.vms (DEFS): Fix flags for VMS. * bfdio.c (real_fopen): Handle multiple VMS fopen attributes. * bfd-in2.h: Regenerated. * libbfd.h: Regenerated.
2009-02-23 17:28:43 +08:00
{
2010-04-14 Tristan Gingold <gingold@adacore.com> * Makefile.am (BFD32_BACKENDS): Remove vms-gsd.lo, vms-hdr.lo, vms-tir.lo, vms.lo and add vms-alpha.lo (BFD32_BACKENDS_CFILES): Remove vms-gsd.c, vms-hdr.c, vms-tir.c, vms.c and add vms-alpha.c * Makefile.in: Regenerate. * configure.in (TDEFINES): Adjust file list for vms_alpha_vec. Remove vms_vax_vec. * configure: Regenerate. * targets.c (vms_vax_vec): Remove the declaration. (_bfd_target_vector): Remove vms_vax_vec. * vms-alpha.c: New file. * vms-gsd.c: Removed, rewritten in vms-alpha.c * vms-hdr.c: Ditto. * vms-tir.c: Ditto. * vms.c: Ditto. * vms-misc.c: Fix indentation and comments. Replace most of #if VMS_DEBUG/vms_debug with vms_debug2. (_bfd_vms_hash_newfunc): Moved to vms-alpha.c (hash_string): Ditto. (_bfd_vms_length_hash_symbol): Ditto. (maybe_adjust_record_pointer_for_object): Ditto. (_bfd_vms_get_object_record): Ditto. (vms_get_remaining_object_record): Ditto. (_bfd_vms_push): Ditto. (_bfd_vms_pop): Ditto. (_bfd_vms_get_header_values): Removed. (_bfd_vms_get_first_record): Removed. (vms_get_remaining_image_record): Removed. (new_symbol): Removed. (_bfd_vms_enter_symbol): Removed. (_bfd_vms_save_sized_string): Use memcpy instead of strncpy. (_bfd_vms_output_begin): Remove rechead parameter. Replace bfd parameter with struct vms_rec_wr. (_bfd_vms_output_push): Removed and replaced by ... (_bfd_vms_output_begin_subrec): ... new function. (_bfd_vms_output_alignment): Replace bfd parameter with struct vms_rec_wr, and adjust. (_bfd_vms_output_check): Ditto (_bfd_vms_output_byte): Ditto. (_bfd_vms_output_short): Ditto. (_bfd_vms_output_long): Ditto. (_bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted): Ditto. (_bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (_bfd_vms_output_pop): Removed and replaced by ... (_bfd_vms_output_end_subrec): ... new function. (_bfd_vms_output_flush): Removed. (_bfd_vms_output_align): New function. (_bfd_vms_output_end): Add recwr parameter. Adjust for this new parameter. (vms_convert_to_var): New function imported from vms.c (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_get_module_name): Ditto. (get_vms_time_string): Ditto. (vms_time_to_time_t): Ditto. (vms_rawtime_to_time_t): Ditto. * vms.h: All macros for the VMS file format are now in include/vms. Prototypes for vms.c, vms-gsd.c, vms-misc.c, vms-hdr.c, vms-tir.c have been removed. (struct vms_symbol_struct, struct stack_struct): Moved to vms-alpha.c (struct fileinfo, struct srecinfo, struct lineinfo): Ditto. (struct funcinfo, struct vms_private_data_struct): Ditto. (struct vms_section_data_struct): Ditto. (struct vms_rec_rd, stryct vms_rec_wr): New declarations. (vms_get_module_name, get_vms_time_string): New declarations. (vms_time_to_time_t, vms_rawtime_to_time_t): Ditto. (_bfd_vms_output_begin_subrec, _bfd_vms_output_end_subrec): Ditto. (_bfd_vms_save_sized_string, _bfd_vms_save_counted_string): Adjusted. (_bfd_vms_output_begin, _bfd_vms_output_alignment): Ditto. (_bfd_vms_output_end,_bfd_vms_output_check): Ditto. (_bfd_vms_output_byte, _bfd_vms_output_short): Ditto. (_bfd_vms_output_long, _bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted, _bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (bfd_vms_set_section_flags): Ditto.
2010-04-14 17:24:59 +08:00
/* Buffer and its size. */
unsigned char *buf;
unsigned int buf_size;
2009-02-23 Tristan Gingold <gingold@adacore.com> * vms.h: Update copyright year, fix comments, reorder declarations. (_bfd_save_vms_section): Remove the prototype. (EGPS_S_V_NO_SHIFT): New constant. (bfd_vms_set_section_flags): New prototype. (EGPS_S_B_ALIGN, EGPS_S_W_FLAGS, EGPS_S_L_ALLOC, EGPS_S_B_NAMLNG): New constants. (EGSY_S_W_FLAGS): Ditto. (EGSY_S_V_QUAD_VAL): Ditto. (ESDF_S_L_VALUE, ESDF_S_L_PSINDX, ESDF_S_B_NAMLNG): Ditto. (EGST_S_W_FLAGS, EGST_S_Q_LP_1, EGST_S_Q_LP_2, EGST_S_L_PSINDX, EGST_S_B_NAMLNG): Ditto. (ESRF_S_B_NAMLNG): Ditto. (ETIR_S_C_HEADER_SIZE): Ditto. (EGPS_S_V_ALLOC_64BIT): Ditto. (DST_S_C_EPILOG): Ditto. (DST_S_C_SRC_SETLNUM_L, DST_S_C_SRC_SETLNUM_W) : Ditto. (DST_S_C_SRC_INCRLNUM_B): Ditto. (DST_S_B_PCLINE_UNSBYTE, DST_S_W_PCLINE_UNSWORD): Ditto. (DST_S_L_PCLINE_UNSLONG): Ditto. (DST_S_B_MODBEG_NAME, DST_S_L_RTNBEG_ADDRESS) : Ditto (DST_S_B_RTNBEG_NAME, DST_S_L_RTNEND_SIZE): Ditto (DST_S_C_SOURCE_HEADER_SIZE): Ditto. (DST_S_B_SRC_DF_LENGTH, DST_S_W_SRC_DF_FILEID): Ditto. (DST_S_B_SRC_DF_FILENAME, DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_W_SRC_UNSWORD, DST_S_L_SRC_UNSLONG): Ditto. Add prototypes. (vms_section, vms_reloc): Remove types. (hdr_struc): Replaced by ... (hdr_struct): ... new type. (EMH_S_W_HDRTYP, EMH_S_B_STRLVL, EMH_S_L_ARCH1): New constants. (EMH_S_L_ARCH2, EMH_S_L_RECSIZ, EMH_S_B_NAMLNG): Ditto. (EMH_DATE_LENGTH): Ditto. (eom_struc): Replaced by ... (eom_struct): ... new type. (EEOM_S_L_TOTAL_LPS, EEOM_S_W_COMCOD, EEOM_S_B_TFRFLG): New constants. (EEOM_S_L_PSINDX, EEOM_S_L_TFRADR): Ditto. (EIHD_S_K_MAJORID, EIHD_S_K_MINORID, EIHD_S_K_EXE): Ditto. (EIHD_S_L_SIZE, EIHD_S_L_ISDOFF, EIHD_S_L_SYMDBGOFF): Ditto. (EIHD_S_Q_SYMVVA, EIHD_S_L_IMGTYPE): Ditto. (EISD_S_L_EISDSIZE, EISD_S_L_SECSIZE, EISD_S_Q_VIR_ADDR): Ditto. (EISD_S_L_FLAGS, EISD_S_L_VBN, EISD_S_R_CONTROL): Ditto. (EISD_S_L_IDENT, EISD_S_T_GBLNAM): Ditto. (EISD_S_M_GBL, EISD_S_M_CRF, EISD_S_M_DZRO, EISD_S_M_WRT): Ditto. (EISD_S_M_INITALCODE, EISD_S_M_BASED, EISD_S_M_FIXUPVEC): Ditto. (EISD_S_M_RESIDENT, EISD_S_M_VECTOR, EISD_S_M_PROTECT): Ditto. (EISD_S_M_LASTCLU, EISD_S_M_EXE, EISD_S_M_NONSHRADR): Ditto. (EISD_S_M_QUAD_LENGTH, EISD_S_M_ALLOC_64BIT): Ditto. (EIHS_S_L_DSTVBN, EIHS_S_L_DSTSIZE, EIHS_S_L_GSTVBN): Ditto. (EIHS_S_L_GSTSIZE, EIHS_S_L_DMTVBN, EIHS_S_L_DMTBYTES): Ditto. (DBG_S_L_DMT_MODBEG, DBG_S_L_DST_SIZE): Ditto. (DBG_S_W_DMT_PSECT_COUNT, DBG_S_C_DMT_HEADER_SIZE): Ditto. (DBG_S_L_DMT_PSECT_START, DBG_S_L_DMT_PSECT_LENGTH) (DBG_S_C_DMT_PSECT_SIZE): Ditto. (enum file_type_enum): New type. (struct location_struct): Removed. (struct fileinfo, struct srecinfo, struct lineinfo): New types. (struct funcinfo, struct module): Ditto. (struct vms_private_data_struct): Update fields. (struct vms_section_data_struct): New type. * vms.c: Update copyright year, fix comments, Fix includes for DECC, add prototypes. (vms_initialize): Use bfd_alloc instead of bfd_zalloc and remove some initializers. Use flavour to set is_vax, location_stack is removed. (struct pair): Declare. (fill_section_ptr): Initialize variables at declaration. Add guard to set SECTION_SYM flag, handlde und section. (vms_fixup_sections): Use struct pair for fill_section_ptr argument. (_bfd_vms_slurp_object_records): New function, replaces previous vms_object_p. (vms_slurp_module): New function. (vms_slurp_image): Ditto. (vms_object_p): Complete rewrite. (vms_mkobject): Use is_vax field to slect architecture. (free_reloc_stream): New function. (vms_convert_to_var): Ditto. (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_close_and_cleanup): Call free_reloc_stream, convert file to VAR format on VMS. (vms_new_section_hook): Set alignment to 0, allocate private data. (vms_get_section_contents): Load content. (vms_get_symbol_info): Handle undefined section. (vms_find_nearest_line): Handle. (alloc_reloc_stream): New function. (vms_slurp_reloc_table): Ditto. (vms_get_reloc_upper_bound): Make it real. (vms_canonicalize_reloc): Do the real work. (alpha_howto_table): Add ALPHA_R_NOP, ALPHA_R_BSR, ALPHA_R_LDA, ALPHA_R_BOH. (vms_bfd_reloc_type_lookup): Handle NOP, BSR, LDA and BOH. (vms_set_arch_mach): Check arch. (vms_set_section_contents): Copy the content after allocation. (vms_alpha_vec): Update object flags. * vms-tir.c: Update copyright year, fix comments, add prototypes for new functions. (dst_define_location): New function. (dst_restore_location): New function. (dst_retrieve_location): New function. (dst_check_allocation): New function. (image_dump): Call dst_check_allocation. (image_write_b): Ditto. (image_write_w): Ditto. (image_write_l): Ditto. (image_write_q): Ditto. (cmd_name): Handle STA_LW, STA_QW, STO_OFF, STO_IMM, STO_IMMR, STO_LW, STO_QW, OPR_ADD, CTL_SETRB, STC_LP_PSB, CTL_DFLOC, CTL_STLOC, CTL_STKDL. Call error handler instead of abort if name is not known. (etir_sta): Add quarter_relocs argument and set it. Fix cast. (etir_sto): Ditto. (etir_opr): Ditto, return FALSE in case of error. (etir_ctl): Add quarter_relocs argument and set it, fix cast. Fix CTL_DFLOC, CTL_STLOC, CTL_STKDL. (etir_stc): Add quarter_relocs argument and set it, fix cast. Fix STC_LP, STC_LP_PSB, STC_GBL and STC_CGA. Handle STC_LP_PSB, STC_BSR_GBL, STC_LDA_GBL, STC_BOH_GBL. Move STC_NOP_PS, STC_BSR_PS, STC_LDA_PS, STC_BOH_PS, STC_NBH_PS. Return FALSE in case of error. (tir_sta): Change sign of psect. (tir_ctl): Ditto. (tir_cmd): Fix cast. Makes tir_table static const. (etir_cmd): Add quarter_relocs argument, makes etir_table const, add argument to explain. (analyze_etir): Initialize maxptr, add quarter_relocs declaration, move some declarations into inner scopes. Handle quarter_relocs and STO_IMM. (_bfd_vms_slurp_tir): Use constant instead of hard-coded values. (_bfd_vms_slurp_relocs): New function. (_bfd_vms_decode_relocs): New function. (sto_imm): Rewritten. (start_first_etbt_record): New function. (start_another_etbt_record): Ditto. (etir_output_check): Ditto. (defer_reloc_p): Ditto. (_bfd_vms_write_tir): Remove nextoffset, convert a while-loop to a for-loop. Correctly deals with contents, deals with .vmsdebug, rewritte relocations handling. (_bfd_vms_write_tbt): Removed. (_bfd_vms_write_dbg): Ditto. * vms-misc.c: Update copyright year, Fix comments. (_bfd_vms_get_header_values): Use 'size' instead of 'length'. (maybe_adjust_record_pointer_for_object): New function. (_bfd_vms_get_first_record): New function, replaces ... (_bfd_vms_get_record): .. removed. (_bfd_vms_get_object_record): New function. (_bfd_vms_get_object_record): New function. (vms_get_remaining_object_record): New function, replaces ... (_bfd_vms_get_next_record): ... removed. (add_new_contents): Removed. (_bfd_save_vms_section): Removed. (_bfd_get_vms_section): Removed. (_bfd_vms_output_flush): Write in VAR format. (new_symbol): Don't make UND section. * vms-hdr.c: Update copyright year, update list of record handled. (_bfd_vms_slurp_hdr): rec_length renamed to rec_size. (_bfd_vms_write_hdr): Strip vms and unix patches, add comments, truncate module name at 31 characters, use constants instead of hard-coded value, write BFD version instead of a fixed string. (_bfd_vms_slurp_ihd): New function. (_bfd_vms_slurp_isd): Ditto. (_bfd_vms_slurp_ihs): Ditto. (new_module): Ditto. (parse_module): Ditto (build_module_list): Ditto. (module_find_nearest_line): Ditto. (_bfd_vms_find_nearest_dst_line): Ditto. (vms_slurp_debug): Ditto. (_bfd_vms_slurp_dbg): Ditto. (_bfd_vms_slurp_tbt): Ditto. (_bfd_vms_write_dbg): Ditto. (_bfd_vms_write_tbt): Ditto. * vms-gsd.c: Update copyright year, update list of records handled. (EVAX_LITERALS_NAME): New macro. (evax_section_flags): Add an entry for EVAX_LITERALS_NAME. (gpsflagdesc, gsyflagdesc): Moved out of _bfd_vms_slurp_gsd. (register_universal_symbol): New function and prototype. (_bfd_vms_slurp_gsd): Fix indentations and casts, improve debug messages, use constants instead of hard-coded value, fix missing endianness conversion, handle global symbol (SYMG). (bfd_vms_set_section_flags): New function. (_bfd_vms_write_gsd): Don't write .vmsdebug section, handle section literals, fix indentation, handle section bfd and vms flags, don't output LIB$INITIALIZE symbol, fix handling of weak symbols, fix evax vs vax procedure descriptor, handle absolute symbols. * reloc.c (BFD_RELOC_ALPHA_NOP, BFD_RELOC_ALPHA_BSR, BFD_RELOC_ALPHA_LDA, BFD_RELOC_ALPHA_BOH): New relocations. * makefile.vms (DEFS): Fix flags for VMS. * bfdio.c (real_fopen): Handle multiple VMS fopen attributes. * bfd-in2.h: Regenerated. * libbfd.h: Regenerated.
2009-02-23 17:28:43 +08:00
2010-04-14 Tristan Gingold <gingold@adacore.com> * Makefile.am (BFD32_BACKENDS): Remove vms-gsd.lo, vms-hdr.lo, vms-tir.lo, vms.lo and add vms-alpha.lo (BFD32_BACKENDS_CFILES): Remove vms-gsd.c, vms-hdr.c, vms-tir.c, vms.c and add vms-alpha.c * Makefile.in: Regenerate. * configure.in (TDEFINES): Adjust file list for vms_alpha_vec. Remove vms_vax_vec. * configure: Regenerate. * targets.c (vms_vax_vec): Remove the declaration. (_bfd_target_vector): Remove vms_vax_vec. * vms-alpha.c: New file. * vms-gsd.c: Removed, rewritten in vms-alpha.c * vms-hdr.c: Ditto. * vms-tir.c: Ditto. * vms.c: Ditto. * vms-misc.c: Fix indentation and comments. Replace most of #if VMS_DEBUG/vms_debug with vms_debug2. (_bfd_vms_hash_newfunc): Moved to vms-alpha.c (hash_string): Ditto. (_bfd_vms_length_hash_symbol): Ditto. (maybe_adjust_record_pointer_for_object): Ditto. (_bfd_vms_get_object_record): Ditto. (vms_get_remaining_object_record): Ditto. (_bfd_vms_push): Ditto. (_bfd_vms_pop): Ditto. (_bfd_vms_get_header_values): Removed. (_bfd_vms_get_first_record): Removed. (vms_get_remaining_image_record): Removed. (new_symbol): Removed. (_bfd_vms_enter_symbol): Removed. (_bfd_vms_save_sized_string): Use memcpy instead of strncpy. (_bfd_vms_output_begin): Remove rechead parameter. Replace bfd parameter with struct vms_rec_wr. (_bfd_vms_output_push): Removed and replaced by ... (_bfd_vms_output_begin_subrec): ... new function. (_bfd_vms_output_alignment): Replace bfd parameter with struct vms_rec_wr, and adjust. (_bfd_vms_output_check): Ditto (_bfd_vms_output_byte): Ditto. (_bfd_vms_output_short): Ditto. (_bfd_vms_output_long): Ditto. (_bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted): Ditto. (_bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (_bfd_vms_output_pop): Removed and replaced by ... (_bfd_vms_output_end_subrec): ... new function. (_bfd_vms_output_flush): Removed. (_bfd_vms_output_align): New function. (_bfd_vms_output_end): Add recwr parameter. Adjust for this new parameter. (vms_convert_to_var): New function imported from vms.c (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_get_module_name): Ditto. (get_vms_time_string): Ditto. (vms_time_to_time_t): Ditto. (vms_rawtime_to_time_t): Ditto. * vms.h: All macros for the VMS file format are now in include/vms. Prototypes for vms.c, vms-gsd.c, vms-misc.c, vms-hdr.c, vms-tir.c have been removed. (struct vms_symbol_struct, struct stack_struct): Moved to vms-alpha.c (struct fileinfo, struct srecinfo, struct lineinfo): Ditto. (struct funcinfo, struct vms_private_data_struct): Ditto. (struct vms_section_data_struct): Ditto. (struct vms_rec_rd, stryct vms_rec_wr): New declarations. (vms_get_module_name, get_vms_time_string): New declarations. (vms_time_to_time_t, vms_rawtime_to_time_t): Ditto. (_bfd_vms_output_begin_subrec, _bfd_vms_output_end_subrec): Ditto. (_bfd_vms_save_sized_string, _bfd_vms_save_counted_string): Adjusted. (_bfd_vms_output_begin, _bfd_vms_output_alignment): Ditto. (_bfd_vms_output_end,_bfd_vms_output_check): Ditto. (_bfd_vms_output_byte, _bfd_vms_output_short): Ditto. (_bfd_vms_output_long, _bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted, _bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (bfd_vms_set_section_flags): Ditto.
2010-04-14 17:24:59 +08:00
/* Current record and its size. */
unsigned char *rec;
unsigned int rec_size;
2009-02-23 Tristan Gingold <gingold@adacore.com> * vms.h: Update copyright year, fix comments, reorder declarations. (_bfd_save_vms_section): Remove the prototype. (EGPS_S_V_NO_SHIFT): New constant. (bfd_vms_set_section_flags): New prototype. (EGPS_S_B_ALIGN, EGPS_S_W_FLAGS, EGPS_S_L_ALLOC, EGPS_S_B_NAMLNG): New constants. (EGSY_S_W_FLAGS): Ditto. (EGSY_S_V_QUAD_VAL): Ditto. (ESDF_S_L_VALUE, ESDF_S_L_PSINDX, ESDF_S_B_NAMLNG): Ditto. (EGST_S_W_FLAGS, EGST_S_Q_LP_1, EGST_S_Q_LP_2, EGST_S_L_PSINDX, EGST_S_B_NAMLNG): Ditto. (ESRF_S_B_NAMLNG): Ditto. (ETIR_S_C_HEADER_SIZE): Ditto. (EGPS_S_V_ALLOC_64BIT): Ditto. (DST_S_C_EPILOG): Ditto. (DST_S_C_SRC_SETLNUM_L, DST_S_C_SRC_SETLNUM_W) : Ditto. (DST_S_C_SRC_INCRLNUM_B): Ditto. (DST_S_B_PCLINE_UNSBYTE, DST_S_W_PCLINE_UNSWORD): Ditto. (DST_S_L_PCLINE_UNSLONG): Ditto. (DST_S_B_MODBEG_NAME, DST_S_L_RTNBEG_ADDRESS) : Ditto (DST_S_B_RTNBEG_NAME, DST_S_L_RTNEND_SIZE): Ditto (DST_S_C_SOURCE_HEADER_SIZE): Ditto. (DST_S_B_SRC_DF_LENGTH, DST_S_W_SRC_DF_FILEID): Ditto. (DST_S_B_SRC_DF_FILENAME, DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_W_SRC_UNSWORD, DST_S_L_SRC_UNSLONG): Ditto. Add prototypes. (vms_section, vms_reloc): Remove types. (hdr_struc): Replaced by ... (hdr_struct): ... new type. (EMH_S_W_HDRTYP, EMH_S_B_STRLVL, EMH_S_L_ARCH1): New constants. (EMH_S_L_ARCH2, EMH_S_L_RECSIZ, EMH_S_B_NAMLNG): Ditto. (EMH_DATE_LENGTH): Ditto. (eom_struc): Replaced by ... (eom_struct): ... new type. (EEOM_S_L_TOTAL_LPS, EEOM_S_W_COMCOD, EEOM_S_B_TFRFLG): New constants. (EEOM_S_L_PSINDX, EEOM_S_L_TFRADR): Ditto. (EIHD_S_K_MAJORID, EIHD_S_K_MINORID, EIHD_S_K_EXE): Ditto. (EIHD_S_L_SIZE, EIHD_S_L_ISDOFF, EIHD_S_L_SYMDBGOFF): Ditto. (EIHD_S_Q_SYMVVA, EIHD_S_L_IMGTYPE): Ditto. (EISD_S_L_EISDSIZE, EISD_S_L_SECSIZE, EISD_S_Q_VIR_ADDR): Ditto. (EISD_S_L_FLAGS, EISD_S_L_VBN, EISD_S_R_CONTROL): Ditto. (EISD_S_L_IDENT, EISD_S_T_GBLNAM): Ditto. (EISD_S_M_GBL, EISD_S_M_CRF, EISD_S_M_DZRO, EISD_S_M_WRT): Ditto. (EISD_S_M_INITALCODE, EISD_S_M_BASED, EISD_S_M_FIXUPVEC): Ditto. (EISD_S_M_RESIDENT, EISD_S_M_VECTOR, EISD_S_M_PROTECT): Ditto. (EISD_S_M_LASTCLU, EISD_S_M_EXE, EISD_S_M_NONSHRADR): Ditto. (EISD_S_M_QUAD_LENGTH, EISD_S_M_ALLOC_64BIT): Ditto. (EIHS_S_L_DSTVBN, EIHS_S_L_DSTSIZE, EIHS_S_L_GSTVBN): Ditto. (EIHS_S_L_GSTSIZE, EIHS_S_L_DMTVBN, EIHS_S_L_DMTBYTES): Ditto. (DBG_S_L_DMT_MODBEG, DBG_S_L_DST_SIZE): Ditto. (DBG_S_W_DMT_PSECT_COUNT, DBG_S_C_DMT_HEADER_SIZE): Ditto. (DBG_S_L_DMT_PSECT_START, DBG_S_L_DMT_PSECT_LENGTH) (DBG_S_C_DMT_PSECT_SIZE): Ditto. (enum file_type_enum): New type. (struct location_struct): Removed. (struct fileinfo, struct srecinfo, struct lineinfo): New types. (struct funcinfo, struct module): Ditto. (struct vms_private_data_struct): Update fields. (struct vms_section_data_struct): New type. * vms.c: Update copyright year, fix comments, Fix includes for DECC, add prototypes. (vms_initialize): Use bfd_alloc instead of bfd_zalloc and remove some initializers. Use flavour to set is_vax, location_stack is removed. (struct pair): Declare. (fill_section_ptr): Initialize variables at declaration. Add guard to set SECTION_SYM flag, handlde und section. (vms_fixup_sections): Use struct pair for fill_section_ptr argument. (_bfd_vms_slurp_object_records): New function, replaces previous vms_object_p. (vms_slurp_module): New function. (vms_slurp_image): Ditto. (vms_object_p): Complete rewrite. (vms_mkobject): Use is_vax field to slect architecture. (free_reloc_stream): New function. (vms_convert_to_var): Ditto. (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_close_and_cleanup): Call free_reloc_stream, convert file to VAR format on VMS. (vms_new_section_hook): Set alignment to 0, allocate private data. (vms_get_section_contents): Load content. (vms_get_symbol_info): Handle undefined section. (vms_find_nearest_line): Handle. (alloc_reloc_stream): New function. (vms_slurp_reloc_table): Ditto. (vms_get_reloc_upper_bound): Make it real. (vms_canonicalize_reloc): Do the real work. (alpha_howto_table): Add ALPHA_R_NOP, ALPHA_R_BSR, ALPHA_R_LDA, ALPHA_R_BOH. (vms_bfd_reloc_type_lookup): Handle NOP, BSR, LDA and BOH. (vms_set_arch_mach): Check arch. (vms_set_section_contents): Copy the content after allocation. (vms_alpha_vec): Update object flags. * vms-tir.c: Update copyright year, fix comments, add prototypes for new functions. (dst_define_location): New function. (dst_restore_location): New function. (dst_retrieve_location): New function. (dst_check_allocation): New function. (image_dump): Call dst_check_allocation. (image_write_b): Ditto. (image_write_w): Ditto. (image_write_l): Ditto. (image_write_q): Ditto. (cmd_name): Handle STA_LW, STA_QW, STO_OFF, STO_IMM, STO_IMMR, STO_LW, STO_QW, OPR_ADD, CTL_SETRB, STC_LP_PSB, CTL_DFLOC, CTL_STLOC, CTL_STKDL. Call error handler instead of abort if name is not known. (etir_sta): Add quarter_relocs argument and set it. Fix cast. (etir_sto): Ditto. (etir_opr): Ditto, return FALSE in case of error. (etir_ctl): Add quarter_relocs argument and set it, fix cast. Fix CTL_DFLOC, CTL_STLOC, CTL_STKDL. (etir_stc): Add quarter_relocs argument and set it, fix cast. Fix STC_LP, STC_LP_PSB, STC_GBL and STC_CGA. Handle STC_LP_PSB, STC_BSR_GBL, STC_LDA_GBL, STC_BOH_GBL. Move STC_NOP_PS, STC_BSR_PS, STC_LDA_PS, STC_BOH_PS, STC_NBH_PS. Return FALSE in case of error. (tir_sta): Change sign of psect. (tir_ctl): Ditto. (tir_cmd): Fix cast. Makes tir_table static const. (etir_cmd): Add quarter_relocs argument, makes etir_table const, add argument to explain. (analyze_etir): Initialize maxptr, add quarter_relocs declaration, move some declarations into inner scopes. Handle quarter_relocs and STO_IMM. (_bfd_vms_slurp_tir): Use constant instead of hard-coded values. (_bfd_vms_slurp_relocs): New function. (_bfd_vms_decode_relocs): New function. (sto_imm): Rewritten. (start_first_etbt_record): New function. (start_another_etbt_record): Ditto. (etir_output_check): Ditto. (defer_reloc_p): Ditto. (_bfd_vms_write_tir): Remove nextoffset, convert a while-loop to a for-loop. Correctly deals with contents, deals with .vmsdebug, rewritte relocations handling. (_bfd_vms_write_tbt): Removed. (_bfd_vms_write_dbg): Ditto. * vms-misc.c: Update copyright year, Fix comments. (_bfd_vms_get_header_values): Use 'size' instead of 'length'. (maybe_adjust_record_pointer_for_object): New function. (_bfd_vms_get_first_record): New function, replaces ... (_bfd_vms_get_record): .. removed. (_bfd_vms_get_object_record): New function. (_bfd_vms_get_object_record): New function. (vms_get_remaining_object_record): New function, replaces ... (_bfd_vms_get_next_record): ... removed. (add_new_contents): Removed. (_bfd_save_vms_section): Removed. (_bfd_get_vms_section): Removed. (_bfd_vms_output_flush): Write in VAR format. (new_symbol): Don't make UND section. * vms-hdr.c: Update copyright year, update list of record handled. (_bfd_vms_slurp_hdr): rec_length renamed to rec_size. (_bfd_vms_write_hdr): Strip vms and unix patches, add comments, truncate module name at 31 characters, use constants instead of hard-coded value, write BFD version instead of a fixed string. (_bfd_vms_slurp_ihd): New function. (_bfd_vms_slurp_isd): Ditto. (_bfd_vms_slurp_ihs): Ditto. (new_module): Ditto. (parse_module): Ditto (build_module_list): Ditto. (module_find_nearest_line): Ditto. (_bfd_vms_find_nearest_dst_line): Ditto. (vms_slurp_debug): Ditto. (_bfd_vms_slurp_dbg): Ditto. (_bfd_vms_slurp_tbt): Ditto. (_bfd_vms_write_dbg): Ditto. (_bfd_vms_write_tbt): Ditto. * vms-gsd.c: Update copyright year, update list of records handled. (EVAX_LITERALS_NAME): New macro. (evax_section_flags): Add an entry for EVAX_LITERALS_NAME. (gpsflagdesc, gsyflagdesc): Moved out of _bfd_vms_slurp_gsd. (register_universal_symbol): New function and prototype. (_bfd_vms_slurp_gsd): Fix indentations and casts, improve debug messages, use constants instead of hard-coded value, fix missing endianness conversion, handle global symbol (SYMG). (bfd_vms_set_section_flags): New function. (_bfd_vms_write_gsd): Don't write .vmsdebug section, handle section literals, fix indentation, handle section bfd and vms flags, don't output LIB$INITIALIZE symbol, fix handling of weak symbols, fix evax vs vax procedure descriptor, handle absolute symbols. * reloc.c (BFD_RELOC_ALPHA_NOP, BFD_RELOC_ALPHA_BSR, BFD_RELOC_ALPHA_LDA, BFD_RELOC_ALPHA_BOH): New relocations. * makefile.vms (DEFS): Fix flags for VMS. * bfdio.c (real_fopen): Handle multiple VMS fopen attributes. * bfd-in2.h: Regenerated. * libbfd.h: Regenerated.
2009-02-23 17:28:43 +08:00
2010-04-14 Tristan Gingold <gingold@adacore.com> * Makefile.am (BFD32_BACKENDS): Remove vms-gsd.lo, vms-hdr.lo, vms-tir.lo, vms.lo and add vms-alpha.lo (BFD32_BACKENDS_CFILES): Remove vms-gsd.c, vms-hdr.c, vms-tir.c, vms.c and add vms-alpha.c * Makefile.in: Regenerate. * configure.in (TDEFINES): Adjust file list for vms_alpha_vec. Remove vms_vax_vec. * configure: Regenerate. * targets.c (vms_vax_vec): Remove the declaration. (_bfd_target_vector): Remove vms_vax_vec. * vms-alpha.c: New file. * vms-gsd.c: Removed, rewritten in vms-alpha.c * vms-hdr.c: Ditto. * vms-tir.c: Ditto. * vms.c: Ditto. * vms-misc.c: Fix indentation and comments. Replace most of #if VMS_DEBUG/vms_debug with vms_debug2. (_bfd_vms_hash_newfunc): Moved to vms-alpha.c (hash_string): Ditto. (_bfd_vms_length_hash_symbol): Ditto. (maybe_adjust_record_pointer_for_object): Ditto. (_bfd_vms_get_object_record): Ditto. (vms_get_remaining_object_record): Ditto. (_bfd_vms_push): Ditto. (_bfd_vms_pop): Ditto. (_bfd_vms_get_header_values): Removed. (_bfd_vms_get_first_record): Removed. (vms_get_remaining_image_record): Removed. (new_symbol): Removed. (_bfd_vms_enter_symbol): Removed. (_bfd_vms_save_sized_string): Use memcpy instead of strncpy. (_bfd_vms_output_begin): Remove rechead parameter. Replace bfd parameter with struct vms_rec_wr. (_bfd_vms_output_push): Removed and replaced by ... (_bfd_vms_output_begin_subrec): ... new function. (_bfd_vms_output_alignment): Replace bfd parameter with struct vms_rec_wr, and adjust. (_bfd_vms_output_check): Ditto (_bfd_vms_output_byte): Ditto. (_bfd_vms_output_short): Ditto. (_bfd_vms_output_long): Ditto. (_bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted): Ditto. (_bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (_bfd_vms_output_pop): Removed and replaced by ... (_bfd_vms_output_end_subrec): ... new function. (_bfd_vms_output_flush): Removed. (_bfd_vms_output_align): New function. (_bfd_vms_output_end): Add recwr parameter. Adjust for this new parameter. (vms_convert_to_var): New function imported from vms.c (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_get_module_name): Ditto. (get_vms_time_string): Ditto. (vms_time_to_time_t): Ditto. (vms_rawtime_to_time_t): Ditto. * vms.h: All macros for the VMS file format are now in include/vms. Prototypes for vms.c, vms-gsd.c, vms-misc.c, vms-hdr.c, vms-tir.c have been removed. (struct vms_symbol_struct, struct stack_struct): Moved to vms-alpha.c (struct fileinfo, struct srecinfo, struct lineinfo): Ditto. (struct funcinfo, struct vms_private_data_struct): Ditto. (struct vms_section_data_struct): Ditto. (struct vms_rec_rd, stryct vms_rec_wr): New declarations. (vms_get_module_name, get_vms_time_string): New declarations. (vms_time_to_time_t, vms_rawtime_to_time_t): Ditto. (_bfd_vms_output_begin_subrec, _bfd_vms_output_end_subrec): Ditto. (_bfd_vms_save_sized_string, _bfd_vms_save_counted_string): Adjusted. (_bfd_vms_output_begin, _bfd_vms_output_alignment): Ditto. (_bfd_vms_output_end,_bfd_vms_output_check): Ditto. (_bfd_vms_output_byte, _bfd_vms_output_short): Ditto. (_bfd_vms_output_long, _bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted, _bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (bfd_vms_set_section_flags): Ditto.
2010-04-14 17:24:59 +08:00
/* Input file format. */
2009-02-23 Tristan Gingold <gingold@adacore.com> * vms.h: Update copyright year, fix comments, reorder declarations. (_bfd_save_vms_section): Remove the prototype. (EGPS_S_V_NO_SHIFT): New constant. (bfd_vms_set_section_flags): New prototype. (EGPS_S_B_ALIGN, EGPS_S_W_FLAGS, EGPS_S_L_ALLOC, EGPS_S_B_NAMLNG): New constants. (EGSY_S_W_FLAGS): Ditto. (EGSY_S_V_QUAD_VAL): Ditto. (ESDF_S_L_VALUE, ESDF_S_L_PSINDX, ESDF_S_B_NAMLNG): Ditto. (EGST_S_W_FLAGS, EGST_S_Q_LP_1, EGST_S_Q_LP_2, EGST_S_L_PSINDX, EGST_S_B_NAMLNG): Ditto. (ESRF_S_B_NAMLNG): Ditto. (ETIR_S_C_HEADER_SIZE): Ditto. (EGPS_S_V_ALLOC_64BIT): Ditto. (DST_S_C_EPILOG): Ditto. (DST_S_C_SRC_SETLNUM_L, DST_S_C_SRC_SETLNUM_W) : Ditto. (DST_S_C_SRC_INCRLNUM_B): Ditto. (DST_S_B_PCLINE_UNSBYTE, DST_S_W_PCLINE_UNSWORD): Ditto. (DST_S_L_PCLINE_UNSLONG): Ditto. (DST_S_B_MODBEG_NAME, DST_S_L_RTNBEG_ADDRESS) : Ditto (DST_S_B_RTNBEG_NAME, DST_S_L_RTNEND_SIZE): Ditto (DST_S_C_SOURCE_HEADER_SIZE): Ditto. (DST_S_B_SRC_DF_LENGTH, DST_S_W_SRC_DF_FILEID): Ditto. (DST_S_B_SRC_DF_FILENAME, DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_W_SRC_UNSWORD, DST_S_L_SRC_UNSLONG): Ditto. Add prototypes. (vms_section, vms_reloc): Remove types. (hdr_struc): Replaced by ... (hdr_struct): ... new type. (EMH_S_W_HDRTYP, EMH_S_B_STRLVL, EMH_S_L_ARCH1): New constants. (EMH_S_L_ARCH2, EMH_S_L_RECSIZ, EMH_S_B_NAMLNG): Ditto. (EMH_DATE_LENGTH): Ditto. (eom_struc): Replaced by ... (eom_struct): ... new type. (EEOM_S_L_TOTAL_LPS, EEOM_S_W_COMCOD, EEOM_S_B_TFRFLG): New constants. (EEOM_S_L_PSINDX, EEOM_S_L_TFRADR): Ditto. (EIHD_S_K_MAJORID, EIHD_S_K_MINORID, EIHD_S_K_EXE): Ditto. (EIHD_S_L_SIZE, EIHD_S_L_ISDOFF, EIHD_S_L_SYMDBGOFF): Ditto. (EIHD_S_Q_SYMVVA, EIHD_S_L_IMGTYPE): Ditto. (EISD_S_L_EISDSIZE, EISD_S_L_SECSIZE, EISD_S_Q_VIR_ADDR): Ditto. (EISD_S_L_FLAGS, EISD_S_L_VBN, EISD_S_R_CONTROL): Ditto. (EISD_S_L_IDENT, EISD_S_T_GBLNAM): Ditto. (EISD_S_M_GBL, EISD_S_M_CRF, EISD_S_M_DZRO, EISD_S_M_WRT): Ditto. (EISD_S_M_INITALCODE, EISD_S_M_BASED, EISD_S_M_FIXUPVEC): Ditto. (EISD_S_M_RESIDENT, EISD_S_M_VECTOR, EISD_S_M_PROTECT): Ditto. (EISD_S_M_LASTCLU, EISD_S_M_EXE, EISD_S_M_NONSHRADR): Ditto. (EISD_S_M_QUAD_LENGTH, EISD_S_M_ALLOC_64BIT): Ditto. (EIHS_S_L_DSTVBN, EIHS_S_L_DSTSIZE, EIHS_S_L_GSTVBN): Ditto. (EIHS_S_L_GSTSIZE, EIHS_S_L_DMTVBN, EIHS_S_L_DMTBYTES): Ditto. (DBG_S_L_DMT_MODBEG, DBG_S_L_DST_SIZE): Ditto. (DBG_S_W_DMT_PSECT_COUNT, DBG_S_C_DMT_HEADER_SIZE): Ditto. (DBG_S_L_DMT_PSECT_START, DBG_S_L_DMT_PSECT_LENGTH) (DBG_S_C_DMT_PSECT_SIZE): Ditto. (enum file_type_enum): New type. (struct location_struct): Removed. (struct fileinfo, struct srecinfo, struct lineinfo): New types. (struct funcinfo, struct module): Ditto. (struct vms_private_data_struct): Update fields. (struct vms_section_data_struct): New type. * vms.c: Update copyright year, fix comments, Fix includes for DECC, add prototypes. (vms_initialize): Use bfd_alloc instead of bfd_zalloc and remove some initializers. Use flavour to set is_vax, location_stack is removed. (struct pair): Declare. (fill_section_ptr): Initialize variables at declaration. Add guard to set SECTION_SYM flag, handlde und section. (vms_fixup_sections): Use struct pair for fill_section_ptr argument. (_bfd_vms_slurp_object_records): New function, replaces previous vms_object_p. (vms_slurp_module): New function. (vms_slurp_image): Ditto. (vms_object_p): Complete rewrite. (vms_mkobject): Use is_vax field to slect architecture. (free_reloc_stream): New function. (vms_convert_to_var): Ditto. (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_close_and_cleanup): Call free_reloc_stream, convert file to VAR format on VMS. (vms_new_section_hook): Set alignment to 0, allocate private data. (vms_get_section_contents): Load content. (vms_get_symbol_info): Handle undefined section. (vms_find_nearest_line): Handle. (alloc_reloc_stream): New function. (vms_slurp_reloc_table): Ditto. (vms_get_reloc_upper_bound): Make it real. (vms_canonicalize_reloc): Do the real work. (alpha_howto_table): Add ALPHA_R_NOP, ALPHA_R_BSR, ALPHA_R_LDA, ALPHA_R_BOH. (vms_bfd_reloc_type_lookup): Handle NOP, BSR, LDA and BOH. (vms_set_arch_mach): Check arch. (vms_set_section_contents): Copy the content after allocation. (vms_alpha_vec): Update object flags. * vms-tir.c: Update copyright year, fix comments, add prototypes for new functions. (dst_define_location): New function. (dst_restore_location): New function. (dst_retrieve_location): New function. (dst_check_allocation): New function. (image_dump): Call dst_check_allocation. (image_write_b): Ditto. (image_write_w): Ditto. (image_write_l): Ditto. (image_write_q): Ditto. (cmd_name): Handle STA_LW, STA_QW, STO_OFF, STO_IMM, STO_IMMR, STO_LW, STO_QW, OPR_ADD, CTL_SETRB, STC_LP_PSB, CTL_DFLOC, CTL_STLOC, CTL_STKDL. Call error handler instead of abort if name is not known. (etir_sta): Add quarter_relocs argument and set it. Fix cast. (etir_sto): Ditto. (etir_opr): Ditto, return FALSE in case of error. (etir_ctl): Add quarter_relocs argument and set it, fix cast. Fix CTL_DFLOC, CTL_STLOC, CTL_STKDL. (etir_stc): Add quarter_relocs argument and set it, fix cast. Fix STC_LP, STC_LP_PSB, STC_GBL and STC_CGA. Handle STC_LP_PSB, STC_BSR_GBL, STC_LDA_GBL, STC_BOH_GBL. Move STC_NOP_PS, STC_BSR_PS, STC_LDA_PS, STC_BOH_PS, STC_NBH_PS. Return FALSE in case of error. (tir_sta): Change sign of psect. (tir_ctl): Ditto. (tir_cmd): Fix cast. Makes tir_table static const. (etir_cmd): Add quarter_relocs argument, makes etir_table const, add argument to explain. (analyze_etir): Initialize maxptr, add quarter_relocs declaration, move some declarations into inner scopes. Handle quarter_relocs and STO_IMM. (_bfd_vms_slurp_tir): Use constant instead of hard-coded values. (_bfd_vms_slurp_relocs): New function. (_bfd_vms_decode_relocs): New function. (sto_imm): Rewritten. (start_first_etbt_record): New function. (start_another_etbt_record): Ditto. (etir_output_check): Ditto. (defer_reloc_p): Ditto. (_bfd_vms_write_tir): Remove nextoffset, convert a while-loop to a for-loop. Correctly deals with contents, deals with .vmsdebug, rewritte relocations handling. (_bfd_vms_write_tbt): Removed. (_bfd_vms_write_dbg): Ditto. * vms-misc.c: Update copyright year, Fix comments. (_bfd_vms_get_header_values): Use 'size' instead of 'length'. (maybe_adjust_record_pointer_for_object): New function. (_bfd_vms_get_first_record): New function, replaces ... (_bfd_vms_get_record): .. removed. (_bfd_vms_get_object_record): New function. (_bfd_vms_get_object_record): New function. (vms_get_remaining_object_record): New function, replaces ... (_bfd_vms_get_next_record): ... removed. (add_new_contents): Removed. (_bfd_save_vms_section): Removed. (_bfd_get_vms_section): Removed. (_bfd_vms_output_flush): Write in VAR format. (new_symbol): Don't make UND section. * vms-hdr.c: Update copyright year, update list of record handled. (_bfd_vms_slurp_hdr): rec_length renamed to rec_size. (_bfd_vms_write_hdr): Strip vms and unix patches, add comments, truncate module name at 31 characters, use constants instead of hard-coded value, write BFD version instead of a fixed string. (_bfd_vms_slurp_ihd): New function. (_bfd_vms_slurp_isd): Ditto. (_bfd_vms_slurp_ihs): Ditto. (new_module): Ditto. (parse_module): Ditto (build_module_list): Ditto. (module_find_nearest_line): Ditto. (_bfd_vms_find_nearest_dst_line): Ditto. (vms_slurp_debug): Ditto. (_bfd_vms_slurp_dbg): Ditto. (_bfd_vms_slurp_tbt): Ditto. (_bfd_vms_write_dbg): Ditto. (_bfd_vms_write_tbt): Ditto. * vms-gsd.c: Update copyright year, update list of records handled. (EVAX_LITERALS_NAME): New macro. (evax_section_flags): Add an entry for EVAX_LITERALS_NAME. (gpsflagdesc, gsyflagdesc): Moved out of _bfd_vms_slurp_gsd. (register_universal_symbol): New function and prototype. (_bfd_vms_slurp_gsd): Fix indentations and casts, improve debug messages, use constants instead of hard-coded value, fix missing endianness conversion, handle global symbol (SYMG). (bfd_vms_set_section_flags): New function. (_bfd_vms_write_gsd): Don't write .vmsdebug section, handle section literals, fix indentation, handle section bfd and vms flags, don't output LIB$INITIALIZE symbol, fix handling of weak symbols, fix evax vs vax procedure descriptor, handle absolute symbols. * reloc.c (BFD_RELOC_ALPHA_NOP, BFD_RELOC_ALPHA_BSR, BFD_RELOC_ALPHA_LDA, BFD_RELOC_ALPHA_BOH): New relocations. * makefile.vms (DEFS): Fix flags for VMS. * bfdio.c (real_fopen): Handle multiple VMS fopen attributes. * bfd-in2.h: Regenerated. * libbfd.h: Regenerated.
2009-02-23 17:28:43 +08:00
enum file_format_enum file_format;
};
2010-04-14 Tristan Gingold <gingold@adacore.com> * Makefile.am (BFD32_BACKENDS): Remove vms-gsd.lo, vms-hdr.lo, vms-tir.lo, vms.lo and add vms-alpha.lo (BFD32_BACKENDS_CFILES): Remove vms-gsd.c, vms-hdr.c, vms-tir.c, vms.c and add vms-alpha.c * Makefile.in: Regenerate. * configure.in (TDEFINES): Adjust file list for vms_alpha_vec. Remove vms_vax_vec. * configure: Regenerate. * targets.c (vms_vax_vec): Remove the declaration. (_bfd_target_vector): Remove vms_vax_vec. * vms-alpha.c: New file. * vms-gsd.c: Removed, rewritten in vms-alpha.c * vms-hdr.c: Ditto. * vms-tir.c: Ditto. * vms.c: Ditto. * vms-misc.c: Fix indentation and comments. Replace most of #if VMS_DEBUG/vms_debug with vms_debug2. (_bfd_vms_hash_newfunc): Moved to vms-alpha.c (hash_string): Ditto. (_bfd_vms_length_hash_symbol): Ditto. (maybe_adjust_record_pointer_for_object): Ditto. (_bfd_vms_get_object_record): Ditto. (vms_get_remaining_object_record): Ditto. (_bfd_vms_push): Ditto. (_bfd_vms_pop): Ditto. (_bfd_vms_get_header_values): Removed. (_bfd_vms_get_first_record): Removed. (vms_get_remaining_image_record): Removed. (new_symbol): Removed. (_bfd_vms_enter_symbol): Removed. (_bfd_vms_save_sized_string): Use memcpy instead of strncpy. (_bfd_vms_output_begin): Remove rechead parameter. Replace bfd parameter with struct vms_rec_wr. (_bfd_vms_output_push): Removed and replaced by ... (_bfd_vms_output_begin_subrec): ... new function. (_bfd_vms_output_alignment): Replace bfd parameter with struct vms_rec_wr, and adjust. (_bfd_vms_output_check): Ditto (_bfd_vms_output_byte): Ditto. (_bfd_vms_output_short): Ditto. (_bfd_vms_output_long): Ditto. (_bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted): Ditto. (_bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (_bfd_vms_output_pop): Removed and replaced by ... (_bfd_vms_output_end_subrec): ... new function. (_bfd_vms_output_flush): Removed. (_bfd_vms_output_align): New function. (_bfd_vms_output_end): Add recwr parameter. Adjust for this new parameter. (vms_convert_to_var): New function imported from vms.c (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_get_module_name): Ditto. (get_vms_time_string): Ditto. (vms_time_to_time_t): Ditto. (vms_rawtime_to_time_t): Ditto. * vms.h: All macros for the VMS file format are now in include/vms. Prototypes for vms.c, vms-gsd.c, vms-misc.c, vms-hdr.c, vms-tir.c have been removed. (struct vms_symbol_struct, struct stack_struct): Moved to vms-alpha.c (struct fileinfo, struct srecinfo, struct lineinfo): Ditto. (struct funcinfo, struct vms_private_data_struct): Ditto. (struct vms_section_data_struct): Ditto. (struct vms_rec_rd, stryct vms_rec_wr): New declarations. (vms_get_module_name, get_vms_time_string): New declarations. (vms_time_to_time_t, vms_rawtime_to_time_t): Ditto. (_bfd_vms_output_begin_subrec, _bfd_vms_output_end_subrec): Ditto. (_bfd_vms_save_sized_string, _bfd_vms_save_counted_string): Adjusted. (_bfd_vms_output_begin, _bfd_vms_output_alignment): Ditto. (_bfd_vms_output_end,_bfd_vms_output_check): Ditto. (_bfd_vms_output_byte, _bfd_vms_output_short): Ditto. (_bfd_vms_output_long, _bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted, _bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (bfd_vms_set_section_flags): Ditto.
2010-04-14 17:24:59 +08:00
/* VMS records output buffer. */
2009-02-23 Tristan Gingold <gingold@adacore.com> * vms.h: Update copyright year, fix comments, reorder declarations. (_bfd_save_vms_section): Remove the prototype. (EGPS_S_V_NO_SHIFT): New constant. (bfd_vms_set_section_flags): New prototype. (EGPS_S_B_ALIGN, EGPS_S_W_FLAGS, EGPS_S_L_ALLOC, EGPS_S_B_NAMLNG): New constants. (EGSY_S_W_FLAGS): Ditto. (EGSY_S_V_QUAD_VAL): Ditto. (ESDF_S_L_VALUE, ESDF_S_L_PSINDX, ESDF_S_B_NAMLNG): Ditto. (EGST_S_W_FLAGS, EGST_S_Q_LP_1, EGST_S_Q_LP_2, EGST_S_L_PSINDX, EGST_S_B_NAMLNG): Ditto. (ESRF_S_B_NAMLNG): Ditto. (ETIR_S_C_HEADER_SIZE): Ditto. (EGPS_S_V_ALLOC_64BIT): Ditto. (DST_S_C_EPILOG): Ditto. (DST_S_C_SRC_SETLNUM_L, DST_S_C_SRC_SETLNUM_W) : Ditto. (DST_S_C_SRC_INCRLNUM_B): Ditto. (DST_S_B_PCLINE_UNSBYTE, DST_S_W_PCLINE_UNSWORD): Ditto. (DST_S_L_PCLINE_UNSLONG): Ditto. (DST_S_B_MODBEG_NAME, DST_S_L_RTNBEG_ADDRESS) : Ditto (DST_S_B_RTNBEG_NAME, DST_S_L_RTNEND_SIZE): Ditto (DST_S_C_SOURCE_HEADER_SIZE): Ditto. (DST_S_B_SRC_DF_LENGTH, DST_S_W_SRC_DF_FILEID): Ditto. (DST_S_B_SRC_DF_FILENAME, DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_W_SRC_UNSWORD, DST_S_L_SRC_UNSLONG): Ditto. Add prototypes. (vms_section, vms_reloc): Remove types. (hdr_struc): Replaced by ... (hdr_struct): ... new type. (EMH_S_W_HDRTYP, EMH_S_B_STRLVL, EMH_S_L_ARCH1): New constants. (EMH_S_L_ARCH2, EMH_S_L_RECSIZ, EMH_S_B_NAMLNG): Ditto. (EMH_DATE_LENGTH): Ditto. (eom_struc): Replaced by ... (eom_struct): ... new type. (EEOM_S_L_TOTAL_LPS, EEOM_S_W_COMCOD, EEOM_S_B_TFRFLG): New constants. (EEOM_S_L_PSINDX, EEOM_S_L_TFRADR): Ditto. (EIHD_S_K_MAJORID, EIHD_S_K_MINORID, EIHD_S_K_EXE): Ditto. (EIHD_S_L_SIZE, EIHD_S_L_ISDOFF, EIHD_S_L_SYMDBGOFF): Ditto. (EIHD_S_Q_SYMVVA, EIHD_S_L_IMGTYPE): Ditto. (EISD_S_L_EISDSIZE, EISD_S_L_SECSIZE, EISD_S_Q_VIR_ADDR): Ditto. (EISD_S_L_FLAGS, EISD_S_L_VBN, EISD_S_R_CONTROL): Ditto. (EISD_S_L_IDENT, EISD_S_T_GBLNAM): Ditto. (EISD_S_M_GBL, EISD_S_M_CRF, EISD_S_M_DZRO, EISD_S_M_WRT): Ditto. (EISD_S_M_INITALCODE, EISD_S_M_BASED, EISD_S_M_FIXUPVEC): Ditto. (EISD_S_M_RESIDENT, EISD_S_M_VECTOR, EISD_S_M_PROTECT): Ditto. (EISD_S_M_LASTCLU, EISD_S_M_EXE, EISD_S_M_NONSHRADR): Ditto. (EISD_S_M_QUAD_LENGTH, EISD_S_M_ALLOC_64BIT): Ditto. (EIHS_S_L_DSTVBN, EIHS_S_L_DSTSIZE, EIHS_S_L_GSTVBN): Ditto. (EIHS_S_L_GSTSIZE, EIHS_S_L_DMTVBN, EIHS_S_L_DMTBYTES): Ditto. (DBG_S_L_DMT_MODBEG, DBG_S_L_DST_SIZE): Ditto. (DBG_S_W_DMT_PSECT_COUNT, DBG_S_C_DMT_HEADER_SIZE): Ditto. (DBG_S_L_DMT_PSECT_START, DBG_S_L_DMT_PSECT_LENGTH) (DBG_S_C_DMT_PSECT_SIZE): Ditto. (enum file_type_enum): New type. (struct location_struct): Removed. (struct fileinfo, struct srecinfo, struct lineinfo): New types. (struct funcinfo, struct module): Ditto. (struct vms_private_data_struct): Update fields. (struct vms_section_data_struct): New type. * vms.c: Update copyright year, fix comments, Fix includes for DECC, add prototypes. (vms_initialize): Use bfd_alloc instead of bfd_zalloc and remove some initializers. Use flavour to set is_vax, location_stack is removed. (struct pair): Declare. (fill_section_ptr): Initialize variables at declaration. Add guard to set SECTION_SYM flag, handlde und section. (vms_fixup_sections): Use struct pair for fill_section_ptr argument. (_bfd_vms_slurp_object_records): New function, replaces previous vms_object_p. (vms_slurp_module): New function. (vms_slurp_image): Ditto. (vms_object_p): Complete rewrite. (vms_mkobject): Use is_vax field to slect architecture. (free_reloc_stream): New function. (vms_convert_to_var): Ditto. (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_close_and_cleanup): Call free_reloc_stream, convert file to VAR format on VMS. (vms_new_section_hook): Set alignment to 0, allocate private data. (vms_get_section_contents): Load content. (vms_get_symbol_info): Handle undefined section. (vms_find_nearest_line): Handle. (alloc_reloc_stream): New function. (vms_slurp_reloc_table): Ditto. (vms_get_reloc_upper_bound): Make it real. (vms_canonicalize_reloc): Do the real work. (alpha_howto_table): Add ALPHA_R_NOP, ALPHA_R_BSR, ALPHA_R_LDA, ALPHA_R_BOH. (vms_bfd_reloc_type_lookup): Handle NOP, BSR, LDA and BOH. (vms_set_arch_mach): Check arch. (vms_set_section_contents): Copy the content after allocation. (vms_alpha_vec): Update object flags. * vms-tir.c: Update copyright year, fix comments, add prototypes for new functions. (dst_define_location): New function. (dst_restore_location): New function. (dst_retrieve_location): New function. (dst_check_allocation): New function. (image_dump): Call dst_check_allocation. (image_write_b): Ditto. (image_write_w): Ditto. (image_write_l): Ditto. (image_write_q): Ditto. (cmd_name): Handle STA_LW, STA_QW, STO_OFF, STO_IMM, STO_IMMR, STO_LW, STO_QW, OPR_ADD, CTL_SETRB, STC_LP_PSB, CTL_DFLOC, CTL_STLOC, CTL_STKDL. Call error handler instead of abort if name is not known. (etir_sta): Add quarter_relocs argument and set it. Fix cast. (etir_sto): Ditto. (etir_opr): Ditto, return FALSE in case of error. (etir_ctl): Add quarter_relocs argument and set it, fix cast. Fix CTL_DFLOC, CTL_STLOC, CTL_STKDL. (etir_stc): Add quarter_relocs argument and set it, fix cast. Fix STC_LP, STC_LP_PSB, STC_GBL and STC_CGA. Handle STC_LP_PSB, STC_BSR_GBL, STC_LDA_GBL, STC_BOH_GBL. Move STC_NOP_PS, STC_BSR_PS, STC_LDA_PS, STC_BOH_PS, STC_NBH_PS. Return FALSE in case of error. (tir_sta): Change sign of psect. (tir_ctl): Ditto. (tir_cmd): Fix cast. Makes tir_table static const. (etir_cmd): Add quarter_relocs argument, makes etir_table const, add argument to explain. (analyze_etir): Initialize maxptr, add quarter_relocs declaration, move some declarations into inner scopes. Handle quarter_relocs and STO_IMM. (_bfd_vms_slurp_tir): Use constant instead of hard-coded values. (_bfd_vms_slurp_relocs): New function. (_bfd_vms_decode_relocs): New function. (sto_imm): Rewritten. (start_first_etbt_record): New function. (start_another_etbt_record): Ditto. (etir_output_check): Ditto. (defer_reloc_p): Ditto. (_bfd_vms_write_tir): Remove nextoffset, convert a while-loop to a for-loop. Correctly deals with contents, deals with .vmsdebug, rewritte relocations handling. (_bfd_vms_write_tbt): Removed. (_bfd_vms_write_dbg): Ditto. * vms-misc.c: Update copyright year, Fix comments. (_bfd_vms_get_header_values): Use 'size' instead of 'length'. (maybe_adjust_record_pointer_for_object): New function. (_bfd_vms_get_first_record): New function, replaces ... (_bfd_vms_get_record): .. removed. (_bfd_vms_get_object_record): New function. (_bfd_vms_get_object_record): New function. (vms_get_remaining_object_record): New function, replaces ... (_bfd_vms_get_next_record): ... removed. (add_new_contents): Removed. (_bfd_save_vms_section): Removed. (_bfd_get_vms_section): Removed. (_bfd_vms_output_flush): Write in VAR format. (new_symbol): Don't make UND section. * vms-hdr.c: Update copyright year, update list of record handled. (_bfd_vms_slurp_hdr): rec_length renamed to rec_size. (_bfd_vms_write_hdr): Strip vms and unix patches, add comments, truncate module name at 31 characters, use constants instead of hard-coded value, write BFD version instead of a fixed string. (_bfd_vms_slurp_ihd): New function. (_bfd_vms_slurp_isd): Ditto. (_bfd_vms_slurp_ihs): Ditto. (new_module): Ditto. (parse_module): Ditto (build_module_list): Ditto. (module_find_nearest_line): Ditto. (_bfd_vms_find_nearest_dst_line): Ditto. (vms_slurp_debug): Ditto. (_bfd_vms_slurp_dbg): Ditto. (_bfd_vms_slurp_tbt): Ditto. (_bfd_vms_write_dbg): Ditto. (_bfd_vms_write_tbt): Ditto. * vms-gsd.c: Update copyright year, update list of records handled. (EVAX_LITERALS_NAME): New macro. (evax_section_flags): Add an entry for EVAX_LITERALS_NAME. (gpsflagdesc, gsyflagdesc): Moved out of _bfd_vms_slurp_gsd. (register_universal_symbol): New function and prototype. (_bfd_vms_slurp_gsd): Fix indentations and casts, improve debug messages, use constants instead of hard-coded value, fix missing endianness conversion, handle global symbol (SYMG). (bfd_vms_set_section_flags): New function. (_bfd_vms_write_gsd): Don't write .vmsdebug section, handle section literals, fix indentation, handle section bfd and vms flags, don't output LIB$INITIALIZE symbol, fix handling of weak symbols, fix evax vs vax procedure descriptor, handle absolute symbols. * reloc.c (BFD_RELOC_ALPHA_NOP, BFD_RELOC_ALPHA_BSR, BFD_RELOC_ALPHA_LDA, BFD_RELOC_ALPHA_BOH): New relocations. * makefile.vms (DEFS): Fix flags for VMS. * bfdio.c (real_fopen): Handle multiple VMS fopen attributes. * bfd-in2.h: Regenerated. * libbfd.h: Regenerated.
2009-02-23 17:28:43 +08:00
2010-04-14 Tristan Gingold <gingold@adacore.com> * Makefile.am (BFD32_BACKENDS): Remove vms-gsd.lo, vms-hdr.lo, vms-tir.lo, vms.lo and add vms-alpha.lo (BFD32_BACKENDS_CFILES): Remove vms-gsd.c, vms-hdr.c, vms-tir.c, vms.c and add vms-alpha.c * Makefile.in: Regenerate. * configure.in (TDEFINES): Adjust file list for vms_alpha_vec. Remove vms_vax_vec. * configure: Regenerate. * targets.c (vms_vax_vec): Remove the declaration. (_bfd_target_vector): Remove vms_vax_vec. * vms-alpha.c: New file. * vms-gsd.c: Removed, rewritten in vms-alpha.c * vms-hdr.c: Ditto. * vms-tir.c: Ditto. * vms.c: Ditto. * vms-misc.c: Fix indentation and comments. Replace most of #if VMS_DEBUG/vms_debug with vms_debug2. (_bfd_vms_hash_newfunc): Moved to vms-alpha.c (hash_string): Ditto. (_bfd_vms_length_hash_symbol): Ditto. (maybe_adjust_record_pointer_for_object): Ditto. (_bfd_vms_get_object_record): Ditto. (vms_get_remaining_object_record): Ditto. (_bfd_vms_push): Ditto. (_bfd_vms_pop): Ditto. (_bfd_vms_get_header_values): Removed. (_bfd_vms_get_first_record): Removed. (vms_get_remaining_image_record): Removed. (new_symbol): Removed. (_bfd_vms_enter_symbol): Removed. (_bfd_vms_save_sized_string): Use memcpy instead of strncpy. (_bfd_vms_output_begin): Remove rechead parameter. Replace bfd parameter with struct vms_rec_wr. (_bfd_vms_output_push): Removed and replaced by ... (_bfd_vms_output_begin_subrec): ... new function. (_bfd_vms_output_alignment): Replace bfd parameter with struct vms_rec_wr, and adjust. (_bfd_vms_output_check): Ditto (_bfd_vms_output_byte): Ditto. (_bfd_vms_output_short): Ditto. (_bfd_vms_output_long): Ditto. (_bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted): Ditto. (_bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (_bfd_vms_output_pop): Removed and replaced by ... (_bfd_vms_output_end_subrec): ... new function. (_bfd_vms_output_flush): Removed. (_bfd_vms_output_align): New function. (_bfd_vms_output_end): Add recwr parameter. Adjust for this new parameter. (vms_convert_to_var): New function imported from vms.c (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_get_module_name): Ditto. (get_vms_time_string): Ditto. (vms_time_to_time_t): Ditto. (vms_rawtime_to_time_t): Ditto. * vms.h: All macros for the VMS file format are now in include/vms. Prototypes for vms.c, vms-gsd.c, vms-misc.c, vms-hdr.c, vms-tir.c have been removed. (struct vms_symbol_struct, struct stack_struct): Moved to vms-alpha.c (struct fileinfo, struct srecinfo, struct lineinfo): Ditto. (struct funcinfo, struct vms_private_data_struct): Ditto. (struct vms_section_data_struct): Ditto. (struct vms_rec_rd, stryct vms_rec_wr): New declarations. (vms_get_module_name, get_vms_time_string): New declarations. (vms_time_to_time_t, vms_rawtime_to_time_t): Ditto. (_bfd_vms_output_begin_subrec, _bfd_vms_output_end_subrec): Ditto. (_bfd_vms_save_sized_string, _bfd_vms_save_counted_string): Adjusted. (_bfd_vms_output_begin, _bfd_vms_output_alignment): Ditto. (_bfd_vms_output_end,_bfd_vms_output_check): Ditto. (_bfd_vms_output_byte, _bfd_vms_output_short): Ditto. (_bfd_vms_output_long, _bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted, _bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (bfd_vms_set_section_flags): Ditto.
2010-04-14 17:24:59 +08:00
struct vms_rec_wr
{
/* Output buffer. */
unsigned char *buf;
2009-02-23 Tristan Gingold <gingold@adacore.com> * vms.h: Update copyright year, fix comments, reorder declarations. (_bfd_save_vms_section): Remove the prototype. (EGPS_S_V_NO_SHIFT): New constant. (bfd_vms_set_section_flags): New prototype. (EGPS_S_B_ALIGN, EGPS_S_W_FLAGS, EGPS_S_L_ALLOC, EGPS_S_B_NAMLNG): New constants. (EGSY_S_W_FLAGS): Ditto. (EGSY_S_V_QUAD_VAL): Ditto. (ESDF_S_L_VALUE, ESDF_S_L_PSINDX, ESDF_S_B_NAMLNG): Ditto. (EGST_S_W_FLAGS, EGST_S_Q_LP_1, EGST_S_Q_LP_2, EGST_S_L_PSINDX, EGST_S_B_NAMLNG): Ditto. (ESRF_S_B_NAMLNG): Ditto. (ETIR_S_C_HEADER_SIZE): Ditto. (EGPS_S_V_ALLOC_64BIT): Ditto. (DST_S_C_EPILOG): Ditto. (DST_S_C_SRC_SETLNUM_L, DST_S_C_SRC_SETLNUM_W) : Ditto. (DST_S_C_SRC_INCRLNUM_B): Ditto. (DST_S_B_PCLINE_UNSBYTE, DST_S_W_PCLINE_UNSWORD): Ditto. (DST_S_L_PCLINE_UNSLONG): Ditto. (DST_S_B_MODBEG_NAME, DST_S_L_RTNBEG_ADDRESS) : Ditto (DST_S_B_RTNBEG_NAME, DST_S_L_RTNEND_SIZE): Ditto (DST_S_C_SOURCE_HEADER_SIZE): Ditto. (DST_S_B_SRC_DF_LENGTH, DST_S_W_SRC_DF_FILEID): Ditto. (DST_S_B_SRC_DF_FILENAME, DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_W_SRC_UNSWORD, DST_S_L_SRC_UNSLONG): Ditto. Add prototypes. (vms_section, vms_reloc): Remove types. (hdr_struc): Replaced by ... (hdr_struct): ... new type. (EMH_S_W_HDRTYP, EMH_S_B_STRLVL, EMH_S_L_ARCH1): New constants. (EMH_S_L_ARCH2, EMH_S_L_RECSIZ, EMH_S_B_NAMLNG): Ditto. (EMH_DATE_LENGTH): Ditto. (eom_struc): Replaced by ... (eom_struct): ... new type. (EEOM_S_L_TOTAL_LPS, EEOM_S_W_COMCOD, EEOM_S_B_TFRFLG): New constants. (EEOM_S_L_PSINDX, EEOM_S_L_TFRADR): Ditto. (EIHD_S_K_MAJORID, EIHD_S_K_MINORID, EIHD_S_K_EXE): Ditto. (EIHD_S_L_SIZE, EIHD_S_L_ISDOFF, EIHD_S_L_SYMDBGOFF): Ditto. (EIHD_S_Q_SYMVVA, EIHD_S_L_IMGTYPE): Ditto. (EISD_S_L_EISDSIZE, EISD_S_L_SECSIZE, EISD_S_Q_VIR_ADDR): Ditto. (EISD_S_L_FLAGS, EISD_S_L_VBN, EISD_S_R_CONTROL): Ditto. (EISD_S_L_IDENT, EISD_S_T_GBLNAM): Ditto. (EISD_S_M_GBL, EISD_S_M_CRF, EISD_S_M_DZRO, EISD_S_M_WRT): Ditto. (EISD_S_M_INITALCODE, EISD_S_M_BASED, EISD_S_M_FIXUPVEC): Ditto. (EISD_S_M_RESIDENT, EISD_S_M_VECTOR, EISD_S_M_PROTECT): Ditto. (EISD_S_M_LASTCLU, EISD_S_M_EXE, EISD_S_M_NONSHRADR): Ditto. (EISD_S_M_QUAD_LENGTH, EISD_S_M_ALLOC_64BIT): Ditto. (EIHS_S_L_DSTVBN, EIHS_S_L_DSTSIZE, EIHS_S_L_GSTVBN): Ditto. (EIHS_S_L_GSTSIZE, EIHS_S_L_DMTVBN, EIHS_S_L_DMTBYTES): Ditto. (DBG_S_L_DMT_MODBEG, DBG_S_L_DST_SIZE): Ditto. (DBG_S_W_DMT_PSECT_COUNT, DBG_S_C_DMT_HEADER_SIZE): Ditto. (DBG_S_L_DMT_PSECT_START, DBG_S_L_DMT_PSECT_LENGTH) (DBG_S_C_DMT_PSECT_SIZE): Ditto. (enum file_type_enum): New type. (struct location_struct): Removed. (struct fileinfo, struct srecinfo, struct lineinfo): New types. (struct funcinfo, struct module): Ditto. (struct vms_private_data_struct): Update fields. (struct vms_section_data_struct): New type. * vms.c: Update copyright year, fix comments, Fix includes for DECC, add prototypes. (vms_initialize): Use bfd_alloc instead of bfd_zalloc and remove some initializers. Use flavour to set is_vax, location_stack is removed. (struct pair): Declare. (fill_section_ptr): Initialize variables at declaration. Add guard to set SECTION_SYM flag, handlde und section. (vms_fixup_sections): Use struct pair for fill_section_ptr argument. (_bfd_vms_slurp_object_records): New function, replaces previous vms_object_p. (vms_slurp_module): New function. (vms_slurp_image): Ditto. (vms_object_p): Complete rewrite. (vms_mkobject): Use is_vax field to slect architecture. (free_reloc_stream): New function. (vms_convert_to_var): Ditto. (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_close_and_cleanup): Call free_reloc_stream, convert file to VAR format on VMS. (vms_new_section_hook): Set alignment to 0, allocate private data. (vms_get_section_contents): Load content. (vms_get_symbol_info): Handle undefined section. (vms_find_nearest_line): Handle. (alloc_reloc_stream): New function. (vms_slurp_reloc_table): Ditto. (vms_get_reloc_upper_bound): Make it real. (vms_canonicalize_reloc): Do the real work. (alpha_howto_table): Add ALPHA_R_NOP, ALPHA_R_BSR, ALPHA_R_LDA, ALPHA_R_BOH. (vms_bfd_reloc_type_lookup): Handle NOP, BSR, LDA and BOH. (vms_set_arch_mach): Check arch. (vms_set_section_contents): Copy the content after allocation. (vms_alpha_vec): Update object flags. * vms-tir.c: Update copyright year, fix comments, add prototypes for new functions. (dst_define_location): New function. (dst_restore_location): New function. (dst_retrieve_location): New function. (dst_check_allocation): New function. (image_dump): Call dst_check_allocation. (image_write_b): Ditto. (image_write_w): Ditto. (image_write_l): Ditto. (image_write_q): Ditto. (cmd_name): Handle STA_LW, STA_QW, STO_OFF, STO_IMM, STO_IMMR, STO_LW, STO_QW, OPR_ADD, CTL_SETRB, STC_LP_PSB, CTL_DFLOC, CTL_STLOC, CTL_STKDL. Call error handler instead of abort if name is not known. (etir_sta): Add quarter_relocs argument and set it. Fix cast. (etir_sto): Ditto. (etir_opr): Ditto, return FALSE in case of error. (etir_ctl): Add quarter_relocs argument and set it, fix cast. Fix CTL_DFLOC, CTL_STLOC, CTL_STKDL. (etir_stc): Add quarter_relocs argument and set it, fix cast. Fix STC_LP, STC_LP_PSB, STC_GBL and STC_CGA. Handle STC_LP_PSB, STC_BSR_GBL, STC_LDA_GBL, STC_BOH_GBL. Move STC_NOP_PS, STC_BSR_PS, STC_LDA_PS, STC_BOH_PS, STC_NBH_PS. Return FALSE in case of error. (tir_sta): Change sign of psect. (tir_ctl): Ditto. (tir_cmd): Fix cast. Makes tir_table static const. (etir_cmd): Add quarter_relocs argument, makes etir_table const, add argument to explain. (analyze_etir): Initialize maxptr, add quarter_relocs declaration, move some declarations into inner scopes. Handle quarter_relocs and STO_IMM. (_bfd_vms_slurp_tir): Use constant instead of hard-coded values. (_bfd_vms_slurp_relocs): New function. (_bfd_vms_decode_relocs): New function. (sto_imm): Rewritten. (start_first_etbt_record): New function. (start_another_etbt_record): Ditto. (etir_output_check): Ditto. (defer_reloc_p): Ditto. (_bfd_vms_write_tir): Remove nextoffset, convert a while-loop to a for-loop. Correctly deals with contents, deals with .vmsdebug, rewritte relocations handling. (_bfd_vms_write_tbt): Removed. (_bfd_vms_write_dbg): Ditto. * vms-misc.c: Update copyright year, Fix comments. (_bfd_vms_get_header_values): Use 'size' instead of 'length'. (maybe_adjust_record_pointer_for_object): New function. (_bfd_vms_get_first_record): New function, replaces ... (_bfd_vms_get_record): .. removed. (_bfd_vms_get_object_record): New function. (_bfd_vms_get_object_record): New function. (vms_get_remaining_object_record): New function, replaces ... (_bfd_vms_get_next_record): ... removed. (add_new_contents): Removed. (_bfd_save_vms_section): Removed. (_bfd_get_vms_section): Removed. (_bfd_vms_output_flush): Write in VAR format. (new_symbol): Don't make UND section. * vms-hdr.c: Update copyright year, update list of record handled. (_bfd_vms_slurp_hdr): rec_length renamed to rec_size. (_bfd_vms_write_hdr): Strip vms and unix patches, add comments, truncate module name at 31 characters, use constants instead of hard-coded value, write BFD version instead of a fixed string. (_bfd_vms_slurp_ihd): New function. (_bfd_vms_slurp_isd): Ditto. (_bfd_vms_slurp_ihs): Ditto. (new_module): Ditto. (parse_module): Ditto (build_module_list): Ditto. (module_find_nearest_line): Ditto. (_bfd_vms_find_nearest_dst_line): Ditto. (vms_slurp_debug): Ditto. (_bfd_vms_slurp_dbg): Ditto. (_bfd_vms_slurp_tbt): Ditto. (_bfd_vms_write_dbg): Ditto. (_bfd_vms_write_tbt): Ditto. * vms-gsd.c: Update copyright year, update list of records handled. (EVAX_LITERALS_NAME): New macro. (evax_section_flags): Add an entry for EVAX_LITERALS_NAME. (gpsflagdesc, gsyflagdesc): Moved out of _bfd_vms_slurp_gsd. (register_universal_symbol): New function and prototype. (_bfd_vms_slurp_gsd): Fix indentations and casts, improve debug messages, use constants instead of hard-coded value, fix missing endianness conversion, handle global symbol (SYMG). (bfd_vms_set_section_flags): New function. (_bfd_vms_write_gsd): Don't write .vmsdebug section, handle section literals, fix indentation, handle section bfd and vms flags, don't output LIB$INITIALIZE symbol, fix handling of weak symbols, fix evax vs vax procedure descriptor, handle absolute symbols. * reloc.c (BFD_RELOC_ALPHA_NOP, BFD_RELOC_ALPHA_BSR, BFD_RELOC_ALPHA_LDA, BFD_RELOC_ALPHA_BOH): New relocations. * makefile.vms (DEFS): Fix flags for VMS. * bfdio.c (real_fopen): Handle multiple VMS fopen attributes. * bfd-in2.h: Regenerated. * libbfd.h: Regenerated.
2009-02-23 17:28:43 +08:00
2010-04-14 Tristan Gingold <gingold@adacore.com> * Makefile.am (BFD32_BACKENDS): Remove vms-gsd.lo, vms-hdr.lo, vms-tir.lo, vms.lo and add vms-alpha.lo (BFD32_BACKENDS_CFILES): Remove vms-gsd.c, vms-hdr.c, vms-tir.c, vms.c and add vms-alpha.c * Makefile.in: Regenerate. * configure.in (TDEFINES): Adjust file list for vms_alpha_vec. Remove vms_vax_vec. * configure: Regenerate. * targets.c (vms_vax_vec): Remove the declaration. (_bfd_target_vector): Remove vms_vax_vec. * vms-alpha.c: New file. * vms-gsd.c: Removed, rewritten in vms-alpha.c * vms-hdr.c: Ditto. * vms-tir.c: Ditto. * vms.c: Ditto. * vms-misc.c: Fix indentation and comments. Replace most of #if VMS_DEBUG/vms_debug with vms_debug2. (_bfd_vms_hash_newfunc): Moved to vms-alpha.c (hash_string): Ditto. (_bfd_vms_length_hash_symbol): Ditto. (maybe_adjust_record_pointer_for_object): Ditto. (_bfd_vms_get_object_record): Ditto. (vms_get_remaining_object_record): Ditto. (_bfd_vms_push): Ditto. (_bfd_vms_pop): Ditto. (_bfd_vms_get_header_values): Removed. (_bfd_vms_get_first_record): Removed. (vms_get_remaining_image_record): Removed. (new_symbol): Removed. (_bfd_vms_enter_symbol): Removed. (_bfd_vms_save_sized_string): Use memcpy instead of strncpy. (_bfd_vms_output_begin): Remove rechead parameter. Replace bfd parameter with struct vms_rec_wr. (_bfd_vms_output_push): Removed and replaced by ... (_bfd_vms_output_begin_subrec): ... new function. (_bfd_vms_output_alignment): Replace bfd parameter with struct vms_rec_wr, and adjust. (_bfd_vms_output_check): Ditto (_bfd_vms_output_byte): Ditto. (_bfd_vms_output_short): Ditto. (_bfd_vms_output_long): Ditto. (_bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted): Ditto. (_bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (_bfd_vms_output_pop): Removed and replaced by ... (_bfd_vms_output_end_subrec): ... new function. (_bfd_vms_output_flush): Removed. (_bfd_vms_output_align): New function. (_bfd_vms_output_end): Add recwr parameter. Adjust for this new parameter. (vms_convert_to_var): New function imported from vms.c (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_get_module_name): Ditto. (get_vms_time_string): Ditto. (vms_time_to_time_t): Ditto. (vms_rawtime_to_time_t): Ditto. * vms.h: All macros for the VMS file format are now in include/vms. Prototypes for vms.c, vms-gsd.c, vms-misc.c, vms-hdr.c, vms-tir.c have been removed. (struct vms_symbol_struct, struct stack_struct): Moved to vms-alpha.c (struct fileinfo, struct srecinfo, struct lineinfo): Ditto. (struct funcinfo, struct vms_private_data_struct): Ditto. (struct vms_section_data_struct): Ditto. (struct vms_rec_rd, stryct vms_rec_wr): New declarations. (vms_get_module_name, get_vms_time_string): New declarations. (vms_time_to_time_t, vms_rawtime_to_time_t): Ditto. (_bfd_vms_output_begin_subrec, _bfd_vms_output_end_subrec): Ditto. (_bfd_vms_save_sized_string, _bfd_vms_save_counted_string): Adjusted. (_bfd_vms_output_begin, _bfd_vms_output_alignment): Ditto. (_bfd_vms_output_end,_bfd_vms_output_check): Ditto. (_bfd_vms_output_byte, _bfd_vms_output_short): Ditto. (_bfd_vms_output_long, _bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted, _bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (bfd_vms_set_section_flags): Ditto.
2010-04-14 17:24:59 +08:00
/* Current length of the record. */
unsigned short int size;
2009-02-23 Tristan Gingold <gingold@adacore.com> * vms.h: Update copyright year, fix comments, reorder declarations. (_bfd_save_vms_section): Remove the prototype. (EGPS_S_V_NO_SHIFT): New constant. (bfd_vms_set_section_flags): New prototype. (EGPS_S_B_ALIGN, EGPS_S_W_FLAGS, EGPS_S_L_ALLOC, EGPS_S_B_NAMLNG): New constants. (EGSY_S_W_FLAGS): Ditto. (EGSY_S_V_QUAD_VAL): Ditto. (ESDF_S_L_VALUE, ESDF_S_L_PSINDX, ESDF_S_B_NAMLNG): Ditto. (EGST_S_W_FLAGS, EGST_S_Q_LP_1, EGST_S_Q_LP_2, EGST_S_L_PSINDX, EGST_S_B_NAMLNG): Ditto. (ESRF_S_B_NAMLNG): Ditto. (ETIR_S_C_HEADER_SIZE): Ditto. (EGPS_S_V_ALLOC_64BIT): Ditto. (DST_S_C_EPILOG): Ditto. (DST_S_C_SRC_SETLNUM_L, DST_S_C_SRC_SETLNUM_W) : Ditto. (DST_S_C_SRC_INCRLNUM_B): Ditto. (DST_S_B_PCLINE_UNSBYTE, DST_S_W_PCLINE_UNSWORD): Ditto. (DST_S_L_PCLINE_UNSLONG): Ditto. (DST_S_B_MODBEG_NAME, DST_S_L_RTNBEG_ADDRESS) : Ditto (DST_S_B_RTNBEG_NAME, DST_S_L_RTNEND_SIZE): Ditto (DST_S_C_SOURCE_HEADER_SIZE): Ditto. (DST_S_B_SRC_DF_LENGTH, DST_S_W_SRC_DF_FILEID): Ditto. (DST_S_B_SRC_DF_FILENAME, DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_W_SRC_UNSWORD, DST_S_L_SRC_UNSLONG): Ditto. Add prototypes. (vms_section, vms_reloc): Remove types. (hdr_struc): Replaced by ... (hdr_struct): ... new type. (EMH_S_W_HDRTYP, EMH_S_B_STRLVL, EMH_S_L_ARCH1): New constants. (EMH_S_L_ARCH2, EMH_S_L_RECSIZ, EMH_S_B_NAMLNG): Ditto. (EMH_DATE_LENGTH): Ditto. (eom_struc): Replaced by ... (eom_struct): ... new type. (EEOM_S_L_TOTAL_LPS, EEOM_S_W_COMCOD, EEOM_S_B_TFRFLG): New constants. (EEOM_S_L_PSINDX, EEOM_S_L_TFRADR): Ditto. (EIHD_S_K_MAJORID, EIHD_S_K_MINORID, EIHD_S_K_EXE): Ditto. (EIHD_S_L_SIZE, EIHD_S_L_ISDOFF, EIHD_S_L_SYMDBGOFF): Ditto. (EIHD_S_Q_SYMVVA, EIHD_S_L_IMGTYPE): Ditto. (EISD_S_L_EISDSIZE, EISD_S_L_SECSIZE, EISD_S_Q_VIR_ADDR): Ditto. (EISD_S_L_FLAGS, EISD_S_L_VBN, EISD_S_R_CONTROL): Ditto. (EISD_S_L_IDENT, EISD_S_T_GBLNAM): Ditto. (EISD_S_M_GBL, EISD_S_M_CRF, EISD_S_M_DZRO, EISD_S_M_WRT): Ditto. (EISD_S_M_INITALCODE, EISD_S_M_BASED, EISD_S_M_FIXUPVEC): Ditto. (EISD_S_M_RESIDENT, EISD_S_M_VECTOR, EISD_S_M_PROTECT): Ditto. (EISD_S_M_LASTCLU, EISD_S_M_EXE, EISD_S_M_NONSHRADR): Ditto. (EISD_S_M_QUAD_LENGTH, EISD_S_M_ALLOC_64BIT): Ditto. (EIHS_S_L_DSTVBN, EIHS_S_L_DSTSIZE, EIHS_S_L_GSTVBN): Ditto. (EIHS_S_L_GSTSIZE, EIHS_S_L_DMTVBN, EIHS_S_L_DMTBYTES): Ditto. (DBG_S_L_DMT_MODBEG, DBG_S_L_DST_SIZE): Ditto. (DBG_S_W_DMT_PSECT_COUNT, DBG_S_C_DMT_HEADER_SIZE): Ditto. (DBG_S_L_DMT_PSECT_START, DBG_S_L_DMT_PSECT_LENGTH) (DBG_S_C_DMT_PSECT_SIZE): Ditto. (enum file_type_enum): New type. (struct location_struct): Removed. (struct fileinfo, struct srecinfo, struct lineinfo): New types. (struct funcinfo, struct module): Ditto. (struct vms_private_data_struct): Update fields. (struct vms_section_data_struct): New type. * vms.c: Update copyright year, fix comments, Fix includes for DECC, add prototypes. (vms_initialize): Use bfd_alloc instead of bfd_zalloc and remove some initializers. Use flavour to set is_vax, location_stack is removed. (struct pair): Declare. (fill_section_ptr): Initialize variables at declaration. Add guard to set SECTION_SYM flag, handlde und section. (vms_fixup_sections): Use struct pair for fill_section_ptr argument. (_bfd_vms_slurp_object_records): New function, replaces previous vms_object_p. (vms_slurp_module): New function. (vms_slurp_image): Ditto. (vms_object_p): Complete rewrite. (vms_mkobject): Use is_vax field to slect architecture. (free_reloc_stream): New function. (vms_convert_to_var): Ditto. (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_close_and_cleanup): Call free_reloc_stream, convert file to VAR format on VMS. (vms_new_section_hook): Set alignment to 0, allocate private data. (vms_get_section_contents): Load content. (vms_get_symbol_info): Handle undefined section. (vms_find_nearest_line): Handle. (alloc_reloc_stream): New function. (vms_slurp_reloc_table): Ditto. (vms_get_reloc_upper_bound): Make it real. (vms_canonicalize_reloc): Do the real work. (alpha_howto_table): Add ALPHA_R_NOP, ALPHA_R_BSR, ALPHA_R_LDA, ALPHA_R_BOH. (vms_bfd_reloc_type_lookup): Handle NOP, BSR, LDA and BOH. (vms_set_arch_mach): Check arch. (vms_set_section_contents): Copy the content after allocation. (vms_alpha_vec): Update object flags. * vms-tir.c: Update copyright year, fix comments, add prototypes for new functions. (dst_define_location): New function. (dst_restore_location): New function. (dst_retrieve_location): New function. (dst_check_allocation): New function. (image_dump): Call dst_check_allocation. (image_write_b): Ditto. (image_write_w): Ditto. (image_write_l): Ditto. (image_write_q): Ditto. (cmd_name): Handle STA_LW, STA_QW, STO_OFF, STO_IMM, STO_IMMR, STO_LW, STO_QW, OPR_ADD, CTL_SETRB, STC_LP_PSB, CTL_DFLOC, CTL_STLOC, CTL_STKDL. Call error handler instead of abort if name is not known. (etir_sta): Add quarter_relocs argument and set it. Fix cast. (etir_sto): Ditto. (etir_opr): Ditto, return FALSE in case of error. (etir_ctl): Add quarter_relocs argument and set it, fix cast. Fix CTL_DFLOC, CTL_STLOC, CTL_STKDL. (etir_stc): Add quarter_relocs argument and set it, fix cast. Fix STC_LP, STC_LP_PSB, STC_GBL and STC_CGA. Handle STC_LP_PSB, STC_BSR_GBL, STC_LDA_GBL, STC_BOH_GBL. Move STC_NOP_PS, STC_BSR_PS, STC_LDA_PS, STC_BOH_PS, STC_NBH_PS. Return FALSE in case of error. (tir_sta): Change sign of psect. (tir_ctl): Ditto. (tir_cmd): Fix cast. Makes tir_table static const. (etir_cmd): Add quarter_relocs argument, makes etir_table const, add argument to explain. (analyze_etir): Initialize maxptr, add quarter_relocs declaration, move some declarations into inner scopes. Handle quarter_relocs and STO_IMM. (_bfd_vms_slurp_tir): Use constant instead of hard-coded values. (_bfd_vms_slurp_relocs): New function. (_bfd_vms_decode_relocs): New function. (sto_imm): Rewritten. (start_first_etbt_record): New function. (start_another_etbt_record): Ditto. (etir_output_check): Ditto. (defer_reloc_p): Ditto. (_bfd_vms_write_tir): Remove nextoffset, convert a while-loop to a for-loop. Correctly deals with contents, deals with .vmsdebug, rewritte relocations handling. (_bfd_vms_write_tbt): Removed. (_bfd_vms_write_dbg): Ditto. * vms-misc.c: Update copyright year, Fix comments. (_bfd_vms_get_header_values): Use 'size' instead of 'length'. (maybe_adjust_record_pointer_for_object): New function. (_bfd_vms_get_first_record): New function, replaces ... (_bfd_vms_get_record): .. removed. (_bfd_vms_get_object_record): New function. (_bfd_vms_get_object_record): New function. (vms_get_remaining_object_record): New function, replaces ... (_bfd_vms_get_next_record): ... removed. (add_new_contents): Removed. (_bfd_save_vms_section): Removed. (_bfd_get_vms_section): Removed. (_bfd_vms_output_flush): Write in VAR format. (new_symbol): Don't make UND section. * vms-hdr.c: Update copyright year, update list of record handled. (_bfd_vms_slurp_hdr): rec_length renamed to rec_size. (_bfd_vms_write_hdr): Strip vms and unix patches, add comments, truncate module name at 31 characters, use constants instead of hard-coded value, write BFD version instead of a fixed string. (_bfd_vms_slurp_ihd): New function. (_bfd_vms_slurp_isd): Ditto. (_bfd_vms_slurp_ihs): Ditto. (new_module): Ditto. (parse_module): Ditto (build_module_list): Ditto. (module_find_nearest_line): Ditto. (_bfd_vms_find_nearest_dst_line): Ditto. (vms_slurp_debug): Ditto. (_bfd_vms_slurp_dbg): Ditto. (_bfd_vms_slurp_tbt): Ditto. (_bfd_vms_write_dbg): Ditto. (_bfd_vms_write_tbt): Ditto. * vms-gsd.c: Update copyright year, update list of records handled. (EVAX_LITERALS_NAME): New macro. (evax_section_flags): Add an entry for EVAX_LITERALS_NAME. (gpsflagdesc, gsyflagdesc): Moved out of _bfd_vms_slurp_gsd. (register_universal_symbol): New function and prototype. (_bfd_vms_slurp_gsd): Fix indentations and casts, improve debug messages, use constants instead of hard-coded value, fix missing endianness conversion, handle global symbol (SYMG). (bfd_vms_set_section_flags): New function. (_bfd_vms_write_gsd): Don't write .vmsdebug section, handle section literals, fix indentation, handle section bfd and vms flags, don't output LIB$INITIALIZE symbol, fix handling of weak symbols, fix evax vs vax procedure descriptor, handle absolute symbols. * reloc.c (BFD_RELOC_ALPHA_NOP, BFD_RELOC_ALPHA_BSR, BFD_RELOC_ALPHA_LDA, BFD_RELOC_ALPHA_BOH): New relocations. * makefile.vms (DEFS): Fix flags for VMS. * bfdio.c (real_fopen): Handle multiple VMS fopen attributes. * bfd-in2.h: Regenerated. * libbfd.h: Regenerated.
2009-02-23 17:28:43 +08:00
2010-04-14 Tristan Gingold <gingold@adacore.com> * Makefile.am (BFD32_BACKENDS): Remove vms-gsd.lo, vms-hdr.lo, vms-tir.lo, vms.lo and add vms-alpha.lo (BFD32_BACKENDS_CFILES): Remove vms-gsd.c, vms-hdr.c, vms-tir.c, vms.c and add vms-alpha.c * Makefile.in: Regenerate. * configure.in (TDEFINES): Adjust file list for vms_alpha_vec. Remove vms_vax_vec. * configure: Regenerate. * targets.c (vms_vax_vec): Remove the declaration. (_bfd_target_vector): Remove vms_vax_vec. * vms-alpha.c: New file. * vms-gsd.c: Removed, rewritten in vms-alpha.c * vms-hdr.c: Ditto. * vms-tir.c: Ditto. * vms.c: Ditto. * vms-misc.c: Fix indentation and comments. Replace most of #if VMS_DEBUG/vms_debug with vms_debug2. (_bfd_vms_hash_newfunc): Moved to vms-alpha.c (hash_string): Ditto. (_bfd_vms_length_hash_symbol): Ditto. (maybe_adjust_record_pointer_for_object): Ditto. (_bfd_vms_get_object_record): Ditto. (vms_get_remaining_object_record): Ditto. (_bfd_vms_push): Ditto. (_bfd_vms_pop): Ditto. (_bfd_vms_get_header_values): Removed. (_bfd_vms_get_first_record): Removed. (vms_get_remaining_image_record): Removed. (new_symbol): Removed. (_bfd_vms_enter_symbol): Removed. (_bfd_vms_save_sized_string): Use memcpy instead of strncpy. (_bfd_vms_output_begin): Remove rechead parameter. Replace bfd parameter with struct vms_rec_wr. (_bfd_vms_output_push): Removed and replaced by ... (_bfd_vms_output_begin_subrec): ... new function. (_bfd_vms_output_alignment): Replace bfd parameter with struct vms_rec_wr, and adjust. (_bfd_vms_output_check): Ditto (_bfd_vms_output_byte): Ditto. (_bfd_vms_output_short): Ditto. (_bfd_vms_output_long): Ditto. (_bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted): Ditto. (_bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (_bfd_vms_output_pop): Removed and replaced by ... (_bfd_vms_output_end_subrec): ... new function. (_bfd_vms_output_flush): Removed. (_bfd_vms_output_align): New function. (_bfd_vms_output_end): Add recwr parameter. Adjust for this new parameter. (vms_convert_to_var): New function imported from vms.c (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_get_module_name): Ditto. (get_vms_time_string): Ditto. (vms_time_to_time_t): Ditto. (vms_rawtime_to_time_t): Ditto. * vms.h: All macros for the VMS file format are now in include/vms. Prototypes for vms.c, vms-gsd.c, vms-misc.c, vms-hdr.c, vms-tir.c have been removed. (struct vms_symbol_struct, struct stack_struct): Moved to vms-alpha.c (struct fileinfo, struct srecinfo, struct lineinfo): Ditto. (struct funcinfo, struct vms_private_data_struct): Ditto. (struct vms_section_data_struct): Ditto. (struct vms_rec_rd, stryct vms_rec_wr): New declarations. (vms_get_module_name, get_vms_time_string): New declarations. (vms_time_to_time_t, vms_rawtime_to_time_t): Ditto. (_bfd_vms_output_begin_subrec, _bfd_vms_output_end_subrec): Ditto. (_bfd_vms_save_sized_string, _bfd_vms_save_counted_string): Adjusted. (_bfd_vms_output_begin, _bfd_vms_output_alignment): Ditto. (_bfd_vms_output_end,_bfd_vms_output_check): Ditto. (_bfd_vms_output_byte, _bfd_vms_output_short): Ditto. (_bfd_vms_output_long, _bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted, _bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (bfd_vms_set_section_flags): Ditto.
2010-04-14 17:24:59 +08:00
/* Sub-record start offset. */
unsigned short int subrec_offset;
2009-02-23 Tristan Gingold <gingold@adacore.com> * vms.h: Update copyright year, fix comments, reorder declarations. (_bfd_save_vms_section): Remove the prototype. (EGPS_S_V_NO_SHIFT): New constant. (bfd_vms_set_section_flags): New prototype. (EGPS_S_B_ALIGN, EGPS_S_W_FLAGS, EGPS_S_L_ALLOC, EGPS_S_B_NAMLNG): New constants. (EGSY_S_W_FLAGS): Ditto. (EGSY_S_V_QUAD_VAL): Ditto. (ESDF_S_L_VALUE, ESDF_S_L_PSINDX, ESDF_S_B_NAMLNG): Ditto. (EGST_S_W_FLAGS, EGST_S_Q_LP_1, EGST_S_Q_LP_2, EGST_S_L_PSINDX, EGST_S_B_NAMLNG): Ditto. (ESRF_S_B_NAMLNG): Ditto. (ETIR_S_C_HEADER_SIZE): Ditto. (EGPS_S_V_ALLOC_64BIT): Ditto. (DST_S_C_EPILOG): Ditto. (DST_S_C_SRC_SETLNUM_L, DST_S_C_SRC_SETLNUM_W) : Ditto. (DST_S_C_SRC_INCRLNUM_B): Ditto. (DST_S_B_PCLINE_UNSBYTE, DST_S_W_PCLINE_UNSWORD): Ditto. (DST_S_L_PCLINE_UNSLONG): Ditto. (DST_S_B_MODBEG_NAME, DST_S_L_RTNBEG_ADDRESS) : Ditto (DST_S_B_RTNBEG_NAME, DST_S_L_RTNEND_SIZE): Ditto (DST_S_C_SOURCE_HEADER_SIZE): Ditto. (DST_S_B_SRC_DF_LENGTH, DST_S_W_SRC_DF_FILEID): Ditto. (DST_S_B_SRC_DF_FILENAME, DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_W_SRC_UNSWORD, DST_S_L_SRC_UNSLONG): Ditto. Add prototypes. (vms_section, vms_reloc): Remove types. (hdr_struc): Replaced by ... (hdr_struct): ... new type. (EMH_S_W_HDRTYP, EMH_S_B_STRLVL, EMH_S_L_ARCH1): New constants. (EMH_S_L_ARCH2, EMH_S_L_RECSIZ, EMH_S_B_NAMLNG): Ditto. (EMH_DATE_LENGTH): Ditto. (eom_struc): Replaced by ... (eom_struct): ... new type. (EEOM_S_L_TOTAL_LPS, EEOM_S_W_COMCOD, EEOM_S_B_TFRFLG): New constants. (EEOM_S_L_PSINDX, EEOM_S_L_TFRADR): Ditto. (EIHD_S_K_MAJORID, EIHD_S_K_MINORID, EIHD_S_K_EXE): Ditto. (EIHD_S_L_SIZE, EIHD_S_L_ISDOFF, EIHD_S_L_SYMDBGOFF): Ditto. (EIHD_S_Q_SYMVVA, EIHD_S_L_IMGTYPE): Ditto. (EISD_S_L_EISDSIZE, EISD_S_L_SECSIZE, EISD_S_Q_VIR_ADDR): Ditto. (EISD_S_L_FLAGS, EISD_S_L_VBN, EISD_S_R_CONTROL): Ditto. (EISD_S_L_IDENT, EISD_S_T_GBLNAM): Ditto. (EISD_S_M_GBL, EISD_S_M_CRF, EISD_S_M_DZRO, EISD_S_M_WRT): Ditto. (EISD_S_M_INITALCODE, EISD_S_M_BASED, EISD_S_M_FIXUPVEC): Ditto. (EISD_S_M_RESIDENT, EISD_S_M_VECTOR, EISD_S_M_PROTECT): Ditto. (EISD_S_M_LASTCLU, EISD_S_M_EXE, EISD_S_M_NONSHRADR): Ditto. (EISD_S_M_QUAD_LENGTH, EISD_S_M_ALLOC_64BIT): Ditto. (EIHS_S_L_DSTVBN, EIHS_S_L_DSTSIZE, EIHS_S_L_GSTVBN): Ditto. (EIHS_S_L_GSTSIZE, EIHS_S_L_DMTVBN, EIHS_S_L_DMTBYTES): Ditto. (DBG_S_L_DMT_MODBEG, DBG_S_L_DST_SIZE): Ditto. (DBG_S_W_DMT_PSECT_COUNT, DBG_S_C_DMT_HEADER_SIZE): Ditto. (DBG_S_L_DMT_PSECT_START, DBG_S_L_DMT_PSECT_LENGTH) (DBG_S_C_DMT_PSECT_SIZE): Ditto. (enum file_type_enum): New type. (struct location_struct): Removed. (struct fileinfo, struct srecinfo, struct lineinfo): New types. (struct funcinfo, struct module): Ditto. (struct vms_private_data_struct): Update fields. (struct vms_section_data_struct): New type. * vms.c: Update copyright year, fix comments, Fix includes for DECC, add prototypes. (vms_initialize): Use bfd_alloc instead of bfd_zalloc and remove some initializers. Use flavour to set is_vax, location_stack is removed. (struct pair): Declare. (fill_section_ptr): Initialize variables at declaration. Add guard to set SECTION_SYM flag, handlde und section. (vms_fixup_sections): Use struct pair for fill_section_ptr argument. (_bfd_vms_slurp_object_records): New function, replaces previous vms_object_p. (vms_slurp_module): New function. (vms_slurp_image): Ditto. (vms_object_p): Complete rewrite. (vms_mkobject): Use is_vax field to slect architecture. (free_reloc_stream): New function. (vms_convert_to_var): Ditto. (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_close_and_cleanup): Call free_reloc_stream, convert file to VAR format on VMS. (vms_new_section_hook): Set alignment to 0, allocate private data. (vms_get_section_contents): Load content. (vms_get_symbol_info): Handle undefined section. (vms_find_nearest_line): Handle. (alloc_reloc_stream): New function. (vms_slurp_reloc_table): Ditto. (vms_get_reloc_upper_bound): Make it real. (vms_canonicalize_reloc): Do the real work. (alpha_howto_table): Add ALPHA_R_NOP, ALPHA_R_BSR, ALPHA_R_LDA, ALPHA_R_BOH. (vms_bfd_reloc_type_lookup): Handle NOP, BSR, LDA and BOH. (vms_set_arch_mach): Check arch. (vms_set_section_contents): Copy the content after allocation. (vms_alpha_vec): Update object flags. * vms-tir.c: Update copyright year, fix comments, add prototypes for new functions. (dst_define_location): New function. (dst_restore_location): New function. (dst_retrieve_location): New function. (dst_check_allocation): New function. (image_dump): Call dst_check_allocation. (image_write_b): Ditto. (image_write_w): Ditto. (image_write_l): Ditto. (image_write_q): Ditto. (cmd_name): Handle STA_LW, STA_QW, STO_OFF, STO_IMM, STO_IMMR, STO_LW, STO_QW, OPR_ADD, CTL_SETRB, STC_LP_PSB, CTL_DFLOC, CTL_STLOC, CTL_STKDL. Call error handler instead of abort if name is not known. (etir_sta): Add quarter_relocs argument and set it. Fix cast. (etir_sto): Ditto. (etir_opr): Ditto, return FALSE in case of error. (etir_ctl): Add quarter_relocs argument and set it, fix cast. Fix CTL_DFLOC, CTL_STLOC, CTL_STKDL. (etir_stc): Add quarter_relocs argument and set it, fix cast. Fix STC_LP, STC_LP_PSB, STC_GBL and STC_CGA. Handle STC_LP_PSB, STC_BSR_GBL, STC_LDA_GBL, STC_BOH_GBL. Move STC_NOP_PS, STC_BSR_PS, STC_LDA_PS, STC_BOH_PS, STC_NBH_PS. Return FALSE in case of error. (tir_sta): Change sign of psect. (tir_ctl): Ditto. (tir_cmd): Fix cast. Makes tir_table static const. (etir_cmd): Add quarter_relocs argument, makes etir_table const, add argument to explain. (analyze_etir): Initialize maxptr, add quarter_relocs declaration, move some declarations into inner scopes. Handle quarter_relocs and STO_IMM. (_bfd_vms_slurp_tir): Use constant instead of hard-coded values. (_bfd_vms_slurp_relocs): New function. (_bfd_vms_decode_relocs): New function. (sto_imm): Rewritten. (start_first_etbt_record): New function. (start_another_etbt_record): Ditto. (etir_output_check): Ditto. (defer_reloc_p): Ditto. (_bfd_vms_write_tir): Remove nextoffset, convert a while-loop to a for-loop. Correctly deals with contents, deals with .vmsdebug, rewritte relocations handling. (_bfd_vms_write_tbt): Removed. (_bfd_vms_write_dbg): Ditto. * vms-misc.c: Update copyright year, Fix comments. (_bfd_vms_get_header_values): Use 'size' instead of 'length'. (maybe_adjust_record_pointer_for_object): New function. (_bfd_vms_get_first_record): New function, replaces ... (_bfd_vms_get_record): .. removed. (_bfd_vms_get_object_record): New function. (_bfd_vms_get_object_record): New function. (vms_get_remaining_object_record): New function, replaces ... (_bfd_vms_get_next_record): ... removed. (add_new_contents): Removed. (_bfd_save_vms_section): Removed. (_bfd_get_vms_section): Removed. (_bfd_vms_output_flush): Write in VAR format. (new_symbol): Don't make UND section. * vms-hdr.c: Update copyright year, update list of record handled. (_bfd_vms_slurp_hdr): rec_length renamed to rec_size. (_bfd_vms_write_hdr): Strip vms and unix patches, add comments, truncate module name at 31 characters, use constants instead of hard-coded value, write BFD version instead of a fixed string. (_bfd_vms_slurp_ihd): New function. (_bfd_vms_slurp_isd): Ditto. (_bfd_vms_slurp_ihs): Ditto. (new_module): Ditto. (parse_module): Ditto (build_module_list): Ditto. (module_find_nearest_line): Ditto. (_bfd_vms_find_nearest_dst_line): Ditto. (vms_slurp_debug): Ditto. (_bfd_vms_slurp_dbg): Ditto. (_bfd_vms_slurp_tbt): Ditto. (_bfd_vms_write_dbg): Ditto. (_bfd_vms_write_tbt): Ditto. * vms-gsd.c: Update copyright year, update list of records handled. (EVAX_LITERALS_NAME): New macro. (evax_section_flags): Add an entry for EVAX_LITERALS_NAME. (gpsflagdesc, gsyflagdesc): Moved out of _bfd_vms_slurp_gsd. (register_universal_symbol): New function and prototype. (_bfd_vms_slurp_gsd): Fix indentations and casts, improve debug messages, use constants instead of hard-coded value, fix missing endianness conversion, handle global symbol (SYMG). (bfd_vms_set_section_flags): New function. (_bfd_vms_write_gsd): Don't write .vmsdebug section, handle section literals, fix indentation, handle section bfd and vms flags, don't output LIB$INITIALIZE symbol, fix handling of weak symbols, fix evax vs vax procedure descriptor, handle absolute symbols. * reloc.c (BFD_RELOC_ALPHA_NOP, BFD_RELOC_ALPHA_BSR, BFD_RELOC_ALPHA_LDA, BFD_RELOC_ALPHA_BOH): New relocations. * makefile.vms (DEFS): Fix flags for VMS. * bfdio.c (real_fopen): Handle multiple VMS fopen attributes. * bfd-in2.h: Regenerated. * libbfd.h: Regenerated.
2009-02-23 17:28:43 +08:00
2010-04-14 Tristan Gingold <gingold@adacore.com> * Makefile.am (BFD32_BACKENDS): Remove vms-gsd.lo, vms-hdr.lo, vms-tir.lo, vms.lo and add vms-alpha.lo (BFD32_BACKENDS_CFILES): Remove vms-gsd.c, vms-hdr.c, vms-tir.c, vms.c and add vms-alpha.c * Makefile.in: Regenerate. * configure.in (TDEFINES): Adjust file list for vms_alpha_vec. Remove vms_vax_vec. * configure: Regenerate. * targets.c (vms_vax_vec): Remove the declaration. (_bfd_target_vector): Remove vms_vax_vec. * vms-alpha.c: New file. * vms-gsd.c: Removed, rewritten in vms-alpha.c * vms-hdr.c: Ditto. * vms-tir.c: Ditto. * vms.c: Ditto. * vms-misc.c: Fix indentation and comments. Replace most of #if VMS_DEBUG/vms_debug with vms_debug2. (_bfd_vms_hash_newfunc): Moved to vms-alpha.c (hash_string): Ditto. (_bfd_vms_length_hash_symbol): Ditto. (maybe_adjust_record_pointer_for_object): Ditto. (_bfd_vms_get_object_record): Ditto. (vms_get_remaining_object_record): Ditto. (_bfd_vms_push): Ditto. (_bfd_vms_pop): Ditto. (_bfd_vms_get_header_values): Removed. (_bfd_vms_get_first_record): Removed. (vms_get_remaining_image_record): Removed. (new_symbol): Removed. (_bfd_vms_enter_symbol): Removed. (_bfd_vms_save_sized_string): Use memcpy instead of strncpy. (_bfd_vms_output_begin): Remove rechead parameter. Replace bfd parameter with struct vms_rec_wr. (_bfd_vms_output_push): Removed and replaced by ... (_bfd_vms_output_begin_subrec): ... new function. (_bfd_vms_output_alignment): Replace bfd parameter with struct vms_rec_wr, and adjust. (_bfd_vms_output_check): Ditto (_bfd_vms_output_byte): Ditto. (_bfd_vms_output_short): Ditto. (_bfd_vms_output_long): Ditto. (_bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted): Ditto. (_bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (_bfd_vms_output_pop): Removed and replaced by ... (_bfd_vms_output_end_subrec): ... new function. (_bfd_vms_output_flush): Removed. (_bfd_vms_output_align): New function. (_bfd_vms_output_end): Add recwr parameter. Adjust for this new parameter. (vms_convert_to_var): New function imported from vms.c (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_get_module_name): Ditto. (get_vms_time_string): Ditto. (vms_time_to_time_t): Ditto. (vms_rawtime_to_time_t): Ditto. * vms.h: All macros for the VMS file format are now in include/vms. Prototypes for vms.c, vms-gsd.c, vms-misc.c, vms-hdr.c, vms-tir.c have been removed. (struct vms_symbol_struct, struct stack_struct): Moved to vms-alpha.c (struct fileinfo, struct srecinfo, struct lineinfo): Ditto. (struct funcinfo, struct vms_private_data_struct): Ditto. (struct vms_section_data_struct): Ditto. (struct vms_rec_rd, stryct vms_rec_wr): New declarations. (vms_get_module_name, get_vms_time_string): New declarations. (vms_time_to_time_t, vms_rawtime_to_time_t): Ditto. (_bfd_vms_output_begin_subrec, _bfd_vms_output_end_subrec): Ditto. (_bfd_vms_save_sized_string, _bfd_vms_save_counted_string): Adjusted. (_bfd_vms_output_begin, _bfd_vms_output_alignment): Ditto. (_bfd_vms_output_end,_bfd_vms_output_check): Ditto. (_bfd_vms_output_byte, _bfd_vms_output_short): Ditto. (_bfd_vms_output_long, _bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted, _bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (bfd_vms_set_section_flags): Ditto.
2010-04-14 17:24:59 +08:00
/* Some records must have a size that is a multiple of the alignment.
Mustn't be 0. */
unsigned short int align;
2009-02-23 Tristan Gingold <gingold@adacore.com> * vms.h: Update copyright year, fix comments, reorder declarations. (_bfd_save_vms_section): Remove the prototype. (EGPS_S_V_NO_SHIFT): New constant. (bfd_vms_set_section_flags): New prototype. (EGPS_S_B_ALIGN, EGPS_S_W_FLAGS, EGPS_S_L_ALLOC, EGPS_S_B_NAMLNG): New constants. (EGSY_S_W_FLAGS): Ditto. (EGSY_S_V_QUAD_VAL): Ditto. (ESDF_S_L_VALUE, ESDF_S_L_PSINDX, ESDF_S_B_NAMLNG): Ditto. (EGST_S_W_FLAGS, EGST_S_Q_LP_1, EGST_S_Q_LP_2, EGST_S_L_PSINDX, EGST_S_B_NAMLNG): Ditto. (ESRF_S_B_NAMLNG): Ditto. (ETIR_S_C_HEADER_SIZE): Ditto. (EGPS_S_V_ALLOC_64BIT): Ditto. (DST_S_C_EPILOG): Ditto. (DST_S_C_SRC_SETLNUM_L, DST_S_C_SRC_SETLNUM_W) : Ditto. (DST_S_C_SRC_INCRLNUM_B): Ditto. (DST_S_B_PCLINE_UNSBYTE, DST_S_W_PCLINE_UNSWORD): Ditto. (DST_S_L_PCLINE_UNSLONG): Ditto. (DST_S_B_MODBEG_NAME, DST_S_L_RTNBEG_ADDRESS) : Ditto (DST_S_B_RTNBEG_NAME, DST_S_L_RTNEND_SIZE): Ditto (DST_S_C_SOURCE_HEADER_SIZE): Ditto. (DST_S_B_SRC_DF_LENGTH, DST_S_W_SRC_DF_FILEID): Ditto. (DST_S_B_SRC_DF_FILENAME, DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_B_SRC_UNSBYTE): Ditto. (DST_S_W_SRC_UNSWORD, DST_S_L_SRC_UNSLONG): Ditto. Add prototypes. (vms_section, vms_reloc): Remove types. (hdr_struc): Replaced by ... (hdr_struct): ... new type. (EMH_S_W_HDRTYP, EMH_S_B_STRLVL, EMH_S_L_ARCH1): New constants. (EMH_S_L_ARCH2, EMH_S_L_RECSIZ, EMH_S_B_NAMLNG): Ditto. (EMH_DATE_LENGTH): Ditto. (eom_struc): Replaced by ... (eom_struct): ... new type. (EEOM_S_L_TOTAL_LPS, EEOM_S_W_COMCOD, EEOM_S_B_TFRFLG): New constants. (EEOM_S_L_PSINDX, EEOM_S_L_TFRADR): Ditto. (EIHD_S_K_MAJORID, EIHD_S_K_MINORID, EIHD_S_K_EXE): Ditto. (EIHD_S_L_SIZE, EIHD_S_L_ISDOFF, EIHD_S_L_SYMDBGOFF): Ditto. (EIHD_S_Q_SYMVVA, EIHD_S_L_IMGTYPE): Ditto. (EISD_S_L_EISDSIZE, EISD_S_L_SECSIZE, EISD_S_Q_VIR_ADDR): Ditto. (EISD_S_L_FLAGS, EISD_S_L_VBN, EISD_S_R_CONTROL): Ditto. (EISD_S_L_IDENT, EISD_S_T_GBLNAM): Ditto. (EISD_S_M_GBL, EISD_S_M_CRF, EISD_S_M_DZRO, EISD_S_M_WRT): Ditto. (EISD_S_M_INITALCODE, EISD_S_M_BASED, EISD_S_M_FIXUPVEC): Ditto. (EISD_S_M_RESIDENT, EISD_S_M_VECTOR, EISD_S_M_PROTECT): Ditto. (EISD_S_M_LASTCLU, EISD_S_M_EXE, EISD_S_M_NONSHRADR): Ditto. (EISD_S_M_QUAD_LENGTH, EISD_S_M_ALLOC_64BIT): Ditto. (EIHS_S_L_DSTVBN, EIHS_S_L_DSTSIZE, EIHS_S_L_GSTVBN): Ditto. (EIHS_S_L_GSTSIZE, EIHS_S_L_DMTVBN, EIHS_S_L_DMTBYTES): Ditto. (DBG_S_L_DMT_MODBEG, DBG_S_L_DST_SIZE): Ditto. (DBG_S_W_DMT_PSECT_COUNT, DBG_S_C_DMT_HEADER_SIZE): Ditto. (DBG_S_L_DMT_PSECT_START, DBG_S_L_DMT_PSECT_LENGTH) (DBG_S_C_DMT_PSECT_SIZE): Ditto. (enum file_type_enum): New type. (struct location_struct): Removed. (struct fileinfo, struct srecinfo, struct lineinfo): New types. (struct funcinfo, struct module): Ditto. (struct vms_private_data_struct): Update fields. (struct vms_section_data_struct): New type. * vms.c: Update copyright year, fix comments, Fix includes for DECC, add prototypes. (vms_initialize): Use bfd_alloc instead of bfd_zalloc and remove some initializers. Use flavour to set is_vax, location_stack is removed. (struct pair): Declare. (fill_section_ptr): Initialize variables at declaration. Add guard to set SECTION_SYM flag, handlde und section. (vms_fixup_sections): Use struct pair for fill_section_ptr argument. (_bfd_vms_slurp_object_records): New function, replaces previous vms_object_p. (vms_slurp_module): New function. (vms_slurp_image): Ditto. (vms_object_p): Complete rewrite. (vms_mkobject): Use is_vax field to slect architecture. (free_reloc_stream): New function. (vms_convert_to_var): Ditto. (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_close_and_cleanup): Call free_reloc_stream, convert file to VAR format on VMS. (vms_new_section_hook): Set alignment to 0, allocate private data. (vms_get_section_contents): Load content. (vms_get_symbol_info): Handle undefined section. (vms_find_nearest_line): Handle. (alloc_reloc_stream): New function. (vms_slurp_reloc_table): Ditto. (vms_get_reloc_upper_bound): Make it real. (vms_canonicalize_reloc): Do the real work. (alpha_howto_table): Add ALPHA_R_NOP, ALPHA_R_BSR, ALPHA_R_LDA, ALPHA_R_BOH. (vms_bfd_reloc_type_lookup): Handle NOP, BSR, LDA and BOH. (vms_set_arch_mach): Check arch. (vms_set_section_contents): Copy the content after allocation. (vms_alpha_vec): Update object flags. * vms-tir.c: Update copyright year, fix comments, add prototypes for new functions. (dst_define_location): New function. (dst_restore_location): New function. (dst_retrieve_location): New function. (dst_check_allocation): New function. (image_dump): Call dst_check_allocation. (image_write_b): Ditto. (image_write_w): Ditto. (image_write_l): Ditto. (image_write_q): Ditto. (cmd_name): Handle STA_LW, STA_QW, STO_OFF, STO_IMM, STO_IMMR, STO_LW, STO_QW, OPR_ADD, CTL_SETRB, STC_LP_PSB, CTL_DFLOC, CTL_STLOC, CTL_STKDL. Call error handler instead of abort if name is not known. (etir_sta): Add quarter_relocs argument and set it. Fix cast. (etir_sto): Ditto. (etir_opr): Ditto, return FALSE in case of error. (etir_ctl): Add quarter_relocs argument and set it, fix cast. Fix CTL_DFLOC, CTL_STLOC, CTL_STKDL. (etir_stc): Add quarter_relocs argument and set it, fix cast. Fix STC_LP, STC_LP_PSB, STC_GBL and STC_CGA. Handle STC_LP_PSB, STC_BSR_GBL, STC_LDA_GBL, STC_BOH_GBL. Move STC_NOP_PS, STC_BSR_PS, STC_LDA_PS, STC_BOH_PS, STC_NBH_PS. Return FALSE in case of error. (tir_sta): Change sign of psect. (tir_ctl): Ditto. (tir_cmd): Fix cast. Makes tir_table static const. (etir_cmd): Add quarter_relocs argument, makes etir_table const, add argument to explain. (analyze_etir): Initialize maxptr, add quarter_relocs declaration, move some declarations into inner scopes. Handle quarter_relocs and STO_IMM. (_bfd_vms_slurp_tir): Use constant instead of hard-coded values. (_bfd_vms_slurp_relocs): New function. (_bfd_vms_decode_relocs): New function. (sto_imm): Rewritten. (start_first_etbt_record): New function. (start_another_etbt_record): Ditto. (etir_output_check): Ditto. (defer_reloc_p): Ditto. (_bfd_vms_write_tir): Remove nextoffset, convert a while-loop to a for-loop. Correctly deals with contents, deals with .vmsdebug, rewritte relocations handling. (_bfd_vms_write_tbt): Removed. (_bfd_vms_write_dbg): Ditto. * vms-misc.c: Update copyright year, Fix comments. (_bfd_vms_get_header_values): Use 'size' instead of 'length'. (maybe_adjust_record_pointer_for_object): New function. (_bfd_vms_get_first_record): New function, replaces ... (_bfd_vms_get_record): .. removed. (_bfd_vms_get_object_record): New function. (_bfd_vms_get_object_record): New function. (vms_get_remaining_object_record): New function, replaces ... (_bfd_vms_get_next_record): ... removed. (add_new_contents): Removed. (_bfd_save_vms_section): Removed. (_bfd_get_vms_section): Removed. (_bfd_vms_output_flush): Write in VAR format. (new_symbol): Don't make UND section. * vms-hdr.c: Update copyright year, update list of record handled. (_bfd_vms_slurp_hdr): rec_length renamed to rec_size. (_bfd_vms_write_hdr): Strip vms and unix patches, add comments, truncate module name at 31 characters, use constants instead of hard-coded value, write BFD version instead of a fixed string. (_bfd_vms_slurp_ihd): New function. (_bfd_vms_slurp_isd): Ditto. (_bfd_vms_slurp_ihs): Ditto. (new_module): Ditto. (parse_module): Ditto (build_module_list): Ditto. (module_find_nearest_line): Ditto. (_bfd_vms_find_nearest_dst_line): Ditto. (vms_slurp_debug): Ditto. (_bfd_vms_slurp_dbg): Ditto. (_bfd_vms_slurp_tbt): Ditto. (_bfd_vms_write_dbg): Ditto. (_bfd_vms_write_tbt): Ditto. * vms-gsd.c: Update copyright year, update list of records handled. (EVAX_LITERALS_NAME): New macro. (evax_section_flags): Add an entry for EVAX_LITERALS_NAME. (gpsflagdesc, gsyflagdesc): Moved out of _bfd_vms_slurp_gsd. (register_universal_symbol): New function and prototype. (_bfd_vms_slurp_gsd): Fix indentations and casts, improve debug messages, use constants instead of hard-coded value, fix missing endianness conversion, handle global symbol (SYMG). (bfd_vms_set_section_flags): New function. (_bfd_vms_write_gsd): Don't write .vmsdebug section, handle section literals, fix indentation, handle section bfd and vms flags, don't output LIB$INITIALIZE symbol, fix handling of weak symbols, fix evax vs vax procedure descriptor, handle absolute symbols. * reloc.c (BFD_RELOC_ALPHA_NOP, BFD_RELOC_ALPHA_BSR, BFD_RELOC_ALPHA_LDA, BFD_RELOC_ALPHA_BOH): New relocations. * makefile.vms (DEFS): Fix flags for VMS. * bfdio.c (real_fopen): Handle multiple VMS fopen attributes. * bfd-in2.h: Regenerated. * libbfd.h: Regenerated.
2009-02-23 17:28:43 +08:00
};
struct evax_private_udata_struct
{
asymbol *bsym;
asymbol *enbsym;
char *origname;
int lkindex;
};
2010-04-14 Tristan Gingold <gingold@adacore.com> * Makefile.am (BFD32_BACKENDS): Remove vms-gsd.lo, vms-hdr.lo, vms-tir.lo, vms.lo and add vms-alpha.lo (BFD32_BACKENDS_CFILES): Remove vms-gsd.c, vms-hdr.c, vms-tir.c, vms.c and add vms-alpha.c * Makefile.in: Regenerate. * configure.in (TDEFINES): Adjust file list for vms_alpha_vec. Remove vms_vax_vec. * configure: Regenerate. * targets.c (vms_vax_vec): Remove the declaration. (_bfd_target_vector): Remove vms_vax_vec. * vms-alpha.c: New file. * vms-gsd.c: Removed, rewritten in vms-alpha.c * vms-hdr.c: Ditto. * vms-tir.c: Ditto. * vms.c: Ditto. * vms-misc.c: Fix indentation and comments. Replace most of #if VMS_DEBUG/vms_debug with vms_debug2. (_bfd_vms_hash_newfunc): Moved to vms-alpha.c (hash_string): Ditto. (_bfd_vms_length_hash_symbol): Ditto. (maybe_adjust_record_pointer_for_object): Ditto. (_bfd_vms_get_object_record): Ditto. (vms_get_remaining_object_record): Ditto. (_bfd_vms_push): Ditto. (_bfd_vms_pop): Ditto. (_bfd_vms_get_header_values): Removed. (_bfd_vms_get_first_record): Removed. (vms_get_remaining_image_record): Removed. (new_symbol): Removed. (_bfd_vms_enter_symbol): Removed. (_bfd_vms_save_sized_string): Use memcpy instead of strncpy. (_bfd_vms_output_begin): Remove rechead parameter. Replace bfd parameter with struct vms_rec_wr. (_bfd_vms_output_push): Removed and replaced by ... (_bfd_vms_output_begin_subrec): ... new function. (_bfd_vms_output_alignment): Replace bfd parameter with struct vms_rec_wr, and adjust. (_bfd_vms_output_check): Ditto (_bfd_vms_output_byte): Ditto. (_bfd_vms_output_short): Ditto. (_bfd_vms_output_long): Ditto. (_bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted): Ditto. (_bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (_bfd_vms_output_pop): Removed and replaced by ... (_bfd_vms_output_end_subrec): ... new function. (_bfd_vms_output_flush): Removed. (_bfd_vms_output_align): New function. (_bfd_vms_output_end): Add recwr parameter. Adjust for this new parameter. (vms_convert_to_var): New function imported from vms.c (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_get_module_name): Ditto. (get_vms_time_string): Ditto. (vms_time_to_time_t): Ditto. (vms_rawtime_to_time_t): Ditto. * vms.h: All macros for the VMS file format are now in include/vms. Prototypes for vms.c, vms-gsd.c, vms-misc.c, vms-hdr.c, vms-tir.c have been removed. (struct vms_symbol_struct, struct stack_struct): Moved to vms-alpha.c (struct fileinfo, struct srecinfo, struct lineinfo): Ditto. (struct funcinfo, struct vms_private_data_struct): Ditto. (struct vms_section_data_struct): Ditto. (struct vms_rec_rd, stryct vms_rec_wr): New declarations. (vms_get_module_name, get_vms_time_string): New declarations. (vms_time_to_time_t, vms_rawtime_to_time_t): Ditto. (_bfd_vms_output_begin_subrec, _bfd_vms_output_end_subrec): Ditto. (_bfd_vms_save_sized_string, _bfd_vms_save_counted_string): Adjusted. (_bfd_vms_output_begin, _bfd_vms_output_alignment): Ditto. (_bfd_vms_output_end,_bfd_vms_output_check): Ditto. (_bfd_vms_output_byte, _bfd_vms_output_short): Ditto. (_bfd_vms_output_long, _bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted, _bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (bfd_vms_set_section_flags): Ditto.
2010-04-14 17:24:59 +08:00
/* vms-misc.c. */
#define VMS_DEBUG 1
#if VMS_DEBUG
extern void _bfd_vms_debug (int, char *, ...) ATTRIBUTE_PRINTF_2;
extern void _bfd_hexdump (int, unsigned char *, int, int);
2009-11-24 Tristan Gingold <gingold@adacore.com> * vms-hdr.c (_bfd_vms_write_hdr): Strip any suffix to create module name. * vms.h (vms_debug2): Add vms_debug2. * vms.c (vms_archive_p): Remove (vms_bfd_free_cached_info): Remove the function, use libbfd.h macro instead. (vms_get_section_contents_in_window): Ditto. (vms_bfd_copy_private_bfd_data): Ditto. (vms_bfd_copy_private_section_data): Ditto. (vms_bfd_copy_private_symbol_data): Ditto. (vms_bfd_print_private_bfd_data): Ditto. (vms_bfd_set_private_flags): Ditto. (vms_bfd_merge_private_bfd_data): Ditto. (vms_read_minisymbols): Ditto. (vms_minisymbol_to_symbol): Ditto. (vms_get_lineno): Ditto. (vms_find_nearest_line): Ditto. (vms_bfd_make_debug_symbol): Ditto. (vms_core_file_failing_command): Remove. (vms_core_file_failing_signal): Remove. (vms_core_file_matches_executable_p): Remove. (vms_slurp_armap): Remove. (vms_slurp_extended_name_table): Remove. (vms_construct_extended_name_table): Remove. (vms_truncate_arname): Remove. (vms_write_armap): Remove. (vms_read_ar_hdr): Remove. (vms_get_elt_at_index): Remove. (vms_openr_next_archived_file): Remove. (vms_update_armap_timestamp): Remove. (vms_generic_stat_arch_elt): Remove. (vms_get_symtab_upper_bound): Remove. (vms_sizeof_headers): Remove. (vms_bfd_get_relocated_section_contents): Remove. (vms_bfd_relax_section): Remove. (vms_bfd_gc_sections): Remove. (vms_bfd_merge_sections): Remove. (vms_bfd_link_hash_table_create): Remove. (vms_bfd_link_hash_table_free): Remove. (vms_bfd_link_add_symbols): Remove. (vms_bfd_final_link): Remove. (vms_bfd_link_split_section): Remove. (vms_get_dynamic_symtab_upper_bound): Remove. (vms_canonicalize_dynamic_symtab): Remove. (vms_get_dynamic_reloc_upper_bound): Remove. (vms_canonicalize_dynamic_reloc): Remove. (fill_section_ptr): Use vms_debug2 instead of vms_debug. (_bfd_vms_slurp_object_records): Ditto. (vms_object_p): Ditto. (vms_mkobject): Ditto. (vms_write_object_contents): Ditto. (vms_close_and_cleanup): Ditto. (vms_new_section_hook): Ditto. (vms_get_section_contents): Ditto. (vms_get_symtab_upper_bound): Ditto. (vms_canonicalize_symtab): Ditto. (vms_print_symbol): Ditto. (vms_get_symbol_info): Ditto. (vms_bfd_is_local_label_name): Ditto. (vms_find_nearest_line): Ditto. (vms_slurp_reloc_table): Ditto. (vms_bfd_reloc_type_lookup): Ditto. (vms_set_arch_mach): Ditto. (vms_alpha_vec, vms_vax_vec): Use _bfd_nocore, _bfd_noarchive, _bfd_nolink and _bfd_nodynamic methods instead of vms stubs.
2009-11-24 21:13:43 +08:00
#define vms_debug _bfd_vms_debug
#define vms_debug2(X) _bfd_vms_debug X
#else
#define vms_debug2(X)
#endif
extern char * vms_get_module_name (const char *, bfd_boolean);
2010-04-14 Tristan Gingold <gingold@adacore.com> * Makefile.am (BFD32_BACKENDS): Remove vms-gsd.lo, vms-hdr.lo, vms-tir.lo, vms.lo and add vms-alpha.lo (BFD32_BACKENDS_CFILES): Remove vms-gsd.c, vms-hdr.c, vms-tir.c, vms.c and add vms-alpha.c * Makefile.in: Regenerate. * configure.in (TDEFINES): Adjust file list for vms_alpha_vec. Remove vms_vax_vec. * configure: Regenerate. * targets.c (vms_vax_vec): Remove the declaration. (_bfd_target_vector): Remove vms_vax_vec. * vms-alpha.c: New file. * vms-gsd.c: Removed, rewritten in vms-alpha.c * vms-hdr.c: Ditto. * vms-tir.c: Ditto. * vms.c: Ditto. * vms-misc.c: Fix indentation and comments. Replace most of #if VMS_DEBUG/vms_debug with vms_debug2. (_bfd_vms_hash_newfunc): Moved to vms-alpha.c (hash_string): Ditto. (_bfd_vms_length_hash_symbol): Ditto. (maybe_adjust_record_pointer_for_object): Ditto. (_bfd_vms_get_object_record): Ditto. (vms_get_remaining_object_record): Ditto. (_bfd_vms_push): Ditto. (_bfd_vms_pop): Ditto. (_bfd_vms_get_header_values): Removed. (_bfd_vms_get_first_record): Removed. (vms_get_remaining_image_record): Removed. (new_symbol): Removed. (_bfd_vms_enter_symbol): Removed. (_bfd_vms_save_sized_string): Use memcpy instead of strncpy. (_bfd_vms_output_begin): Remove rechead parameter. Replace bfd parameter with struct vms_rec_wr. (_bfd_vms_output_push): Removed and replaced by ... (_bfd_vms_output_begin_subrec): ... new function. (_bfd_vms_output_alignment): Replace bfd parameter with struct vms_rec_wr, and adjust. (_bfd_vms_output_check): Ditto (_bfd_vms_output_byte): Ditto. (_bfd_vms_output_short): Ditto. (_bfd_vms_output_long): Ditto. (_bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted): Ditto. (_bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (_bfd_vms_output_pop): Removed and replaced by ... (_bfd_vms_output_end_subrec): ... new function. (_bfd_vms_output_flush): Removed. (_bfd_vms_output_align): New function. (_bfd_vms_output_end): Add recwr parameter. Adjust for this new parameter. (vms_convert_to_var): New function imported from vms.c (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_get_module_name): Ditto. (get_vms_time_string): Ditto. (vms_time_to_time_t): Ditto. (vms_rawtime_to_time_t): Ditto. * vms.h: All macros for the VMS file format are now in include/vms. Prototypes for vms.c, vms-gsd.c, vms-misc.c, vms-hdr.c, vms-tir.c have been removed. (struct vms_symbol_struct, struct stack_struct): Moved to vms-alpha.c (struct fileinfo, struct srecinfo, struct lineinfo): Ditto. (struct funcinfo, struct vms_private_data_struct): Ditto. (struct vms_section_data_struct): Ditto. (struct vms_rec_rd, stryct vms_rec_wr): New declarations. (vms_get_module_name, get_vms_time_string): New declarations. (vms_time_to_time_t, vms_rawtime_to_time_t): Ditto. (_bfd_vms_output_begin_subrec, _bfd_vms_output_end_subrec): Ditto. (_bfd_vms_save_sized_string, _bfd_vms_save_counted_string): Adjusted. (_bfd_vms_output_begin, _bfd_vms_output_alignment): Ditto. (_bfd_vms_output_end,_bfd_vms_output_check): Ditto. (_bfd_vms_output_byte, _bfd_vms_output_short): Ditto. (_bfd_vms_output_long, _bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted, _bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (bfd_vms_set_section_flags): Ditto.
2010-04-14 17:24:59 +08:00
extern unsigned char *get_vms_time_string (void);
extern time_t vms_time_to_time_t (unsigned int hi, unsigned int lo);
extern time_t vms_rawtime_to_time_t (unsigned char *);
extern void vms_time_t_to_vms_time (time_t ut, unsigned int *hi, unsigned int *lo);
extern void vms_get_time (unsigned int *hi, unsigned int *lo);
extern void vms_raw_get_time (unsigned char *buf);
extern char * _bfd_vms_save_sized_string (unsigned char *, int);
extern char * _bfd_vms_save_counted_string (unsigned char *);
extern void _bfd_vms_output_begin (struct vms_rec_wr *, int);
extern void _bfd_vms_output_alignment (struct vms_rec_wr *, int);
extern void _bfd_vms_output_begin_subrec (struct vms_rec_wr *, int);
extern void _bfd_vms_output_end_subrec (struct vms_rec_wr *);
extern void _bfd_vms_output_end (bfd *, struct vms_rec_wr *);
extern int _bfd_vms_output_check (struct vms_rec_wr *, int);
extern void _bfd_vms_output_byte (struct vms_rec_wr *, unsigned);
extern void _bfd_vms_output_short (struct vms_rec_wr *, unsigned);
extern void _bfd_vms_output_long (struct vms_rec_wr *, unsigned long);
extern void _bfd_vms_output_quad (struct vms_rec_wr *, bfd_vma);
extern void _bfd_vms_output_counted (struct vms_rec_wr *, const char *);
extern void _bfd_vms_output_dump (struct vms_rec_wr *, const unsigned char *, int);
extern void _bfd_vms_output_fill (struct vms_rec_wr *, int, int);
extern int _bfd_vms_convert_to_var_unix_filename (const char *);
2010-04-14 Tristan Gingold <gingold@adacore.com> * Makefile.am (BFD32_BACKENDS): Remove vms-gsd.lo, vms-hdr.lo, vms-tir.lo, vms.lo and add vms-alpha.lo (BFD32_BACKENDS_CFILES): Remove vms-gsd.c, vms-hdr.c, vms-tir.c, vms.c and add vms-alpha.c * Makefile.in: Regenerate. * configure.in (TDEFINES): Adjust file list for vms_alpha_vec. Remove vms_vax_vec. * configure: Regenerate. * targets.c (vms_vax_vec): Remove the declaration. (_bfd_target_vector): Remove vms_vax_vec. * vms-alpha.c: New file. * vms-gsd.c: Removed, rewritten in vms-alpha.c * vms-hdr.c: Ditto. * vms-tir.c: Ditto. * vms.c: Ditto. * vms-misc.c: Fix indentation and comments. Replace most of #if VMS_DEBUG/vms_debug with vms_debug2. (_bfd_vms_hash_newfunc): Moved to vms-alpha.c (hash_string): Ditto. (_bfd_vms_length_hash_symbol): Ditto. (maybe_adjust_record_pointer_for_object): Ditto. (_bfd_vms_get_object_record): Ditto. (vms_get_remaining_object_record): Ditto. (_bfd_vms_push): Ditto. (_bfd_vms_pop): Ditto. (_bfd_vms_get_header_values): Removed. (_bfd_vms_get_first_record): Removed. (vms_get_remaining_image_record): Removed. (new_symbol): Removed. (_bfd_vms_enter_symbol): Removed. (_bfd_vms_save_sized_string): Use memcpy instead of strncpy. (_bfd_vms_output_begin): Remove rechead parameter. Replace bfd parameter with struct vms_rec_wr. (_bfd_vms_output_push): Removed and replaced by ... (_bfd_vms_output_begin_subrec): ... new function. (_bfd_vms_output_alignment): Replace bfd parameter with struct vms_rec_wr, and adjust. (_bfd_vms_output_check): Ditto (_bfd_vms_output_byte): Ditto. (_bfd_vms_output_short): Ditto. (_bfd_vms_output_long): Ditto. (_bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted): Ditto. (_bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (_bfd_vms_output_pop): Removed and replaced by ... (_bfd_vms_output_end_subrec): ... new function. (_bfd_vms_output_flush): Removed. (_bfd_vms_output_align): New function. (_bfd_vms_output_end): Add recwr parameter. Adjust for this new parameter. (vms_convert_to_var): New function imported from vms.c (vms_convert_to_var_1): Ditto. (vms_convert_to_var_unix_filename): Ditto. (vms_get_module_name): Ditto. (get_vms_time_string): Ditto. (vms_time_to_time_t): Ditto. (vms_rawtime_to_time_t): Ditto. * vms.h: All macros for the VMS file format are now in include/vms. Prototypes for vms.c, vms-gsd.c, vms-misc.c, vms-hdr.c, vms-tir.c have been removed. (struct vms_symbol_struct, struct stack_struct): Moved to vms-alpha.c (struct fileinfo, struct srecinfo, struct lineinfo): Ditto. (struct funcinfo, struct vms_private_data_struct): Ditto. (struct vms_section_data_struct): Ditto. (struct vms_rec_rd, stryct vms_rec_wr): New declarations. (vms_get_module_name, get_vms_time_string): New declarations. (vms_time_to_time_t, vms_rawtime_to_time_t): Ditto. (_bfd_vms_output_begin_subrec, _bfd_vms_output_end_subrec): Ditto. (_bfd_vms_save_sized_string, _bfd_vms_save_counted_string): Adjusted. (_bfd_vms_output_begin, _bfd_vms_output_alignment): Ditto. (_bfd_vms_output_end,_bfd_vms_output_check): Ditto. (_bfd_vms_output_byte, _bfd_vms_output_short): Ditto. (_bfd_vms_output_long, _bfd_vms_output_quad): Ditto. (_bfd_vms_output_counted, _bfd_vms_output_dump): Ditto. (_bfd_vms_output_fill): Ditto. (bfd_vms_set_section_flags): Ditto.
2010-04-14 17:24:59 +08:00
/* vms-alpha.c */
extern void bfd_vms_set_section_flags (bfd *, asection *, flagword, flagword);
1999-05-03 15:29:11 +08:00
#endif /* VMS_H */