xref: /inferno-os/utils/libmach/bootexec.h (revision 6cde411a8ffd477459336cedf48034e46f56f913)
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 	long	cprmask[4];	/* co-processor register masks		*/
37 	long	gp_value;	/* the gp value used for this object    */
38 };
39 #define	pcsize	cprmask[0]
40 
41 struct mips4kexec
42 {
43 	struct mipsexec	h;
44 	struct coffsect	itexts;
45 	struct coffsect idatas;
46 	struct coffsect ibsss;
47 };
48 
49 struct sparcexec
50 {
51 	short	sjunk;		/* dynamic bit and version number */
52 	short	smagic;		/* 0407 */
53 	ulong	stext;
54 	ulong	sdata;
55 	ulong	sbss;
56 	ulong	ssyms;
57 	ulong	sentry;
58 	ulong	strsize;
59 	ulong	sdrsize;
60 };
61 
62 struct nextexec
63 {
64 	struct	nexthdr{
65 		ulong	nmagic;
66 		ulong	ncputype;
67 		ulong	ncpusubtype;
68 		ulong	nfiletype;
69 		ulong	ncmds;
70 		ulong	nsizeofcmds;
71 		ulong	nflags;
72 	}texth;
73 
74 	struct nextcmd{
75 		ulong	cmd;
76 		ulong	cmdsize;
77 		uchar	segname[16];
78 		ulong	vmaddr;
79 		ulong	vmsize;
80 		ulong	fileoff;
81 		ulong	filesize;
82 		ulong	maxprot;
83 		ulong	initprot;
84 		ulong	nsects;
85 		ulong	flags;
86 	}textc;
87 	struct nextsect{
88 		char	sectname[16];
89 		char	segname[16];
90 		ulong	addr;
91 		ulong	size;
92 		ulong	offset;
93 		ulong	align;
94 		ulong	reloff;
95 		ulong	nreloc;
96 		ulong	flags;
97 		ulong	reserved1;
98 		ulong	reserved2;
99 	}texts;
100 	struct nextcmd	datac;
101 	struct nextsect	datas;
102 	struct nextsect	bsss;
103 	struct nextsym{
104 		ulong	cmd;
105 		ulong	cmdsize;
106 		ulong	symoff;
107 		ulong	nsyms;
108 		ulong	spoff;
109 		ulong	pcoff;
110 	}symc;
111 };
112 
113 struct i386exec
114 {
115 	struct	i386coff{
116 		ulong	isectmagic;
117 		ulong	itime;
118 		ulong	isyms;
119 		ulong	insyms;
120 		ulong	iflags;
121 	} icoff;
122 	struct	i386hdr{
123 		ulong	imagic;
124 		ulong	itextsize;
125 		ulong	idatasize;
126 		ulong	ibsssize;
127 		ulong	ientry;
128 		ulong	itextstart;
129 		ulong	idatastart;
130 	} ihdr;
131 	struct coffsect	itexts;
132 	struct coffsect idatas;
133 	struct coffsect ibsss;
134 	struct coffsect icomments;
135 };
136 
137