This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Zero vptr in dtor for -fsanitize=vptr.
- From: Martin Liška <mliska at suse dot cz>
- To: Jason Merrill <jason at redhat dot com>
- Cc: Nathan Sidwell <nathan at acm dot org>, Jakub Jelinek <jakub at redhat dot com>, gcc-patches List <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 15 Nov 2017 10:04:40 +0100
- Subject: Re: [PATCH] Zero vptr in dtor for -fsanitize=vptr.
- Authentication-results: sourceware.org; auth=none
- References: <1d468e04-9f25-65f4-04a1-51b35abb3582@suse.cz> <20171027105212.GC14653@tucnak> <63fcd2b6-44d0-cb4b-d518-99eb496c1686@suse.cz> <20171027112600.GD14653@tucnak> <c28079ae-8d28-113a-8c02-7e60e86b52bb@suse.cz> <20171027135259.GG14653@tucnak> <CADzB+2kAqgX6dfhuNvcvAKatjQxRnvxTBQ2ZvD84WRubr_EFWA@mail.gmail.com> <20171027181831.GH14653@tucnak> <a0aaef40-f741-034d-10cb-45fedc4616f7@acm.org> <20171027183428.GI14653@tucnak> <3ee8c949-aa07-a998-a082-34fb2b4f5c73@acm.org> <f6376de4-a151-3f22-afa8-c357f73c3c11@suse.cz> <CADzB+2kqJpzDF0LhiTAVKauq9YLWRGetECm-rVfY=7URxHPHug@mail.gmail.com> <0081fab0-39d6-985c-e27a-680ca4208c25@suse.cz> <CADzB+2=f_jGNOTKYhO1XuP5ctcAbMNPa2tw4v2iVQmmXnYTybA@mail.gmail.com>
Thanks for review. I actually noticed your introduction of
cp_build_fold_indirect_ref after I installed my patch.
I'm testing following fix.
Martin
>From 63d9cff5c183f3614cff527ff991e1586a9efa5b Mon Sep 17 00:00:00 2001
From: marxin <mliska@suse.cz>
Date: Wed, 15 Nov 2017 10:01:51 +0100
Subject: [PATCH] Fix fallout of -fsanitize=vptr.
gcc/cp/ChangeLog:
2017-11-15 Martin Liska <mliska@suse.cz>
* decl.c (begin_destructor_body): Use cp_build_fold_indirect_ref
instead of cp_build_indirect_ref.
---
gcc/cp/decl.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 041893db937..7e16f7b415b 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -15253,8 +15253,7 @@ begin_destructor_body (void)
{
tree binfo = TYPE_BINFO (current_class_type);
tree ref
- = cp_build_indirect_ref (current_class_ptr, RO_NULL,
- tf_warning_or_error);
+ = cp_build_fold_indirect_ref (current_class_ptr);
tree vtbl_ptr = build_vfield_ref (ref, TREE_TYPE (binfo));
tree vtbl = build_zero_cst (TREE_TYPE (vtbl_ptr));
--
2.14.3