diff options
| -rw-r--r-- | compiler-rt/lib/asan/lit_tests/TestCases/Linux/shmctl.cc | 17 | ||||
| -rw-r--r-- | compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h | 3 |
2 files changed, 19 insertions, 1 deletions
diff --git a/compiler-rt/lib/asan/lit_tests/TestCases/Linux/shmctl.cc b/compiler-rt/lib/asan/lit_tests/TestCases/Linux/shmctl.cc new file mode 100644 index 00000000000..9638cedecb2 --- /dev/null +++ b/compiler-rt/lib/asan/lit_tests/TestCases/Linux/shmctl.cc @@ -0,0 +1,17 @@ +// RUN: %clangxx_asan -O1 %s -o %t && %t 2>&1 +// Regression test for +// https://code.google.com/p/address-sanitizer/issues/detail?id=250 +#include <stdio.h> +#include <sys/ipc.h> +#include <sys/shm.h> +#include <assert.h> + +int main() { + int id = shmget(IPC_PRIVATE, 4096, 0644 | IPC_CREAT); + assert(id > -1); + struct shmid_ds ds; + int res = shmctl(id, IPC_STAT, &ds); + assert(res > -1); + printf("shm_segsz: %zd\n", ds.shm_segsz); + assert(ds.shm_segsz == 4096); +} diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h index c0fd112b327..b37d9769a1f 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h @@ -144,7 +144,8 @@ # define SANITIZER_INTERCEPT_INITGROUPS SI_NOT_WINDOWS # define SANITIZER_INTERCEPT_ETHER SI_NOT_WINDOWS # define SANITIZER_INTERCEPT_ETHER_R SI_LINUX_NOT_ANDROID -# define SANITIZER_INTERCEPT_SHMCTL SI_LINUX_NOT_ANDROID +# define SANITIZER_INTERCEPT_SHMCTL \ + (SI_LINUX_NOT_ANDROID && SANITIZER_WORDSIZE == 64) # define SANITIZER_INTERCEPT_RANDOM_R SI_LINUX_NOT_ANDROID # define SANITIZER_INTERCEPT_PTHREAD_ATTR_GET SI_NOT_WINDOWS # define SANITIZER_INTERCEPT_PTHREAD_ATTR_GETINHERITSCHED \ |

