133965Sjdp/* IEEE Standard 695-1980 "Universal Format for Object Modules" header file 278828Sobrien 378828Sobrien Copyright 2001 Free Software Foundation, Inc. 478828Sobrien 578828Sobrien This program is free software; you can redistribute it and/or modify 678828Sobrien it under the terms of the GNU General Public License as published by 778828Sobrien the Free Software Foundation; either version 2, or (at your option) 878828Sobrien any later version. 978828Sobrien 1078828Sobrien This program is distributed in the hope that it will be useful, 1178828Sobrien but WITHOUT ANY WARRANTY; without even the implied warranty of 1278828Sobrien MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1378828Sobrien GNU General Public License for more details. 1478828Sobrien 1578828Sobrien You should have received a copy of the GNU General Public License 1678828Sobrien along with this program; if not, write to the Free Software 17218822Sdim Foundation, Inc., 51 Franklin Street - Fifth Floor, 18218822Sdim Boston, MA 02110-1301, USA. 1978828Sobrien 2033965Sjdp Contributed by Cygnus Support. */ 2133965Sjdp 2233965Sjdp#define N_W_VARIABLES 8 2333965Sjdp#define Module_Beginning 0xe0 2433965Sjdp 2578828Sobrientypedef struct ieee_module 2678828Sobrien { 2778828Sobrien char *processor; 2878828Sobrien char *module_name; 2978828Sobrien } 3078828Sobrienieee_module_begin_type; 3133965Sjdp 3233965Sjdp#define Address_Descriptor 0xec 3378828Sobrientypedef struct ieee_address 3478828Sobrien { 3578828Sobrien bfd_vma number_of_bits_mau; 3678828Sobrien bfd_vma number_of_maus_in_address; 3733965Sjdp 3878828Sobrien unsigned char byte_order; 3933965Sjdp#define IEEE_LITTLE 0xcc 4033965Sjdp#define IEEE_BIG 0xcd 4178828Sobrien } 4278828Sobrienieee_address_descriptor_type; 4333965Sjdp 4478828Sobrientypedef union ieee_w_variable 4578828Sobrien { 4678828Sobrien file_ptr offset[N_W_VARIABLES]; 4733965Sjdp 4878828Sobrien struct 4978828Sobrien { 5078828Sobrien file_ptr extension_record; 5178828Sobrien file_ptr environmental_record; 5278828Sobrien file_ptr section_part; 5378828Sobrien file_ptr external_part; 5478828Sobrien file_ptr debug_information_part; 5578828Sobrien file_ptr data_part; 5678828Sobrien file_ptr trailer_part; 5778828Sobrien file_ptr me_record; 5878828Sobrien } 5978828Sobrien r; 6078828Sobrien } 6178828Sobrienieee_w_variable_type; 6233965Sjdp 6378828Sobrientypedef enum ieee_record 6478828Sobrien { 6578828Sobrien ieee_number_start_enum = 0x00, 6678828Sobrien ieee_number_end_enum=0x7f, 6778828Sobrien ieee_number_repeat_start_enum = 0x80, 6878828Sobrien ieee_number_repeat_end_enum = 0x88, 6978828Sobrien ieee_number_repeat_4_enum = 0x84, 7078828Sobrien ieee_number_repeat_3_enum = 0x83, 7178828Sobrien ieee_number_repeat_2_enum = 0x82, 7278828Sobrien ieee_number_repeat_1_enum = 0x81, 7378828Sobrien ieee_module_beginning_enum = 0xe0, 7478828Sobrien ieee_module_end_enum = 0xe1, 7578828Sobrien ieee_extension_length_1_enum = 0xde, 7678828Sobrien ieee_extension_length_2_enum = 0xdf, 7778828Sobrien ieee_section_type_enum = 0xe6, 7878828Sobrien ieee_section_alignment_enum = 0xe7, 7978828Sobrien ieee_external_symbol_enum = 0xe8, 8078828Sobrien ieee_comma = 0x90, 8178828Sobrien ieee_external_reference_enum = 0xe9, 8278828Sobrien ieee_set_current_section_enum = 0xe5, 8378828Sobrien ieee_address_descriptor_enum = 0xec, 8478828Sobrien ieee_load_constant_bytes_enum = 0xed, 8578828Sobrien ieee_load_with_relocation_enum = 0xe4, 8633965Sjdp 8778828Sobrien ieee_variable_A_enum = 0xc1, 8878828Sobrien ieee_variable_B_enum = 0xc2, 8978828Sobrien ieee_variable_C_enum = 0xc3, 9078828Sobrien ieee_variable_D_enum = 0xc4, 9178828Sobrien ieee_variable_E_enum = 0xc5, 9278828Sobrien ieee_variable_F_enum = 0xc6, 9378828Sobrien ieee_variable_G_enum = 0xc7, 9478828Sobrien ieee_variable_H_enum = 0xc8, 9578828Sobrien ieee_variable_I_enum = 0xc9, 9678828Sobrien ieee_variable_J_enum = 0xca, 9778828Sobrien ieee_variable_K_enum = 0xcb, 9878828Sobrien ieee_variable_L_enum = 0xcc, 9978828Sobrien ieee_variable_M_enum = 0xcd, 10078828Sobrien ieee_variable_N_enum = 0xce, 10178828Sobrien ieee_variable_O_enum = 0xcf, 10278828Sobrien ieee_variable_P_enum = 0xd0, 10378828Sobrien ieee_variable_Q_enum = 0xd1, 10478828Sobrien ieee_variable_R_enum = 0xd2, 10578828Sobrien ieee_variable_S_enum = 0xd3, 10678828Sobrien ieee_variable_T_enum = 0xd4, 10778828Sobrien ieee_variable_U_enum = 0xd5, 10878828Sobrien ieee_variable_V_enum = 0xd6, 10978828Sobrien ieee_variable_W_enum = 0xd7, 11078828Sobrien ieee_variable_X_enum = 0xd8, 11178828Sobrien ieee_variable_Y_enum = 0xd9, 11278828Sobrien ieee_variable_Z_enum = 0xda, 11378828Sobrien ieee_function_plus_enum = 0xa5, 11478828Sobrien ieee_function_minus_enum = 0xa6, 11578828Sobrien ieee_function_signed_open_b_enum = 0xba, 11678828Sobrien ieee_function_signed_close_b_enum = 0xbb, 11733965Sjdp 11878828Sobrien ieee_function_unsigned_open_b_enum = 0xbc, 11978828Sobrien ieee_function_unsigned_close_b_enum = 0xbd, 12033965Sjdp 12178828Sobrien ieee_function_either_open_b_enum = 0xbe, 12278828Sobrien ieee_function_either_close_b_enum = 0xbf, 12378828Sobrien ieee_record_seperator_enum = 0xdb, 12433965Sjdp 12578828Sobrien ieee_e2_first_byte_enum = 0xe2, 12678828Sobrien ieee_section_size_enum = 0xe2d3, 12778828Sobrien ieee_physical_region_size_enum = 0xe2c1, 12878828Sobrien ieee_region_base_address_enum = 0xe2c2, 12978828Sobrien ieee_mau_size_enum = 0xe2c6, 13078828Sobrien ieee_m_value_enum = 0xe2cd, 13178828Sobrien ieee_section_base_address_enum = 0xe2cc, 13278828Sobrien ieee_asn_record_enum = 0xe2ce, 13378828Sobrien ieee_section_offset_enum = 0xe2d2, 13478828Sobrien ieee_value_starting_address_enum = 0xe2c7, 13578828Sobrien ieee_assign_value_to_variable_enum = 0xe2d7, 13678828Sobrien ieee_set_current_pc_enum = 0xe2d0, 13778828Sobrien ieee_value_record_enum = 0xe2c9, 13878828Sobrien ieee_nn_record = 0xf0, 13978828Sobrien ieee_at_record_enum = 0xf1, 14078828Sobrien ieee_ty_record_enum = 0xf2, 14178828Sobrien ieee_attribute_record_enum = 0xf1c9, 14278828Sobrien ieee_atn_record_enum = 0xf1ce, 14378828Sobrien ieee_external_reference_info_record_enum = 0xf1d8, 14478828Sobrien ieee_weak_external_reference_enum= 0xf4, 14578828Sobrien ieee_repeat_data_enum = 0xf7, 14678828Sobrien ieee_bb_record_enum = 0xf8, 14778828Sobrien ieee_be_record_enum = 0xf9 14878828Sobrien } 14978828Sobrienieee_record_enum_type; 15033965Sjdp 15178828Sobrientypedef struct ieee_section 15278828Sobrien { 15378828Sobrien unsigned int section_index; 15478828Sobrien unsigned int section_type; 15578828Sobrien char * section_name; 15678828Sobrien unsigned int parent_section_index; 15778828Sobrien unsigned int sibling_section_index; 15878828Sobrien unsigned int context_index; 15978828Sobrien } 16078828Sobrienieee_section_type; 16133965Sjdp 16233965Sjdp#define IEEE_REFERENCE_BASE 11 16333965Sjdp#define IEEE_PUBLIC_BASE 32 16433965Sjdp#define IEEE_SECTION_NUMBER_BASE 1 16533965Sjdp 166