Вы используете неправильный системный вызов. Это тот, который обеспечивает обратную совместимость с 32-битной структурой. Конечно, это означает, что поле st_size
не находится со смещением, ожидаемым вашим кодом.
Имя символа функции stat()
не равно _stat
, по умолчанию, начиная с версии 10.6. Скорее это _stat$INODE64
. Если вы посмотрите на сборку для этого в /usr/lib/system/libsystem_kernel.dylib
, вы обнаружите, что она использует значение syscall 0x2000152
.