From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 76698 invoked by alias); 13 Aug 2015 05:36:34 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 76675 invoked by uid 89); 13 Aug 2015 05:36:33 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.5 required=5.0 tests=AWL,BAYES_00,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_LOW,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-wi0-f178.google.com Received: from mail-wi0-f178.google.com (HELO mail-wi0-f178.google.com) (209.85.212.178) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Thu, 13 Aug 2015 05:36:32 +0000 Received: by wicne3 with SMTP id ne3so244417638wic.1 for ; Wed, 12 Aug 2015 22:36:29 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=CkjNK4bjkKj63u+AynE9vT6keqPndqLMnFCTWo8WXMY=; b=kM9btRrPLOTbd8hFd6L2zWwRiYbYZeQ4gLa54jP4uuexVDWtANn0Fj2dxwNkHdQit2 5me8m14egtrLTv/KOf5LCkIX3OHLkQc0SeEePMBakbpY/HW+Q56vENsAHGGjd07xVOxY 4vHhtKu9KXAPHaBST3+5mNIVxOmfOkavqBVlGRC5yEDZfojyMApWS99lU7Uj8XOqlW8q +08Isty5ayYFJdDs1GA60OMw689aiYa4kFDa92u6ATmVJkxlt3zcuOVJkYMTto6Mbvkc HFDUAoRKvLrkQadG6m+zssaTwBuj2O4ujbNxOt22FaZUKESyhIrZXiXJ8ME4dqsU7zI4 Q8kQ== X-Gm-Message-State: ALoCoQloiUKL7ULKghCDOf3Ejn+o9/IK4Iu6on9sSNZtx/BrA02FlPuqqvPESrK02d8A5nMsJeXZ MIME-Version: 1.0 X-Received: by 10.180.79.10 with SMTP id f10mr54693980wix.1.1439444188943; Wed, 12 Aug 2015 22:36:28 -0700 (PDT) Received: by 10.28.46.3 with HTTP; Wed, 12 Aug 2015 22:36:28 -0700 (PDT) In-Reply-To: References: Date: Thu, 13 Aug 2015 06:17:00 -0000 Message-ID: Subject: Re: [RFC] COMDAT Safe Module Level Multi versioning From: Sriraman Tallam To: Xinliang David Li Cc: Richard Biener , "H.J. Lu" , GCC Patches , binutils , Cary Coutant , Yury Gribov Content-Type: multipart/mixed; boundary=f46d044282988ea79c051d2ab73e X-IsSubscribed: yes X-SW-Source: 2015-08/txt/msg00674.txt.bz2 --f46d044282988ea79c051d2ab73e Content-Type: text/plain; charset=UTF-8 Content-length: 2814 On Tue, Aug 4, 2015 at 11:43 AM, Sriraman Tallam wrote: > On Tue, Jun 16, 2015 at 4:22 PM, Sriraman Tallam wrote: >> On Tue, May 19, 2015 at 9:11 AM, Xinliang David Li wrote: >>>> >>>> Hm. But which options are unsafe? Also wouldn't it be better to simply >>>> _not_ have unsafe options produce comdats but always make local clones >>>> for them (thus emit the comdat with "unsafe" flags dropped)? >>> >>> Always localize comdat functions may lead to text size increase. It >>> does not work if the comdat function is a virtual function for >>> instance. >> >> Based on Richard's suggestion, I have a patch to localize comdat >> functions which seems like a very effective solution to this problem. >> The text size increase is limited to the extra comdat copies generated >> for the specialized modules (modules with unsafe options) which is >> usually only a few. Since -fweak does something similar for >> functions, I have called the new option -fweak-comdat-functions. >> This does not apply to virtual comdat functions as their addresses can >> always be leaked via the vtable. Using this flag with virtual >> functions generates a warning. >> >> To summarize, this is the intended usage of this option. Modules which >> use unsafe code options, like -m for multiversioning, to generate >> code that is meant to run only on a subset of CPUs can generate >> comdats with specialized instructions which when picked by the linker >> can get run unconditionally causing SIGILL on unsupported platforms. >> This flag hides these comdats to be local to these modules and not >> make them available publicly, with the caveat that it does not apply >> to virtual comdats. >> >> Could you please review? > > Ping. This patch uses Richard's suggestion to localize comdat > functions with option -fno-weak-comdat-functions. Comments? Ping. * c-family/c.opt (fweak-comdat-functions): New option. * cp/decl2.c (comdat_linkage): Implement new option. Warn when virtual comdat functions are seen. * doc/invoke.texi: Document new option. * testsuite/g++.dg/no-weak-comdat-functions-1.C: New test. > > * c-family/c.opt (fweak-comdat-functions): New option. > * cp/decl2.c (comdat_linkage): Implement new option. Warn when > virtual comdat functions are seen. > * doc/invoke.texi: Document new option. > * testsuite/g++.dg/no-weak-comdat-functions-1.C: New test. > > >> >> * c-family/c.opt (fweak-comdat-functions): New option. >> * cp/decl2.c (comdat_linkage): Implement new option. Warn when >> virtual comdat functions are seen. >> * doc/invoke.texi: Document new option. >> * testsuite/g++.dg/no-weak-comdat-functions-1.C: New test. >> >> >> Thanks >> Sri >> >> >>> >>> David >>> >>> >>>> >>>> Richard. >>>> >>>>> >>>>> Thanks >>>>> Sri --f46d044282988ea79c051d2ab73e Content-Type: text/plain; charset=US-ASCII; name="no_weak_comdat_functions.txt" Content-Disposition: attachment; filename="no_weak_comdat_functions.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_id9rvxxf1 Content-length: 5551 CSogYy1mYW1pbHkvYy5vcHQgKGZ3ZWFrLWNvbWRhdC1mdW5jdGlvbnMpOiBO ZXcgb3B0aW9uLgoJKiBjcC9kZWNsMi5jIChjb21kYXRfbGlua2FnZSk6IElt cGxlbWVudCBuZXcgb3B0aW9uLiAgV2FybiB3aGVuCgl2aXJ0dWFsIGNvbWRh dCBmdW5jdGlvbnMgYXJlIHNlZW4uCgkqIGRvYy9pbnZva2UudGV4aTogRG9j dW1lbnQgbmV3IG9wdGlvbi4KCSogdGVzdHN1aXRlL2crKy5kZy9uby13ZWFr LWNvbWRhdC1mdW5jdGlvbnMtMS5DOiBOZXcgdGVzdC4KCkluZGV4OiBjLWZh bWlseS9jLm9wdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjLWZhbWls eS9jLm9wdAkocmV2aXNpb24gMjI0NDg2KQorKysgYy1mYW1pbHkvYy5vcHQJ KHdvcmtpbmcgY29weSkKQEAgLTEyMzYsNiArMTIzNiwxNCBAQCBmd2Vhawog QysrIE9iakMrKyBWYXIoZmxhZ193ZWFrKSBJbml0KDEpCiBFbWl0IGNvbW1v bi1saWtlIHN5bWJvbHMgYXMgd2VhayBzeW1ib2xzCiAKK2Z3ZWFrLWNvbWRh dC1mdW5jdGlvbnMKK0MrKyBWYXIoZmxhZ193ZWFrX2NvbWRhdF9mdW5jdGlv bnMpIEluaXQoMSkKK1NwZWNpZmljIHRvIGNvbWRhdCBmdW5jdGlvbnMoLWZu by13ZWFrLWNvbWRhdC1mdW5jdGlvbnMgOiBMb2NhbGl6ZSBDb21kYXQgRnVu Y3Rpb25zKS4KK1dpdGggLWZuby13ZWFrLWNvbWRhdC1mdW5jdGlvbnMsIHZp cnR1YWwgY29tZGF0IGZ1bmN0aW9ucyBhcmUgc3RpbGwgbGlua2VkIGFzCit3 ZWFrIGZ1bmN0aW9ucy4gIFdpdGggLWZuby13ZWFrLWNvbWRhdC1mdW5jdGlv bnMsIHRoZSBhZGRyZXNzIG9mIHRoZSBjb21kYXQKK2Z1bmN0aW9ucyB0aGF0 IGFyZSBsb2NhbGl6ZWQgd2lsbCBiZSB1bmlxdWUgYW5kIHRoaXMgY2FuIGNh dXNlIHVuaW50ZW5kZWQKK2JlaGF2aW9yIHdoZW4gYWRkcmVzc2VzIG9mIGNv bWRhdCBmdW5jdGlvbnMgYXJlIHVzZWQuCisKIGZ3aWRlLWV4ZWMtY2hhcnNl dD0KIEMgT2JqQyBDKysgT2JqQysrIEpvaW5lZCBSZWplY3ROZWdhdGl2ZQog LWZ3aWRlLWV4ZWMtY2hhcnNldD08Y3NldD4JQ29udmVydCBhbGwgd2lkZSBz dHJpbmdzIGFuZCBjaGFyYWN0ZXIgY29uc3RhbnRzIHRvIGNoYXJhY3RlciBz ZXQgPGNzZXQ+CkluZGV4OiBjcC9kZWNsMi5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIGNwL2RlY2wyLmMJKHJldmlzaW9uIDIyNDQ4NikKKysrIGNw L2RlY2wyLmMJKHdvcmtpbmcgY29weSkKQEAgLTE3MDIsOCArMTcwMiwxOSBA QCBtYXJrX3Z0YWJsZV9lbnRyaWVzICh0cmVlIGRlY2wpCiB2b2lkCiBjb21k YXRfbGlua2FnZSAodHJlZSBkZWNsKQogewotICBpZiAoZmxhZ193ZWFrKQot ICAgIG1ha2VfZGVjbF9vbmVfb25seSAoZGVjbCwgY3h4X2NvbWRhdF9ncm91 cCAoZGVjbCkpOworICBpZiAoZmxhZ193ZWFrCisgICAgICAmJiAoZmxhZ193 ZWFrX2NvbWRhdF9mdW5jdGlvbnMKKwkgIHx8IFRSRUVfQ09ERSAoZGVjbCkg IT0gRlVOQ1RJT05fREVDTAorCSAgfHwgREVDTF9WSVJUVUFMX1AgKGRlY2wp KSkKKyAgICB7CisgICAgICBtYWtlX2RlY2xfb25lX29ubHkgKGRlY2wsIGN4 eF9jb21kYXRfZ3JvdXAgKGRlY2wpKTsKKyAgICAgIGlmIChUUkVFX0NPREUg KGRlY2wpID09IEZVTkNUSU9OX0RFQ0wKKwkgICYmIERFQ0xfVklSVFVBTF9Q IChkZWNsKQorCSAgJiYgIWZsYWdfd2Vha19jb21kYXRfZnVuY3Rpb25zKQor CXdhcm5pbmdfYXQgKERFQ0xfU09VUkNFX0xPQ0FUSU9OIChkZWNsKSwgMCwK KwkJICAgICJmbm8td2Vhay1jb21kYXQtZnVuY3Rpb25zOiBDb21kYXQgbGlu a2FnZSBvZiB2aXJ0dWFsICIKKwkJICAgICJmdW5jdGlvbiAlcSNEIHByZXNl cnZlZC4iKTsKKyAgICB9CiAgIGVsc2UgaWYgKFRSRUVfQ09ERSAoZGVjbCkg PT0gRlVOQ1RJT05fREVDTAogCSAgIHx8IChWQVJfUCAoZGVjbCkgJiYgREVD TF9BUlRJRklDSUFMIChkZWNsKSkpCiAgICAgLyogV2UgY2FuIGp1c3QgZW1p dCBmdW5jdGlvbiBhbmQgY29tcGlsZXItZ2VuZXJhdGVkIHZhcmlhYmxlcwpJ bmRleDogZG9jL2ludm9rZS50ZXhpCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIGRvYy9pbnZva2UudGV4aQkocmV2aXNpb24gMjI0NDg2KQorKysgZG9j L2ludm9rZS50ZXhpCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNyArMTg5LDcg QEAgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucy4KIC1mbm8tcHJldHR5LXRl bXBsYXRlcyBAZ29sCiAtZnJlcG8gIC1mbm8tcnR0aSAgLWZzdGF0cyAgLWZ0 ZW1wbGF0ZS1iYWNrdHJhY2UtbGltaXQ9QHZhcntufSBAZ29sCiAtZnRlbXBs YXRlLWRlcHRoPUB2YXJ7bn0gQGdvbAotLWZuby10aHJlYWRzYWZlLXN0YXRp Y3MgLWZ1c2UtY3hhLWF0ZXhpdCAgLWZuby13ZWFrICAtbm9zdGRpbmMrKyBA Z29sCistZm5vLXRocmVhZHNhZmUtc3RhdGljcyAtZnVzZS1jeGEtYXRleGl0 ICAtZm5vLXdlYWsgLWZuby13ZWFrLWNvbWRhdC1mdW5jdGlvbnMgLW5vc3Rk aW5jKysgQGdvbAogLWZ2aXNpYmlsaXR5LWlubGluZXMtaGlkZGVuIEBnb2wK IC1mdnRhYmxlLXZlcmlmeT1AdmFye3N0ZHxwcmVpbml0fG5vbmV9IEBnb2wK IC1mdnR2LWNvdW50cyAtZnZ0di1kZWJ1ZyBAZ29sCkBAIC0yNDQ1LDYgKzI0 NDUsMTYgQEAgb3B0aW9uIGV4aXN0cyBvbmx5IGZvciB0ZXN0aW5nLCBhbmQg c2hvdWxkIG5vdCBiZQogaXQgcmVzdWx0cyBpbiBpbmZlcmlvciBjb2RlIGFu ZCBoYXMgbm8gYmVuZWZpdHMuICBUaGlzIG9wdGlvbiBtYXkKIGJlIHJlbW92 ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZSBvZiBHKysuCiAKK0BpdGVtIC1mbm8t d2Vhay1jb21kYXQtZnVuY3Rpb25zCitAb3BpbmRleCBmbm8td2Vhay1jb21k YXQtZnVuY3Rpb25zCitEbyBub3QgdXNlIHdlYWsgc3ltYm9sIHN1cHBvcnQg Zm9yIGNvbWRhdCBub24tdmlydHVhbCBmdW5jdGlvbnMsIGV2ZW4gaWYgaXQK K2lzIHByb3ZpZGVkIGJ5IHRoZSBsaW5rZXIuICBCeSBkZWZhdWx0LCBHKysg dXNlcyB3ZWFrIHN5bWJvbHMgaWYgdGhleSBhcmUKK2F2YWlsYWJsZS4gIFRo aXMgb3B0aW9uIGlzIHVzZWZ1bCB3aGVuIGNvbWRhdCBmdW5jdGlvbnMgZ2Vu ZXJhdGVkIGluIGNlcnRhaW4KK2NvbXBpbGF0aW9uIHVuaXRzIG5lZWQgdG8g YmUga2VwdCBsb2NhbCB0byB0aGUgcmVzcGVjdGl2ZSB1bml0cyBhbmQgbm90 IGV4cG9zZWQKK2dsb2JhbGx5LiAgVGhpcyBkb2VzIG5vdCBhcHBseSB0byB2 aXJ0dWFsIGNvbWRhdCBmdW5jdGlvbnMgYXMgdGhlaXIgcG9pbnRlcnMKK21h eSBiZSB0YWtlbiB2aWEgdmlydHVhbCB0YWJsZXMuICBUaGlzIGNhbiBjYXVz ZSB1bmludGVuZGVkIGJlaGF2aW9yIGlmCit0aGUgYWRkcmVzc2VzIG9mIGNv bWRhdCBmdW5jdGlvbnMgYXJlIHVzZWQuCisKIEBpdGVtIC1ub3N0ZGluYysr CiBAb3BpbmRleCBub3N0ZGluYysrCiBEbyBub3Qgc2VhcmNoIGZvciBoZWFk ZXIgZmlsZXMgaW4gdGhlIHN0YW5kYXJkIGRpcmVjdG9yaWVzIHNwZWNpZmlj IHRvCkluZGV4OiB0ZXN0c3VpdGUvZysrLmRnL25vLXdlYWstY29tZGF0LWZ1 bmN0aW9ucy0xLkMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGVzdHN1 aXRlL2crKy5kZy9uby13ZWFrLWNvbWRhdC1mdW5jdGlvbnMtMS5DCShyZXZp c2lvbiAwKQorKysgdGVzdHN1aXRlL2crKy5kZy9uby13ZWFrLWNvbWRhdC1m dW5jdGlvbnMtMS5DCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOSBAQAor LyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZu by13ZWFrLWNvbWRhdC1mdW5jdGlvbnMgLWZrZWVwLWlubGluZS1mdW5jdGlv bnMgLWZmdW5jdGlvbi1zZWN0aW9ucyIgfSAqLworCitpbmxpbmUgaW50IGZv byAoKSB7CisgIHJldHVybiAwOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXIgIl9aM2Zvb3YiIH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyLW5vdCAiX1ozZm9vdi4qY29tZGF0IiB9IH0gKi8K --f46d044282988ea79c051d2ab73e--