Предыстория
Есть одна виндовозная игра(Touhou 7.5 IaMP), на неё есть рантайм-патч (экзешник тоже), который англофицирует её на ходу. (Но, суть не об этом, поэтому не надо переносить это в Games)
Недавно обнаружил что патчер начал помирать и вываливаться бактрейс. Судя по моим старым тестам, патчер работал под вайном 1.1.13. Я собрал его(старый вайн), запустил. Не пашет =(
На счастливый случай у меня остался собранный бинарный пакет этого вайна. После его установки я с удивлением обнаружил что патчер теперь работает...
Я стал играться с ldd и LD_PRELOAD...
В итоге выяснил что всё упёрлось в библиотеку libwine.so Это подтвержает тот факт, что если запустить
LD_PRELOAD=старый_libwine.so новый_wine игра.exe
то патчер запускается, а если без LD_PRELOAD то уже нет. Тоесть старая библиотека «нормальная» а новая - нет.
Вопрос
В связи с этим появилась мысль что проблема кроется в том, чем и как эта библиотека(libwine.so) собиралась.
- Я выяснил из логов, что старый вайн был собран GCC-4.1.2 а новый уже GCC-4.3.2. Переключился на старый, пересобрал - не помогает
- Набор динамических библиотек у обеих библиотек одинаковый: linux-gate.so.1 libdl.so.2 libc.so.6 /lib/ld-linux.so.2
- CFLAGS, CHOST, MAKEOPTS и USE флаги у них одинаковые.
- В обоих случаях был одинаковый baselayout (тоесть ld, as и др. утилиты)
И теперь вопрос: как ещё можно сравнить эти библиотеки и выяснить почему при казалось бы одинаковом окружении и одинаковой версии они ведут себя по-разному?
Дистр - Генту 32битная