xref: /inferno-os/utils/libmach/bootexec.h (revision 6e425a9de8c003b5a733621a6b6730ec3cc902b8)
1 struct coffsect
2 {
3 	char	name[8];
4 	ulong	phys;
5 	ulong	virt;
6 	ulong	size;
7 	ulong	fptr;
8 	ulong	fptrreloc;
9 	ulong	fptrlineno;
10 	ulong	nrelocnlineno;
11 	ulong	flags;
12 };
13 
14 /*
15  * proprietary exec headers, needed to bootstrap various machines
16  */
17 struct mipsexec
18 {
19 	short	mmagic;		/* (0x160) mips magic number */
20 	short	nscns;		/* (unused) number of sections */
21 	long	timdat;		/* (unused) time & date stamp */
22 	long	symptr;		/* offset to symbol table */
23 	long	nsyms;		/* size of symbol table */
24 	short	opthdr;		/* (0x38) sizeof(optional hdr) */
25 	short	pcszs;		/* flags */
26 	short	amagic;		/* see above */
27 	short	vstamp;		/* version stamp */
28 	long	tsize;		/* text size in bytes */
29 	long	dsize;		/* initialized data */
30 	long	bsize;		/* uninitialized data */
31 	long	mentry;		/* entry pt.				*/
32 	long	text_start;	/* base of text used for this file	*/
33 	long	data_start;	/* base of data used for this file	*/
34 	long	bss_start;	/* base of bss used for this file	*/
35 	long	gprmask;	/* general purpose register mask	*/
36 union{
37 	long	mcprmask[4];	/* co-processor register masks		*/
38 	long	mpcsize;
39 } u0;
40 	long	gp_value;	/* the gp value used for this object    */
41 };
42 
43 struct mips4kexec
44 {
45 	struct mipsexec	h;
46 	struct coffsect	itexts;
47 	struct coffsect idatas;
48 	struct coffsect ibsss;
49 };
50 
51 struct sparcexec
52 {
53 	short	sjunk;		/* dynamic bit and version number */
54 	short	smagic;		/* 0407 */
55 	ulong	stext;
56 	ulong	sdata;
57 	ulong	sbss;
58 	ulong	ssyms;
59 	ulong	sentry;
60 	ulong	strsize;
61 	ulong	sdrsize;
62 };
63 
64 struct nextexec
65 {
66 	struct	nexthdr{
67 		ulong	nmagic;
68 		ulong	ncputype;
69 		ulong	ncpusubtype;
70 		ulong	nfiletype;
71 		ulong	ncmds;
72 		ulong	nsizeofcmds;
73 		ulong	nflags;
74 	}texth;
75 
76 	struct nextcmd{
77 		ulong	cmd;
78 		ulong	cmdsize;
79 		uchar	segname[16];
80 		ulong	vmaddr;
81 		ulong	vmsize;
82 		ulong	fileoff;
83 		ulong	filesize;
84 		ulong	maxprot;
85 		ulong	initprot;
86 		ulong	nsects;
87 		ulong	flags;
88 	}textc;
89 	struct nextsect{
90 		char	sectname[16];
91 		char	segname[16];
92 		ulong	addr;
93 		ulong	size;
94 		ulong	offset;
95 		ulong	align;
96 		ulong	reloff;
97 		ulong	nreloc;
98 		ulong	flags;
99 		ulong	reserved1;
100 		ulong	reserved2;
101 	}texts;
102 	struct nextcmd	datac;
103 	struct nextsect	datas;
104 	struct nextsect	bsss;
105 	struct nextsym{
106 		ulong	cmd;
107 		ulong	cmdsize;
108 		ulong	symoff;
109 		ulong	nsyms;
110 		ulong	spoff;
111 		ulong	pcoff;
112 	}symc;
113 };
114 
115 struct i386exec
116 {
117 	struct	i386coff{
118 		ulong	isectmagic;
119 		ulong	itime;
120 		ulong	isyms;
121 		ulong	insyms;
122 		ulong	iflags;
123 	} icoff;
124 	struct	i386hdr{
125 		ulong	imagic;
126 		ulong	itextsize;
127 		ulong	idatasize;
128 		ulong	ibsssize;
129 		ulong	ientry;
130 		ulong	itextstart;
131 		ulong	idatastart;
132 	} ihdr;
133 	struct coffsect	itexts;
134 	struct coffsect idatas;
135 	struct coffsect ibsss;
136 	struct coffsect icomments;
137 };
138 
139 struct i960exec
140 {
141 	struct	i960coff{
142 		ulong	i6sectmagic;
143 		ulong	i6time;
144 		ulong	i6syms;
145 		ulong	i6nsyms;
146 		ulong	i6opthdrflags;
147 	}i6coff;
148 	struct	i960hdr{
149 		ulong	i6magic;
150 		ulong	i6textsize;
151 		ulong	i6datasize;
152 		ulong	i6bsssize;
153 		ulong	i6entry;
154 		ulong	i6textstart;
155 		ulong	i6datastart;
156 		ulong	i6tagentries;
157 	}i6hdr;
158 	struct i960sect{
159 		char	name[8];
160 		ulong	phys;
161 		ulong	virt;
162 		ulong	size;
163 		ulong	fptr;
164 		ulong	fptrreloc;
165 		ulong	fptrlineno;
166 		ulong	nrelocnlineno;
167 		ulong	flags;
168 		ulong	align;
169 	}i6texts;
170 	struct i960sect i6datas;
171 };
172 
173