From patchwork Mon Nov 7 08:24:11 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxim Ostapenko X-Patchwork-Id: 81000 Delivered-To: patch@linaro.org Received: by 10.140.97.165 with SMTP id m34csp895458qge; Mon, 7 Nov 2016 00:24:46 -0800 (PST) X-Received: by 10.99.160.17 with SMTP id r17mr9004145pge.49.1478507086176; Mon, 07 Nov 2016 00:24:46 -0800 (PST) Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id j17si30042377pgg.104.2016.11.07.00.24.45 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 07 Nov 2016 00:24:46 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-return-440566-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org; spf=pass (google.com: domain of gcc-patches-return-440566-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=gcc-patches-return-440566-patch=linaro.org@gcc.gnu.org DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :subject:to:cc:from:message-id:date:mime-version:in-reply-to :content-type:references; q=dns; s=default; b=U2mMGTwX7R0s/B8xJm YcMyTFMqcFbdIxxvof3ezvxyk8yORAHmsI1T9NlEEAda+bCqm2Kp+p/y7ruHXVsc XAYIgQouvJg9nWgco7BG6DGv65iNS6KJiOzCE9GeG1YIUZJ/QaMF/9Oswo262K1V JwtuykaVwTFtLgRlIQHJMSEy8= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :subject:to:cc:from:message-id:date:mime-version:in-reply-to :content-type:references; s=default; bh=k9g1JdNSH1tbGTmzL6xI7GmF DrM=; b=mdoltToXkjrRTmZ2VGKj/U7VXGVJPRDY5YkjHCRbzEH5eeJl515Ojk8y RFMgRCSW4ReOyq/1di+yOXV5ePM/vS1EM0ClqhmmP568JpzkcmpKyRK1XPl9DmDN izB6vqv2ON7bxiHCqeqG5iKzDYyHx3XT4QUU1ZkyHkjID3csbk8= Received: (qmail 332 invoked by alias); 7 Nov 2016 08:24:30 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 129844 invoked by uid 89); 7 Nov 2016 08:24:28 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.9 required=5.0 tests=BAYES_00, KAM_LAZY_DOMAIN_SECURITY, RP_MATCHES_RCVD, SPF_HELO_PASS, UNWANTED_LANGUAGE_BODY autolearn=ham version=3.3.2 spammy=8514, HContent-type:mixed, D*davemloft.net, davem@davemloft.net X-HELO: mailout2.w1.samsung.com Received: from mailout2.w1.samsung.com (HELO mailout2.w1.samsung.com) (210.118.77.12) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 07 Nov 2016 08:24:18 +0000 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OG9006NEJCFCM40@mailout2.w1.samsung.com> for gcc-patches@gcc.gnu.org; Mon, 07 Nov 2016 08:24:15 +0000 (GMT) Received: from eusmges1.samsung.com (unknown [203.254.199.239]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20161107082414eucas1p1c3d7028263063e5ba586127e43ef958f~EtlUl-3SD1783817838eucas1p1w; Mon, 7 Nov 2016 08:24:14 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges1.samsung.com (EUCPMTA) with SMTP id 66.D8.23383.F2A30285; Mon, 7 Nov 2016 08:24:15 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20161107082413eucas1p1d3db8c4db2923df60cdbaa499b3e2b02~EtlTrkHeG1784217842eucas1p1j; Mon, 7 Nov 2016 08:24:13 +0000 (GMT) Received: from eusync3.samsung.com ( [203.254.199.213]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 02.ED.10494.F0A30285; Mon, 7 Nov 2016 08:23:43 +0000 (GMT) Received: from [106.109.129.18] by eusync3.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OG9007BRJCB0L90@eusync3.samsung.com>; Mon, 07 Nov 2016 08:24:13 +0000 (GMT) Subject: [PATCH 2/7] Libsanitizer merge from upstream r285547. To: GCC Patches Cc: Jakub Jelinek , Kostya Serebryany , Yuri Gribov From: Maxim Ostapenko Message-id: <58203A2B.4090505@samsung.com> Date: Mon, 07 Nov 2016 11:24:11 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1 MIME-version: 1.0 In-reply-to: <582039C4.4040606@samsung.com> Content-type: multipart/mixed; boundary=------------050907090903090700070705 X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20161107082413eucas1p1d3db8c4db2923df60cdbaa499b3e2b02 X-Msg-Generator: CA X-Sender-IP: 182.198.249.180 X-Local-Sender: =?UTF-8?B?TWFrc2ltIE9zdGFwZW5rbxtTUlItU1cgVG9vbHMgTGFiGw==?= =?UTF-8?B?7IK87ISx7KCE7J6QG0VuZ2luZWVy?= X-Global-Sender: =?UTF-8?B?TWF4aW0gT3N0YXBlbmtvG1NSUi1TVyBUb29scyBMYWIbU2Ft?= =?UTF-8?B?c3VuZ8KgRWxlY3Ryb25pY3MbRW5naW5lZXI=?= X-Sender-Code: =?UTF-8?B?QzEwG0NJU0hRG0MxMEdEMDFHRDAxMDE1Nw==?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20161107082413eucas1p1d3db8c4db2923df60cdbaa499b3e2b02 X-RootMTR: 20161107082413eucas1p1d3db8c4db2923df60cdbaa499b3e2b02 References: <582039C4.4040606@samsung.com> X-IsSubscribed: yes This is just reapplied patch for SPARC by David S. Miller. >From 0ff8d1c408b076970c323361922c35033aaae245 Mon Sep 17 00:00:00 2001 From: Maxim Ostapenko Date: Tue, 25 Oct 2016 20:00:43 +0300 Subject: [PATCH 2/7] libsanitizer/ PR sanitizer/63958 Reapply: 2014-10-14 David S. Miller * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229113 138bc75d-0d04-0410-961f-82ee72b054a4 --- libsanitizer/ChangeLog | 17 +++++++ .../sanitizer_platform_limits_linux.cc | 4 +- .../sanitizer_platform_limits_posix.h | 59 +++++++++++++++++++++- 3 files changed, 77 insertions(+), 3 deletions(-) diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog index eaf907c..10b1207 100644 --- a/libsanitizer/ChangeLog +++ b/libsanitizer/ChangeLog @@ -1,5 +1,22 @@ 2016-11-07 Maxim Ostapenko + PR sanitizer/63958 + Reapply: + 2014-10-14 David S. Miller + + * 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. + +2016-11-07 Maxim Ostapenko + * All source files: Merge from upstream 285547. * configure.tgt (SANITIZER_COMMON_TARGET_DEPENDENT_OBJECTS): New variable. diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc index edc6730..23a0148 100644 --- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc +++ b/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 #undef ino_t @@ -62,7 +63,8 @@ namespace __sanitizer { } // namespace __sanitizer #if !defined(__powerpc64__) && !defined(__x86_64__) && !defined(__aarch64__)\ - && !defined(__mips__) && !defined(__s390__) + && !defined(__mips__) && !defined(__s390__)\ + && !defined(__sparc__) COMPILER_CHECK(struct___old_kernel_stat_sz == sizeof(struct __old_kernel_stat)); #endif diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h index 17906d3..d1a3051 100644 --- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h @@ -85,6 +85,14 @@ namespace __sanitizer { #elif defined(__s390x__) const unsigned struct_kernel_stat_sz = 144; const unsigned struct_kernel_stat64_sz = 0; +#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; @@ -107,7 +115,7 @@ namespace __sanitizer { #if defined(__powerpc64__) || defined(__s390__) const unsigned struct___old_kernel_stat_sz = 0; -#else +#elif !defined(__sparc__) const unsigned struct___old_kernel_stat_sz = 32; #endif @@ -198,6 +206,18 @@ namespace __sanitizer { 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; @@ -215,6 +235,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__) @@ -252,6 +292,7 @@ namespace __sanitizer { uptr __unused4; uptr __unused5; #endif +#endif }; #elif SANITIZER_FREEBSD struct __sanitizer_ipc_perm { @@ -586,9 +627,13 @@ namespace __sanitizer { __sanitizer_sigset_t sa_mask; #endif #ifndef __mips__ +#if defined(__sparc__) + unsigned long sa_flags; +#else int sa_flags; #endif #endif +#endif #if SANITIZER_LINUX void (*sa_restorer)(); #endif @@ -849,7 +894,7 @@ struct __sanitizer_cookie_io_functions_t { #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 @@ -879,7 +924,17 @@ struct __sanitizer_cookie_io_functions_t { #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; -- 1.9.1