www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Dparser link error

reply Knud Soerensen <4tuu4k002 sneakemail.com> writes:
Hi 

I am trying to link the mars.d program which come with Dparser
and i get the following errors.

../dparser/dparser.dmd.Aggregate.o: In function
`_D7dparser3dmd9Aggregate11accessCheckFS7dparser3dmd4Root3LocC7dparser3dmd5Scope5ScopeC7dparser3dmd10Expression10ExpressionC7dparser3dmd11Declaration11DeclarationZv':
../dparser/dmd/Aggregate.d:(.gnu.linkonce.t_D7dparser3dmd9Aggregate11accessCheckFS7dparser3dmd4Root3LocC7dparser3dmd5Scope5ScopeC7dparser3dmd10Expression10ExpressionC7dparser3dmd11Declaration11
eclarationZv+0xad): undefined reference to `_D22TypeInfo_B10AaAaAaAaAa6__initZ'
../dparser/dparser.dmd.ScopeSymbol.o: In function
`_D7dparser3dmd11ScopeSymbol12ScopeDSymbol15multiplyDefinedFS7dparser3dmd4Root3LocC7dparser3dmd6Symbol7DSymbolC7dparser3dmd6Symbol7DSymbolZv':
../dparser/dmd/ScopeSymbol.d:(.gnu.linkonce.t_D7dparser3dmd11ScopeSymbol12ScopeDSymbol15multiplyDefinedFS7dparser3dmd4Root3LocC7dparser3dmd6Symbol7DSymbolC7dparser3dmd6Sym
ol7DSymbolZv+0x85): undefined reference to `_D22TypeInfo_B10AaAaAaAaAa6__initZ'
collect2: ld returned 1 exit status
--- errorlevel 1

Does anybody know what the problem is ??

The last error seems to referrer to the following function can anyone spot
the error ??

	static void multiplyDefined(Loc loc, DSymbol s1, DSymbol s2)
	{
	    //printf("s1 = '%s'\n", s1.toChars());
	    //printf("s2 = '%s', parent = %p\n", s2.toChars(), s2.parent);
	//	#if 1
	    s1.error( "conflicts with %s at %s", s2.toPrettyChars(), s2.locToChars() );
        if (loc.filename)        
        {	
            .errorLoc(loc, "%s at %s conflicts with %s at %s",
s1.toPrettyChars(), s1.locToChars(), s2.toPrettyChars(), s2.locToChars());
        }
        else
        {
	        s1.errorLoc(loc, "conflicts with %s at %s", s2.toPrettyChars(),
s2.locToChars());
        }
	}
Mar 20 2007
parent reply Frits van Bommel <fvbommel REMwOVExCAPSs.nl> writes:
Knud Soerensen wrote:
 Hi 
 
 I am trying to link the mars.d program which come with Dparser
 and i get the following errors.
 
[snip]: undefined reference to `_D22TypeInfo_B10AaAaAaAaAa6__initZ'
 collect2: ld returned 1 exit status
 --- errorlevel 1
 
 Does anybody know what the problem is ??
That's the TypeInfo for a tuple(char[],char[],char[],char[],char[]), probably from:
             .errorLoc(loc, "%s at %s conflicts with %s at %s",
s1.toPrettyChars(), s1.locToChars(), s2.toPrettyChars(), s2.locToChars());
Is that function by any chance declared as something like "void errorLoc(Loc, ...)"? (IIRC TypeInfo for tuples is used to pass varargs, and this is the only function call with >= 5 parameters) As to why that TypeInfo doesn't get emitted, that may be a long story. What is your compiler command line? (including compiler please) Do you use -c to compile files one-by-one and then link or do you just pass all files at the same time? Whichever it is, does this error disappear if you switch?
Mar 20 2007
parent Knud Soerensen <4tuu4k002 sneakemail.com> writes:
On Tue, 20 Mar 2007 23:44:16 +0100, Frits van Bommel wrote:

 Knud Soerensen wrote:
 Hi
 
 I am trying to link the mars.d program which come with Dparser and i
 get the following errors.
 
[snip]: undefined reference to `_D22TypeInfo_B10AaAaAaAaAa6__initZ'
 collect2: ld returned 1 exit status
 --- errorlevel 1
 
 Does anybody know what the problem is ??
That's the TypeInfo for a tuple(char[],char[],char[],char[],char[]), probably from:
             .errorLoc(loc, "%s at %s conflicts with %s at %s",
             s1.toPrettyChars(), s1.locToChars(), s2.toPrettyChars(),
             s2.locToChars());
Is that function by any chance declared as something like "void errorLoc(Loc, ...)"? (IIRC TypeInfo for tuples is used to pass varargs, and this is the only function call with >= 5 parameters)
Yes, it is defined like // print an error message for a location void errorLoc( Loc loc, ... ) { if( !global.gag ) { doError(loc, _arguments, _argptr); } }
 As to why that TypeInfo doesn't get emitted, that may be a long story.
 What is your compiler command line? (including compiler please)
dmd mars.d -I../ ../dparser/dparser.*.o ArgParser.o gcc mars.o ../dparser/dparser.dmd.Aggregate.o ../dparser/dparser.dmd.Array.o ../dparser/dparser.dmd.Attrib.o ../dparser/dparser.dmd.BackEnd.o ../dparser/dparser.dmd.Class.o ../dparser/dparser.dmd.Condition.o ../dparser/dparser.dmd.Declaration.o ../dparser/dparser.dmd.Doc.o ../dparser/dparser.dmd.Dump.o ../dparser/dparser.dmd.entity.o ../dparser/dparser.dmd.Enum.o ../dparser/dparser.dmd.Expression.o ../dparser/dparser.dmd.Func.o ../dparser/dparser.dmd.globals.o ../dparser/dparser.dmd.Identifier.o ../dparser/dparser.dmd.ID.o ../dparser/dparser.dmd.impcnvtab.o ../dparser/dparser.dmd.Import.o ../dparser/dparser.dmd.Initializer.o ../dparser/dparser.dmd.Inline.o ../dparser/dparser.dmd.Keyword.o ../dparser/dparser.dmd.Lexer.o ../dparser/dparser.dmd.Macro.o ../dparser/dparser.dmd.Module.o ../dparser/dparser.dmd.OutBuffer.o ../dparser/dparser.dmd.Package.o ../dparser/dparser.dmd.Parse.o ../dparser/dparser.dmd.Root.o ../dparser/dparser.dmd.Scope.o ../dparser/dparser.dmd.ScopeSymbol.o ../dparser/dparser.dmd.Statement.o ../dparser/dparser.dmd.StaticAssert.o ../dparser/dparser.dmd.Struct.o ../dparser/dparser.dmd.Symbol.o ../dparser/dparser.dmd.Template.o ../dparser/dparser.dmd.Token.o ../dparser/dparser.dmd.Tokens.o ../dparser/dparser.dmd.TypeInfo.o ../dparser/dparser.dmd.Type.o ../dparser/dparser.dmd.Types.o ../dparser/dparser.dmd.unialpha.o ../dparser/dparser.dmd.Version.o ../dparser/dparser.DParser.o ../dparser/dparser.Error.o ../dparser/dparser.SymbolDisplay.o ../dparser/dparser.SymbolListing.o ../dparser/dparser.Visitor.o ArgParser.o -o mars -m32 -lphobos -lpthread -lm -Xlinker -L/home/knud/dsss/lib ../dparser/dparser.dmd.Aggregate.o: In function `_D7dparser3dmd9Aggregate11accessCheckFS7dparser3dmd4Root3LocC7dparser3dmd5Scope5ScopeC7dparser3dmd10Expression10ExpressionC7dparser3dmd11Declaration11DeclarationZv': ../dparser/dmd/Aggregate.d:(.gnu.linkonce.t_D7dparser3dmd9Aggregate11accessCheckFS7dparser3dmd4Root3LocC7dparser3dmd5Scope5ScopeC7dparser3dmd10Expression10ExpressionC7dparser3dmd11Declaration11DeclarationZv+0xad): undefined reference to `_D22TypeInfo_B10AaAaAaAaAa6__initZ' ../dparser/dparser.dmd.ScopeSymbol.o: In function `_D7dparser3dmd11ScopeSymbol12ScopeDSymbol15multiplyDefinedFS7dparser3dmd4Root3LocC7dparser3dmd6Symbol7DSymbolC7dparser3dmd6Symbol7DSymbolZv': ../dparser/dmd/ScopeSymbol.d:(.gnu.linkonce.t_D7dparser3dmd11ScopeSymbol12ScopeDSymbol15multiplyDefinedFS7dparser3dmd4Root3LocC7dparser3dmd6Symbol7DSymbolC7dparser3dmd6Symbol7DSymbolZv+0x85): undefined reference to `_D22TypeInfo_B10AaAaAaAaAa6__initZ' collect2: ld returned 1 exit status --- errorlevel 1
 Do you use -c to compile files one-by-one and then link or do you just
 pass all files at the same time? Whichever it is, does this error
 disappear if you switch?
no dmd -c mars.d -I.. dmd mars.o ../dparser/dparser.*.o ArgParser.o gcc mars.o ../dparser/dparser.dmd.Aggregate.o ../dparser/dparser.dmd.Array.o ../dparser/dparser.dmd.Attrib.o ../dparser/dparser.dmd.BackEnd.o ../dparser/dparser.dmd.Class.o ../dparser/dparser.dmd.Condition.o ../dparser/dparser.dmd.Declaration.o ../dparser/dparser.dmd.Doc.o ../dparser/dparser.dmd.Dump.o ../dparser/dparser.dmd.entity.o ../dparser/dparser.dmd.Enum.o ../dparser/dparser.dmd.Expression.o ../dparser/dparser.dmd.Func.o ../dparser/dparser.dmd.globals.o ../dparser/dparser.dmd.Identifier.o ../dparser/dparser.dmd.ID.o ../dparser/dparser.dmd.impcnvtab.o ../dparser/dparser.dmd.Import.o ../dparser/dparser.dmd.Initializer.o ../dparser/dparser.dmd.Inline.o ../dparser/dparser.dmd.Keyword.o ../dparser/dparser.dmd.Lexer.o ../dparser/dparser.dmd.Macro.o ../dparser/dparser.dmd.Module.o ../dparser/dparser.dmd.OutBuffer.o ../dparser/dparser.dmd.Package.o ../dparser/dparser.dmd.Parse.o ../dparser/dparser.dmd.Root.o ../dparser/dparser.dmd.Scope.o ../dparser/dparser.dmd.ScopeSymbol.o ../dparser/dparser.dmd.Statement.o ../dparser/dparser.dmd.StaticAssert.o ../dparser/dparser.dmd.Struct.o ../dparser/dparser.dmd.Symbol.o ../dparser/dparser.dmd.Template.o ../dparser/dparser.dmd.Token.o ../dparser/dparser.dmd.Tokens.o ../dparser/dparser.dmd.TypeInfo.o ../dparser/dparser.dmd.Type.o ../dparser/dparser.dmd.Types.o ../dparser/dparser.dmd.unialpha.o ../dparser/dparser.dmd.Version.o ../dparser/dparser.DParser.o ../dparser/dparser.Error.o ../dparser/dparser.SymbolDisplay.o ../dparser/dparser.SymbolListing.o ../dparser/dparser.Visitor.o ArgParser.o -o mars -m32 -lphobos -lpthread -lm -Xlinker -L/home/knud/dsss/lib ../dparser/dparser.dmd.Aggregate.o: In function `_D7dparser3dmd9Aggregate11accessCheckFS7dparser3dmd4Root3LocC7dparser3dmd5Scope5ScopeC7dparser3dmd10Expression10ExpressionC7dparser3dmd11Declaration11DeclarationZv': ../dparser/dmd/Aggregate.d:(.gnu.linkonce.t_D7dparser3dmd9Aggregate11accessCheckFS7dparser3dmd4Root3LocC7dparser3dmd5Scope5ScopeC7dparser3dmd10Expression10ExpressionC7dparser3dmd11Declaration11DeclarationZv+0xad): undefined reference to `_D22TypeInfo_B10AaAaAaAaAa6__initZ' ../dparser/dparser.dmd.ScopeSymbol.o: In function `_D7dparser3dmd11ScopeSymbol12ScopeDSymbol15multiplyDefinedFS7dparser3dmd4Root3LocC7dparser3dmd6Symbol7DSymbolC7dparser3dmd6Symbol7DSymbolZv': ../dparser/dmd/ScopeSymbol.d:(.gnu.linkonce.t_D7dparser3dmd11ScopeSymbol12ScopeDSymbol15multiplyDefinedFS7dparser3dmd4Root3LocC7dparser3dmd6Symbol7DSymbolC7dparser3dmd6Symbol7DSymbolZv+0x85): undefined reference to `_D22TypeInfo_B10AaAaAaAaAa6__initZ' collect2: ld returned 1 exit status --- errorlevel 1 However if I do. dmd mars.d -I../ ../dparser/DParser.d ../dparser/Error.d ../dparser/SymbolDisplay.d ../dparser/SymbolListing.d ../dparser/Visitor.d ../dparser/dmd/Aggregate.d ../dparser/dmd/entity.d ../dparser/dmd/Initializer.d ../dparser/dmd/Package.d ../dparser/dmd/Template.d ../dparser/dmd/Array.d ../dparser/dmd/Enum.d ../dparser/dmd/Inline.d ../dparser/dmd/Parse.d ../dparser/dmd/Token.d ../dparser/dmd/Attrib.d ../dparser/dmd/Expression.d ../dparser/dmd/Keyword.d ../dparser/dmd/Root.d ../dparser/dmd/Tokens.d ../dparser/dmd/BackEnd.d ../dparser/dmd/Func.d ../dparser/dmd/Lexer.d ../dparser/dmd/Scope.d ../dparser/dmd/Type.d ../dparser/dmd/Class.d ../dparser/dmd/globals.d ../dparser/dmd/Link.d ../dparser/dmd/ScopeSymbol.d ../dparser/dmd/TypeInfo.d ../dparser/dmd/Condition.d ../dparser/dmd/ID.d ../dparser/dmd/Macro.d ../dparser/dmd/Statement.d ../dparser/dmd/Types.d ../dparser/dmd/Declaration.d ../dparser/dmd/Identifier.d ../dparser/dmd/StaticAssert.d ../dparser/dmd/unialpha.d ../dparser/dmd/Doc.d ../dparser/dmd/impcnvtab.d ../dparser/dmd/Module.d ../dparser/dmd/Struct.d ../dparser/dmd/Version.d ../dparser/dmd/Dump.d ../dparser/dmd/Import.d ../dparser/dmd/OutBuffer.d ../dparser/dmd/Symbol.d ArgParser.d everything compiles ok.
Mar 24 2007