source: trunk/libs/newlib/src/include/som/internal.h @ 581

Last change on this file since 581 was 444, checked in by satin@…, 7 years ago

add newlib,libalmos-mkh, restructure shared_syscalls.h and mini-libc

File size: 5.2 KB
Line 
1/* SOM internal definitions for BFD.
2   Copyright 2010  Free Software Foundation, Inc.
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 */
Note: See TracBrowser for help on using the repository browser.