diff 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
line wrap: on
line diff
--- a/dmd/backend/glue.d	Wed Mar 31 16:29:36 2010 +0400
+++ b/dmd/backend/glue.d	Sun Apr 04 02:06:32 2010 +0100
@@ -20,7 +20,7 @@
 
 __gshared Array obj_symbols_towrite;
 
-extern (C++) extern
+extern (C++) /+extern+/
 {
 	__gshared Outbuffer objbuf;
 	int go_flag(char* cp);
@@ -127,8 +127,9 @@
 version (_WIN32) {
 		*cast(ushort*)p = cast(short)v;
 } else {
-		p[0] = v;
-		p[1] = v >> 8;
+                assert(0, "Check this");
+		p[0] = cast(ubyte)v;
+		p[1] = cast(ubyte)(v >> 8);
 }
 		p += 2;
     }
@@ -271,6 +272,16 @@
     obj_symbols_towrite.push(cast(void*)s);
 }
 
+version (Bug4059)
+{
+	private extern (C) void _Z8obj_initP9OutbufferPKcS2_(Outbuffer* objbuf, const(char)* filename, const(char)* csegname);
+	void obj_init(Outbuffer* objbuf, const(char)* filename, const(char)* csegname) { return _Z8obj_initP9OutbufferPKcS2_(objbuf, filename, csegname); }
+}
+else
+{
+	void obj_init(Outbuffer* objbuf, const(char)* filename, const(char)* csegname);	
+}
+
 extern (C++) {
 	void backend_init();
 	void backend_term();
@@ -280,7 +291,6 @@
 	void el_reset();
 	void cg87_reset();
 	void out_reset();
-	void obj_init(Outbuffer* objbuf, const(char)* filename, const(char)* csegname);
 }
 
 void clearStringTab()
@@ -549,4 +559,4 @@
     debugx = params.debugx;
     debugy = params.debugy;
 }
-}
\ No newline at end of file
+}