Значение поля "шапки" otool - PullRequest
       26

Значение поля "шапки" otool

2 голосов
/ 08 декабря 2010

Когда я запускаю otool -favh some/library.so, появляются следующие поля:

Mach header
      magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
MH_MAGIC_64  X86_64        ALL LIB64     EXECUTE    12       1552   NOUNDEFS DYLDLINK TWOLEVEL
  • Что означает столбец "заглавные буквы"?
  • Может ли столбец caps отличаться, вызывать сбои связывания?

1 Ответ

3 голосов
/ 16 декабря 2010

Хороший вопрос. Кажется, нигде не документировано. Благодаря открытому исходному коду, ответ был доступен в исходном коде для otools, так что вы можете посмотреть там, если вам нужно больше информации.

Поле представляет биты возможностей ЦП (то есть cpusubtype & CPU_SUBTYPE_MASK). Так что это действительно подмножество поля cpusubtype, чтобы сделать эту информацию более доступной, я полагаю. Это что-то, что вставил программист (ы) otools, а не часть заголовка Mach-O.


Будет ли другой столбец заглавных букв вызвать сбои ссылок?

Не уверен, получу ли я здесь ваш вопрос, с чем именно связать? Очевидно, что наличие двух библиотек, скомпилированных для разных процессоров (возможно, с разными полями "caps"), и попытка связать их вместе, может быть проблемой. Я бы больше интересовался полем «cutype» в этом отношении. Это, вероятно, даст вам подсказку, если вы связываете код x86 с кодом ARM (я полагаю, больше, чем поле «caps»).

В общем, я бы не стал слишком концентрироваться на области, которую никто даже не хочет упоминать в какой-либо документации, если только ваша конкретная ситуация этого не требует.

...