Что означает код errno 79 (EFTYPE)?

 
Также может означать:
КонстантаТипОС
ELIBACCerrnoLinux
EOVERFLOWerrnoSolaris
NDIS_INTERNAL_ERRORКод BSODWindows
Предыдущий Следующий
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.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.