1 /* SOM internal definitions for BFD.
2 Copyright (C) 2010-2022 Free Software Foundation, Inc.
3 Contributed by Tristan Gingold <gingold@adacore.com>, AdaCore.
5 This file is part of BFD, the Binary File Descriptor library.
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software Foundation,
19 Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
21 #ifndef _SOM_INTERNAL_H
22 #define _SOM_INTERNAL_H
27 unsigned int nanosecs
;
32 unsigned short system_id
;
33 unsigned short a_magic
;
34 unsigned int version_id
;
35 struct som_clock file_time
;
36 unsigned int entry_space
;
37 unsigned int entry_subspace
;
38 unsigned int entry_offset
;
39 unsigned int aux_header_location
;
40 unsigned int aux_header_size
;
41 unsigned int som_length
;
42 unsigned int presumed_dp
;
43 unsigned int space_location
;
44 unsigned int space_total
;
45 unsigned int subspace_location
;
46 unsigned int subspace_total
;
47 unsigned int loader_fixup_location
;
48 unsigned int loader_fixup_total
;
49 unsigned int space_strings_location
;
50 unsigned int space_strings_size
;
51 unsigned int init_array_location
;
52 unsigned int init_array_total
;
53 unsigned int compiler_location
;
54 unsigned int compiler_total
;
55 unsigned int symbol_location
;
56 unsigned int symbol_total
;
57 unsigned int fixup_request_location
;
58 unsigned int fixup_request_total
;
59 unsigned int symbol_strings_location
;
60 unsigned int symbol_strings_size
;
61 unsigned int unloadable_sp_location
;
62 unsigned int unloadable_sp_size
;
63 unsigned int checksum
;
68 unsigned int mandatory
: 1;
69 unsigned int copy
: 1;
70 unsigned int append
: 1;
71 unsigned int ignore
: 1;
72 unsigned int reserved
: 12;
75 unsigned int type
: 16;
77 /* Length of the header in bytes, without the two word identifier. */
81 /* Generic auxiliary string header. */
82 struct som_string_auxhdr
84 struct som_aux_id header_id
;
86 /* Length of the string, without the NUL. */
87 unsigned int string_length
;
99 struct som_compilation_unit
101 /* Source file that produced the SOM. */
102 struct som_name_pt name
;
104 /* Name of the language used when creating this SOM. */
105 struct som_name_pt language_name
;
107 /* Identificaton of the compiler. */
108 struct som_name_pt product_id
;
110 /* Version id of the compiler. */
111 struct som_name_pt version_id
;
114 struct som_clock compile_time
;
115 struct som_clock source_time
;
118 struct som_exec_auxhdr
120 struct som_aux_id som_auxhdr
;
134 struct som_space_dictionary_record
137 unsigned int is_loadable
: 1;
138 unsigned int is_defined
: 1;
139 unsigned int is_private
: 1;
140 unsigned int has_intermediate_code
: 1;
141 unsigned int is_tspecific
: 1;
142 unsigned int reserved
: 11;
143 unsigned int sort_key
: 8;
144 unsigned int reserved2
: 8;
147 unsigned int subspace_quantity
;
148 int loader_fix_index
;
149 unsigned int loader_fix_quantity
;
150 int init_pointer_index
;
151 unsigned int init_pointer_quantity
;
154 struct som_subspace_dictionary_record
157 unsigned int access_control_bits
: 7;
158 unsigned int memory_resident
: 1;
159 unsigned int dup_common
: 1;
160 unsigned int is_common
: 1;
161 unsigned int is_loadable
: 1;
162 unsigned int quadrant
: 2;
163 unsigned int initially_frozen
: 1;
164 unsigned int is_first
: 1;
165 unsigned int code_only
: 1;
166 unsigned int sort_key
: 8;
167 unsigned int replicate_init
: 1;
168 unsigned int continuation
: 1;
169 unsigned int is_tspecific
: 1;
170 unsigned int is_comdat
: 1;
171 unsigned int reserved
: 4;
172 int file_loc_init_value
;
173 unsigned int initialization_length
;
174 unsigned int subspace_start
;
175 unsigned int subspace_length
;
176 unsigned int reserved2
: 5;
177 unsigned int alignment
: 27;
179 int fixup_request_index
;
180 unsigned int fixup_request_quantity
;
183 struct som_lst_header
185 unsigned short system_id
;
186 unsigned short a_magic
;
187 unsigned int version_id
;
188 struct som_clock file_time
;
189 unsigned int hash_loc
;
190 unsigned int hash_size
;
191 unsigned int module_count
;
192 unsigned int module_limit
;
193 unsigned int dir_loc
;
194 unsigned int export_loc
;
195 unsigned int export_count
;
196 unsigned int import_loc
;
197 unsigned int aux_loc
;
198 unsigned int aux_size
;
199 unsigned int string_loc
;
200 unsigned int string_size
;
201 unsigned int free_list
;
202 unsigned int file_end
;
203 unsigned int checksum
;
206 #endif /* _SOM_INTERNAL_H */