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 |
}
|