[compiler-rt] r195958 - [sanitizer] disable shmctl intercetor in 32-bit -- it is rotten (bug filed)

Kostya Serebryany kcc at google.com
Fri Nov 29 06:09:13 PST 2013


Author: kcc
Date: Fri Nov 29 08:09:13 2013
New Revision: 195958

URL: http://llvm.org/viewvc/llvm-project?rev=195958&view=rev
Log:
[sanitizer] disable shmctl intercetor in 32-bit -- it is rotten (bug filed)

Added:
    compiler-rt/trunk/lib/asan/lit_tests/TestCases/Linux/shmctl.cc
Modified:
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_interceptors.h

Added: compiler-rt/trunk/lib/asan/lit_tests/TestCases/Linux/shmctl.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/lit_tests/TestCases/Linux/shmctl.cc?rev=195958&view=auto
==============================================================================
--- compiler-rt/trunk/lib/asan/lit_tests/TestCases/Linux/shmctl.cc (added)
+++ compiler-rt/trunk/lib/asan/lit_tests/TestCases/Linux/shmctl.cc Fri Nov 29 08:09:13 2013
@@ -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);
+}

Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_interceptors.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_interceptors.h?rev=195958&r1=195957&r2=195958&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_interceptors.h (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_interceptors.h Fri Nov 29 08:09:13 2013
@@ -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 \





More information about the llvm-commits mailing list