<div dir="ltr">I've almost gotten DDMD to link on 64-bit linux, but there's an annoying difference with g++ vs dmc.<div><br></div><div><div>../dmd/src/glue.a(e2ir.o):(.rodata._ZTV9SymbolExp[_ZTV9SymbolExp]+0x90): undefined reference to `Expression::toString()'</div>
<div>../dmd/src/glue.a(e2ir.o):(.rodata._ZTV9SymbolExp[_ZTV9SymbolExp]+0xe0): undefined reference to `Expression::inferType(Type*, int, Scope*, Array<TemplateParameter>*)'</div><div>../dmd/src/glue.a(e2ir.o):(.rodata._ZTV9SymbolExp[_ZTV9SymbolExp]+0x170): undefined reference to `Expression::buildArrayIdent(OutBuffer*, Array<Expression>*)'</div>
<div>../dmd/src/glue.a(e2ir.o):(.rodata._ZTV9SymbolExp[_ZTV9SymbolExp]+0x178): undefined reference to `Expression::buildArrayLoop(Array<Parameter>*)'</div><div>../dmd/src/glue.a(tocsym.o):(.rodata._ZTV17SymbolDeclaration[_ZTV17SymbolDeclaration]+0x188): undefined reference to `Dsymbol::addComment(unsigned char const*)'</div>
<div>../dmd/src/glue.a(tocsym.o):(.rodata._ZTV24TypeInfoClassDeclaration[_ZTV24TypeInfoClassDeclaration]+0x188): undefined reference to `Dsymbol::addComment(unsigned char const*)'</div><div>../dmd/src/glue.a(typinf.o):(.rodata._ZTV24TypeInfoConstDeclaration[_ZTV24TypeInfoConstDeclaration]+0x188): undefined reference to `Dsymbol::addComment(unsigned char const*)'</div>
<div>../dmd/src/glue.a(typinf.o):(.rodata._ZTV28TypeInfoInvariantDeclaration[_ZTV28TypeInfoInvariantDeclaration]+0x188): undefined reference to `Dsymbol::addComment(unsigned char const*)'</div><div>../dmd/src/glue.a(typinf.o):(.rodata._ZTV25TypeInfoSharedDeclaration[_ZTV25TypeInfoSharedDeclaration]+0x188): undefined reference to `Dsymbol::addComment(unsigned char const*)'</div>
<div>../dmd/src/glue.a(typinf.o):(.rodata._ZTV23TypeInfoWildDeclaration[_ZTV23TypeInfoWildDeclaration]+0x188): more undefined references to `Dsymbol::addComment(unsigned char const*)' follow</div></div><div><br></div>
<div>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</div>
<div><br></div><div>Is there a way anyone knows of to make g++ just reference the vtable symbol, and not re-emit the contents?</div><div><br></div><div>Thanks,</div><div>Daniel</div></div>