Left: | ||
Right: |
OLD | NEW |
---|---|
1 // Derived from Inferno utils/6l/l.h and related files. | 1 // Derived from Inferno utils/6l/l.h and related files. |
2 // http://code.google.com/p/inferno-os/source/browse/utils/6l/l.h | 2 // http://code.google.com/p/inferno-os/source/browse/utils/6l/l.h |
3 // | 3 // |
4 // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. | 4 // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. |
5 // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) | 5 // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) |
6 // Portions Copyright © 1997-1999 Vita Nuova Limited | 6 // Portions Copyright © 1997-1999 Vita Nuova Limited |
7 // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuov a.com) | 7 // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuov a.com) |
8 // Portions Copyright © 2004,2006 Bruce Ellis | 8 // Portions Copyright © 2004,2006 Bruce Ellis |
9 // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) | 9 // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) |
10 // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others | 10 // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
117 // prevent incompatible type signatures between liblink and 8l on Plan 9 | 117 // prevent incompatible type signatures between liblink and 8l on Plan 9 |
118 #pragma incomplete struct Section | 118 #pragma incomplete struct Section |
119 | 119 |
120 struct LSym | 120 struct LSym |
121 { | 121 { |
122 char* name; | 122 char* name; |
123 char* extname; // name used in external object files | 123 char* extname; // name used in external object files |
124 short type; | 124 short type; |
125 short version; | 125 short version; |
126 uchar dupok; | 126 uchar dupok; |
127 uchar external; | |
128 uchar nosplit; | |
127 uchar reachable; | 129 uchar reachable; |
128 uchar cgoexport; | 130 uchar cgoexport; |
129 uchar special; | 131 uchar special; |
130 uchar stkcheck; | 132 uchar stkcheck; |
131 uchar hide; | 133 uchar hide; |
132 uchar leaf; // arm only | 134 uchar leaf; // arm only |
133 uchar fnptr; // arm only | 135 uchar fnptr; // arm only |
134 uchar seenglobl; | 136 uchar seenglobl; |
135 uchar onlist; // on the textp or datap lists | 137 uchar onlist; // on the textp or datap lists |
136 int16 symid; // for writing .5/.6/.8 files | 138 int16 symid; // for writing .5/.6/.8 files |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
222 SSUB = 1<<8, /* sub-symbol, linked from parent via ->sub list */ | 224 SSUB = 1<<8, /* sub-symbol, linked from parent via ->sub list */ |
223 SMASK = SSUB - 1, | 225 SMASK = SSUB - 1, |
224 SHIDDEN = 1<<9, // hidden or local symbol | 226 SHIDDEN = 1<<9, // hidden or local symbol |
225 }; | 227 }; |
226 | 228 |
227 // Reloc.type | 229 // Reloc.type |
228 enum | 230 enum |
229 { | 231 { |
230 R_ADDR = 1, | 232 R_ADDR = 1, |
231 R_SIZE, | 233 R_SIZE, |
232 » R_CALL, | 234 » R_CALL, // relocation for direct call |
iant
2014/04/16 21:29:09
The way this is used in the machine-independent co
rsc
2014/04/16 22:59:16
Thanks. Changed, and changed ARM to use R_CALLARM.
| |
235 » R_CALLIND, // marker for indirect call (no actual relocating necessary) | |
233 R_CONST, | 236 R_CONST, |
234 R_PCREL, | 237 R_PCREL, |
235 R_TLS, | 238 R_TLS, |
236 R_TLS_LE, // TLS local exec offset from TLS segment register | 239 R_TLS_LE, // TLS local exec offset from TLS segment register |
237 R_TLS_IE, // TLS initial exec offset from TLS base pointer | 240 R_TLS_IE, // TLS initial exec offset from TLS base pointer |
238 R_GOTOFF, | 241 R_GOTOFF, |
239 R_PLT0, | 242 R_PLT0, |
240 R_PLT1, | 243 R_PLT1, |
241 R_PLT2, | 244 R_PLT2, |
242 }; | 245 }; |
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
601 | 604 |
602 #pragma varargck type "A" int | 605 #pragma varargck type "A" int |
603 #pragma varargck type "D" Addr* | 606 #pragma varargck type "D" Addr* |
604 #pragma varargck type "lD" Addr* | 607 #pragma varargck type "lD" Addr* |
605 #pragma varargck type "P" Prog* | 608 #pragma varargck type "P" Prog* |
606 #pragma varargck type "R" int | 609 #pragma varargck type "R" int |
607 | 610 |
608 // TODO(ality): remove this workaround. | 611 // TODO(ality): remove this workaround. |
609 // It's here because Pconv in liblink/list?.c references %L. | 612 // It's here because Pconv in liblink/list?.c references %L. |
610 #pragma varargck type "L" int32 | 613 #pragma varargck type "L" int32 |
OLD | NEW |