From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22596 invoked by alias); 8 Sep 2014 22:19:40 -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 22587 invoked by uid 89); 8 Sep 2014 22:19:39 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.3 required=5.0 tests=AWL,BAYES_00,KAM_STOCKGEN,RCVD_IN_DNSWL_LOW,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-qa0-f47.google.com Received: from mail-qa0-f47.google.com (HELO mail-qa0-f47.google.com) (209.85.216.47) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Mon, 08 Sep 2014 22:19:37 +0000 Received: by mail-qa0-f47.google.com with SMTP id x12so14649388qac.6 for ; Mon, 08 Sep 2014 15:19:35 -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=7c/kGkDwWPdyOxaxCZ9cZ7VAdxvov+AFtFU+PX1sa5A=; b=D1GpL8+b9z/pE42oyyo1CjOLgvUCMgzo9oDuIAp71+GnIvXp5/OrKs8H3s5j7R+WZY NRrTlN2d8EvBzJRv89qjt1GiTbbDUGbiM+cSMkebD+NRUt+0cNSkISDg/uOaWa2M635x B+guy/xwWy6hczCigsnfkfLBc/9y8GCt2jTDYpM1Ao93V5Y9xzgO8dG3IMnpuKH5LWMV W255ppe/QVE/f/pZ4Fv7qE4pB00L0uHZY+AP/89mQR1W8tHmreIPy7JprH6tD/6L4hFJ lfhH0SL2hOyBDMWX8T4/O3qo1SRfcHIMRhcyPU7uxN4zQh7KCHzAH+YvTWdjX2ZSYPYB 8lwg== X-Gm-Message-State: ALoCoQmJdqkcTUwXepdtBAE2MWPjr3o/IEoMu7vOR1Y1FIHSknOc9FQGsBP1MjEx4PcJ2G1/AGf+ MIME-Version: 1.0 X-Received: by 10.140.94.233 with SMTP id g96mr18906969qge.21.1410214775074; Mon, 08 Sep 2014 15:19:35 -0700 (PDT) Received: by 10.229.210.2 with HTTP; Mon, 8 Sep 2014 15:19:34 -0700 (PDT) In-Reply-To: <54062B52.9040706@redhat.com> References: <54062B52.9040706@redhat.com> Date: Mon, 08 Sep 2014 22:19:00 -0000 Message-ID: Subject: Re: [PATCH x86_64] Optimize access to globals in "-fpie -pie" builds with copy relocations From: Sriraman Tallam To: Richard Henderson Cc: GCC Patches , David Li , Cary Coutant , Ian Lance Taylor , Paul Pluzhnikov Content-Type: multipart/mixed; boundary=001a113a7bd0ba4c760502953639 X-IsSubscribed: yes X-SW-Source: 2014-09/txt/msg00645.txt.bz2 --001a113a7bd0ba4c760502953639 Content-Type: text/plain; charset=UTF-8 Content-length: 1861 On Tue, Sep 2, 2014 at 1:40 PM, Richard Henderson wrote: > On 06/20/2014 05:17 PM, Sriraman Tallam wrote: >> Index: config/i386/i386.c >> =================================================================== >> --- config/i386/i386.c (revision 211826) >> +++ config/i386/i386.c (working copy) >> @@ -12691,7 +12691,9 @@ legitimate_pic_address_disp_p (rtx disp) >> return true; >> } >> else if (!SYMBOL_REF_FAR_ADDR_P (op0) >> - && SYMBOL_REF_LOCAL_P (op0) >> + && (SYMBOL_REF_LOCAL_P (op0) >> + || (TARGET_64BIT && ix86_copyrelocs && flag_pie >> + && !SYMBOL_REF_FUNCTION_P (op0))) >> && ix86_cmodel != CM_LARGE_PIC) >> return true; >> break; > > This is the wrong place to patch. > > You ought to be adjusting SYMBOL_REF_LOCAL_P, by providing a modified > TARGET_BINDS_LOCAL_P. I have done this in the new attached patch, I added a new function i386_binds_local_p which will check for this and call default_binds_local_p otherwise. > > Note in particular that I believe that you are doing the wrong thing with weak > and COMMON symbols, in that you probably ought not force a copy reloc there. I added an extra check to not do this for WEAK symbols. I also added a check for DECL_EXTERNAL so I believe this will also not be called for COMMON symbols. > > Note the complexity of default_binds_local_p_1, and the fact that all you > really want to modify is > > /* If PIC, then assume that any global name can be overridden by > symbols resolved from other modules. */ > else if (shlib) > local_p = false; > > near the bottom of that function. I did not understand what you mean here? Were you suggesting an alternative way of doing this? Thanks for reviewing Sri > > > r~ --001a113a7bd0ba4c760502953639 Content-Type: text/plain; charset=US-ASCII; name="gcc_pie_copyrelocs_patch.txt" Content-Disposition: attachment; filename="gcc_pie_copyrelocs_patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hzudcycu0 Content-length: 7040 T3B0aW1pemUgYWNjZXNzIHRvIGdsb2JhbHMgd2l0aCAtZnBpZSwgeDg2XzY0 IG9ubHk6CgpDdXJyZW50bHksIHdpdGggLWZQSUUvLWZwaWUsIEdDQyBhY2Nl c3NlcyBnbG9iYWxzIHRoYXQgYXJlIGV4dGVybiB0byB0aGUgbW9kdWxlCnVz aW5nIHRoZSBHT1QuICBUaGlzIGlzIHR3byBpbnN0cnVjdGlvbnMsIG9uZSB0 byBnZXQgdGhlIGFkZHJlc3Mgb2YgdGhlIGdsb2JhbApmcm9tIHRoZSBHT1Qg YW5kIHRoZSBvdGhlciB0byBnZXQgdGhlIHZhbHVlLiAgSWYgaXQgdHVybnMg b3V0IHRoYXQgdGhlIGdsb2JhbApnZXRzIGRlZmluZWQgaW4gdGhlIGV4ZWN1 dGFibGUgYXQgbGluay10aW1lLCBpdCBzdGlsbCBuZWVkcyB0byBnbyB0aHJv dWdoIHRoZQpHT1QgYXMgaXQgaXMgdG9vIGxhdGUgdGhlbiB0byBnZW5lcmF0 ZSBhIGRpcmVjdCBhY2Nlc3MuIAoKRXhhbXBsZXM6Cgpmb28uY2MKLS0tLS0t CmludCBhX2dsb2I7CmludCBtYWluICgpIHsKICByZXR1cm4gYV9nbG9iOyAv LyBkZWZpbmVkIGluIHRoaXMgZmlsZQp9CgpXaXRoIC1PMiAtZnBpZSAtcGll LCB0aGUgZ2VuZXJhdGVkIGNvZGUgZGlyZWN0bHkgYWNjZXNzZXMgdGhlIGds b2JhbCB2aWEKUEMtcmVsYXRpdmUgaW5zbjoKCjVlMCAgIDxtYWluPjoKICAg bW92ICAgIDB4MTY1YSglcmlwKSwlZWF4ICAgICAgICAjIDFjNDAgPGFfZ2xv Yj4KCmZvby5jYwotLS0tLS0KCmV4dGVybiBpbnQgYV9nbG9iOwppbnQgbWFp biAoKSB7CiAgcmV0dXJuIGFfZ2xvYjsgLy8gZGVmaW5lZCBpbiB0aGlzIGZp bGUKfQoKV2l0aCAtTzIgLWZwaWUgLXBpZSwgdGhlIGdlbmVyYXRlZCBjb2Rl IGFjY2Vzc2VzIGdsb2JhbCB2aWEgR09UIHVzaW5nIHR3bwptZW1vcnkgbG9h ZHM6Cgo2ZjAgIDxtYWluPjoKICAgbW92ICAgIDB4MTYwOSglcmlwKSwlcmF4 ICAgIyAxZDAwIDxfRFlOQU1JQysweDIzMD4KICAgbW92ICAgICglcmF4KSwl ZWF4CgpUaGlzIGlzIHRydWUgZXZlbiBpZiBpbiB0aGUgbGF0dGVyIGNhc2Ug dGhlIGdsb2JhbCB3YXMgZGVmaW5lZCBpbiB0aGUKZXhlY3V0YWJsZSB0aHJv dWdoIGEgZGlmZmVyZW50IGZpbGUuCgpTb21lIGV4cGVyaW1lbnRzIG9uIGdv b2dsZSBiZW5jaG1hcmtzIHNob3dzIHRoYXQgdGhlIGV4dHJhIG1lbW9yeSBs b2FkcyBhZmZlY3RzCnBlcmZvcm1hbmNlIGJ5IDElIHRvIDUlLiAKCgpTb2x1 dGlvbiAtIENvcHkgUmVsb2NhdGlvbnM6CgpXaGVuIHRoZSBsaW5rZXIgc3Vw cG9ydHMgY29weSByZWxvY2F0aW9ucywgR0NDIGNhbiBhbHdheXMgYXNzdW1l IHRoYXQgdGhlCmdsb2JhbCB3aWxsIGJlIGRlZmluZWQgaW4gdGhlIGV4ZWN1 dGFibGUuICBGb3IgZ2xvYmFscyB0aGF0IGFyZSB0cnVseSBleHRlcm4KKGNv bWUgZnJvbSBzaGFyZWQgb2JqZWN0cyksIHRoZSBsaW5rZXIgd2lsbCBjcmVh dGUgY29weSByZWxvY2F0aW9ucyBhbmQgaGF2ZQp0aGVtIGRlZmluZWQgaW4g dGhlIGV4ZWN1dGFibGUuIFJlc3VsdCBpcyB0aGF0IG5vIGdsb2JhbCBhY2Nl c3MgbmVlZHMgdG8gZ28KdGhyb3VnaCB0aGUgR09UIGFuZCBoZW5jZSBpbXBy b3ZlcyBwZXJmb3JtYW5jZS4KClRoaXMgcGF0Y2ggdG8gdGhlIGdvbGQgbGlu a2VyIDoKaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9iaW51dGlscy8yMDE0 LTA1L21zZzAwMDkyLmh0bWwKc3VibWl0dGVkIHJlY2VudGx5IGFsbG93cyBn b2xkIHRvIGdlbmVyYXRlIGNvcHkgcmVsb2NhdGlvbnMgZm9yIC1waWUgbW9k ZSB3aGVuCm5lY2Vzc2FyeS4KCkkgaGF2ZSBhZGRlZCBvcHRpb24gLW1jb3B5 cmVsb2NzIHdoaWNoIHdoZW4gY29tYmluZWQgd2l0aCAtZnBpZSB3b3VsZCBk bwp0aGlzLiAgTm90ZSB0aGF0IHRoZSBCRkQgbGlua2VyIGRvZXMgbm90IHN1 cHBvcnQgcGllIGNvcHlyZWxvY3MgeWV0IGFuZCB0aGlzCm9wdGlvbiBjYW5u b3QgYmUgdXNlZCB0aGVyZS4KClBsZWFzZSByZXZpZXcuCgoKQ2hhbmdlTG9n OgoKCSogY29uZmlnL2kzODYvaTM4Ni5vcHQgKG1waWUtY29weXJlbG9jcyk6 IE5ldyBvcHRpb24uCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaTM4Nl9iaW5k c19sb2NhbF9wKTogTmV3IGZ1bmN0aW9uLgogICAgICAgIChUQVJHRVRfQklO RFNfTE9DQUxfUCk6IERlZmluZS4KCSogdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9waWUtY29weXJlbG9jcy0xLmM6IE5ldyB0ZXN0LgoJKiB0ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L3BpZS1jb3B5cmVsb2NzLTIuYzogTmV3IHRl c3QuCgoKSW5kZXg6IHRlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcGllLWNv cHlyZWxvY3MtMi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRlc3Rz dWl0ZS9nY2MudGFyZ2V0L2kzODYvcGllLWNvcHlyZWxvY3MtMi5jCShyZXZp c2lvbiAwKQorKysgdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9waWUtY29w eXJlbG9jcy0yLmMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKy8q IFRlc3QgaWYgLW1uby1jb3B5cmVsb2NzIGRvZXMgdGhlIHJpZ2h0IHRoaW5n LiAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9u cyAiLU8yIC1mcGllIC1tbm8tY29weXJlbG9jcyIgfSAqLworCitleHRlcm4g aW50IGdsb2JfYTsKKworaW50IGZvbyAoKQoreworICByZXR1cm4gZ2xvYl9h OworfQorCisvKiBnbG9iX2Egc2hvdWxkIGFsd2F5cyBiZSBhY2Nlc3NlZCB2 aWEgR09UICAqLyAKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAi Z2xvYl9hXFxAR09UIiB7IHRhcmdldCB7IHg4Nl82NC0qLSogfSB9IH0gfSAq LwpJbmRleDogdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9waWUtY29weXJl bG9jcy0xLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGVzdHN1aXRl L2djYy50YXJnZXQvaTM4Ni9waWUtY29weXJlbG9jcy0xLmMJKHJldmlzaW9u IDApCisrKyB0ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3BpZS1jb3B5cmVs b2NzLTEuYwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorLyogVGVz dCBpZiAtbWNvcHlyZWxvY3MgZG9lcyB0aGUgcmlnaHQgdGhpbmcuICovCisv KiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTzIg LWZwaWUgLW1jb3B5cmVsb2NzIiB9ICovCisKK2V4dGVybiBpbnQgZ2xvYl9h OworCitpbnQgZm9vICgpCit7CisgIHJldHVybiBnbG9iX2E7Cit9CisKKy8q IGdsb2JfYSBzaG91bGQgbmV2ZXIgYmUgYWNjZXNzZWQgd2l0aCBhIEdPVFBD UkVMICAqLyAKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qg Imdsb2JfYVxcQEdPVFBDUkVMIiB7IHRhcmdldCB7IHg4Nl82NC0qLSogfSB9 IH0gfSAqLwpJbmRleDogY29uZmlnL2kzODYvaTM4Ni5jCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIGNvbmZpZy9pMzg2L2kzODYuYwkocmV2aXNpb24g MjE0OTczKQorKysgY29uZmlnL2kzODYvaTM4Ni5jCSh3b3JraW5nIGNvcHkp CkBAIC0xMjY0Miw2ICsxMjY0MiwxOCBAQCBsZWdpdGltYXRlX3BpY19vcGVy YW5kX3AgKHJ0eCB4KQogICAgIH0KIH0KIAorYm9vbAoraTM4Nl9iaW5kc19s b2NhbF9wIChjb25zdF90cmVlIGV4cCkKK3sKKyAgLyogR2xvYmFscyBtYXJr ZWQgZXh0ZXJuIGFyZSB0cmVhdGVkIGFzIGxvY2FsIHdoZW4gbGlua2VyIGNv cHkgcmVsb2NhdGlvbnMKKyAgICAgc3VwcG9ydCBpcyBhdmFpbGFibGUgd2l0 aCAtZntwaWV8UElFfS4gICovCisgIGlmIChUQVJHRVRfNjRCSVQgJiYgaXg4 Nl9jb3B5cmVsb2NzICYmIGZsYWdfcGllCisgICAgICAmJiBUUkVFX0NPREUg KGV4cCkgPT0gVkFSX0RFQ0wKKyAgICAgICYmIERFQ0xfRVhURVJOQUwgKGV4 cCkgJiYgIURFQ0xfV0VBSyAoZXhwKSkKKyAgICByZXR1cm4gdHJ1ZTsKKyAg cmV0dXJuIGRlZmF1bHRfYmluZHNfbG9jYWxfcCAoZXhwKTsKK30KKwogLyog RGV0ZXJtaW5lIGlmIGEgZ2l2ZW4gQ09OU1QgUlRYIGlzIGEgdmFsaWQgbWVt b3J5IGRpc3BsYWNlbWVudAogICAgaW4gUElDIG1vZGUuICAqLwogCkBAIC00 NzE1Nyw2ICs0NzE2OSw5IEBAIGl4ODZfYXRvbWljX2Fzc2lnbl9leHBhbmRf ZmVudiAodHJlZSAqaG9sZCwgdHJlZSAqCiAjdW5kZWYgVEFSR0VUX01TX0JJ VEZJRUxEX0xBWU9VVF9QCiAjZGVmaW5lIFRBUkdFVF9NU19CSVRGSUVMRF9M QVlPVVRfUCBpeDg2X21zX2JpdGZpZWxkX2xheW91dF9wCiAKKyN1bmRlZiBU QVJHRVRfQklORFNfTE9DQUxfUAorI2RlZmluZSBUQVJHRVRfQklORFNfTE9D QUxfUCBpMzg2X2JpbmRzX2xvY2FsX3AKKwogI2lmIFRBUkdFVF9NQUNITwog I3VuZGVmIFRBUkdFVF9CSU5EU19MT0NBTF9QCiAjZGVmaW5lIFRBUkdFVF9C SU5EU19MT0NBTF9QIGRhcndpbl9iaW5kc19sb2NhbF9wCkluZGV4OiBjb25m aWcvaTM4Ni9pMzg2Lm9wdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBj b25maWcvaTM4Ni9pMzg2Lm9wdAkocmV2aXNpb24gMjE0OTczKQorKysgY29u ZmlnL2kzODYvaTM4Ni5vcHQJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsx MDgsMTAgQEAgaW50IHhfaXg4Nl9kdW1wX3R1bmVzCiBUYXJnZXRTYXZlCiBp bnQgeF9peDg2X2ZvcmNlX2FsaWduX2FyZ19wb2ludGVyCiAKKzs7IC1tY29w eXJlbG9jcworVGFyZ2V0U2F2ZQoraW50IHhfaXg4Nl9jb3B5cmVsb2NzCisK IDs7IC1tZm9yY2UtZHJhcD0gCiBUYXJnZXRTYXZlCiBpbnQgeF9peDg2X2Zv cmNlX2RyYXAKQEAgLTI5MSw2ICsyOTUsMTAgQEAgbWZhbmN5LW1hdGgtMzg3 CiBUYXJnZXQgUmVqZWN0TmVnYXRpdmUgUmVwb3J0IEludmVyc2VNYXNrKE5P X0ZBTkNZX01BVEhfMzg3LCBVU0VfRkFOQ1lfTUFUSF8zODcpIFNhdmUKIEdl bmVyYXRlIHNpbiwgY29zLCBzcXJ0IGZvciBGUFUKIAorbWNvcHlyZWxvY3MK K1RhcmdldCBSZXBvcnQgVmFyKGl4ODZfY29weXJlbG9jcykgSW5pdCgwKQor VXNlIGxpbmtlciBjb3B5IHJlbG9jcyBmb3IgcGllCisKIG1mb3JjZS1kcmFw CiBUYXJnZXQgUmVwb3J0IFZhcihpeDg2X2ZvcmNlX2RyYXApCiBBbHdheXMg dXNlIER5bmFtaWMgUmVhbGlnbmVkIEFyZ3VtZW50IFBvaW50ZXIgKERSQVAp IHRvIHJlYWxpZ24gc3RhY2sK --001a113a7bd0ba4c760502953639--