public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Maxim Ostapenko <m.ostapenko@samsung.com>
To: GCC Patches <gcc-patches@gcc.gnu.org>
Cc: Jakub Jelinek <jakub@redhat.com>,
	Kostya Serebryany <kcc@google.com>,
	Yuri Gribov <tetra2005@gmail.com>
Subject: [PATCH 5/7] Libsanitizer merge from upstream r285547.
Date: Mon, 07 Nov 2016 08:27:00 -0000	[thread overview]
Message-ID: <58203ACC.1080309@samsung.com> (raw)
In-Reply-To: <582039C4.4040606@samsung.com>

[-- Attachment #1: Type: text/plain, Size: 251 bytes --]

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.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0005-libsanitizer-merge-from-upstream-r285547-compiler-pa.patch --]
[-- Type: text/x-diff; name="0005-libsanitizer-merge-from-upstream-r285547-compiler-pa.patch", Size: 5756 bytes --]

From 33f6f98faa86c61b9895db0d71e0e88a9ae4fa59 Mon Sep 17 00:00:00 2001
From: Maxim Ostapenko <m.ostapenko@samsung.com>
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  <m.ostapenko@samsung.com>
+
+	* 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  <wschmidt@linux.vnet.ibm.com>
 
 	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<constructor_elt, va_gc> *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  <m.ostapenko@samsung.com>
+
+	* c-c++-common/asan/null-deref-1.c: Adjust testcase.
+
 2016-10-30  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
 
 	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


  parent reply	other threads:[~2016-11-07  8:27 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20161107082229eucas1p2b7db548c790652a933f5f0d55fe76e50@eucas1p2.samsung.com>
2016-11-07  8:22 ` [PATCH 0/7] " Maxim Ostapenko
     [not found]   ` <CGME20161107082413eucas1p1d3db8c4db2923df60cdbaa499b3e2b02@eucas1p1.samsung.com>
2016-11-07  8:24     ` [PATCH 2/7] " Maxim Ostapenko
     [not found]   ` <CGME20161107082451eucas1p2fe6f13bf569875cd62ccd673bc7db73a@eucas1p2.samsung.com>
2016-11-07  8:25     ` [PATCH 3/7] " Maxim Ostapenko
     [not found]   ` <CGME20161107082555eucas1p217136a7bc11b9033cad23d9579361228@eucas1p2.samsung.com>
2016-11-07  8:26     ` [PATCH 4/7] " Maxim Ostapenko
     [not found]   ` <CGME20161107082654eucas1p229c86ef02d8c2a90e0ffff113eca5ee7@eucas1p2.samsung.com>
2016-11-07  8:27     ` Maxim Ostapenko [this message]
     [not found]   ` <CGME20161107082842eucas1p19cbcb798ace4eb86d8ea1460fb6ed8e0@eucas1p1.samsung.com>
2016-11-07  8:28     ` [PATCH 6/7] " Maxim Ostapenko
     [not found]   ` <CGME20161107083119eucas1p25c96348950eded7dd68ae9813db3c2cb@eucas1p2.samsung.com>
2016-11-07  8:31     ` [PATCH 7/7] " Maxim Ostapenko
2016-11-07  8:52       ` Jakub Jelinek
2016-11-14  8:44         ` [PATCH v2] Support ASan ODR indicators at compiler side Maxim Ostapenko
2016-11-21 11:38           ` Jakub Jelinek
2016-11-21 11:44             ` Yuri Gribov
2016-11-21 11:50               ` Jakub Jelinek
2016-11-21 12:09                 ` Yuri Gribov
2016-11-21 12:17                   ` Jakub Jelinek
2016-11-21 12:19                     ` Maxim Ostapenko
2016-11-21 12:43                     ` Maxim Ostapenko
2016-12-01 10:26             ` [PATCH v3] " Maxim Ostapenko
2016-12-01 10:42               ` Jakub Jelinek
2016-12-01 11:25                 ` Maxim Ostapenko
2016-11-07  8:34   ` [PATCH 1/7] Libsanitizer merge from upstream r285547 Maxim Ostapenko
2016-11-07  8:40   ` [PATCH 0/7] " Jakub Jelinek
2016-11-07  9:14     ` Maxim Ostapenko
2016-11-07  9:20       ` Jakub Jelinek
2016-11-07  9:28         ` Yuri Gribov
2016-11-07  9:38           ` Maxim Ostapenko
2016-11-07 10:02         ` Maxim Ostapenko
2016-11-07 10:04   ` Jakub Jelinek
2016-11-07 10:34     ` Maxim Ostapenko

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=58203ACC.1080309@samsung.com \
    --to=m.ostapenko@samsung.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=jakub@redhat.com \
    --cc=kcc@google.com \
    --cc=tetra2005@gmail.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).