Blame elf/tst-execstack-mod.c

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