Что делает __attribute __ ((force))? - PullRequest
0 голосов
/ 02 ноября 2018

Это звучит как то, что я должен быть в состоянии Google, но я не могу найти хорошую ссылку. Что именно делает __attribute__((force))? Как в:

 return (__attribute__((force)) uint32_t) *p

(это для системы ARM, скомпилированной с помощью clang, но я не могу найти ссылки на этот атрибут нигде, даже на страницах, посвященных clang / arm ..).

1 Ответ

0 голосов
/ 02 ноября 2018

__attribute__((force)) используется для подавления предупреждений в разреженном средстве проверки семантики c ядра linux.

В статье из Википедии sparse перечислены следующие атрибуты, как определено в sparse:

  • address_space (число)
  • побитовое
  • сила
  • контекст (выражение, in_context, out_context)

Если вам нужна дополнительная информация об этом, вы можете взглянуть на справочную страницу sparse

В ядре linux некоторые эти атрибуты переопределены в linux / include / linux / compiler_types.h . Например, __force увеличивается до __attribute__((force)) или __bitwise до __attribute__((bitwise)).

Однако в документации linux о разреженных говорится, что gcc игнорирует эти атрибуты:

А с gcc все «__bitwise» / ​​«__ force stuff» исчезают, и все это в конечном итоге выглядит как целые числа для gcc.

...