annotate usr/src/cmd/sgs/include/sparc/machdep.h @ 2647:e440e3da2a6f

6464235 executing the 64-bit ld(1) should be easy
author rie
date Wed, 30 Aug 2006 10:15:44 -0700
parents 8c9a4f31d225
children 897bcb036a29
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
1 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
2 * CDDL HEADER START
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
3 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
4 * The contents of this file are subject to the terms of the
1618
8c9a4f31d225 6316708 LD_DEBUG should provide a means of identifying/isolating individual
rie
parents: 0
diff changeset
5 * Common Development and Distribution License (the "License").
8c9a4f31d225 6316708 LD_DEBUG should provide a means of identifying/isolating individual
rie
parents: 0
diff changeset
6 * You may not use this file except in compliance with the License.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
7 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
9 * or http://www.opensolaris.org/os/licensing.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
10 * See the License for the specific language governing permissions
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
11 * and limitations under the License.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
12 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
13 * When distributing Covered Code, include this CDDL HEADER in each
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
15 * If applicable, add the following below this CDDL HEADER, with the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
16 * fields enclosed by brackets "[]" replaced with your own identifying
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
17 * information: Portions Copyright [yyyy] [name of copyright owner]
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
18 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
19 * CDDL HEADER END
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
20 */
1618
8c9a4f31d225 6316708 LD_DEBUG should provide a means of identifying/isolating individual
rie
parents: 0
diff changeset
21
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
22 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
23 * Copyright (c) 1988 AT&T
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
24 * All Rights Reserved
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
25 *
1618
8c9a4f31d225 6316708 LD_DEBUG should provide a means of identifying/isolating individual
rie
parents: 0
diff changeset
26 * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
27 * Use is subject to license terms.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
28 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
29 * Global include file for all sgs SPARC machine dependent macros, constants
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
30 * and declarations.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
31 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
32
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
33 #ifndef _MACHDEP_H
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
34 #define _MACHDEP_H
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
35
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
36 #pragma ident "%Z%%M% %I% %E% SMI"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
37
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
38 #include <link.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
39 #include <sys/machelf.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
40
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
41 #ifdef __cplusplus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
42 extern "C" {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
43 #endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
44
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
45 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
46 * Elf header information.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
47 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
48 #ifdef _ELF64
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
49 #define M_MACH EM_SPARCV9
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
50 #define M_CLASS ELFCLASS64
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
51 #else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
52 #define M_MACH EM_SPARC
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
53 #define M_CLASS ELFCLASS32
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
54 #endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
55 #define M_MACHPLUS EM_SPARC32PLUS
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
56 #define M_DATA ELFDATA2MSB
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
57 #define M_FLAGSPLUS EF_SPARC_32PLUS
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
58
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
59 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
60 * Page boundary Macros: truncate to previous page boundary and round to
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
61 * next page boundary (refer to generic macros in ../sgs.h also).
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
62 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
63 #define M_PTRUNC(X) ((X) & ~(syspagsz - 1))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
64 #define M_PROUND(X) (((X) + syspagsz - 1) & ~(syspagsz - 1))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
65
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
66 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
67 * Segment boundary macros: truncate to previous segment boundary and round
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
68 * to next page boundary.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
69 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
70 #ifndef M_SEGSIZE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
71 #define M_SEGSIZE ELF_SPARC_MAXPGSZ
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
72 #endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
73 #define M_STRUNC(X) ((X) & ~(M_SEGSIZE - 1))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
74 #define M_SROUND(X) (((X) + M_SEGSIZE - 1) & ~(M_SEGSIZE - 1))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
75
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
76
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
77 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
78 * TLS static segments must be rounded to the following requirements,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
79 * due to libthread stack allocation.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
80 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
81 #if defined(_ELF64)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
82 #define M_TLSSTATALIGN 0x10
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
83 #else
2647
e440e3da2a6f 6464235 executing the 64-bit ld(1) should be easy
rie
parents: 1618
diff changeset
84 #define M_TLSSTATALIGN 0x08
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
85 #endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
86
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
87
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
88 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
89 * Instruction encodings.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
90 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
91 #define M_SAVESP64 0x9de3bfc0 /* save %sp, -64, %sp */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
92 #define M_CALL 0x40000000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
93 #define M_JMPL 0x81c06000 /* jmpl %g1 + simm13, %g0 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
94 #define M_SETHIG0 0x01000000 /* sethi %hi(val), %g0 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
95 #define M_SETHIG1 0x03000000 /* sethi %hi(val), %g1 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
96 #define M_STO7G1IM 0xde206000 /* st %o7,[%g1 + %lo(val)] */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
97 #define M_SUBFPSPG1 0x8227800e /* sub %fp,%sp,%g1 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
98 #define M_NOP 0x01000000 /* sethi 0, %o0 (nop) */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
99 #define M_BA_A 0x30800000 /* ba,a */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
100 #define M_BA_A_PT 0x30480000 /* ba,a %icc, <dst> */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
101 #define M_MOVO7TOG1 0x8210000f /* mov %o7, %g1 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
102 #define M_MOVO7TOG5 0x8a10000f /* mov %o7, %g5 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
103 #define M_MOVI7TOG1 0x8210001f /* mov %i7, %g1 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
104 #define M_BA_A_XCC 0x30680000 /* ba,a %xcc */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
105 #define M_JMPL_G5G0 0x81c16000 /* jmpl %g5 + 0, %g0 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
106 #define M_XNOR_G5G1 0x82396000 /* xnor %g5, 0, %g1 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
107
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
108
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
109 #define M_BIND_ADJ 4 /* adjustment for end of */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
110 /* elf_rtbndr() address */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
111
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
112
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
113 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
114 * Plt and Got information; the first few .got and .plt entries are reserved
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
115 * PLT[0] jump to dynamic linker
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
116 * GOT[0] address of _DYNAMIC
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
117 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
118 #define M_PLT_INSSIZE 4 /* single plt instruction size */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
119 #define M_GOT_XDYNAMIC 0 /* got index for _DYNAMIC */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
120 #define M_GOT_XNumber 1 /* reserved no. of got entries */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
121
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
122 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
123 * ELF32 bit PLT constants
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
124 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
125 #define M32_PLT_ENTSIZE 12 /* 32bit plt entry size in bytes */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
126
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
127 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
128 * ELF64 bit PLT constants
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
129 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
130 #define M64_PLT_NEARPLTS 0x8000 /* # of NEAR PLTS we can have */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
131 #define M64_PLT_ENTSIZE 32 /* plt entry size in bytes */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
132 #define M64_PLT_FENTSIZE 24 /* size of far plt is 6 instructions */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
133 /* x 4bytes */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
134 #define M64_PLT_PSIZE 8 /* size of PLTP pointer */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
135 #define M64_PLT_FBLKCNTS 160 /* # of plts in far PLT blocks */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
136 #define M64_PLT_FBLOCKSZ (M64_PLT_FBLKCNTS *\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
137 M64_PLT_ENTSIZE) /* size of far PLT block */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
138
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
139
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
140 #ifdef _ELF64
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
141 #define M_PLT_ENTSIZE M64_PLT_ENTSIZE /* plt entry size in bytes */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
142 #define M_PLT_XNumber 4 /* reserved no. of plt entries */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
143 #define M_PLT_ALIGN 256 /* alignment of .plt section */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
144 #define M_PLT_RESERVSZ (M_PLT_XNumber * \
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
145 M_PLT_ENTSIZE) /* first 4 plt's reserved */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
146 #define M_GOT_ENTSIZE 8 /* got entry size in bytes */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
147 #define M_GOT_MAXSMALL 1024 /* maximum no. of small gots */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
148 #else /* Elf32 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
149 #define M_PLT_ENTSIZE M32_PLT_ENTSIZE /* plt entry size in bytes */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
150 #define M_PLT_XNumber 4 /* reserved no. of plt entries */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
151 #define M_PLT_ALIGN M_WORD_ALIGN /* alignment of .plt section */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
152 #define M_PLT_RESERVSZ (M_PLT_XNumber * \
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
153 M_PLT_ENTSIZE) /* first 4 plt's reserved */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
154 #define M_GOT_ENTSIZE 4 /* got entry size in bytes */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
155 #define M_GOT_MAXSMALL 2048 /* maximum no. of small gots */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
156 #endif /* _ELF64 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
157 /* transition flags for got sizing */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
158 #define M_GOT_LARGE (Sword)(-M_GOT_MAXSMALL - 1)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
159 #define M_GOT_SMALL (Sword)(-M_GOT_MAXSMALL - 2)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
160
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
161
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
162 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
163 * Other machine dependent entities
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
164 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
165 #ifdef _ELF64
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
166 #define M_SEGM_ALIGN ELF_SPARCV9_MAXPGSZ
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
167 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
168 * Put 64-bit programs above 4 gigabytes to help insure correctness,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
169 * so any 64-bit programs that truncate pointers will fault now instead of
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
170 * corrupting itself and dying mysteriously.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
171 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
172 #define M_SEGM_ORIGIN (Addr)0x100000000ULL /* default first segment offset */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
173 #define M_WORD_ALIGN 8
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
174 #else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
175 #define M_SEGM_ALIGN ELF_SPARC_MAXPGSZ
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
176 #define M_SEGM_ORIGIN (Addr)0x10000 /* default first segment offset */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
177 #define M_WORD_ALIGN 4
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
178 #endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
179
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
180 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
181 * Make machine class dependent functions transparent to the common code
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
182 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
183 #ifdef _ELF64
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
184 #define ELF_R_TYPE ELF64_R_TYPE_ID
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
185 #define ELF_R_INFO ELF64_R_INFO
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
186 #define ELF_R_SYM ELF64_R_SYM
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
187 #define ELF_R_TYPE_DATA ELF64_R_TYPE_DATA
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
188 #define ELF_R_TYPE_INFO ELF64_R_TYPE_INFO
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
189 #define ELF_ST_BIND ELF64_ST_BIND
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
190 #define ELF_ST_TYPE ELF64_ST_TYPE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
191 #define ELF_ST_INFO ELF64_ST_INFO
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
192 #define ELF_ST_VISIBILITY ELF64_ST_VISIBILITY
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
193 #define ELF_M_SYM ELF64_M_SYM
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
194 #define ELF_M_SIZE ELF64_M_SIZE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
195 #define ELF_M_INFO ELF64_M_INFO
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
196 #define elf_checksum elf64_checksum
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
197 #define elf_fsize elf64_fsize
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
198 #define elf_getehdr elf64_getehdr
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
199 #define elf_getphdr elf64_getphdr
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
200 #define elf_newehdr elf64_newehdr
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
201 #define elf_newphdr elf64_newphdr
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
202 #define elf_getshdr elf64_getshdr
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
203 #else /* Elf32 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
204 #define ELF_R_TYPE ELF32_R_TYPE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
205 #define ELF_R_INFO ELF32_R_INFO
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
206 #define ELF_R_SYM ELF32_R_SYM
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
207 #define ELF_M_SYM ELF32_M_SYM
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
208 #define ELF_M_SIZE ELF32_M_SIZE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
209 #define ELF_M_INFO ELF32_M_INFO
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
210 /* Elf64 can hide extra offset in r_info */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
211 #define ELF_R_TYPE_DATA(x) (0)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
212 #define ELF_R_TYPE_INFO(xoff, type) (type)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
213 #define ELF_ST_BIND ELF32_ST_BIND
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
214 #define ELF_ST_TYPE ELF32_ST_TYPE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
215 #define ELF_ST_INFO ELF32_ST_INFO
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
216 #define ELF_ST_VISIBILITY ELF32_ST_VISIBILITY
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
217 #define elf_checksum elf32_checksum
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
218 #define elf_fsize elf32_fsize
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
219 #define elf_getehdr elf32_getehdr
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
220 #define elf_getphdr elf32_getphdr
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
221 #define elf_newehdr elf32_newehdr
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
222 #define elf_newphdr elf32_newphdr
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
223 #define elf_getshdr elf32_getshdr
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
224 #endif /* Elf32 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
225
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
226 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
227 * Make common relocation information transparent to the common code
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
228 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
229 #define M_REL_DT_TYPE DT_RELA /* .dynamic entry */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
230 #define M_REL_DT_SIZE DT_RELASZ /* .dynamic entry */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
231 #define M_REL_DT_ENT DT_RELAENT /* .dynamic entry */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
232 #define M_REL_DT_COUNT DT_RELACOUNT /* .dynamic entry */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
233 #define M_REL_SHT_TYPE SHT_RELA /* section header type */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
234 #define M_REL_ELF_TYPE ELF_T_RELA /* data buffer type */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
235
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
236 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
237 * Make common relocation types transparent to the common code
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
238 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
239 #define M_R_NONE R_SPARC_NONE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
240 #define M_R_GLOB_DAT R_SPARC_GLOB_DAT
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
241 #define M_R_COPY R_SPARC_COPY
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
242 #define M_R_RELATIVE R_SPARC_RELATIVE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
243 #define M_R_JMP_SLOT R_SPARC_JMP_SLOT
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
244 #define M_R_REGISTER R_SPARC_REGISTER
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
245 #define M_R_FPTR R_SPARC_NONE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
246 #define M_R_NUM R_SPARC_NUM
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
247
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
248 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
249 * Length of R_SPARC_
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
250 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
251 #define M_R_STR_LEN 8
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
252
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
253 #ifdef _ELF64
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
254 #define M_R_ARRAYADDR R_SPARC_64
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
255 #define M_R_DTPMOD R_SPARC_TLS_DTPMOD64
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
256 #define M_R_DTPOFF R_SPARC_TLS_DTPOFF64
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
257 #define M_R_TPOFF R_SPARC_TLS_TPOFF64
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
258 #else /* _ELF32 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
259 #define M_R_ARRAYADDR R_SPARC_32
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
260 #define M_R_DTPMOD R_SPARC_TLS_DTPMOD32
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
261 #define M_R_DTPOFF R_SPARC_TLS_DTPOFF32
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
262 #define M_R_TPOFF R_SPARC_TLS_TPOFF32
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
263 #endif /* _ELF64 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
264
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
265
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
266 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
267 * Make register symbols transparent to common code
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
268 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
269 #define M_DT_REGISTER DT_SPARC_REGISTER
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
270
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
271 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
272 * PLTRESERVE is not relevant on sparc
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
273 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
274 #define M_DT_PLTRESERVE 0xffffffff
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
275
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
276
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
277 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
278 * Make plt section information transparent to the common code.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
279 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
280 #define M_PLT_SHF_FLAGS (SHF_ALLOC | SHF_WRITE | SHF_EXECINSTR)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
281
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
282 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
283 * Make data segment information transparent to the common code.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
284 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
285 #define M_DATASEG_PERM (PF_R | PF_W | PF_X)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
286
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
287 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
288 * Define a set of identifies for special sections. These allow the sections
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
289 * to be ordered within the output file image. These values should be
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
290 * maintained consistently, where appropriate, in each platform specific header
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
291 * file.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
292 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
293 * o null identifies that this section does not need to be added to the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
294 * output image (ie. shared object sections or sections we're going to
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
295 * recreate (sym tables, string tables, relocations, etc.)).
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
296 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
297 * o any user defined section will be first in the associated segment.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
298 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
299 * o interp and capabilities sections are next, as these are accessed
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
300 * immediately the first page of the image is mapped.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
301 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
302 * o the syminfo, hash, dynsym, dynstr and rel's are grouped together as
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
303 * these will all be accessed first by ld.so.1 to perform relocations.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
304 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
305 * o the got, dynamic, and plt are grouped together as these may also be
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
306 * accessed first by ld.so.1 to perform relocations, fill in DT_DEBUG
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
307 * (executables only), and .plt[0].
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
308 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
309 * o unknown sections (stabs, comments etc.) go at the end.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
310 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
311 * Note that .tlsbss/.bss are given the largest identifiers. This insures that
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
312 * if any unknown sections become associated to the same segment as the .bss,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
313 * the .bss sections are always the last section in the segment.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
314 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
315 #define M_ID_NULL 0x00
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
316 #define M_ID_USER 0x01
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
317
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
318 #define M_ID_INTERP 0x02 /* SHF_ALLOC */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
319 #define M_ID_CAP 0x03
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
320 #define M_ID_SYMINFO 0x04
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
321 #define M_ID_HASH 0x05
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
322 #define M_ID_DYNSYM 0x06
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
323 #define M_ID_DYNSTR 0x07
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
324 #define M_ID_VERSION 0x08
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
325 #define M_ID_REL 0x09
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
326 #define M_ID_TEXT 0x0b /* SHF_ALLOC + SHF_EXECINSTR */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
327 #define M_ID_DATA 0x0c
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
328
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
329 /* M_ID_USER 0x01 dual entry - listed above */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
330 #define M_ID_GOTDATA 0x02 /* SHF_ALLOC + SHF_WRITE */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
331 #define M_ID_GOT 0x03
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
332 #define M_ID_PLT 0x04
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
333 #define M_ID_DYNAMIC 0x05
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
334 #define M_ID_ARRAY 0x06
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
335
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
336 #define M_ID_UNKNOWN 0xfc /* just before TLS */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
337
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
338 #define M_ID_TLS 0xfd /* just before bss */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
339 #define M_ID_TLSBSS 0xfe
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
340 #define M_ID_BSS 0xff
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
341
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
342 #define M_ID_SYMTAB_NDX 0x02 /* ! SHF_ALLOC */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
343 #define M_ID_SYMTAB 0x03
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
344 #define M_ID_STRTAB 0x04
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
345 #define M_ID_DYNSYM_NDX 0x05
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
346 #define M_ID_NOTE 0x06
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
347
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
348 #ifdef __cplusplus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
349 }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
350 #endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
351
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
352 #endif /* _MACHDEP_H */