dll-separated lzexpand doesn't work
Ove Kaaven
ovehk at ping.uio.no
Wed Apr 25 21:41:49 CDT 2001
At least not on debian unstable...
I've tracked the problem down to:
lzexpand_main.c, function LZCopy, line 525:
xread=(_readfun)LZRead;
assembles as:
movl LZRead at GOT(%ebx),%edx
movl %edx,-1012(%ebp)
so it reads out the address of LZRead out of the GOT.
The final result in liblz32.so becomes:
5eb7: 8b 93 44 00 00 00 mov 0x44(%ebx),%edx
5ebd: 89 95 0c fc ff ff mov %edx,0xfffffc0c(%ebp)
but because of the -symbolic linker switch, there's no such GOT entry.
CRASH!
The GOT entry for LZRead should be at 00007d64 in the dynamic relocation
table, as far as I can tell from objdump and peeking at the GOT, but in
the relocation table there's only this...
...
00007d60 R_386_GLOB_DAT __dso_handle
00007d68 R_386_GLOB_DAT __deregister_frame_info
...
What can be done about this? Submit bug reports on ld?
More information about the wine-devel
mailing list