diff options
author | Yiran Wang <yiran@google.com> | 2015-06-23 15:33:17 -0700 |
---|---|---|
committer | Yiran Wang <yiran@google.com> | 2015-06-29 10:56:28 -0700 |
commit | 1d9fec7937f45dde5e04cac966a2d9a12f2fc15a (patch) | |
tree | 3fbcd18a379a05fd6d43491a107e1f36bc61b185 /gcc-4.9/libsanitizer/sanitizer_common | |
parent | f378ebf14df0952eae870c9865bab8326aa8f137 (diff) | |
download | toolchain_gcc-1d9fec7937f45dde5e04cac966a2d9a12f2fc15a.zip toolchain_gcc-1d9fec7937f45dde5e04cac966a2d9a12f2fc15a.tar.gz toolchain_gcc-1d9fec7937f45dde5e04cac966a2d9a12f2fc15a.tar.bz2 |
Synchronize with google/gcc-4_9 to r224707 (from r214835)
Change-Id: I3d6f06fc613c8f8b6a82143dc44b7338483aac5d
Diffstat (limited to 'gcc-4.9/libsanitizer/sanitizer_common')
-rw-r--r-- | gcc-4.9/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc | 3 | ||||
-rw-r--r-- | gcc-4.9/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h | 56 |
2 files changed, 57 insertions, 2 deletions
diff --git a/gcc-4.9/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc b/gcc-4.9/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc index bc37df0..ac56f33 100644 --- a/gcc-4.9/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc +++ b/gcc-4.9/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc @@ -36,6 +36,7 @@ #define uid_t __kernel_uid_t #define gid_t __kernel_gid_t #define off_t __kernel_off_t +#define time_t __kernel_time_t // This header seems to contain the definitions of _kernel_ stat* structs. #include <asm/stat.h> #undef ino_t @@ -62,7 +63,7 @@ namespace __sanitizer { unsigned struct_statfs64_sz = sizeof(struct statfs64); } // namespace __sanitizer -#if !defined(__powerpc64__) && !defined(__x86_64__) +#if !defined(__powerpc64__) && !defined(__x86_64__) && !defined(__sparc__) COMPILER_CHECK(struct___old_kernel_stat_sz == sizeof(struct __old_kernel_stat)); #endif diff --git a/gcc-4.9/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/gcc-4.9/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h index be6e6cf..aec9504 100644 --- a/gcc-4.9/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +++ b/gcc-4.9/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h @@ -67,6 +67,14 @@ namespace __sanitizer { const unsigned struct___old_kernel_stat_sz = 0; const unsigned struct_kernel_stat_sz = 144; const unsigned struct_kernel_stat64_sz = 104; +#elif defined(__sparc__) && defined(__arch64__) + const unsigned struct___old_kernel_stat_sz = 0; + const unsigned struct_kernel_stat_sz = 104; + const unsigned struct_kernel_stat64_sz = 144; +#elif defined(__sparc__) && !defined(__arch64__) + const unsigned struct___old_kernel_stat_sz = 0; + const unsigned struct_kernel_stat_sz = 64; + const unsigned struct_kernel_stat64_sz = 104; #endif struct __sanitizer_perf_event_attr { unsigned type; @@ -145,6 +153,18 @@ namespace __sanitizer { unsigned __seq; u64 __unused1; u64 __unused2; +#elif defined(__sparc__) +# if defined(__arch64__) + unsigned mode; + unsigned short __pad1; +# else + unsigned short __pad1; + unsigned short mode; + unsigned short __pad2; +# endif + unsigned short __seq; + unsigned long long __unused1; + unsigned long long __unused2; #else unsigned short mode; unsigned short __pad1; @@ -162,6 +182,26 @@ namespace __sanitizer { struct __sanitizer_shmid_ds { __sanitizer_ipc_perm shm_perm; + #if defined(__sparc__) + # if !defined(__arch64__) + u32 __pad1; + # endif + long shm_atime; + # if !defined(__arch64__) + u32 __pad2; + # endif + long shm_dtime; + # if !defined(__arch64__) + u32 __pad3; + # endif + long shm_ctime; + uptr shm_segsz; + int shm_cpid; + int shm_lpid; + unsigned long shm_nattch; + unsigned long __glibc_reserved1; + unsigned long __glibc_reserved2; + #else #ifndef __powerpc__ uptr shm_segsz; #elif !defined(__powerpc64__) @@ -199,6 +239,7 @@ namespace __sanitizer { uptr __unused4; uptr __unused5; #endif +#endif }; #endif // SANITIZER_LINUX && !SANITIZER_ANDROID @@ -365,7 +406,11 @@ namespace __sanitizer { void (*sa_sigaction)(int sig, void *siginfo, void *uctx); }; __sanitizer_sigset_t sa_mask; +#if defined(__sparc__) + unsigned long sa_flags; +#else int sa_flags; +#endif #if SANITIZER_LINUX void (*sa_restorer)(); #endif @@ -511,7 +556,16 @@ namespace __sanitizer { }; #endif -#define IOC_SIZE(nr) (((nr) >> 16) & 0x3fff) +#if defined(__sparc__) +// In sparc the 14 bits SIZE field overlaps with the +// least significant bit of DIR, so either IOC_READ or +// IOC_WRITE shall be 1 in order to get a non-zero SIZE. +# define IOC_SIZE(nr) \ + ((((((nr) >> 29) & 0x7) & (4U|2U)) == 0)? \ + 0 : (((nr) >> 16) & 0x3fff)) +#else +# define IOC_SIZE(nr) (((nr) >> 16) & 0x3fff) +#endif extern unsigned struct_arpreq_sz; extern unsigned struct_ifreq_sz; |