December 06, 2013
I've almost gotten DDMD to link on 64-bit linux, but there's an annoying difference with g++ vs dmc.

../dmd/src/glue.a(e2ir.o):(.rodata._ZTV9SymbolExp[_ZTV9SymbolExp]+0x90):
undefined reference to `Expression::toString()'
../dmd/src/glue.a(e2ir.o):(.rodata._ZTV9SymbolExp[_ZTV9SymbolExp]+0xe0):
undefined reference to `Expression::inferType(Type*, int, Scope*,
Array<TemplateParameter>*)'
../dmd/src/glue.a(e2ir.o):(.rodata._ZTV9SymbolExp[_ZTV9SymbolExp]+0x170):
undefined reference to `Expression::buildArrayIdent(OutBuffer*,
Array<Expression>*)'
../dmd/src/glue.a(e2ir.o):(.rodata._ZTV9SymbolExp[_ZTV9SymbolExp]+0x178):
undefined reference to `Expression::buildArrayLoop(Array<Parameter>*)'
../dmd/src/glue.a(tocsym.o):(.rodata._ZTV17SymbolDeclaration[_ZTV17SymbolDeclaration]+0x188):
undefined reference to `Dsymbol::addComment(unsigned char const*)'
../dmd/src/glue.a(tocsym.o):(.rodata._ZTV24TypeInfoClassDeclaration[_ZTV24TypeInfoClassDeclaration]+0x188):
undefined reference to `Dsymbol::addComment(unsigned char const*)'
../dmd/src/glue.a(typinf.o):(.rodata._ZTV24TypeInfoConstDeclaration[_ZTV24TypeInfoConstDeclaration]+0x188):
undefined reference to `Dsymbol::addComment(unsigned char const*)'
../dmd/src/glue.a(typinf.o):(.rodata._ZTV28TypeInfoInvariantDeclaration[_ZTV28TypeInfoInvariantDeclaration]+0x188):
undefined reference to `Dsymbol::addComment(unsigned char const*)'
../dmd/src/glue.a(typinf.o):(.rodata._ZTV25TypeInfoSharedDeclaration[_ZTV25TypeInfoSharedDeclaration]+0x188):
undefined reference to `Dsymbol::addComment(unsigned char const*)'
../dmd/src/glue.a(typinf.o):(.rodata._ZTV23TypeInfoWildDeclaration[_ZTV23TypeInfoWildDeclaration]+0x188):
more undefined references to `Dsymbol::addComment(unsigned char const*)'
follow

These appear to happen because a class (SymbolExp) has a member function written in e2ir.c, and g++ is writing out the full vtable complete with references to the actual functions, whereas dmc just references the vtable symbol.  It then fails because eg toString was renamed to _toString, templated structs are currently mangled wrong, unsigned char is mangled differently to 'char' etc

Is there a way anyone knows of to make g++ just reference the vtable symbol, and not re-emit the contents?

Thanks,
Daniel