| /* Test module for making nonexecutable stacks executable | 
 |    on load of a DSO that requires executable stacks.  */ | 
 |  | 
 | #include <stdbool.h> | 
 | #include <stdio.h> | 
 | #include <stdlib.h> | 
 |  | 
 | 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) (); | 
 | } |