Mercurial > projects > ddmd
comparison dmd/backend/glue.d @ 14:2cc604139636
Implemented Linux support for ddmd. Some parts are a bit hacky to just "get it working", that said, druntime and phobos compile, and unittests pass.
author | Robert Clipsham <robert@octarineparrot.com> |
---|---|
date | Sun, 04 Apr 2010 02:06:32 +0100 |
parents | 10317f0c89a5 |
children | 5c9b78899f5d |
comparison
equal
deleted
inserted
replaced
11:3356c90e9aac | 14:2cc604139636 |
---|---|
18 | 18 |
19 import core.stdc.string; | 19 import core.stdc.string; |
20 | 20 |
21 __gshared Array obj_symbols_towrite; | 21 __gshared Array obj_symbols_towrite; |
22 | 22 |
23 extern (C++) extern | 23 extern (C++) /+extern+/ |
24 { | 24 { |
25 __gshared Outbuffer objbuf; | 25 __gshared Outbuffer objbuf; |
26 int go_flag(char* cp); | 26 int go_flag(char* cp); |
27 void util_set64(); | 27 void util_set64(); |
28 void util_set386(); | 28 void util_set386(); |
125 void writeWordn(int v) | 125 void writeWordn(int v) |
126 { | 126 { |
127 version (_WIN32) { | 127 version (_WIN32) { |
128 *cast(ushort*)p = cast(short)v; | 128 *cast(ushort*)p = cast(short)v; |
129 } else { | 129 } else { |
130 p[0] = v; | 130 assert(0, "Check this"); |
131 p[1] = v >> 8; | 131 p[0] = cast(ubyte)v; |
132 p[1] = cast(ubyte)(v >> 8); | |
132 } | 133 } |
133 p += 2; | 134 p += 2; |
134 } | 135 } |
135 | 136 |
136 /** | 137 /** |
267 */ | 268 */ |
268 | 269 |
269 void obj_append(Dsymbol s) | 270 void obj_append(Dsymbol s) |
270 { | 271 { |
271 obj_symbols_towrite.push(cast(void*)s); | 272 obj_symbols_towrite.push(cast(void*)s); |
273 } | |
274 | |
275 version (Bug4059) | |
276 { | |
277 private extern (C) void _Z8obj_initP9OutbufferPKcS2_(Outbuffer* objbuf, const(char)* filename, const(char)* csegname); | |
278 void obj_init(Outbuffer* objbuf, const(char)* filename, const(char)* csegname) { return _Z8obj_initP9OutbufferPKcS2_(objbuf, filename, csegname); } | |
279 } | |
280 else | |
281 { | |
282 void obj_init(Outbuffer* objbuf, const(char)* filename, const(char)* csegname); | |
272 } | 283 } |
273 | 284 |
274 extern (C++) { | 285 extern (C++) { |
275 void backend_init(); | 286 void backend_init(); |
276 void backend_term(); | 287 void backend_term(); |
278 void rtlsym_reset(); | 289 void rtlsym_reset(); |
279 void slist_reset(); | 290 void slist_reset(); |
280 void el_reset(); | 291 void el_reset(); |
281 void cg87_reset(); | 292 void cg87_reset(); |
282 void out_reset(); | 293 void out_reset(); |
283 void obj_init(Outbuffer* objbuf, const(char)* filename, const(char)* csegname); | |
284 } | 294 } |
285 | 295 |
286 void clearStringTab() | 296 void clearStringTab() |
287 { | 297 { |
288 //printf("clearStringTab()\n"); | 298 //printf("clearStringTab()\n"); |