From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24820 invoked by alias); 16 Jun 2015 23:22:11 -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 24792 invoked by uid 89); 16 Jun 2015 23:22:09 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_05,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_LOW,RP_MATCHES_RCVD,SPF_PASS autolearn=unavailable version=3.3.2 X-HELO: mail-yk0-f172.google.com Received: from mail-yk0-f172.google.com (HELO mail-yk0-f172.google.com) (209.85.160.172) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Tue, 16 Jun 2015 23:22:08 +0000 Received: by ykfl8 with SMTP id l8so26588632ykf.1 for ; Tue, 16 Jun 2015 16:22:06 -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=TVzC2WoAE79nahICj7yIS3j9cWWIz/UWdnNgTg432tI=; b=WZSHWP4F3LIDAebq2kSdQhydwqGbFJ2/wd+x2+PrPtVUDQLzpP1jeZvRSd5qNH6W8W fOVdr5UZ/O5BZVruEhjhIjYLMOxGmU/C33/Hd0t4jyZPdlI8Ppjx0KzifLebt8BUrXDZ Wjd9nZtiRjs/8ad7MVRSq/pKRkRNeiqOmDGt2MluKHRvKUgdsaYXv3AuOduzEEEancrn sx8Ew+8PAk48m0M4rpXQGQnzzNV2DQe5s1NIfjrtu5xMr/YrK94YPqLel5YxCYQKgB0y mp9c0zU0UKUffAKShdZACSmp1EGdN4ai0+GU+ESCTq/hg9DAeOq5RWHRjOtNO76sbbxG LqPA== X-Gm-Message-State: ALoCoQmY98TU0HF8N1COnyLccm44OggLWHPbwrV//QutmFYSAGMzKpDfmM6sApx5KDhLGNIN5IPu MIME-Version: 1.0 X-Received: by 10.52.138.11 with SMTP id qm11mr2372386vdb.40.1434496925973; Tue, 16 Jun 2015 16:22:05 -0700 (PDT) Received: by 10.52.135.162 with HTTP; Tue, 16 Jun 2015 16:22:05 -0700 (PDT) In-Reply-To: References: Date: Wed, 17 Jun 2015 02:18: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=bcaec51b1511b4af170518aad7b0 X-IsSubscribed: yes X-SW-Source: 2015-06/txt/msg01175.txt.bz2 --bcaec51b1511b4af170518aad7b0 Content-Type: text/plain; charset=UTF-8 Content-length: 1864 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? * 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 --bcaec51b1511b4af170518aad7b0 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_iazyb4sz0 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 --bcaec51b1511b4af170518aad7b0--