У меня есть следующий сценарий:
- Запатентованная игра для MacOS, которая статически связывает графическую среду MoltenVK в основной двоичный файл Mach-O x86-64.
- Версия MoltenVK, связанная с, очень старая.
- У меня есть более новая версия MoltenVK в форме
.dylib
(вместе с более новыми версиями компилятора SPIRV, libVulkan и т. Д., Если они необходимы, также в форме dylib).
- Старая и более новая версия MoltenVK совместимы с ABI, то есть экспортируемый символ имена и подписи функций должны быть идентичны старой и новой версии MoltenVK.
И основная причина этого путешествия в связи с MacOS:
- Игра не работает правильно на моей версии macOS (10.15 Catalina Beta 3). Я изолировал проблему с MoltenVK из-за обратной трассировки.
- Я хочу проверить, решит ли обновление MoltenVK проблему, как временный обходной путь, так и для того, чтобы помочь разработчикам изолировать проблему.
Можно ли заставить двоичный файл использовать версию символов, определенных в динамически загруженном .dylib
, вместо версии, определенной в самом двоичном файле? Я хочу пропатчить всех символов, доступных в каждой из .dylib
s, которые у меня есть, потому что, вероятно, он сломался бы, если бы я пропатчил только некоторые символы, но не другие (предположительно, MoltenVK работает, только если код каждого символа в каркас от той же версии MoltenVK).
Примечание: я не могу перекомпилировать основной двоичный файл Mach-O игры, потому что у меня нет исходного кода. Я готов обойти меры безопасности в моей локальной системе, чтобы сделать это, если это вообще возможно; В любом случае, я принимаю на себя риск совершения опасных действий во время работы бета-версии (непроизводственной) ОС.
Я бы предпочел, чтобы ответы и комментарии были сосредоточены на техническом решении поставленного вопроса, но если потребуется дополнительное обоснование, я стараюсь как можно быстрее изолировать эту проблему, чтобы дать разработчикам игры как можно больше времени для исправить это до окончательного выпуска MacOS 10.15. Если я молчу, у проблемы есть шанс, что она не будет обнаружена; тогда люди обновятся до финальной версии macOS 10.15 и заметят, что игра не работает. Это никому не интересно, потому что тогда мы должны либо оставаться на Мохаве, и ждать, пока разработчик игры обновит их игру, либо обходиться без игры, возможно, недели или месяцы.