digitalmars.D - CodeView questions
- JT (97/97) Oct 05 2005 ok, Walter and anyone else - I have some questions regarding the
ok, Walter and anyone else - I have some questions regarding the Codeview data exported by your compiler/linker. Im new to codeview so I may just be missing some things, so I appologize if this doesnt make any sense. if given the code: ============================================== class TestClass { } class DerivedClass : TestClass { } class OtherDerivedClass : TestClass { } class SecondDerivedClass : DerivedClass { } ============================================== the following relevent codeview types are produced: 0x1002 struct Object field list: 0x0000 flags: forward ref, derivation list: 0x100f 0x1005 struct hellod.TestClass field list: 0x1003 flags: derivation list: 0x0000 0x1006 struct TestClass field list: 0x0000 flags: forward ref, derivation list: 0x100e 0x1008 struct hellod.DerivedClass field list: 0x1007 flags: derivation list: 0x0000 0x1009 struct hellod.OtherDerivedClass field list: 0x1007 flags: derivation list: 0x0000 0x100a struct DerivedClass field list: 0x0000 flags: forward ref, derivation list: 0x100d 0x100c struct hellod.SecondDerivedClass field list: 0x100b flags: derivation list: 0x0000 0x100d derivation list 0 - 0x000d 0x100e derivation list 0 - 0x0009 1 - 0x000a 0x100f derivation list 0 - 0x0006 ============================================== whats confusing me are the derivation lists - this list contains all structs/classes that are directly derived from a given base class note - all custom codeview types are above 0x1000 so this number is added to type indicies to find the actual type so.... --------------------------------------------------------------- this is a forward ref for TestClass - its derived list looks ok 0x1006 struct TestClass field list: 0x0000 flags: forward ref, derivation list: 0x100e 0x100e derivation list 0 - 0x0009 1 - 0x000a --------------------------------------------------------------- forward ref for Object class - its derived list looks ok 0x1002 struct Object field list: 0x0000 flags: forward ref, derivation list: 0x100f 0x100f derivation list 0 - 0x0006 **************** ?? QUESTION ?? **************** this is a forward reference for a structure named DerivedClass its derived list should contain: SecondDerivedClass - 0x000c ( for type 0x100c ) yet it contains 0x000d - which seems to reference the derived list itself 0x100a struct DerivedClass field list: 0x0000 flags: forward ref, derivation list: 0x100d 0x100d derivation list 0 - 0x000d Ive tried to isolate a strange case here - but Ive seen several problems like this regarding the derivation list. it seems the last derivation list is 'broken' - or something. is this a bug? or am i missing something? I had a few more questions but right now but I cant quite remember them, so I will leave it at this...
Oct 05 2005