diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog
index 3e03d5876603c82b556f22e34daf129e368f2d16..bb568b9d4a0986b66922125e3ad75568ea105f7f 100644
--- a/libsanitizer/ChangeLog
+++ b/libsanitizer/ChangeLog
@@ -1,3 +1,9 @@
+2013-12-06  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* sanitizer_common/sanitizer_platform_limits_posix.h
+	(__sanitizer_shmid_ds): Use u64 on time fields for x32.
+	(__sanitizer_clock_t): Use long long for x32.
+
 2013-12-06  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* sanitizer_common/sanitizer_platform_limits_linux.cc: Include
diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
index f98ebea79f4d23a71acc988a26ef018721c35fc4..be6e6cf1c3f698a0507343e2c1855d3a5f1b4741 100644
--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
@@ -167,6 +167,11 @@ namespace __sanitizer {
   #elif !defined(__powerpc64__)
     uptr __unused0;
   #endif
+  #if defined(__x86_64__) && !defined(_LP64)
+    u64 shm_atime;
+    u64 shm_dtime;
+    u64 shm_ctime;
+  #else
     uptr shm_atime;
   #ifndef _LP64
     uptr __unused1;
@@ -179,14 +184,21 @@ namespace __sanitizer {
   #ifndef _LP64
     uptr __unused3;
   #endif
+  #endif
   #ifdef __powerpc__
     uptr shm_segsz;
   #endif
     int shm_cpid;
     int shm_lpid;
+  #if defined(__x86_64__) && !defined(_LP64)
+    u64 shm_nattch;
+    u64 __unused4;
+    u64 __unused5;
+  #else
     uptr shm_nattch;
     uptr __unused4;
     uptr __unused5;
+  #endif
   };
   #endif  // SANITIZER_LINUX && !SANITIZER_ANDROID
 
@@ -294,7 +306,11 @@ namespace __sanitizer {
   };
 #endif
 
+#if defined(__x86_64__) && !defined(_LP64)
+  typedef long long __sanitizer_clock_t;
+#else
   typedef long __sanitizer_clock_t;
+#endif
 
 #if SANITIZER_LINUX
 #if defined(_LP64) || defined(__x86_64__) || defined(__powerpc__)