From: David Malcolm <dmalcolm@redhat.com>
To: "Martin Liška" <mliska@suse.cz>, "Jakub Jelinek" <jakub@redhat.com>
Cc: Marek Polacek <polacek@redhat.com>,
GCC Patches <gcc-patches@gcc.gnu.org>,
jit@gcc.gnu.org
Subject: Fix build of jit (was Re: [PATCH, RFC] Introduce -fsanitize=use-after-scope (v3))
Date: Fri, 01 Jan 2016 00:00:00 -0000 [thread overview]
Message-ID: <1478534833.7673.11.camel@redhat.com> (raw)
In-Reply-To: <59fde5a4-3633-5fc8-daa0-ed485d75a5db@suse.cz>
[-- Attachment #1: Type: text/plain, Size: 1825 bytes --]
On Mon, 2016-11-07 at 11:03 +0100, Martin Liška wrote:
> Hello.
>
> After discussion with Jakub, I'm resending new version of the patch,
> where I changed following:
> 1) gimplify_ctxp->live_switch_vars is used to track variables
> introduced in switch_expr. Every time
> a case_label_expr is seen, these are unpoisoned. It's quite
> conservative, however it covers all
> corner cases on can come up with. Compared to clang, we are much
> more precise in switch statements
> where a variable liveness crosses label boundary.
> 2) I found a bug where ASAN_CHECK was optimized out due to missing
> check of IFN_ASAN_MARK internal fn.
> Test was added for that.
> 3) Multiple switch tests have been added, which is going to be sent
> in upcoming email.
>
> Patch can bootstrap on ppc64le-redhat-linux and survives regression
> tests (+ asan bootstrap finishes
> successfully).
The patch (r241896) introduced an error in the build of the jit:
../../src/gcc/jit/jit-builtins.c:62:1: error: invalid conversion from
âintâ to âgcc::jit::built_in_attributeâ [-fpermissive]
};
^
which seems to be due to the "0" for ATTRS in:
--- a/gcc/sanitizer.def
+++ b/gcc/sanitizer.def
@@ -165,6 +165,10 @@ DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_BEFORE_DYNAMIC_INIT,
DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_AFTER_DYNAMIC_INIT,
"__asan_after_dynamic_init",
BT_FN_VOID, ATTR_NOTHROW_LEAF_LIST)
+DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_CLOBBER_N, "__asan_poison_stack_memory",
+ BT_FN_VOID_PTR_PTRMODE, 0)
+DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_UNCLOBBER_N, "__asan_unpoison_stack_memory",
+ BT_FN_VOID_PTR_PTRMODE, 0)
Is the attached patch OK as a fix? (assuming testing passes) Or should
these builtins have other attrs? (sorry, am not very familiar with the
sanitizer code).
Dave
[-- Attachment #2: 0001-Fix-build-of-jit.patch --]
[-- Type: text/x-patch, Size: 1659 bytes --]
From 6db5f9e50dc95f504d33970ee553172bbf400ae7 Mon Sep 17 00:00:00 2001
From: David Malcolm <dmalcolm@redhat.com>
Date: Mon, 7 Nov 2016 11:21:20 -0500
Subject: [PATCH] Fix build of jit
gcc/ChangeLog:
* asan.c (ATTR_NULL): Define.
* sanitizer.def (BUILT_IN_ASAN_CLOBBER_N): Use ATTR_NULL rather
than 0.
(BUILT_IN_ASAN_UNCLOBBER_N): Likewise.
---
gcc/asan.c | 2 ++
gcc/sanitizer.def | 4 ++--
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/gcc/asan.c b/gcc/asan.c
index 1e0ce8d..4a124cb 100644
--- a/gcc/asan.c
+++ b/gcc/asan.c
@@ -2463,6 +2463,8 @@ initialize_sanitizer_builtins (void)
#define BT_FN_I16_CONST_VPTR_INT BT_FN_IX_CONST_VPTR_INT[4]
#define BT_FN_I16_VPTR_I16_INT BT_FN_IX_VPTR_IX_INT[4]
#define BT_FN_VOID_VPTR_I16_INT BT_FN_VOID_VPTR_IX_INT[4]
+#undef ATTR_NULL
+#define ATTR_NULL 0
#undef ATTR_NOTHROW_LEAF_LIST
#define ATTR_NOTHROW_LEAF_LIST ECF_NOTHROW | ECF_LEAF
#undef ATTR_TMPURE_NOTHROW_LEAF_LIST
diff --git a/gcc/sanitizer.def b/gcc/sanitizer.def
index 1c142e9..596b8b0 100644
--- a/gcc/sanitizer.def
+++ b/gcc/sanitizer.def
@@ -166,9 +166,9 @@ DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_AFTER_DYNAMIC_INIT,
"__asan_after_dynamic_init",
BT_FN_VOID, ATTR_NOTHROW_LEAF_LIST)
DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_CLOBBER_N, "__asan_poison_stack_memory",
- BT_FN_VOID_PTR_PTRMODE, 0)
+ BT_FN_VOID_PTR_PTRMODE, ATTR_NULL)
DEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_UNCLOBBER_N, "__asan_unpoison_stack_memory",
- BT_FN_VOID_PTR_PTRMODE, 0)
+ BT_FN_VOID_PTR_PTRMODE, ATTR_NULL)
/* Thread Sanitizer */
DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_INIT, "__tsan_init",
--
1.8.5.3
next parent reply other threads:[~2016-11-07 16:07 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20161027172358.GN3541@tucnak.redhat.com>
[not found] ` <782727c2-9173-24ab-4e4c-07918dc16bf6@suse.cz>
[not found] ` <20161101145350.GS3541@tucnak.redhat.com>
[not found] ` <3f0181a4-e1b2-406f-7cf1-e63e9e9824fe@suse.cz>
[not found] ` <20161102095926.GM3541@tucnak.redhat.com>
[not found] ` <20161102101053.GN3541@tucnak.redhat.com>
[not found] ` <20161102142028.GQ5939@redhat.com>
[not found] ` <8ac49efe-83af-933b-2aa5-f4b22972fa6a@suse.cz>
[not found] ` <20161102143511.GV3541@tucnak.redhat.com>
[not found] ` <e04b1ac8-e3ff-b13f-4006-bf961af6d2ea@suse.cz>
[not found] ` <20161104093254.GS3541@tucnak.redhat.com>
[not found] ` <0e0fd0f9-1c7d-ac9e-8dfc-9349611b5efe@suse.cz>
[not found] ` <59fde5a4-3633-5fc8-daa0-ed485d75a5db@suse.cz>
2016-01-01 0:00 ` David Malcolm [this message]
2016-01-01 0:00 ` Jakub Jelinek
2016-01-01 0:00 ` Martin Liška
2016-01-01 0:00 ` Jakub Jelinek
2016-01-01 0:00 ` [PATCH] use-after-scope fallout Martin Liška
2016-01-01 0:00 ` Jakub Jelinek
2016-01-01 0:00 ` David Malcolm
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=1478534833.7673.11.camel@redhat.com \
--to=dmalcolm@redhat.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=jakub@redhat.com \
--cc=jit@gcc.gnu.org \
--cc=mliska@suse.cz \
--cc=polacek@redhat.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).