diff options
Diffstat (limited to 'tools/testing')
| -rw-r--r-- | tools/testing/selftests/proc/proc-empty-vm.c | 16 | 
1 files changed, 16 insertions, 0 deletions
| diff --git a/tools/testing/selftests/proc/proc-empty-vm.c b/tools/testing/selftests/proc/proc-empty-vm.c index 7588428b8fcd..3aea36c57800 100644 --- a/tools/testing/selftests/proc/proc-empty-vm.c +++ b/tools/testing/selftests/proc/proc-empty-vm.c @@ -37,6 +37,10 @@  #include <sys/wait.h>  #include <unistd.h> +#ifdef __amd64__ +#define TEST_VSYSCALL +#endif +  /*   * 0: vsyscall VMA doesn't exist	vsyscall=none   * 1: vsyscall VMA is --xp		vsyscall=xonly @@ -119,6 +123,7 @@ static void sigaction_SIGSEGV(int _, siginfo_t *__, void *___)  	_exit(EXIT_FAILURE);  } +#ifdef TEST_VSYSCALL  static void sigaction_SIGSEGV_vsyscall(int _, siginfo_t *__, void *___)  {  	_exit(g_vsyscall); @@ -170,6 +175,7 @@ static void vsyscall(void)  		exit(1);  	}  } +#endif  static int test_proc_pid_maps(pid_t pid)  { @@ -299,7 +305,9 @@ int main(void)  {  	int rv = EXIT_SUCCESS; +#ifdef TEST_VSYSCALL  	vsyscall(); +#endif  	switch (g_vsyscall) {  	case 0: @@ -346,6 +354,14 @@ int main(void)  #ifdef __amd64__  		munmap(NULL, ((size_t)1 << 47) - 4096); +#elif defined __i386__ +		{ +			size_t len; + +			for (len = -4096;; len -= 4096) { +				munmap(NULL, len); +			} +		}  #else  #error "implement 'unmap everything'"  #endif | 
