¿Cuál es la (, -pie -fPIE
"" independiente de la posición ejecutable) opción necesaria en el gcc y ld?-fPIE ("ejecutable independiente de la posición) opción (gcc, ld)
cómo cambiará la código, por ejemplo, las llamadas de función?
¿Cuál es la (, -pie -fPIE
"" independiente de la posición ejecutable) opción necesaria en el gcc y ld?-fPIE ("ejecutable independiente de la posición) opción (gcc, ld)
cómo cambiará la código, por ejemplo, las llamadas de función?
PIE es apoyar en archivos ejecutables.
Antes de la creación del modo de PIE, ejecutable del programa podría no ser colocado en una dirección aleatoria en la memoria, sólo el código independiente de posición (PIC) las bibliotecas dinámicas podrían reubicarse en un desplazamiento aleatorio. Funciona muy parecido a lo que PIC hace para librari dinámico es, la diferencia es que no se crea una Tabla de vinculación de procedimientos (PLT), sino que se usa la reubicación relativa de PC.
Después de habilitar la compatibilidad de PIE en gcc/linkers, el cuerpo del programa se compila y se vincula como código de posición independiente. Un vinculador dinámico realiza el proceso de reubicación completo en el módulo de programa, al igual que las bibliotecas dinámicas. Cualquier uso de datos globales se convierte en acceso a través de la Tabla de Compensaciones Globales (GOT) y se agregan las reubicaciones GOT.
PIE se describe bien en this OpenBSD PIE presentation.
Se muestran los cambios a las funciones in this slide (PIE vs PIC).
x 86 pic vs pastel
variables y funciones globales locales están optimizados en el pastel de
variables y funciones globales externas son iguales que el Pic
y en this slide (PIE vs Antiguo- vinculación estilo)
pastel x86 vs no-flags (fijo)
variables y funciones globales locales son similares a
variables globales externos fijos y funciones son iguales que el Pic
Nota, ese pastel puede ser incompatible con -static
También en Wikipedia: http: //en.wikipedia.org/wiki/Position-independent_code#Position-independent_executables – osgx
¿Por qué -pie y -static son compatibles con ARM y NO son compatibles con x86? Mi pregunta ASÍ: http://stackoverflow.com/questions/27082959/gcc-static-and-pie-are-incompatible-for-x86 – 4ntoine