forked from OSchip/llvm-project
[builtins][test] Avoid unportable mmap call in clear_cache_test.c
Within the last two weeks, the Builtins-*-sunos :: clear_cache_test.c started to FAIL on Solaris. Running it under truss shows mmap(0x00000000, 128, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, 0, 0) Err#22 EINVAL _exit(1) While there are several possible reasons mmap can return EINVAL on Solaris, it turns out it's this one (from mmap(2)): MAP_ANON was specified, but the file descriptor was not -1. And indeed even the Linux mmap(2) documents this as unportable: MAP_ANONYMOUS The mapping is not backed by any file; its contents are initial‐ ized to zero. The fd argument is ignored; however, some imple‐ mentations require fd to be -1 if MAP_ANONYMOUS (or MAP_ANON) is specified, and portable applications should ensure this. The This patch follows this advise. Tested on x86_64-pc-linux-gnu, amd64-pc-solaris2.11 and sparcv9-sun-solaris2.11. Differential Revision: https://reviews.llvm.org/D68455 llvm-svn: 375490
This commit is contained in:
parent
2108a974f7
commit
1876e6c83c
|
@ -49,7 +49,7 @@ int main()
|
|||
#if !defined(_WIN32)
|
||||
uint8_t *execution_buffer = mmap(0, kSize,
|
||||
PROT_READ | PROT_WRITE | PROT_EXEC,
|
||||
MAP_ANON | MAP_PRIVATE, 0, 0);
|
||||
MAP_ANON | MAP_PRIVATE, -1, 0);
|
||||
if (execution_buffer == MAP_FAILED)
|
||||
return 1;
|
||||
#else
|
||||
|
|
Loading…
Reference in New Issue