Recientemente he descubierto la opción del vinculador "-Bsymbolic-funciones" en GNU ld:¿Hay alguna desventaja en el uso de las funciones -Bsymbolic-?
-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.
Ésta parece ser la inversa de la opción GCC -fvisibility=hidden
, en la que en lugar de prevenir la exportación de la función hace referencia a otra objetos compartidos, evita que las referencias internas de la biblioteca a esa función se vinculen a una función exportada de un objeto compartido diferente. Me informé que -Bsymbolic-functions
impedirá la creación de entradas PLT para las funciones, lo cual es un buen efecto secundario.
Pero me preguntaba si hay tal vez un control más preciso sobre esto, como sobrescribir
-Bsymbolic
para la definición de funciones individuales de una biblioteca.¿Debo ser consciente de las trampas de usar
-Bsymbolic-functions
? Planeo solo usar eso, porque el-Bsymbolic
romperá las excepciones, creo (lo hará para que las referencias a los objetos typeinfo no estén unificadas, creo).
Gracias!
Usted fue la gloriosa y feliz resolución de horas de linker infierno para mí. Te amo un poco –