PE загрузчик в новом ядре Darwin (MacOS X) (original) (raw)
Наш коллега, Steven Edwards, выяснил интересную особенность новой версии MacOS X Leopard (10.5).
Если скомпилировать простую программку из этого сообщения , которая вызывает стандартную функцию dlopen (описание тут), но передаёт ей не обычный объектный файл Mach-O, а исполняемый файл в PE-формате (простенькую программку, скомпилированную с помощью MinGW для Windows), то получаются очень интересные результаты.
MacOS X пытается загрузить этот .exe-шник, выдавая следующие ошибки:
dlopen(./procexp.exe, 258): Library not loaded: WS2_32.dll dlopen(./procexp.exe, 258): Library not loaded: MPR.dll
Удивительно?
Предположения о том, что поддержка загрузки PE-файлов нужна для EFI отпали, т.к. Mac OS X Tiger (который работал с EFI) не содержал такой возможности.
Сам Стивен говорит о том, что возможно это - первые признаки планов компании Apple по реализации поддержки Win32-подсистемы в будущих версиях MacOS X. В таком случае бизнес компании CodeWeavers (предоставляющий решения для запуска Win32-приложений в MacOS X и Linux на основе Wine) оказывается под угрозой.
Я обратился за комментариями к своим знакомым в Apple, однако они, по понятным причинам, не смогли ни подтвердить, не опровергнуть эту информацию.