/* Test module for making nonexecutable stacks executable on load of a DSO that requires executable stacks. */ #include #include #include void callme (void (*callback) (void)); /* This is a function that makes use of executable stack by using a local function trampoline. */ void tryme (void) { bool ok = false; void callback (void) { ok = true; } callme (&callback); if (ok) printf ("DSO called ok (local %p, trampoline %p)\n", &ok, &callback); else abort (); } void callme (void (*callback) (void)) { (*callback) (); }