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@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?