d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowe#include <sys/mman.h>
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowe
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowe#include <stdlib.h>
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowe#include <unistd.h>
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowe#include <err.h>
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowe
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Loweint
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowemain(int argc, char **argv)
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowe{
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowe int stack = 0;
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowe void *heap = NULL;
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowe void *mapping = NULL;
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowe
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowe if ((heap = malloc(10)) == NULL)
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowe err(1, "couldn't allocate");
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowe
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowe if ((mapping = mmap((caddr_t)0, 10, (PROT_READ | PROT_WRITE),
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowe MAP_ANON|MAP_PRIVATE, -1, 0)) == (void*)-1)
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowe err(1, "couldn't map");
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowe
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowe printf(" stack: 0x%p\n", &stack);
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowe printf(" heap: 0x%p\n", heap);
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowe printf("mapping: 0x%p\n", mapping);
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowe printf(" text: 0x%p\n", &main);
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowe return (0);
d2a70789f056fc6c9ce3ab047b52126d80b0e3daRichard Lowe}