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