ilm
Joined: 11 Jun 2007 Posts: 1
|
Posted: Mon Jun 11, 2007 7:51 pm Post subject: scanOptLink parse problems |
|
|
it looks like insertRawSymbol isnt de-mangling names right.
the test environment is Windows XPsp2 DMD 1.10, 1.14, 1.15 (phobos). the same test program works fine when using debug symbols instead of a map file.
test program:
Code: |
module sample;
class MyException : TracedException{
this(){
super("a message");
writefln("\tMyException: this()");
print();
}
new(size_t size){
writefln("\tMyException: new(size_t)");
return (new byte[size]).ptr;
}
}
class AA {
int i = 0x12_34_56_AB;
}
class BB : AA
{
this(){i = 0xdeadbeef; }
}
class CC : BB
{
this(){ i = 0x01; }
}
|
resulting types table (sample.* missing):
Code: |
util.flectioned.PrimitiveTypeSymbol!(long).PrimitiveTypeSymbol
double
uint
cdouble
util.flectioned.PrimitiveTypeSymbol!(ulong).PrimitiveTypeSymbol
util.flectioned.PrimitiveTypeSymbol!(ifloat).PrimitiveTypeSymbol
util.flectioned.PrimitiveTypeSymbol!(float).PrimitiveTypeSymbol
dchar
idouble
util.flectioned.PrimitiveTypeSymbol!(uint).PrimitiveTypeSymbol
util.flectioned.PrimitiveTypeSymbol!(bool).PrimitiveTypeSymbol
creal
util.flectioned.PrimitiveTypeSymbol!(ushort).PrimitiveTypeSymbol
float
util.flectioned.PrimitiveTypeSymbol!(cfloat).PrimitiveTypeSymbol
char
util.flectioned.PrimitiveTypeSymbol!(wchar).PrimitiveTypeSymbol
real
util.flectioned.PrimitiveTypeSymbol!(double).PrimitiveTypeSymbol
aaA.BB
util.flectioned.PrimitiveTypeSymbol!(byte).PrimitiveTypeSymbol
util.flectioned.PrimitiveTypeSymbol!(void).PrimitiveTypeSymbol
short
util.flectioned.PrimitiveTypeSymbol!(short).PrimitiveTypeSymbol
void
util.flectioned.PrimitiveTypeSymbol!(int).PrimitiveTypeSymbol
util.flectioned.PrimitiveTypeSymbol!(ubyte).PrimitiveTypeSymbol
util.flectioned.PrimitiveTypeSymbol!(creal).PrimitiveTypeSymbol
ubyte
int
ulong
util.flectioned.PrimitiveTypeSymbol!(ireal).PrimitiveTypeSymbol
util.flectioned.PrimitiveTypeSymbol!(idouble).PrimitiveTypeSymbol
util.flectioned.PrimitiveTypeSymbol!(dchar).PrimitiveTypeSymbol
ifloat
aaA.aaA
byte
ireal
bool
ushort
util.flectioned.PrimitiveTypeSymbol!(real).PrimitiveTypeSymbol
cfloat
util.flectioned.PrimitiveTypeSymbol!(cdouble).PrimitiveTypeSymbol
util.flectioned.PrimitiveTypeSymbol!(char).PrimitiveTypeSymbol
long
wchar |
debug printfs() to show args being passed to insertRawSymbol:
Code: | name=_D6sample11MyException5_ctorMFZC6sample11MyException address=00402010 size=0000003e
name=_D6sample2BB5_ctorMFZC6sample2BB address=00402050 size=00000008
name=_D6sample2CC5_ctorMFZC6sample2CC address=00402058 size=00000018
name=__Dmain address=00402070 size=000001fe
name=_D6sample7__arrayZ address=00402270 size=00000013
name=_D4util10flectioned9getStringFC6ObjectZAa address=00402284 size=00000006
name=_D4util10flectioned15SymbolException5_ctorMFAaZC4util10flectioned15SymbolException address=0040228c size=00000027
name=_D4util10flectioned15SymbolException11__invariantMFZv address=004022b4 size=00000011
name=_D4util10flectioned19ReflectionException5_ctorMFAaZC4util10flectioned19ReflectionException address=004022c8 size=00000027
name=_D4util10flectioned19ReflectionException11__invariantMFZv address=004022f0 size=00000011
name=_D4util10flectioned17OverloadException11__invariantMFZv address=00402304 size=00000011
name=_D4util10flectioned26IllegalReflectionException5_ctorMFAaZC4util10flectioned26IllegalReflectionException address=00402318 size=00000027
name=_D4util10flectioned26IllegalReflectionException11__invariantMFZv address=00402340 size=00000011
name=_D4util10flectioned17ManglingException11__invariantMFZv address=00402354 size=00000011
name=_D4util10flectioned6Symbol11__invariantMFZv address=00402368 size=0000003b
name=_D4util10flectioned6Symbol5_ctorMFPvkAaC8TypeInfoZC4util10flectioned6Symbol address=004023a4 size=0000003b
name=_D4util10flectioned6Symbol8toStringMFZAa address=004023e0 size=0000005a
name=_D4util10flectioned6Symbol7cleanupMFZv address=0040243c size=0000002b
name=_D4util10flectioned6Symbol15insertRawSymbolFPaPvkbZC4util10flectioned6Symbol address=00402468 size=000000d8
name=_D4util10flectioned6Symbol14scanOptlinkMapFAaPFPaPvkbZC4util10flectioned6SymbolZv address=00402540 size=0000016f
... snip
|
and the input map file:
Code: |
Start Length Name Class
0002:00000000 0001BB9BH _TEXT CODE 32-bit
Type=Public Base Address=00402000
00402000H 0040200FH 00010H Module=sample.obj(sample)
00402010H 00402010H 00000H Module=sample.obj(sample)
00402010H 0040204DH 0003EH Module=sample.obj(sample) [_D6sample11MyException5_ctorMFZC6sample11MyException]
00402050H 00402057H 00008H Module=sample.obj(sample) [_D6sample2BB5_ctorMFZC6sample2BB]
00402058H 0040206FH 00018H Module=sample.obj(sample) [_D6sample2CC5_ctorMFZC6sample2CC]
00402070H 0040226DH 001FEH Module=sample.obj(sample) [__Dmain]
00402270H 00402282H 00013H Module=sample.obj(sample) [_D6sample7__arrayZ]
00402284H 00402284H 00000H Module=flectioned.obj(flectioned)
... snip
|
|
|