PLT pointer destroyed problem when loading IR32_32.DLL (Indeo codec)
Marcus Meissner
meissner at suse.de
Thu Mar 18 03:53:47 CST 2004
> > > Hi,
> > >
> > > When executing the DllMain of the native IR32_32.DLL (VFW), Wine crashes.
> > > After some investigations, I found that a part of the code uses the EBX
> > > register at one point without saving
> > > and restore it afterwards. Since this register contains the PLT pointer
> > > for standard unix functions like libc ones, this
> > > does not take a long time for Wine to crashing.
> > > I tested with the ugly hack attached that saves and restores the EBX
> > > register between the call to DllMain and that fixed the problem and
> > > the DLL works fine then.
> >
> > This might happen.
> That ebx can be scrapped?
Yes. I have seen such a case too, however in a windows WDM driver.
However, the Win32 ABI specifies that the registers should be saved across a
function call, so this is a bug in IR32_32.DLL I think.
googling gives something like:
http://www.codeproject.com/cpp/calling_conventions_demystified.asp?print=true
http://weblogs.asp.net/oldnewthing/archive/2004/01/08/48616.aspx
Ciao, Marcus
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://www.winehq.org/pipermail/wine-devel/attachments/20040318/fc7f4243/attachment.pgp
More information about the wine-devel
mailing list