diff dmd/backend/iasm.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 63623152e82a
children 1628b221808d
line wrap: on
line diff
--- a/dmd/backend/iasm.d	Wed Mar 31 16:29:36 2010 +0400
+++ b/dmd/backend/iasm.d	Sun Apr 04 02:06:32 2010 +0100
@@ -77,16 +77,25 @@
 	"word".ptr,
 ];
 
-extern (Pascal) extern {
-	code* cat(code* c1 , code* c2 );
+extern (C) code * cat(code *c1,code *c2);
+
+version (Bug4059)
+{
+	private extern(C) OP* _Z13asm_op_lookupPKc(const(char)* s);
+	private extern(C) int _Z6binaryPKcPS0_i(const(char)* p , const(char)** tab, int high);
+	OP* asm_op_lookup(const(char)* s) { return _Z13asm_op_lookupPKc(s); }
+	int binary(const(char)* p , const(char)** tab, int high) { return _Z6binaryPKcPS0_i(p, tab, high); }
 }
-
-extern (C++) extern 
+else
+{
+	OP* asm_op_lookup(const(char)* s);
+	int binary(const(char)* p , const(char)** tab, int high);
+}
+
+extern (C++) //extern 
 {
 	void init_optab();
-	OP* asm_op_lookup(const(char)* s);
 	const(char)* asm_opstr(OP* pop);
-	int binary(const(char)* p , const(char)** tab, int high);
 }
 
 static ubyte asm_TKlbra_seen = false;
@@ -4432,4 +4441,4 @@
 	return(szReg.length == 2 && (szReg[0] == 's' || szReg[0] == 'S') &&
 		(szReg[1] == 't' || szReg[1] == 'T'));
 }
-}
\ No newline at end of file
+}