github.com/rohankumardubey/syslog-redirector-golang@v0.0.0-20140320174030-4859f03d829a/include/bootexec.h (about) 1 // Inferno libmach/bootexec.h 2 // http://code.google.com/p/inferno-os/source/browse/utils/libmach/bootexec.h 3 // 4 // Copyright © 1994-1999 Lucent Technologies Inc. 5 // Power PC support Copyright © 1995-2004 C H Forsyth (forsyth@terzarima.net). 6 // Portions Copyright © 1997-1999 Vita Nuova Limited. 7 // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com). 8 // Revisions Copyright © 2000-2004 Lucent Technologies Inc. and others. 9 // Portions Copyright © 2009 The Go Authors. All rights reserved. 10 // 11 // Permission is hereby granted, free of charge, to any person obtaining a copy 12 // of this software and associated documentation files (the "Software"), to deal 13 // in the Software without restriction, including without limitation the rights 14 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 15 // copies of the Software, and to permit persons to whom the Software is 16 // furnished to do so, subject to the following conditions: 17 // 18 // The above copyright notice and this permission notice shall be included in 19 // all copies or substantial portions of the Software. 20 // 21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 22 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 24 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 25 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 26 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 27 // THE SOFTWARE. 28 29 struct coffsect 30 { 31 char name[8]; 32 uint32 phys; 33 uint32 virt; 34 uint32 size; 35 uint32 fptr; 36 uint32 fptrreloc; 37 uint32 fptrlineno; 38 uint32 nrelocnlineno; 39 uint32 flags; 40 }; 41 42 /* 43 * proprietary exec headers, needed to bootstrap various machines 44 */ 45 struct mipsexec 46 { 47 short mmagic; /* (0x160) mips magic number */ 48 short nscns; /* (unused) number of sections */ 49 int32 timdat; /* (unused) time & date stamp */ 50 int32 symptr; /* offset to symbol table */ 51 int32 nsyms; /* size of symbol table */ 52 short opthdr; /* (0x38) sizeof(optional hdr) */ 53 short pcszs; /* flags */ 54 short amagic; /* see above */ 55 short vstamp; /* version stamp */ 56 int32 tsize; /* text size in bytes */ 57 int32 dsize; /* initialized data */ 58 int32 bsize; /* uninitialized data */ 59 int32 mentry; /* entry pt. */ 60 int32 text_start; /* base of text used for this file */ 61 int32 data_start; /* base of data used for this file */ 62 int32 bss_start; /* base of bss used for this file */ 63 int32 gprmask; /* general purpose register mask */ 64 union{ 65 int32 cprmask[4]; /* co-processor register masks */ 66 int32 pcsize; 67 }; 68 int32 gp_value; /* the gp value used for this object */ 69 }; 70 71 struct mips4kexec 72 { 73 struct mipsexec h; 74 struct coffsect itexts; 75 struct coffsect idatas; 76 struct coffsect ibsss; 77 }; 78 79 struct sparcexec 80 { 81 short sjunk; /* dynamic bit and version number */ 82 short smagic; /* 0407 */ 83 uint32 stext; 84 uint32 sdata; 85 uint32 sbss; 86 uint32 ssyms; 87 uint32 sentry; 88 uint32 strsize; 89 uint32 sdrsize; 90 }; 91 92 struct nextexec 93 { 94 /* UNUSED 95 struct nexthdr{ 96 uint32 nmagic; 97 uint32 ncputype; 98 uint32 ncpusubtype; 99 uint32 nfiletype; 100 uint32 ncmds; 101 uint32 nsizeofcmds; 102 uint32 nflags; 103 }; 104 105 struct nextcmd{ 106 uint32 cmd; 107 uint32 cmdsize; 108 uchar segname[16]; 109 uint32 vmaddr; 110 uint32 vmsize; 111 uint32 fileoff; 112 uint32 filesize; 113 uint32 maxprot; 114 uint32 initprot; 115 uint32 nsects; 116 uint32 flags; 117 }textc; 118 struct nextsect{ 119 char sectname[16]; 120 char segname[16]; 121 uint32 addr; 122 uint32 size; 123 uint32 offset; 124 uint32 align; 125 uint32 reloff; 126 uint32 nreloc; 127 uint32 flags; 128 uint32 reserved1; 129 uint32 reserved2; 130 }texts; 131 struct nextcmd datac; 132 struct nextsect datas; 133 struct nextsect bsss; 134 struct nextsym{ 135 uint32 cmd; 136 uint32 cmdsize; 137 uint32 symoff; 138 uint32 nsyms; 139 uint32 spoff; 140 uint32 pcoff; 141 }symc; 142 */ 143 }; 144 145 struct i386exec 146 { 147 /* UNUSED 148 struct i386coff{ 149 uint32 isectmagic; 150 uint32 itime; 151 uint32 isyms; 152 uint32 insyms; 153 uint32 iflags; 154 }; 155 struct i386hdr{ 156 uint32 imagic; 157 uint32 itextsize; 158 uint32 idatasize; 159 uint32 ibsssize; 160 uint32 ientry; 161 uint32 itextstart; 162 uint32 idatastart; 163 }; 164 struct coffsect itexts; 165 struct coffsect idatas; 166 struct coffsect ibsss; 167 struct coffsect icomments; 168 */ 169 };