LEFT | RIGHT |
1 // Copyright 2014 The Go Authors. All rights reserved. | 1 // Copyright 2014 The Go Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style | 2 // Use of this source code is governed by a BSD-style |
3 // license that can be found in the LICENSE file. | 3 // license that can be found in the LICENSE file. |
4 | 4 |
5 /* | 5 /* |
6 * Plan 9 a.out constants and data structures | 6 * Plan 9 a.out constants and data structures |
7 */ | 7 */ |
8 | 8 |
9 package plan9obj | 9 package plan9obj |
10 | 10 |
(...skipping 15 matching lines...) Expand all Loading... |
26 } | 26 } |
27 | 27 |
28 // Plan 9 symbol table entries. | 28 // Plan 9 symbol table entries. |
29 type sym struct { | 29 type sym struct { |
30 value uint64 | 30 value uint64 |
31 typ byte | 31 typ byte |
32 name []byte | 32 name []byte |
33 } | 33 } |
34 | 34 |
35 const ( | 35 const ( |
36 » hsize = 4 * 8 | 36 » hsize = 4 * 8 |
37 » HDR_MAGIC = 0x00008000 /* header expansion */ | 37 » _HDR_MAGIC = 0x00008000 /* header expansion */ |
38 ) | 38 ) |
39 | 39 |
40 func magic(f, b int) string { | 40 func magic(f, b int) string { |
41 buf := new(bytes.Buffer) | 41 buf := new(bytes.Buffer) |
42 var i uint32 = uint32((f) | ((((4 * (b)) + 0) * (b)) + 7)) | 42 var i uint32 = uint32((f) | ((((4 * (b)) + 0) * (b)) + 7)) |
43 binary.Write(buf, binary.BigEndian, i) | 43 binary.Write(buf, binary.BigEndian, i) |
44 return string(buf.Bytes()) | 44 return string(buf.Bytes()) |
45 } | 45 } |
46 | 46 |
47 var ( | 47 var ( |
48 » A_MAGIC = magic(0, 8) /* 68020 (retired) */ | 48 » _A_MAGIC = magic(0, 8) /* 68020 (retired) */ |
49 » I_MAGIC = magic(0, 11) /* intel 386 */ | 49 » _I_MAGIC = magic(0, 11) /* intel 386 */ |
50 » J_MAGIC = magic(0, 12) /* intel 960 (retired) */ | 50 » _J_MAGIC = magic(0, 12) /* intel 960 (retired) */ |
51 » K_MAGIC = magic(0, 13) /* sparc */ | 51 » _K_MAGIC = magic(0, 13) /* sparc */ |
52 » V_MAGIC = magic(0, 16) /* mips 3000 BE */ | 52 » _V_MAGIC = magic(0, 16) /* mips 3000 BE */ |
53 » X_MAGIC = magic(0, 17) /* att dsp 3210 (retired) */ | 53 » _X_MAGIC = magic(0, 17) /* att dsp 3210 (retired) */ |
54 » M_MAGIC = magic(0, 18) /* mips 4000 BE */ | 54 » _M_MAGIC = magic(0, 18) /* mips 4000 BE */ |
55 » D_MAGIC = magic(0, 19) /* amd 29000 (retired) */ | 55 » _D_MAGIC = magic(0, 19) /* amd 29000 (retired) */ |
56 » E_MAGIC = magic(0, 20) /* arm */ | 56 » _E_MAGIC = magic(0, 20) /* arm */ |
57 » Q_MAGIC = magic(0, 21) /* powerpc */ | 57 » _Q_MAGIC = magic(0, 21) /* powerpc */ |
58 » N_MAGIC = magic(0, 22) /* mips 4000 LE */ | 58 » _N_MAGIC = magic(0, 22) /* mips 4000 LE */ |
59 » L_MAGIC = magic(0, 23) /* dec alpha (retired) */ | 59 » _L_MAGIC = magic(0, 23) /* dec alpha (retired) */ |
60 » P_MAGIC = magic(0, 24) /* mips 3000 LE */ | 60 » _P_MAGIC = magic(0, 24) /* mips 3000 LE */ |
61 » U_MAGIC = magic(0, 25) /* sparc64 (retired) */ | 61 » _U_MAGIC = magic(0, 25) /* sparc64 (retired) */ |
62 » S_MAGIC = magic(HDR_MAGIC, 26) /* amd64 */ | 62 » _S_MAGIC = magic(_HDR_MAGIC, 26) /* amd64 */ |
63 » T_MAGIC = magic(HDR_MAGIC, 27) /* powerpc64 */ | 63 » _T_MAGIC = magic(_HDR_MAGIC, 27) /* powerpc64 */ |
64 » R_MAGIC = magic(HDR_MAGIC, 28) /* arm64 */ | 64 » _R_MAGIC = magic(_HDR_MAGIC, 28) /* arm64 */ |
65 ) | 65 ) |
66 | 66 |
67 type ExecTable struct { | 67 type ExecTable struct { |
68 Magic string | 68 Magic string |
69 Ptrsz int | 69 Ptrsz int |
70 Hsize uint32 | 70 Hsize uint32 |
71 } | 71 } |
72 | 72 |
73 var exectab = []ExecTable{ | 73 var exectab = []ExecTable{ |
74 » {A_MAGIC, 4, hsize}, | 74 » {_A_MAGIC, 4, hsize}, |
75 » {I_MAGIC, 4, hsize}, | 75 » {_I_MAGIC, 4, hsize}, |
76 » {J_MAGIC, 4, hsize}, | 76 » {_J_MAGIC, 4, hsize}, |
77 » {K_MAGIC, 4, hsize}, | 77 » {_K_MAGIC, 4, hsize}, |
78 » {V_MAGIC, 4, hsize}, | 78 » {_V_MAGIC, 4, hsize}, |
79 » {X_MAGIC, 4, hsize}, | 79 » {_X_MAGIC, 4, hsize}, |
80 » {M_MAGIC, 4, hsize}, | 80 » {_M_MAGIC, 4, hsize}, |
81 » {D_MAGIC, 4, hsize}, | 81 » {_D_MAGIC, 4, hsize}, |
82 » {E_MAGIC, 4, hsize}, | 82 » {_E_MAGIC, 4, hsize}, |
83 » {Q_MAGIC, 4, hsize}, | 83 » {_Q_MAGIC, 4, hsize}, |
84 » {N_MAGIC, 4, hsize}, | 84 » {_N_MAGIC, 4, hsize}, |
85 » {L_MAGIC, 4, hsize}, | 85 » {_L_MAGIC, 4, hsize}, |
86 » {P_MAGIC, 4, hsize}, | 86 » {_P_MAGIC, 4, hsize}, |
87 » {U_MAGIC, 4, hsize}, | 87 » {_U_MAGIC, 4, hsize}, |
88 » {S_MAGIC, 8, hsize + 8}, | 88 » {_S_MAGIC, 8, hsize + 8}, |
89 » {T_MAGIC, 8, hsize + 8}, | 89 » {_T_MAGIC, 8, hsize + 8}, |
90 » {R_MAGIC, 8, hsize + 8}, | 90 » {_R_MAGIC, 8, hsize + 8}, |
91 } | 91 } |
LEFT | RIGHT |