From: Maxim Ostapenko <m.ostapenko@partner.samsung.com>
To: Jakub Jelinek <jakub@redhat.com>,
Kostya Serebryany <kcc@google.com>,
GCC Patches <gcc-patches@gcc.gnu.org>
Cc: Dmitry Vyukov <dvyukov@google.com>,
Marek Polacek <polacek@redhat.com>,
Yury Gribov <y.gribov@samsung.com>,
Slava Garbuzov <v.garbuzov@samsung.com>,
Vyacheslav Barinov <v.barinov@samsung.com>
Subject: Re: [PATCH v2 0/6] Libsanitizer merge from upstream r250806 (was r249633).
Date: Tue, 20 Oct 2015 11:25:00 -0000 [thread overview]
Message-ID: <562623EC.2080501@partner.samsung.com> (raw)
In-Reply-To: <56262292.3030803@partner.samsung.com>
[-- Attachment #1: Type: text/plain, Size: 153 bytes --]
This is just reapplied patch for SPARC by David S. Miller. The patch was
preapproved here:
(https://gcc.gnu.org/ml/gcc-patches/2015-10/msg01214.html).
[-- Attachment #2: 3.diff --]
[-- Type: text/x-patch, Size: 5094 bytes --]
2015-10-20 Maxim Ostapenko <m.ostapenko@partner.samsung.com>
PR sanitizer/63958
Reapply:
2014-10-14 David S. Miller <davem@davemloft.net>
* sanitizer_common/sanitizer_platform_limits_linux.cc (time_t):
Define at __kernel_time_t, as needed for sparc.
(struct __old_kernel_stat): Don't check if __sparc__ is defined.
* libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
(__sanitizer): Define struct___old_kernel_stat_sz,
struct_kernel_stat_sz, and struct_kernel_stat64_sz for sparc.
(__sanitizer_ipc_perm): Adjust for sparc targets.
(__sanitizer_shmid_ds): Likewsie.
(__sanitizer_sigaction): Likewise.
(IOC_SIZE): Likewsie.
Index: libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc
===================================================================
--- libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc (revision 250059)
+++ libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc (working copy)
@@ -38,6 +38,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
#if !defined(__powerpc64__) && !defined(__x86_64__) && !defined(__aarch64__)\
- && !defined(__mips__)
+ && !defined(__mips__) && !defined(__sparc__)
COMPILER_CHECK(struct___old_kernel_stat_sz == sizeof(struct __old_kernel_stat));
#endif
Index: libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
===================================================================
--- libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h (revision 250059)
+++ libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h (working copy)
@@ -83,6 +83,14 @@
const unsigned struct_kernel_stat_sz = 144;
#endif
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;
@@ -105,7 +113,7 @@
#if defined(__powerpc64__)
const unsigned struct___old_kernel_stat_sz = 0;
-#else
+#elif !defined(__sparc__)
const unsigned struct___old_kernel_stat_sz = 32;
#endif
@@ -184,6 +192,18 @@
unsigned short __pad1;
unsigned long __unused1;
unsigned long __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;
@@ -201,6 +221,26 @@
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__)
@@ -238,6 +278,7 @@
uptr __unused4;
uptr __unused5;
#endif
+#endif
};
#elif SANITIZER_FREEBSD
struct __sanitizer_ipc_perm {
@@ -555,9 +596,13 @@
#else
__sanitizer_sigset_t sa_mask;
#ifndef __mips__
+#if defined(__sparc__)
+ unsigned long sa_flags;
+#else
int sa_flags;
#endif
#endif
+#endif
#if SANITIZER_LINUX
void (*sa_restorer)();
#endif
@@ -799,7 +844,7 @@
#define IOC_NRBITS 8
#define IOC_TYPEBITS 8
-#if defined(__powerpc__) || defined(__powerpc64__) || defined(__mips__)
+#if defined(__powerpc__) || defined(__powerpc64__) || defined(__mips__) || defined(__sparc__)
#define IOC_SIZEBITS 13
#define IOC_DIRBITS 3
#define IOC_NONE 1U
@@ -829,7 +874,17 @@
#define IOC_DIR(nr) (((nr) >> IOC_DIRSHIFT) & IOC_DIRMASK)
#define IOC_TYPE(nr) (((nr) >> IOC_TYPESHIFT) & IOC_TYPEMASK)
#define IOC_NR(nr) (((nr) >> IOC_NRSHIFT) & IOC_NRMASK)
+
+#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) >> IOC_SIZESHIFT) & IOC_SIZEMASK)
+#endif
extern unsigned struct_ifreq_sz;
extern unsigned struct_termios_sz;
next prev parent reply other threads:[~2015-10-20 11:22 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-20 11:17 Maxim Ostapenko
2015-10-20 11:20 ` [PATCH v2 1/6] " Maxim Ostapenko
2015-10-20 11:56 ` Jakub Jelinek
2015-10-20 14:14 ` Maxim Ostapenko
2015-10-20 11:22 ` [PATCH v2 2/6] " Maxim Ostapenko
2015-10-20 12:02 ` Jakub Jelinek
2015-10-20 11:25 ` Maxim Ostapenko [this message]
2015-10-20 11:28 ` [PATCH v2 4/6] " Maxim Ostapenko
2015-10-20 11:30 ` [PATCH v2 5/6] " Maxim Ostapenko
2015-10-20 11:45 ` [PATCH v2 6/6] " Maxim Ostapenko
2015-10-20 12:06 ` Jakub Jelinek
2015-10-21 9:19 ` Yury Gribov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=562623EC.2080501@partner.samsung.com \
--to=m.ostapenko@partner.samsung.com \
--cc=dvyukov@google.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=jakub@redhat.com \
--cc=kcc@google.com \
--cc=polacek@redhat.com \
--cc=v.barinov@samsung.com \
--cc=v.garbuzov@samsung.com \
--cc=y.gribov@samsung.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).