struct / union in initializer, RFE #901.
[sdcc.git] / sdcc / support / sdbinutils / include / som / internal.h
blobf4b37ce1854fceb1979484d27b8f65f45609ee51
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
24 struct som_clock
26 unsigned int secs;
27 unsigned int nanosecs;
30 struct som_header
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;
66 struct som_aux_id
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;
74 /* Header type. */
75 unsigned int type : 16;
77 /* Length of the header in bytes, without the two word identifier. */
78 unsigned int length;
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;
89 /* The string. */
90 char string[1];
93 struct som_name_pt
95 char *name;
96 unsigned int strx;
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;
113 unsigned int flags;
114 struct som_clock compile_time;
115 struct som_clock source_time;
118 struct som_exec_auxhdr
120 struct som_aux_id som_auxhdr;
122 long exec_tsize;
123 long exec_tmem;
124 long exec_tfile;
125 long exec_dsize;
126 long exec_dmem;
127 long exec_dfile;
128 long exec_bsize;
129 long exec_entry;
130 long exec_flags;
131 long exec_bfill;
134 struct som_space_dictionary_record
136 unsigned int name;
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;
145 int space_number;
146 int subspace_index;
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
156 int space_index;
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;
178 unsigned int name;
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 */