207 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			207 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			C
		
	
	
	
| /* SOM internal definitions for BFD.
 | |
|    Copyright 2010  Free Software Foundation, Inc.
 | |
|    Contributed by Tristan Gingold <gingold@adacore.com>, AdaCore.
 | |
| 
 | |
|    This file is part of BFD, the Binary File Descriptor library.
 | |
| 
 | |
|    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
 | |
|    (at your option) any later version.
 | |
| 
 | |
|    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.
 | |
| 
 | |
|    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.  */
 | |
| 
 | |
| #ifndef _SOM_INTERNAL_H
 | |
| #define _SOM_INTERNAL_H
 | |
| 
 | |
| struct som_clock
 | |
| {
 | |
|   unsigned int secs;
 | |
|   unsigned int nanosecs;
 | |
| };
 | |
| 
 | |
| struct som_header
 | |
| {
 | |
|   unsigned short system_id;
 | |
|   unsigned short a_magic;
 | |
|   unsigned int version_id;
 | |
|   struct som_clock file_time;
 | |
|   unsigned int entry_space;
 | |
|   unsigned int entry_subspace;
 | |
|   unsigned int entry_offset;
 | |
|   unsigned int aux_header_location;
 | |
|   unsigned int aux_header_size;
 | |
|   unsigned int som_length;
 | |
|   unsigned int presumed_dp;
 | |
|   unsigned int space_location;
 | |
|   unsigned int space_total;
 | |
|   unsigned int subspace_location;
 | |
|   unsigned int subspace_total;
 | |
|   unsigned int loader_fixup_location;
 | |
|   unsigned int loader_fixup_total;
 | |
|   unsigned int space_strings_location;
 | |
|   unsigned int space_strings_size;
 | |
|   unsigned int init_array_location;
 | |
|   unsigned int init_array_total;
 | |
|   unsigned int compiler_location;
 | |
|   unsigned int compiler_total;
 | |
|   unsigned int symbol_location;
 | |
|   unsigned int symbol_total;
 | |
|   unsigned int fixup_request_location;
 | |
|   unsigned int fixup_request_total;
 | |
|   unsigned int symbol_strings_location;
 | |
|   unsigned int symbol_strings_size;
 | |
|   unsigned int unloadable_sp_location;
 | |
|   unsigned int unloadable_sp_size;
 | |
|   unsigned int checksum;
 | |
| };
 | |
| 
 | |
| struct som_aux_id
 | |
| {
 | |
|   unsigned int mandatory : 1;
 | |
|   unsigned int copy : 1;
 | |
|   unsigned int append : 1;
 | |
|   unsigned int ignore : 1;
 | |
|   unsigned int reserved : 12;
 | |
| 
 | |
|   /* Header type.  */
 | |
|   unsigned int type : 16;
 | |
| 
 | |
|   /* Length of the header in bytes, without the two word identifier.  */
 | |
|   unsigned int length;
 | |
| };
 | |
| 
 | |
| /* Generic auxiliary string header.  */
 | |
| struct som_string_auxhdr
 | |
| {
 | |
|   struct som_aux_id header_id;
 | |
| 
 | |
|   /* Length of the string, without the NUL.  */
 | |
|   unsigned int string_length;
 | |
| 
 | |
|   /* The string.  */
 | |
|   char string[1];
 | |
| };
 | |
| 
 | |
| struct som_name_pt
 | |
| {
 | |
|   char *name;
 | |
|   unsigned int strx;
 | |
| };
 | |
| 
 | |
| struct som_compilation_unit
 | |
| {
 | |
|   /* Source file that produced the SOM.  */
 | |
|   struct som_name_pt name;
 | |
| 
 | |
|   /* Name of the language used when creating this SOM.  */
 | |
|   struct som_name_pt language_name;
 | |
| 
 | |
|   /* Identificaton of the compiler.  */
 | |
|   struct som_name_pt product_id;
 | |
| 
 | |
|   /* Version id of the compiler.  */
 | |
|   struct som_name_pt version_id;
 | |
| 
 | |
|   unsigned int flags;
 | |
|   struct som_clock compile_time;
 | |
|   struct som_clock source_time;
 | |
| };
 | |
| 
 | |
| struct som_exec_auxhdr
 | |
| {
 | |
|   struct som_aux_id som_auxhdr;
 | |
| 
 | |
|   long exec_tsize;
 | |
|   long exec_tmem;
 | |
|   long exec_tfile;
 | |
|   long exec_dsize;
 | |
|   long exec_dmem;
 | |
|   long exec_dfile;
 | |
|   long exec_bsize;
 | |
|   long exec_entry;
 | |
|   long exec_flags;
 | |
|   long exec_bfill;
 | |
| };
 | |
| 
 | |
| struct som_space_dictionary_record
 | |
| {
 | |
|   unsigned int name;
 | |
|   unsigned int is_loadable : 1;
 | |
|   unsigned int is_defined : 1;
 | |
|   unsigned int is_private : 1;
 | |
|   unsigned int has_intermediate_code : 1;
 | |
|   unsigned int is_tspecific : 1;
 | |
|   unsigned int reserved : 11;
 | |
|   unsigned int sort_key : 8;
 | |
|   unsigned int reserved2 : 8;
 | |
|   int space_number;
 | |
|   int subspace_index;
 | |
|   unsigned int subspace_quantity;
 | |
|   int loader_fix_index;
 | |
|   unsigned int loader_fix_quantity;
 | |
|   int init_pointer_index;
 | |
|   unsigned int init_pointer_quantity;
 | |
| };
 | |
| 
 | |
| struct som_subspace_dictionary_record
 | |
| {
 | |
|   int space_index;
 | |
|   unsigned int access_control_bits : 7;
 | |
|   unsigned int memory_resident : 1;
 | |
|   unsigned int dup_common : 1;
 | |
|   unsigned int is_common : 1;
 | |
|   unsigned int is_loadable : 1;
 | |
|   unsigned int quadrant : 2;
 | |
|   unsigned int initially_frozen : 1;
 | |
|   unsigned int is_first : 1;
 | |
|   unsigned int code_only : 1;
 | |
|   unsigned int sort_key : 8;
 | |
|   unsigned int replicate_init : 1;
 | |
|   unsigned int continuation : 1;
 | |
|   unsigned int is_tspecific : 1;
 | |
|   unsigned int is_comdat : 1;
 | |
|   unsigned int reserved : 4;
 | |
|   int file_loc_init_value;
 | |
|   unsigned int initialization_length;
 | |
|   unsigned int subspace_start;
 | |
|   unsigned int subspace_length;
 | |
|   unsigned int reserved2 : 5;
 | |
|   unsigned int alignment : 27;
 | |
|   unsigned int name;
 | |
|   int fixup_request_index;
 | |
|   unsigned int fixup_request_quantity;
 | |
| };
 | |
| 
 | |
| struct som_lst_header
 | |
| {
 | |
|   unsigned short system_id;
 | |
|   unsigned short a_magic;
 | |
|   unsigned int version_id;
 | |
|   struct som_clock file_time;
 | |
|   unsigned int hash_loc;
 | |
|   unsigned int hash_size;
 | |
|   unsigned int module_count;
 | |
|   unsigned int module_limit;
 | |
|   unsigned int dir_loc;
 | |
|   unsigned int export_loc;
 | |
|   unsigned int export_count;
 | |
|   unsigned int import_loc;
 | |
|   unsigned int aux_loc;
 | |
|   unsigned int aux_size;
 | |
|   unsigned int string_loc;
 | |
|   unsigned int string_size;
 | |
|   unsigned int free_list;
 | |
|   unsigned int file_end;
 | |
|   unsigned int checksum;
 | |
| };
 | |
| 
 | |
| #endif /* _SOM_INTERNAL_H */
 |