diff options
Diffstat (limited to 'tools/testing/selftests/proc/proc-empty-vm.c')
| -rw-r--r-- | tools/testing/selftests/proc/proc-empty-vm.c | 23 | 
1 files changed, 23 insertions, 0 deletions
| diff --git a/tools/testing/selftests/proc/proc-empty-vm.c b/tools/testing/selftests/proc/proc-empty-vm.c index e1052443d070..b16c13688b88 100644 --- a/tools/testing/selftests/proc/proc-empty-vm.c +++ b/tools/testing/selftests/proc/proc-empty-vm.c @@ -1,3 +1,4 @@ +#if defined __amd64__ || defined __i386__  /*   * Copyright (c) 2022 Alexey Dobriyan <adobriyan@gmail.com>   * @@ -37,6 +38,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 +124,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 +176,7 @@ static void vsyscall(void)  		exit(1);  	}  } +#endif  static int test_proc_pid_maps(pid_t pid)  { @@ -299,7 +306,9 @@ int main(void)  {  	int rv = EXIT_SUCCESS; +#ifdef TEST_VSYSCALL  	vsyscall(); +#endif  	switch (g_vsyscall) {  	case 0: @@ -346,6 +355,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 @@ -386,3 +403,9 @@ int main(void)  	return rv;  } +#else +int main(void) +{ +	return 4; +} +#endif | 
