[Issue 2238] New: Internal DMD data corruption
Jarrett Billingsley
kb3ctd2 at yahoo.com
Sat Jul 19 14:29:29 PDT 2008
<d-bugmail at puremagic.com> wrote in message
news:bug-2238-3 at http.d.puremagic.com/issues/...
> http://d.puremagic.com/issues/show_bug.cgi?id=2238
>
> Summary: Internal DMD data corruption
> Product: D
> Version: 1.033
> Platform: PC
> OS/Version: Windows
> Status: NEW
> Severity: minor
> Priority: P4
> Component: DMD
> AssignedTo: bugzilla at digitalmars.com
> ReportedBy: 2korden at gmail.com
>
>
> Compiling the code:
>
> main.d
> ~~~~~~
> import math.Matrix;
>
> void main()
> {
> auto a = new Matrix44F();
> Matrix44F.add(a, a);
> }
>
> math/Matrix.d
> ~~~~~~~~~~~~~
> module math.Matrix;
>
> class Matrix44F
> {
> static M add(M)(M a, M b);
> }
>
> produces the following DMD output:
> Error 42: Symbol Undefined
> _D4math6Mбrix9Ñ
44F32__T3addTCÐâÐZÐâÑFÐâÑÐÂÒÐâÂ
>
> Looks like some internal data corruption takes place...
> Changing nearly anything (return type value, number of arguments, module
> name
> etc.) makes problem disappear.
DMDWin compresses long(er) symbol names in order to fit them in the
extremely restrictive limits of the OMF format, so the above symbol looks
pretty typical for templates on DMDWin. It's odd that it doesn't seem to be
resolving correctly though. Maybe one part of the compiler is lz77
compressing the template symbol names and another is MD5 hashing them?
More information about the Digitalmars-d-bugs
mailing list