[HACK] buffer overflows & gcc
Gerardo Richarte
gera at corest.com
Tue Feb 22 23:54:37 CET 2005
> ¿Sabe alguién si a partir de cierta versión del GCC el compilador
> deja "márgenes" en la pila entre las variables locales y los registros
> para evitar errores de este tipo?
>
>
Si, deja.
Si no me equivoco es a partir de las versiones 3.x
Basicamente lo que hace el gcc es alinear siempre a 16 la direccion
del stack pointer, con 1 el
minimo y 16 el maximo de bytes extras usado. Esto lo hace cada vez que
va a reservar espacio
para variables locales, y cada vez que va a llamar a una funcion con
argumentos.
La idea es que las variables locales y los argumentos esten siempre
alineados a 16, para que
entren justo en una cache-line, pero intuitivamente no me parece que
halla una ganancia real,
sobre todo cuando las variables locales pueden ocupar mas de una sola
linea de cache.
No hace mucho me dijeron que hay una opcion de gcc para deshabilitar
esta alineacion,
pero nunca lo confirme o desmenti.
gera
More information about the hacking
mailing list