Pavel Roskin wrote:
find_symbol() looks for DT_HASH (4) to set symtabend and fails to find it. As I understand it, we should trick ld into creating the DT_HASH tag or use some other way to locate wine_main_preload_info.
The 6ffffef5 tag is DT_GNU_HASH - that may be a good alternative to DT_HASH. Adding -Wl,--hash-style=sysv to the gcc flags when linking wine-pthread solves the problem!!!
I think adding support for DT_GNU_HASH would be a good idea anyway.
Great work! There's some information on DT_GNU_HASH here:
http://sourceware.org/ml/binutils/2006-06/msg00418.html
Looks like we don't actually use the hash table to look up the symbol, just to find the last entry in the symbol table.
I agree with you the best way to solve the problem would be to handle DT_GNU_HASH.
Mike