Есть ли обратная сторона использования -Bsymbolic-functions?

Недавно я обнаружил опцию компоновщика "-Bsymbolic-functions" в GNU ld:

-Bsymbolic
  When creating a shared library, bind references to global symbols to the 
  definition within the shared library, if any. Normally, it is possible 
  for a program linked against a shared library to override the definition 
  within the shared library. 

  This option is only meaningful on ELF platforms which support shared libraries.

-Bsymbolic-functions
  When creating a shared library, bind references to global function symbols 
  to the definition within the shared library, if any.  

  This option is only meaningful on ELF platforms which support shared libraries.

Это похоже на обратную опцию GCC -fvisibility = hidden , в котором вместо предотвращения экспорта функции, на которую имеется ссылка, в другие общие объекты, он предотвращает привязку внутренних ссылок библиотеки к этой функции к экспортируемой функции другого общего объекта. Я проинформировал себя, что -Bsymbolic-functions предотвратит создание записей PLT для функций, что является хорошим побочным эффектом.

  1. Но мне было интересно, есть ли возможность более детального контроля над этим , например перезапись -Bsymbolic для отдельных определений функций библиотеки.

  2. Следует ли мне знать о подводных камнях при использовании -Bsymbolic-functions ? Я планирую использовать только это, потому что -Bsymbolic , я думаю, будет нарушать исключения (я думаю, это сделает так, чтобы ссылки на объекты typeinfo не были унифицированными).

Спасибо!

22
задан Johannes Schaub - litb 27 August 2011 в 19:52
поделиться