From patchwork Mon Nov 7 08:26:52 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxim Ostapenko X-Patchwork-Id: 81004 Delivered-To: patch@linaro.org Received: by 10.140.97.165 with SMTP id m34csp896256qge; Mon, 7 Nov 2016 00:27:23 -0800 (PST) X-Received: by 10.99.65.133 with SMTP id o127mr9033416pga.73.1478507243459; Mon, 07 Nov 2016 00:27:23 -0800 (PST) Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id n5si30023752pga.147.2016.11.07.00.27.23 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 07 Nov 2016 00:27:23 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-return-440569-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-440569-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=gcc-patches-return-440569-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=YoHQWm46b/DmrkrTjc F6+tH0BF1LnUIxgiFJWJM6PcgouLsf0WdL+vtysMptDG3W6GJXWpbYgLwAaRZ2eq OgLs6i8rzxghk0dNSfwOz1Rc88qCBUsZ8F+7SAz3KAF2lQetX9W9fQ8jYkVzQ+L8 /uvL7W2H2YZU821cXAuGoe1X4= 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=E9L2CKUSdB3aTI0L/wwaUEVF jN8=; b=xb5ZvblHn77bhV6d0DPHzsYOdLCl5/3LKAr+tyyTwWxoaXDvE9MLv182 1mnc/j4OZQGeYlgEpJyT377G5WS0xlFfFpENvlOpfAPhQxCRFyWjCyeczmlGDAY+ Vu3ASjm0uXn7mtjExj2cJtK46MKQGVBbMAowied1KRBIHeJAays= Received: (qmail 13973 invoked by alias); 7 Nov 2016 08:27:10 -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 13921 invoked by uid 89); 7 Nov 2016 08:27:09 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.7 required=5.0 tests=BAYES_00, KAM_LAZY_DOMAIN_SECURITY, RP_MATCHES_RCVD, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=sk:build_c, sk:ATTR_NO, bt_fn_void, sk:attr_no X-HELO: mailout1.w1.samsung.com Received: from mailout1.w1.samsung.com (HELO mailout1.w1.samsung.com) (210.118.77.11) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 07 Nov 2016 08:26:59 +0000 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OG9005PTJGTAA40@mailout1.w1.samsung.com> for gcc-patches@gcc.gnu.org; Mon, 07 Nov 2016 08:26:55 +0000 (GMT) Received: from eusmges4.samsung.com (unknown [203.254.199.244]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20161107082655eucas1p2b0fc44489df9ee2a6f898131a84f61ea~EtnqmtSHq1919819198eucas1p2v; Mon, 7 Nov 2016 08:26:55 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges4.samsung.com (EUCPMTA) with SMTP id F5.BE.28332.FCA30285; Mon, 7 Nov 2016 08:26:55 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20161107082654eucas1p229c86ef02d8c2a90e0ffff113eca5ee7~Etnp4jURk1643216432eucas1p2X; Mon, 7 Nov 2016 08:26:54 +0000 (GMT) Received: from eusync2.samsung.com ( [203.254.199.212]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id BB.4E.10494.0BA30285; Mon, 7 Nov 2016 08:26:24 +0000 (GMT) Received: from [106.109.129.18] by eusync2.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OG900E1VJGSCSA0@eusync2.samsung.com>; Mon, 07 Nov 2016 08:26:54 +0000 (GMT) Subject: [PATCH 5/7] Libsanitizer merge from upstream r285547. To: GCC Patches Cc: Jakub Jelinek , Kostya Serebryany , Yuri Gribov From: Maxim Ostapenko Message-id: <58203ACC.1080309@samsung.com> Date: Mon, 07 Nov 2016 11:26:52 +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=------------050204050304060804040507 X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20161107082654eucas1p229c86ef02d8c2a90e0ffff113eca5ee7 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: 20161107082654eucas1p229c86ef02d8c2a90e0ffff113eca5ee7 X-RootMTR: 20161107082654eucas1p229c86ef02d8c2a90e0ffff113eca5ee7 References: <582039C4.4040606@samsung.com> X-IsSubscribed: yes This patch just combines minimal necessary changes to support new libasan ABI. This patch doesn't try to implement odr indicators at compiler part, it simply pass a zero stub to runtime. The actual implementation of odr indicators goes in patch 7. >From 33f6f98faa86c61b9895db0d71e0e88a9ae4fa59 Mon Sep 17 00:00:00 2001 From: Maxim Ostapenko Date: Tue, 25 Oct 2016 20:34:23 +0300 Subject: [PATCH 5/7] libsanitizer merge from upstream r285547, compiler part. gcc/ * asan.h (ASAN_STACK_MAGIC_PARTIAL): Remove. * asan.c (ASAN_STACK_MAGIC_PARTIAL): Replace with ASAN_STACK_MAGIC_MIDDLE. (asan_global_struct): Increase the size of fields. (asan_add_global): Add new field constructor. * sanitizer.def (__asan_version_mismatch_check_v6): Replace with __asan_version_mismatch_check_v8. gcc/testsuite/ * c-c++-common/asan/null-deref-1.c: Adjust testcase. --- gcc/ChangeLog | 10 ++++++++++ gcc/asan.c | 13 ++++++++----- gcc/asan.h | 1 - gcc/sanitizer.def | 2 +- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/c-c++-common/asan/null-deref-1.c | 4 ++-- 6 files changed, 25 insertions(+), 9 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f29b9b5..943e21c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2016-11-07 Maxim Ostapenko + + * asan.h (ASAN_STACK_MAGIC_PARTIAL): Remove. + * asan.c (ASAN_STACK_MAGIC_PARTIAL): Replace with + ASAN_STACK_MAGIC_MIDDLE. + (asan_global_struct): Increase the size of fields. + (asan_add_global): Add new field constructor. + * sanitizer.def (__asan_version_mismatch_check_v6): Replace with + __asan_version_mismatch_check_v8. + 2016-10-30 Bill Schmidt PR tree-optimization/71915 diff --git a/gcc/asan.c b/gcc/asan.c index c6d9240..fdc84bd 100644 --- a/gcc/asan.c +++ b/gcc/asan.c @@ -1214,7 +1214,7 @@ asan_emit_stack_protection (rtx base, rtx pbase, unsigned int alignb, shadow_bytes[i] = offset - aoff; } else - shadow_bytes[i] = ASAN_STACK_MAGIC_PARTIAL; + shadow_bytes[i] = ASAN_STACK_MAGIC_MIDDLE; emit_move_insn (shadow_mem, asan_shadow_cst (shadow_bytes)); offset = aoff; } @@ -2191,19 +2191,20 @@ asan_dynamic_init_call (bool after_p) const void *__module_name; uptr __has_dynamic_init; __asan_global_source_location *__location; + char *__odr_indicator; } type. */ static tree asan_global_struct (void) { - static const char *field_names[7] + static const char *field_names[8] = { "__beg", "__size", "__size_with_redzone", - "__name", "__module_name", "__has_dynamic_init", "__location"}; - tree fields[7], ret; + "__name", "__module_name", "__has_dynamic_init", "__location", "__odr_indicator"}; + tree fields[8], ret; int i; ret = make_node (RECORD_TYPE); - for (i = 0; i < 7; i++) + for (i = 0; i < 8; i++) { fields[i] = build_decl (UNKNOWN_LOCATION, FIELD_DECL, @@ -2312,6 +2313,8 @@ asan_add_global (tree decl, tree type, vec *v) else locptr = build_int_cst (uptr, 0); CONSTRUCTOR_APPEND_ELT (vinner, NULL_TREE, locptr); + /* TODO: support ODR indicators. */ + CONSTRUCTOR_APPEND_ELT(vinner, NULL_TREE, build_int_cst (uptr, 0)); init = build_constructor (type, vinner); CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, init); } diff --git a/gcc/asan.h b/gcc/asan.h index 7ec693f..a259b1a 100644 --- a/gcc/asan.h +++ b/gcc/asan.h @@ -53,7 +53,6 @@ extern alias_set_type asan_shadow_set; #define ASAN_STACK_MAGIC_LEFT 0xf1 #define ASAN_STACK_MAGIC_MIDDLE 0xf2 #define ASAN_STACK_MAGIC_RIGHT 0xf3 -#define ASAN_STACK_MAGIC_PARTIAL 0xf4 #define ASAN_STACK_MAGIC_USE_AFTER_RET 0xf5 #define ASAN_STACK_FRAME_MAGIC 0x41b58ab3 diff --git a/gcc/sanitizer.def b/gcc/sanitizer.def index 303c1e4..ac85096 100644 --- a/gcc/sanitizer.def +++ b/gcc/sanitizer.def @@ -34,7 +34,7 @@ DEF_BUILTIN_STUB(BEGIN_SANITIZER_BUILTINS, (const char *)0) DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_INIT, "__asan_init", BT_FN_VOID, ATTR_NOTHROW_LEAF_LIST) DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_VERSION_MISMATCH_CHECK, - "__asan_version_mismatch_check_v6", + "__asan_version_mismatch_check_v8", BT_FN_VOID, ATTR_NOTHROW_LEAF_LIST) /* Do not reorder the BUILT_IN_ASAN_{REPORT,CHECK}* builtins, e.g. cfgcleanup.c relies on this order. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 051ae83..49fab6e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2016-11-07 Maxim Ostapenko + + * c-c++-common/asan/null-deref-1.c: Adjust testcase. + 2016-10-30 Bill Schmidt PR tree-optimization/71915 diff --git a/gcc/testsuite/c-c++-common/asan/null-deref-1.c b/gcc/testsuite/c-c++-common/asan/null-deref-1.c index 45d35ac..f4f8f37 100644 --- a/gcc/testsuite/c-c++-common/asan/null-deref-1.c +++ b/gcc/testsuite/c-c++-common/asan/null-deref-1.c @@ -17,6 +17,6 @@ int main() } /* { dg-output "ERROR: AddressSanitizer:? SEGV on unknown address\[^\n\r]*" } */ -/* { dg-output "0x\[0-9a-f\]+ \[^\n\r]*pc 0x\[0-9a-f\]+\[^\n\r]*(\n|\r\n|\r)" } */ -/* { dg-output "\[^\n\r]* #0 0x\[0-9a-f\]+ +(in \[^\n\r]*NullDeref\[^\n\r]* (\[^\n\r]*null-deref-1.c:10|\[^\n\r]*:0)|\[(\])\[^\n\r]*(\n|\r\n|\r)" } */ +/* { dg-output "0x\[0-9a-f\]+ \[^\n\r]*pc 0x\[0-9a-f\]+.*(\n|\r\n|\r)" } */ +/* { dg-output " #0 0x\[0-9a-f\]+ +(in \[^\n\r]*NullDeref\[^\n\r]* (\[^\n\r]*null-deref-1.c:10|\[^\n\r]*:0)|\[(\])\[^\n\r]*(\n|\r\n|\r)" } */ /* { dg-output " #1 0x\[0-9a-f\]+ +(in _*main (\[^\n\r]*null-deref-1.c:15|\[^\n\r]*:0)|\[(\])\[^\n\r]*(\n|\r\n|\r)" } */ -- 1.9.1