blob: 9b5feae5e34d13691d5017be7f5f29b651d9c8a8 [file] [log] [blame]
/* -*- Mode: C; tab-width: 8; c-basic-offset: 2; indent-tabs-mode: nil; -*- */
#include "util.h"
static int rr_personality(unsigned long persona) {
long ret = syscall(RR_personality, persona);
if (-4096 < ret && ret < 0) {
errno = -ret;
return -1;
}
return ret;
}
int main(void) {
rr_personality(PER_LINUX);
test_assert(rr_personality(0xffffffff) == PER_LINUX);
int ret = rr_personality(PER_LINUX32);
#ifndef __aarch64__
test_assert(ret != -1);
#endif
if (ret != -1)
test_assert(rr_personality(0xffffffff) == PER_LINUX32);
rr_personality(ADDR_NO_RANDOMIZE);
test_assert(rr_personality(0xffffffff) == ADDR_NO_RANDOMIZE);
rr_personality(ADDR_COMPAT_LAYOUT);
test_assert(rr_personality(0xffffffff) == ADDR_COMPAT_LAYOUT);
rr_personality(ADDR_LIMIT_32BIT);
test_assert(rr_personality(0xffffffff) == ADDR_LIMIT_32BIT);
rr_personality(ADDR_LIMIT_3GB);
test_assert(rr_personality(0xffffffff) == ADDR_LIMIT_3GB);
rr_personality(MMAP_PAGE_ZERO);
test_assert(rr_personality(0xffffffff) == MMAP_PAGE_ZERO);
/* Not tested yet: May need to update some checks in rr
rr_personality(READ_IMPLIES_EXEC);
test_assert(rr_personality(0xffffffff) == READ_IMPLIES_EXEC);
*/
rr_personality(SHORT_INODE);
test_assert(rr_personality(0xffffffff) == SHORT_INODE);
rr_personality(STICKY_TIMEOUTS);
test_assert(rr_personality(0xffffffff) == STICKY_TIMEOUTS);
rr_personality(UNAME26);
test_assert(rr_personality(0xffffffff) == UNAME26);
rr_personality(WHOLE_SECONDS);
test_assert(rr_personality(0xffffffff) == WHOLE_SECONDS);
atomic_puts("EXIT-SUCCESS");
return 0;
}