Use 64-bit system types for x86-64
authorH.J. Lu <hongjiu.lu@intel.com>
Wed, 6 Nov 2013 21:51:41 +0000 (21:51 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Wed, 6 Nov 2013 21:51:41 +0000 (13:51 -0800)
PR sanitizer/59018
* sanitizer_common/sanitizer_platform_limits_linux.cc
(struct_kernel_stat64_sz): Initialize to 0 if __x86_64__ is
defined.
* sanitizer_common/sanitizer_platform_limits_posix.h
(__sanitizer_dirent): Use 64-bit d_ino/d_off if __x86_64__ is
defined.
(__sanitizer___kernel_uid_t): Typedef as unsigned if __x86_64__
is defined.
(__sanitizer___kernel_gid_t): Likewise.
(__sanitizer___kernel_off_t): Typedef as long long if __x86_64__
is defined.

From-SVN: r204482

libsanitizer/ChangeLog
libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc
libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h

index 6103d62..03b45e8 100644 (file)
@@ -1,6 +1,21 @@
 2013-11-05  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR sanitizer/59018
+       * sanitizer_common/sanitizer_platform_limits_linux.cc
+       (struct_kernel_stat64_sz): Initialize to 0 if __x86_64__ is
+       defined.
+       * sanitizer_common/sanitizer_platform_limits_posix.h
+       (__sanitizer_dirent): Use 64-bit d_ino/d_off if __x86_64__ is
+       defined.
+       (__sanitizer___kernel_uid_t): Typedef as unsigned if __x86_64__
+       is defined.
+       (__sanitizer___kernel_gid_t): Likewise.
+       (__sanitizer___kernel_off_t): Typedef as long long if __x86_64__
+       is defined.
+
+2013-11-05  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR sanitizer/59018
        * sanitizer_common/sanitizer_linux.cc (internal_clone): Allocate
        2 64-bit integers to save and restore fn and arg.  Properly load
        newtls/child_tidptr into r8/r10.
index fbea596..9870243 100644 (file)
@@ -31,7 +31,7 @@ namespace __sanitizer {
   unsigned struct_io_event_sz = sizeof(struct io_event);
   unsigned struct_iocb_sz = sizeof(struct iocb);
 
-#ifndef _LP64
+#if !defined(_LP64) && !defined(__x86_64__)
   unsigned struct_kernel_stat64_sz = sizeof(struct stat64);
 #else
   unsigned struct_kernel_stat64_sz = 0;
index 007b4ec..67c459c 100644 (file)
@@ -133,7 +133,7 @@ namespace __sanitizer {
     unsigned short d_reclen;
     // more fields that we don't care about
   };
-#elif SANITIZER_ANDROID
+#elif SANITIZER_ANDROID || defined(__x86_64__)
   struct __sanitizer_dirent {
     unsigned long long d_ino;
     unsigned long long d_off;
@@ -159,16 +159,17 @@ namespace __sanitizer {
 #endif
 
 #if SANITIZER_LINUX
-#ifdef _LP64
+#if defined(_LP64) || defined(__x86_64__)
   typedef unsigned __sanitizer___kernel_uid_t;
   typedef unsigned __sanitizer___kernel_gid_t;
+  typedef long long __sanitizer___kernel_off_t;
 #else
   typedef unsigned short __sanitizer___kernel_uid_t;
   typedef unsigned short __sanitizer___kernel_gid_t;
+  typedef long __sanitizer___kernel_off_t;
 #endif
   typedef unsigned short __sanitizer___kernel_old_uid_t;
   typedef unsigned short __sanitizer___kernel_old_gid_t;
-  typedef long __sanitizer___kernel_off_t;
   typedef long long __sanitizer___kernel_loff_t;
   typedef struct {
     unsigned long fds_bits[1024 / (8 * sizeof(long))];