Annotation of sys/arch/hppa/include/som.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: som.h,v 1.4 2004/04/07 18:24:20 mickey Exp $ */
2:
3: /*
4: * Copyright (c) 1998 Michael Shalayeff
5: * All rights reserved.
6: *
7: * Redistribution and use in source and binary forms, with or without
8: * modification, are permitted provided that the following conditions
9: * are met:
10: * 1. Redistributions of source code must retain the above copyright
11: * notice, this list of conditions and the following disclaimer.
12: * 2. Redistributions in binary form must reproduce the above copyright
13: * notice, this list of conditions and the following disclaimer in the
14: * documentation and/or other materials provided with the distribution.
15: *
16: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19: * IN NO EVENT SHALL THE AUTHOR OR HIS RELATIVES BE LIABLE FOR ANY DIRECT,
20: * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21: * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22: * SERVICES; LOSS OF MIND, USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
24: * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
25: * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
26: * THE POSSIBILITY OF SUCH DAMAGE.
27: */
28:
29: #ifndef _MACHINE_SOM_H_
30: #define _MACHINE_SOM_H_
31:
32: /* system_id */
33: #define SOM_BSD 800
34: #define SOM_PA10 0x20b
35: #define SOM_PA11 0x210
36: #define SOM_PA12 0x211
37: #define SOM_PA20 0x214
38:
39: /* a_magic */
40: #define SOM_MAGIC 0x107
41: #define SOM_SHARED 0x108
42: #define SOM_DEMAND 0x10B
43:
44: #define SOM_BADMAGIC(fh) \
45: ((fh)->system_id != SOM_PA10 && \
46: (fh)->system_id != SOM_PA11 && \
47: (fh)->system_id != SOM_PA12 && \
48: (fh)->system_id != SOM_PA20)
49:
50: struct som_filehdr {
51: u_short system_id;
52: u_short a_magic;
53: u_int version_id;
54: u_int time_secs; /* sys time (zero if unused) */
55: u_int time_nsecs;
56: u_int ep_space; /* ep space */
57: u_int ep_subspace;
58: u_int entry; /* how is it different from a_entry? */
59: u_int aux_loc; /* aux header location */
60: u_int aux_size;
61: u_int som_length; /* entire image length */
62: u_int dp; /* dp presumed at compilation time */
63: u_int space_loc; /* space dictionary location */
64: u_int space_total; /* N of entries in the space dict */
65: u_int subspace_loc; /* subspace dict location */
66: u_int subspace_total; /* N of entries in the subspace dict */
67: u_int ld_fixup_loc; /* space ref array (relocs?) */
68: u_int ld_fixup_total; /* N of space ref records */
69: u_int space_str_loc; /* {,sub}space string table location */
70: u_int space_str_size; /* size of the above */
71: u_int init_loc; /* init ptrs location */
72: u_int init_total; /* N of entries in the above */
73: u_int dict_loc; /* module dictionary location */
74: u_int dict_total; /* number of modules */
75: u_int sym_loc; /* symbol table location */
76: u_int sym_total; /* N of symbols */
77: u_int fixup_loc; /* fixpup reqs location */
78: u_int fixup_total; /* N of the fixup reqs */
79: u_int strings_loc; /* string table location */
80: u_int strings_size; /* size of the strings table */
81: u_int unloadable_loc; /* unloadable spaces location */
82: u_int unloadable_size; /* size of the unloadable spaces */
83: u_int checksum; /* header checksum? */
84: };
85:
86: struct som_exec_aux {
87: u_int mandatory : 1;
88: u_int copy : 1;
89: u_int append : 1;
90: u_int ignore : 1;
91: u_int reserved : 12;
92: u_int type : 16;
93: u_int length;
94: long a_tsize;
95: long a_tmem;
96: long a_tfile;
97: long a_dsize;
98: long a_dmem;
99: long a_dfile;
100: long a_bsize;
101: long a_entry;
102: long a_flags;
103: long a_bfill;
104: };
105:
106: struct som_sym {
107: u_int sym_type : 8;
108: u_int sym_scope : 4;
109: u_int sym_chklevel : 3;
110: u_int sym_qualify : 1;
111: u_int sym_ifrozen : 1;
112: u_int sym_resident : 1;
113: u_int sym_is_common : 1;
114: u_int sym_dup_common : 1;
115: u_int sym_xleast : 2;
116: u_int sym_arg_reloc : 10;
117: union {
118: char *n_name;
119: u_int n_strx;
120: } sym_name, sym_qualifier_name;
121: u_int sym_info;
122: u_int sym_value;
123:
124: };
125:
126: /* sym_type */
127: #define SOM_ST_NULL 0
128: #define SOM_ST_ABS 1
129: #define SOM_ST_DATA 2
130: #define SOM_ST_CODE 3
131: #define SOM_ST_PRI_PROG 4
132: #define SOM_ST_SEC_PROG 5
133: #define SOM_ST_ENTRY 6
134: #define SOM_ST_STORAGE 7
135: #define SOM_ST_STUB 8
136: #define SOM_ST_MODULE 9
137: #define SOM_ST_SYM_EXT 10
138: #define SOM_ST_ARG_EXT 11
139: #define SOM_ST_MILLICODE 12
140: #define SOM_ST_PLABEL 13
141:
142: /* sym_scope */
143: #define SOM_SS_UNSAT 0
144: #define SOM_SS_EXTERNAL 1
145: #define SOM_SS_GLOBAL 2
146: #define SOM_SS_UNIVERSAL 3
147:
148: #endif /* _MACHINE_SOM_H_ */
CVSweb