| Предыдущий | Следующий |
| ELIBACC | EOVERFLOW |
EFTYPE
EFTYPE — ошибка BSD/Darwin для существующего файла, тип или формат которого неприемлем для выполняемой операции. Её область шире загрузки программ: в заголовке XNU код указан до специализированных ошибок загрузки, поэтому имеют значение отказавший API и ожидаемый вид объекта.
Расширение имени не является доказательством фактического типа файла. Контейнер Mach-O может представлять перемещаемый объект, исполняемый файл, динамическую библиотеку или пакет; это различие записывается в поле filetype заголовка Mach-O. Корректный объект одного вида всё равно может быть непригоден там, где требуется другой.
Отличайте близкие ошибки Darwin
EFTYPE— общий результат «неправильный тип или формат».EBADEXEC— результат загрузки программы для недопустимого исполняемого образа.EBADMACHOуказывает на структурно повреждённый образ Mach-O.EBADARCHозначает, что образ не содержит процессорную архитектуру, пригодную для загружающего процесса.
Что сохранить
- Запишите точный путь и API, отклонивший файл; не определяйте тип объекта по расширению.
- Используйте
file <path>для определения контейнера, а затемotool -hv <path>иotool -l <path>, если ожидается Mach-O. - Для универсального двоичного файла или подключаемого модуля проверьте срезы командой
lipo -archs <path>; формат и архитектура проверяются отдельно. - Если файл получен из пакета приложения, сравните его с собранным или подписанным артефактом до любой замены. Переименование файла не изменяет его тип Mach-O.
Ссылки
- Apple XNU: errno.h
- Apple XNU: определения загрузчика Mach-O
- Apple: обзор формата исполняемых файлов Mach-O
Нужно найти другой код? Найти другой код состояния или ошибки.