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");