Encontré que cuando usamos nested functions, GCC requiere una pila ejecutable para trampoline code. Sin embargo, el código siguiente, cuando se compila con gcc, no muestra una pila ejecutable. (Utilicé execstack para verificar si la pila es ejecutable)Ejemplo de pila ejecutable en Linux (arquitectura i386)
#include <stdio.h>
#include <unistd.h>
int main()
{
int add(int a, int b)
{
return a + b;
}
return add(2, 3);
}
¿Por qué esto no resultará en una pila ejecutable? Y si no se supone que lo haga, ¿alguien puede dar un ejemplo de una construcción de código que hace dar una pila ejecutable?
Creo funciones definidas a nivel local no necesitan pila ejecutable porque su código todavía se almacena en la misma sección de código como otras funciones, y no en el apilar. –