1 /* IEEE Standard 695-1980 "Universal Format for Object Modules" header file 2 3 Copyright (C) 2001-2016 Free Software Foundation, Inc. 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 2, or (at your option) 8 any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program; if not, write to the Free Software 17 Foundation, Inc., 51 Franklin Street - Fifth Floor, 18 Boston, MA 02110-1301, USA. 19 20 Contributed by Cygnus Support. */ 21 22 #define N_W_VARIABLES 8 23 #define Module_Beginning 0xe0 24 25 typedef struct ieee_module 26 { 27 char *processor; 28 char *module_name; 29 } 30 ieee_module_begin_type; 31 32 #define Address_Descriptor 0xec 33 typedef struct ieee_address 34 { 35 bfd_vma number_of_bits_mau; 36 bfd_vma number_of_maus_in_address; 37 38 unsigned char byte_order; 39 #define IEEE_LITTLE 0xcc 40 #define IEEE_BIG 0xcd 41 } 42 ieee_address_descriptor_type; 43 44 typedef union ieee_w_variable 45 { 46 file_ptr offset[N_W_VARIABLES]; 47 48 struct 49 { 50 file_ptr extension_record; 51 file_ptr environmental_record; 52 file_ptr section_part; 53 file_ptr external_part; 54 file_ptr debug_information_part; 55 file_ptr data_part; 56 file_ptr trailer_part; 57 file_ptr me_record; 58 } 59 r; 60 } 61 ieee_w_variable_type; 62 63 typedef enum ieee_record 64 { 65 ieee_number_start_enum = 0x00, 66 ieee_number_end_enum=0x7f, 67 ieee_number_repeat_start_enum = 0x80, 68 ieee_number_repeat_end_enum = 0x88, 69 ieee_number_repeat_4_enum = 0x84, 70 ieee_number_repeat_3_enum = 0x83, 71 ieee_number_repeat_2_enum = 0x82, 72 ieee_number_repeat_1_enum = 0x81, 73 ieee_module_beginning_enum = 0xe0, 74 ieee_module_end_enum = 0xe1, 75 ieee_extension_length_1_enum = 0xde, 76 ieee_extension_length_2_enum = 0xdf, 77 ieee_section_type_enum = 0xe6, 78 ieee_section_alignment_enum = 0xe7, 79 ieee_external_symbol_enum = 0xe8, 80 ieee_comma = 0x90, 81 ieee_external_reference_enum = 0xe9, 82 ieee_set_current_section_enum = 0xe5, 83 ieee_address_descriptor_enum = 0xec, 84 ieee_load_constant_bytes_enum = 0xed, 85 ieee_load_with_relocation_enum = 0xe4, 86 87 ieee_variable_A_enum = 0xc1, 88 ieee_variable_B_enum = 0xc2, 89 ieee_variable_C_enum = 0xc3, 90 ieee_variable_D_enum = 0xc4, 91 ieee_variable_E_enum = 0xc5, 92 ieee_variable_F_enum = 0xc6, 93 ieee_variable_G_enum = 0xc7, 94 ieee_variable_H_enum = 0xc8, 95 ieee_variable_I_enum = 0xc9, 96 ieee_variable_J_enum = 0xca, 97 ieee_variable_K_enum = 0xcb, 98 ieee_variable_L_enum = 0xcc, 99 ieee_variable_M_enum = 0xcd, 100 ieee_variable_N_enum = 0xce, 101 ieee_variable_O_enum = 0xcf, 102 ieee_variable_P_enum = 0xd0, 103 ieee_variable_Q_enum = 0xd1, 104 ieee_variable_R_enum = 0xd2, 105 ieee_variable_S_enum = 0xd3, 106 ieee_variable_T_enum = 0xd4, 107 ieee_variable_U_enum = 0xd5, 108 ieee_variable_V_enum = 0xd6, 109 ieee_variable_W_enum = 0xd7, 110 ieee_variable_X_enum = 0xd8, 111 ieee_variable_Y_enum = 0xd9, 112 ieee_variable_Z_enum = 0xda, 113 ieee_function_plus_enum = 0xa5, 114 ieee_function_minus_enum = 0xa6, 115 ieee_function_signed_open_b_enum = 0xba, 116 ieee_function_signed_close_b_enum = 0xbb, 117 118 ieee_function_unsigned_open_b_enum = 0xbc, 119 ieee_function_unsigned_close_b_enum = 0xbd, 120 121 ieee_function_either_open_b_enum = 0xbe, 122 ieee_function_either_close_b_enum = 0xbf, 123 ieee_record_seperator_enum = 0xdb, 124 125 ieee_e2_first_byte_enum = 0xe2, 126 ieee_section_size_enum = 0xe2d3, 127 ieee_physical_region_size_enum = 0xe2c1, 128 ieee_region_base_address_enum = 0xe2c2, 129 ieee_mau_size_enum = 0xe2c6, 130 ieee_m_value_enum = 0xe2cd, 131 ieee_section_base_address_enum = 0xe2cc, 132 ieee_asn_record_enum = 0xe2ce, 133 ieee_section_offset_enum = 0xe2d2, 134 ieee_value_starting_address_enum = 0xe2c7, 135 ieee_assign_value_to_variable_enum = 0xe2d7, 136 ieee_set_current_pc_enum = 0xe2d0, 137 ieee_value_record_enum = 0xe2c9, 138 ieee_nn_record = 0xf0, 139 ieee_at_record_enum = 0xf1, 140 ieee_ty_record_enum = 0xf2, 141 ieee_attribute_record_enum = 0xf1c9, 142 ieee_atn_record_enum = 0xf1ce, 143 ieee_external_reference_info_record_enum = 0xf1d8, 144 ieee_weak_external_reference_enum= 0xf4, 145 ieee_repeat_data_enum = 0xf7, 146 ieee_bb_record_enum = 0xf8, 147 ieee_be_record_enum = 0xf9 148 } 149 ieee_record_enum_type; 150 151 typedef struct ieee_section 152 { 153 unsigned int section_index; 154 unsigned int section_type; 155 char * section_name; 156 unsigned int parent_section_index; 157 unsigned int sibling_section_index; 158 unsigned int context_index; 159 } 160 ieee_section_type; 161 162 #define IEEE_REFERENCE_BASE 11 163 #define IEEE_PUBLIC_BASE 32 164 #define IEEE_SECTION_NUMBER_BASE 1 165 166