From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 89635 invoked by alias); 28 May 2015 20:54:21 -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 89604 invoked by uid 89); 28 May 2015 20:54:19 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.4 required=5.0 tests=AWL,BAYES_50,KAM_ASCII_DIVIDERS,KAM_STOCKGEN,RCVD_IN_DNSWL_LOW,SPF_PASS,T_RP_MATCHES_RCVD autolearn=no version=3.3.2 X-HELO: mail-vn0-f50.google.com Received: from mail-vn0-f50.google.com (HELO mail-vn0-f50.google.com) (209.85.216.50) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Thu, 28 May 2015 20:54:18 +0000 Received: by vnbg129 with SMTP id g129so6217002vnb.11 for ; Thu, 28 May 2015 13:54:15 -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=Bz5AOGwFVmPEGGCl4/SFetmXxCu4vtuOWUqxNTy3s0k=; b=U7WAgSb8OLeFZ7d2p6pglWlMBIPKoF7K8JauQHQI2lozle+nYMly7KdckuQ9+aBJxI 4xJemAzKZ6pL+6pjWw8ZOcv5sJMuPctxtrM+LQyNM5OO/GwnYmbOQ/5X+wnSDy5M8VjL rbLju+0P9ADp61q0Ehex17or++VTGfMHbMIM6FToqz11SimduGwcb/7nYickLHDdCYKg 8f2CAavRx0udOHK+WtDkb+L0yAZVPKcTb/mAAvw5WoYgVg/fIMXsxK/EB6oHteRhjGFt I8963F3KnA1BDx9Hj6g5dH2n0dwLoocmj0cVFtxW2EmxWDNPILCCeFKnqPhSxZV1tJen O1hw== X-Gm-Message-State: ALoCoQmG6+Jn4rgsZKoQe8pZOw3cVwJBG7zn/S5w9ie/Nq9DZT7K1H8E3CHdlIUFVlVzlvayJlXH MIME-Version: 1.0 X-Received: by 10.52.89.174 with SMTP id bp14mr4186076vdb.58.1432846455780; Thu, 28 May 2015 13:54:15 -0700 (PDT) Received: by 10.52.229.196 with HTTP; Thu, 28 May 2015 13:54:15 -0700 (PDT) In-Reply-To: References: <555E5376.3060706@redhat.com> <555EF018.2050309@redhat.com> Date: Thu, 28 May 2015 21:27:00 -0000 Message-ID: Subject: Re: [RFC][PATCH][X86_64] Eliminate PLT stubs for specified external functions via -fno-plt= From: Sriraman Tallam To: "H.J. Lu" Cc: Pedro Alves , Michael Matz , David Li , GCC Patches , Jan Hubicka Content-Type: multipart/mixed; boundary=20cf307abdc9044c7b05172a902d X-IsSubscribed: yes X-SW-Source: 2015-05/txt/msg02699.txt.bz2 --20cf307abdc9044c7b05172a902d Content-Type: text/plain; charset=UTF-8 Content-length: 2171 On Thu, May 28, 2015 at 12:05 PM, H.J. Lu wrote: > On Thu, May 28, 2015 at 11:50 AM, Sriraman Tallam wrote: >> On Thu, May 28, 2015 at 11:42 AM, H.J. Lu wrote: >>> On Thu, May 28, 2015 at 11:34 AM, Sriraman Tallam wrote: >>>> I have attached a patch that adds the new attribute "noplt". Please review. >>>> >>>> * config/i386/i386.c (avoid_plt_to_call): New function. >>>> (ix86_output_call_insn): Generate indirect call for functions >>>> marked with "noplt" attribute. >>>> (attribute_spec ix86_attribute_): Define new attribute "noplt". >>>> * doc/extend.texi: Document new attribute "noplt". >>>> * gcc.target/i386/noplt-1.c: New testcase. >>>> * gcc.target/i386/noplt-2.c: New testcase. >>>> >>> >>> 2 comments: >>> >>> 1. Don't remove "%!" prefix before call/jmp. It is needed for MPX. >>> 2. Don't you need to check >>> >>> && !TARGET_MACHO >>> && !TARGET_SEH >>> && !TARGET_PECOFF >>> >>> since it only works for ELF. >> >> Ok, I will make this change. OTOH, is it just better to piggy-back on >> existing -fno-plt change by Alex in calls.c >> and do this: >> >> Index: calls.c >> =================================================================== >> --- calls.c (revision 223720) >> +++ calls.c (working copy) >> @@ -226,9 +226,11 @@ prepare_call_address (tree fndecl_or_type, rtx fun >> && targetm.small_register_classes_for_mode_p (FUNCTION_MODE)) >> ? force_not_mem (memory_address (FUNCTION_MODE, funexp)) >> : memory_address (FUNCTION_MODE, funexp)); >> - else if (flag_pic && !flag_plt && fndecl_or_type >> + else if (fndecl_or_type >> && TREE_CODE (fndecl_or_type) == FUNCTION_DECL >> - && !targetm.binds_local_p (fndecl_or_type)) >> + && !targetm.binds_local_p (fndecl_or_type) >> + && ((flag_pic && !flag_plt) >> + || (lookup_attribute ("noplt", DECL_ATTRIBUTES(fndecl_or_type))))) >> { >> funexp = force_reg (Pmode, funexp); >> } >> > > Does it work on non-PIC calls? You are right, it doesnt work. I have attached the patch with the changes you mentioned. Thanks Sri > > -- > H.J. --20cf307abdc9044c7b05172a902d Content-Type: text/plain; charset=US-ASCII; name="noplt_attrib_patch.txt" Content-Disposition: attachment; filename="noplt_attrib_patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ia8nrc4z0 Content-length: 5718 CSogY29uZmlnL2kzODYvaTM4Ni5jIChhdm9pZF9wbHRfdG9fY2FsbCk6IE5l dyBmdW5jdGlvbi4KCShpeDg2X291dHB1dF9jYWxsX2luc24pOiBHZW5lcmF0 ZSBpbmRpcmVjdCBjYWxsIGZvciBmdW5jdGlvbnMKCW1hcmtlZCB3aXRoICJu b3BsdCIgYXR0cmlidXRlLgoJKGF0dHJpYnV0ZV9zcGVjIGl4ODZfYXR0cmli dXRlXyk6IERlZmluZSBuZXcgYXR0cmlidXRlICJub3BsdCIuCgkqIGRvYy9l eHRlbmQudGV4aTogRG9jdW1lbnQgbmV3IGF0dHJpYnV0ZSAibm9wbHQiLgoJ KiBnY2MudGFyZ2V0L2kzODYvbm9wbHQtMS5jOiBOZXcgdGVzdGNhc2UuCgkq IGdjYy50YXJnZXQvaTM4Ni9ub3BsdC0yLmM6IE5ldyB0ZXN0Y2FzZS4KCklu ZGV4OiBjb25maWcvaTM4Ni9pMzg2LmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gY29uZmlnL2kzODYvaTM4Ni5jCShyZXZpc2lvbiAyMjM3MjApCisr KyBjb25maWcvaTM4Ni9pMzg2LmMJKHdvcmtpbmcgY29weSkKQEAgLTI1NTk5 LDYgKzI1NTk5LDI1IEBAIGl4ODZfZXhwYW5kX2NhbGwgKHJ0eCByZXR2YWws IHJ0eCBmbmFkZHIsIHJ0eCBjYWxsCiAgIHJldHVybiBjYWxsOwogfQogCisv KiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZnVuY3Rpb24gYmVpbmcgY2FsbGVkIHdh cyBtYXJrZWQgd2l0aCBhdHRyaWJ1dGUKKyAgICJub3BsdCIuICBJZiB0aGlz IGZ1bmN0aW9uIGlzIGRlZmluZWQsIHRoaXMgc2hvdWxkIHJldHVybiBmYWxz ZS4gICovCitzdGF0aWMgYm9vbAorYXZvaWRfcGx0X3RvX2NhbGwgKHJ0eCBj YWxsX29wKQoreworICBpZiAoR0VUX0NPREUgKGNhbGxfb3ApICE9IFNZTUJP TF9SRUYKKyAgICAgIHx8IFNZTUJPTF9SRUZfTE9DQUxfUCAoY2FsbF9vcCkp CisgICAgcmV0dXJuIGZhbHNlOworCisgIHRyZWUgc3ltYm9sX2RlY2wgPSBT WU1CT0xfUkVGX0RFQ0wgKGNhbGxfb3ApOworCisgIGlmIChzeW1ib2xfZGVj bCAhPSBOVUxMX1RSRUUKKyAgICAgICYmIFRSRUVfQ09ERSAoc3ltYm9sX2Rl Y2wpID09IEZVTkNUSU9OX0RFQ0wKKyAgICAgICYmIGxvb2t1cF9hdHRyaWJ1 dGUgKCJub3BsdCIsIERFQ0xfQVRUUklCVVRFUyAoc3ltYm9sX2RlY2wpKSkK KyAgICByZXR1cm4gdHJ1ZTsKKworICByZXR1cm4gZmFsc2U7Cit9CisKIC8q IE91dHB1dCB0aGUgYXNzZW1ibHkgZm9yIGEgY2FsbCBpbnN0cnVjdGlvbi4g ICovCiAKIGNvbnN0IGNoYXIgKgpAQCAtMjU2MTEsNyArMjU2MzAsMTMgQEAg aXg4Nl9vdXRwdXRfY2FsbF9pbnNuIChydHhfaW5zbiAqaW5zbiwgcnR4IGNh bGxfb3AKICAgaWYgKFNJQkxJTkdfQ0FMTF9QIChpbnNuKSkKICAgICB7CiAg ICAgICBpZiAoZGlyZWN0X3ApCi0JeGFzbSA9ICIlIWptcFx0JVAwIjsKKwl7 CisJICBpZiAoIVRBUkdFVF9NQUNITyAmJiAhVEFSR0VUX1NFSCAmJiAhVEFS R0VUX1BFQ09GRgorCSAgICAgICYmIFRBUkdFVF82NEJJVCAmJiBhdm9pZF9w bHRfdG9fY2FsbCAoY2FsbF9vcCkpCisJICAgIHhhc20gPSAiJSFqbXBcdCol cDBAR09UUENSRUwoJSVyaXApIjsKKwkgIGVsc2UKKwkgICAgeGFzbSA9ICIl IWptcFx0JVAwIjsKKwl9CiAgICAgICAvKiBTRUggZXBpbG9ndWUgZGV0ZWN0 aW9uIHJlcXVpcmVzIHRoZSBpbmRpcmVjdCBicmFuY2ggY2FzZQogCSB0byBp bmNsdWRlIFJFWC5XLiAgKi8KICAgICAgIGVsc2UgaWYgKFRBUkdFVF9TRUgp CkBAIC0yNTY1NCw3ICsyNTY3OSwxMyBAQCBpeDg2X291dHB1dF9jYWxsX2lu c24gKHJ0eF9pbnNuICppbnNuLCBydHggY2FsbF9vcAogICAgIH0KIAogICBp ZiAoZGlyZWN0X3ApCi0gICAgeGFzbSA9ICIlIWNhbGxcdCVQMCI7CisgICAg eworICAgICAgaWYgKCFUQVJHRVRfTUFDSE8gJiYgIVRBUkdFVF9TRUggJiYg IVRBUkdFVF9QRUNPRkYKKwkgICYmIFRBUkdFVF82NEJJVCAmJiBhdm9pZF9w bHRfdG9fY2FsbCAoY2FsbF9vcCkpCisgICAgICAgIHhhc20gPSAiJSFjYWxs XHQqJXAwQEdPVFBDUkVMKCUlcmlwKSI7CisgICAgICBlbHNlCisgICAgICAg IHhhc20gPSAiJSFjYWxsXHQlUDAiOworICAgIH0KICAgZWxzZQogICAgIHhh c20gPSAiJSFjYWxsXHQlQTAiOwogCkBAIC00NjYyOCw2ICs0NjY1OSw5IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX3NwZWMgaXg4Nl9hdHRy aWJ1dGVfCiAgICAgZmFsc2UgfSwKICAgeyAiY2FsbGVlX3BvcF9hZ2dyZWdh dGVfcmV0dXJuIiwgMSwgMSwgZmFsc2UsIHRydWUsIHRydWUsCiAgICAgaXg4 Nl9oYW5kbGVfY2FsbGVlX3BvcF9hZ2dyZWdhdGVfcmV0dXJuLCB0cnVlIH0s CisgIC8qIEF0dHJpYnV0ZSB0byBhdm9pZCBjYWxsaW5nIGZ1bmN0aW9uIHZp YSBQTFQuICAqLworICB7ICJub3BsdCIsIDAsIDAsIHRydWUsIGZhbHNlLCBm YWxzZSwgaXg4Nl9oYW5kbGVfZm5kZWNsX2F0dHJpYnV0ZSwKKyAgICBmYWxz ZSB9LAogICAvKiBFbmQgZWxlbWVudC4gICovCiAgIHsgTlVMTCwgICAgICAg IDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIE5VTEwsIGZhbHNlIH0KIH07 CkluZGV4OiBkb2MvZXh0ZW5kLnRleGkKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gZG9jL2V4dGVuZC50ZXhpCShyZXZpc2lvbiAyMjM3MjApCisrKyBk b2MvZXh0ZW5kLnRleGkJKHdvcmtpbmcgY29weSkKQEAgLTQ4NTgsNiArNDg1 OCwxMyBAQCBPbiB4ODYtMzIgdGFyZ2V0cywgdGhlIEBjb2Rle3N0ZGNhbGx9 IGF0dHJpYnV0ZSBjYQogYXNzdW1lIHRoYXQgdGhlIGNhbGxlZCBmdW5jdGlv biBwb3BzIG9mZiB0aGUgc3RhY2sgc3BhY2UgdXNlZCB0bwogcGFzcyBhcmd1 bWVudHMsIHVubGVzcyBpdCB0YWtlcyBhIHZhcmlhYmxlIG51bWJlciBvZiBh cmd1bWVudHMuCiAKK0BpdGVtIG5vcGx0CitAY2luZGV4IEBjb2Rle25vcGx0 fSBmdW5jdGlvbiBhdHRyaWJ1dGUsIHg4Ni02NAorQGNpbmRleCBmdW5jdGlv bnMgd2hvc2UgY2FsbHMgZG8gbm90IGdvIHZpYSBQTFQKK09uIHg4Ni02NCB0 YXJnZXRzLiB0aGUgQGNvZGV7bm9wbHR9IGF0dHJpYnV0ZSBjYXVzZXMgdGhl IGNvbXBpbGVyIHRvCitjYWxsIHRoaXMgZXh0ZXJuYWwgZnVuY3Rpb24gaW5k aXJlY3RseSB1c2luZyBhIEdPVCBlbnRyeSBhbmQgYXZvaWQgdGhlCitQTFQu CisKIEBpdGVtIHRhcmdldCAoQHZhcntvcHRpb25zfSkKIEBjaW5kZXggQGNv ZGV7dGFyZ2V0fSBmdW5jdGlvbiBhdHRyaWJ1dGUKIEFzIGRpc2N1c3NlZCBp biBAcmVme0NvbW1vbiBGdW5jdGlvbiBBdHRyaWJ1dGVzfSwgdGhpcyBhdHRy aWJ1dGUgCkluZGV4OiB0ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L25vcGx0 LTEuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0ZXN0c3VpdGUvZ2Nj LnRhcmdldC9pMzg2L25vcGx0LTEuYwkocmV2aXNpb24gMCkKKysrIHRlc3Rz dWl0ZS9nY2MudGFyZ2V0L2kzODYvbm9wbHQtMS5jCSh3b3JraW5nIGNvcHkp CkBAIC0wLDAgKzEsMTMgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdl dCB4ODZfNjQtKi0qIH0gfSAqLworCisKK19fYXR0cmlidXRlX18gKChub3Bs dCkpCit2b2lkIGZvbygpOworCitpbnQgbWFpbigpCit7CisgIGZvbygpOwor ICByZXR1cm4gMDsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyICJjYWxsXFsgXHRcXVxcKi4qZm9vLipAR09UUENSRUxcXCglcmlwXFwp IiB9IH0gKi8gCkluZGV4OiB0ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L25v cGx0LTIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0ZXN0c3VpdGUv Z2NjLnRhcmdldC9pMzg2L25vcGx0LTIuYwkocmV2aXNpb24gMCkKKysrIHRl c3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvbm9wbHQtMi5jCSh3b3JraW5nIGNv cHkpCkBAIC0wLDAgKzEsMTMgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB7IHRh cmdldCB4ODZfNjQtKi0qIH0gfSAqLworLyogeyBkZy1vcHRpb25zICItTzIi IH0gKi8KKworCitfX2F0dHJpYnV0ZV9fICgobm9wbHQpKQoraW50IGZvbygp OworCitpbnQgbWFpbigpCit7CisgIHJldHVybiBmb28oKTsKK30KKworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdXFwqLipm b28uKkBHT1RQQ1JFTFxcKCVyaXBcXCkiIH0gfSAqLyAK --20cf307abdc9044c7b05172a902d--