]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - include/som/internal.h
Update year range in copyright notice of binutils files
[thirdparty/binutils-gdb.git] / include / som / internal.h
CommitLineData
820744a5 1/* SOM internal definitions for BFD.
250d07de 2 Copyright (C) 2010-2021 Free Software Foundation, Inc.
820744a5
TG
3 Contributed by Tristan Gingold <gingold@adacore.com>, AdaCore.
4
5 This file is part of BFD, the Binary File Descriptor library.
6
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.
11
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.
16
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. */
20
21#ifndef _SOM_INTERNAL_H
22#define _SOM_INTERNAL_H
23
24struct som_clock
25{
26 unsigned int secs;
27 unsigned int nanosecs;
28};
29
30struct som_header
31{
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;
64};
65
66struct som_aux_id
67{
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;
73
74 /* Header type. */
75 unsigned int type : 16;
76
77 /* Length of the header in bytes, without the two word identifier. */
78 unsigned int length;
79};
80
81/* Generic auxiliary string header. */
82struct som_string_auxhdr
83{
84 struct som_aux_id header_id;
85
86 /* Length of the string, without the NUL. */
87 unsigned int string_length;
88
89 /* The string. */
90 char string[1];
91};
92
93struct som_name_pt
94{
95 char *name;
96 unsigned int strx;
97};
98
99struct som_compilation_unit
100{
101 /* Source file that produced the SOM. */
102 struct som_name_pt name;
103
104 /* Name of the language used when creating this SOM. */
105 struct som_name_pt language_name;
106
107 /* Identificaton of the compiler. */
108 struct som_name_pt product_id;
109
110 /* Version id of the compiler. */
111 struct som_name_pt version_id;
112
113 unsigned int flags;
114 struct som_clock compile_time;
115 struct som_clock source_time;
116};
117
118struct som_exec_auxhdr
119{
120 struct som_aux_id som_auxhdr;
121
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;
132};
133
134struct som_space_dictionary_record
135{
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;
152};
153
154struct som_subspace_dictionary_record
155{
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;
181};
182
183struct som_lst_header
184{
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;
204};
205
206#endif /* _SOM_INTERNAL_H */