The problem revolves around the function MSVCRT_type_info_raw_name. This is defined as stdcall, but disassembling the windows version, it clearly shows use of a calling convention I had never heard of, 'thiscall'. According to the MSDN, thiscall is stdcall BUT the 'this' pointer on x86 machines is stored in the ECX register.
We have the -register adder in the spec file. Look at e.g. how __CxxFrameHandler is defined in msvcrt.spec and implemented in dlls/msvcrt/cppexcept.c.
Thanks Uwe - I took a look, but cannot see what this actually does (nor how to use it). It appears the spec entry means we end up with an extra layer of indirection, but I really cant see how else it works!
Regards, Jason