1
2
3
4
5
6
7
8
9
10
11
12
13struct 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
39typedef 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}
64AOUTHDR;
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
78struct 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
120struct 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
139struct 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
163union 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
229struct 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
245