1
2
3
4
5
6
7
8
9
10
11
12
13 struct external_filehdr {
14 char f_magic[2];
15 char f_nscns[2];
16 char f_timdat[4];
17 char f_symptr[4];
18 char f_nsyms[4];
19 char f_opthdr[2];
20 char f_flags[2];
21 };
22
23
24 #define U802WRMAGIC 0730
25 #define U802ROMAGIC 0735
26 #define U802TOCMAGIC 0737
27
28 #define BADMAG(x) \
29 ((x).f_magic != U802ROMAGIC && (x).f_magic != U802WRMAGIC && \
30 (x).f_magic != U802TOCMAGIC)
31
32 #define FILHDR struct external_filehdr
33 #define FILHSZ 20
34
35
36
37
38
39 typedef struct
40 {
41 unsigned char magic[2];
42 unsigned char vstamp[2];
43 unsigned char tsize[4];
44 unsigned char dsize[4];
45 unsigned char bsize[4];
46 unsigned char entry[4];
47 unsigned char text_start[4];
48 unsigned char data_start[4];
49 unsigned char o_toc[4];
50 unsigned char o_snentry[2];
51 unsigned char o_sntext[2];
52 unsigned char o_sndata[2];
53 unsigned char o_sntoc[2];
54 unsigned char o_snloader[2];
55 unsigned char o_snbss[2];
56 unsigned char o_algntext[2];
57 unsigned char o_algndata[2];
58 unsigned char o_modtype[2];
59 unsigned char o_cputype[2];
60 unsigned char o_maxstack[4];
61 unsigned char o_maxdata[4];
62 unsigned char o_resv2[12];
63 }
64 AOUTHDR;
65
66 #define AOUTSZ 72
67 #define SMALL_AOUTSZ (28)
68 #define AOUTHDRSZ 72
69
70 #define RS6K_AOUTHDR_OMAGIC 0x0107
71 #define RS6K_AOUTHDR_NMAGIC 0x0108
72 #define RS6K_AOUTHDR_ZMAGIC 0x010B
73
74
75
76
77
78 struct external_scnhdr {
79 char s_name[8];
80 char s_paddr[4];
81 char s_vaddr[4];
82 char s_size[4];
83 char s_scnptr[4];
84 char s_relptr[4];
85 char s_lnnoptr[4];
86 char s_nreloc[2];
87 char s_nlnno[2];
88 char s_flags[4];
89 };
90
91
92
93
94 #define _TEXT ".text"
95 #define _DATA ".data"
96 #define _BSS ".bss"
97 #define _PAD ".pad"
98 #define _LOADER ".loader"
99
100 #define SCNHDR struct external_scnhdr
101 #define SCNHSZ 40
102
103
104 #define STYP_LOADER 0x1000
105
106
107 #define STYP_DEBUG 0x2000
108
109
110
111 #define STYP_OVRFLO 0x8000
112
113
114
115
116
117
118
119
120 struct external_lineno {
121 union {
122 char l_symndx[4];
123 char l_paddr[4];
124 } l_addr;
125 char l_lnno[2];
126 };
127
128
129 #define LINENO struct external_lineno
130 #define LINESZ 6
131
132
133
134
135 #define E_SYMNMLEN 8
136 #define E_FILNMLEN 14
137 #define E_DIMNUM 4
138
139 struct external_syment
140 {
141 union {
142 char e_name[E_SYMNMLEN];
143 struct {
144 char e_zeroes[4];
145 char e_offset[4];
146 } e;
147 } e;
148 char e_value[4];
149 char e_scnum[2];
150 char e_type[2];
151 char e_sclass[1];
152 char e_numaux[1];
153 };
154
155
156
157 #define N_BTMASK (017)
158 #define N_TMASK (060)
159 #define N_BTSHFT (4)
160 #define N_TSHIFT (2)
161
162
163 union external_auxent {
164 struct {
165 char x_tagndx[4];
166 union {
167 struct {
168 char x_lnno[2];
169 char x_size[2];
170 } x_lnsz;
171 char x_fsize[4];
172 } x_misc;
173 union {
174 struct {
175 char x_lnnoptr[4];
176 char x_endndx[4];
177 } x_fcn;
178 struct {
179 char x_dimen[E_DIMNUM][2];
180 } x_ary;
181 } x_fcnary;
182 char x_tvndx[2];
183 } x_sym;
184
185 union {
186 char x_fname[E_FILNMLEN];
187 struct {
188 char x_zeroes[4];
189 char x_offset[4];
190 } x_n;
191 } x_file;
192
193 struct {
194 char x_scnlen[4];
195 char x_nreloc[2];
196 char x_nlinno[2];
197 } x_scn;
198
199 struct {
200 char x_tvfill[4];
201 char x_tvlen[2];
202 char x_tvran[2][2];
203 } x_tv;
204
205 struct {
206 unsigned char x_scnlen[4];
207 unsigned char x_parmhash[4];
208 unsigned char x_snhash[2];
209 unsigned char x_smtyp[1];
210 unsigned char x_smclas[1];
211 unsigned char x_stab[4];
212 unsigned char x_snstab[2];
213 } x_csect;
214
215 };
216
217 #define SYMENT struct external_syment
218 #define SYMESZ 18
219 #define AUXENT union external_auxent
220 #define AUXESZ 18
221 #define DBXMASK 0x80
222 #define SYMNAME_IN_DEBUG(symptr) ((symptr)->n_sclass & DBXMASK)
223
224
225
226
227
228
229 struct external_reloc {
230 char r_vaddr[4];
231 char r_symndx[4];
232 char r_size[1];
233 char r_type[1];
234 };
235
236
237 #define RELOC struct external_reloc
238 #define RELSZ 10
239
240 #define DEFAULT_DATA_SECTION_ALIGNMENT 4
241 #define DEFAULT_BSS_SECTION_ALIGNMENT 4
242 #define DEFAULT_TEXT_SECTION_ALIGNMENT 4
243
244 #define DEFAULT_SECTION_ALIGNMENT 4