From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 57687 invoked by alias); 3 Feb 2020 01:18:28 -0000 Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org Received: (qmail 56887 invoked by uid 89); 3 Feb 2020 01:18:27 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-14.8 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: mail-ot1-f67.google.com Received: from mail-ot1-f67.google.com (HELO mail-ot1-f67.google.com) (209.85.210.67) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 03 Feb 2020 01:18:25 +0000 Received: by mail-ot1-f67.google.com with SMTP id z9so12084700oth.5 for ; Sun, 02 Feb 2020 17:18:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=+bLnDN4EAQDPHM8dw5u7vSjaIMDI9u/clbRXkZbs1hE=; b=ZS4/rdaAb4BlxK/GB2CcEQQCsZHWl2M4sXeZ4uU+2fzfVDqVIhNHmjygWvxn1rqCZq yGnK1NpSiZx02yQ5ozR8zsB/EZr3A8AFJNPKyDhXT+/G6S4vmlB7v4R5X7W6mzSYJ+ny tq1u9EUcbaTWr34+rjIgR4rueW6v88uq0qH9TLm68zMdpR/D6hMbMTM7sTxvStJGtxFD CyQaW517Og4uhE1+9qyrMNgDpyB7ebUMfu44eQopA4G5vXzUNNWPmepWgGM57/VL106I ukTLt2hwZEVqXqIE8NoFmO0fPtho1ofQSguH4quy8nPtsonZtiKcnitIPZ9vN2g0qR04 ai5w== MIME-Version: 1.0 References: <20200201162613.2023476-1-hjl.tools@gmail.com> <20200201173429.ep5siwkbhz5osehk@google.com> <20200201182148.722e4cc57xy2vyxb@gmail.com> <20200203005722.q7dyk6bajvxfdunp@gmail.com> In-Reply-To: <20200203005722.q7dyk6bajvxfdunp@gmail.com> From: "H.J. Lu" Date: Mon, 03 Feb 2020 01:18:00 -0000 Message-ID: Subject: Re: [PATCH] Issue an error for GC on __patchable_function_entries section To: Fangrui Song Cc: Binutils , Szabolcs Nagy Content-Type: multipart/mixed; boundary="0000000000001ec7ab059da1b3e2" X-IsSubscribed: yes X-SW-Source: 2020-02/txt/msg00027.txt.bz2 --0000000000001ec7ab059da1b3e2 Content-Type: text/plain; charset="UTF-8" Content-length: 3473 On Sun, Feb 2, 2020 at 4:57 PM Fangrui Song wrote: > > On 2020-02-02, H.J. Lu wrote: > >On Sat, Feb 1, 2020 at 10:21 AM Fangrui Song wrote: > >> > >> On 2020-02-01, H.J. Lu wrote: > >> >On Sat, Feb 1, 2020 at 9:34 AM Fangrui Song wrote: > >> >> > >> >> On 2020-02-01, H.J. Lu wrote: > >> >> >After all text sections have been garbage collected, if a > >> >> >__patchable_function_entries section references a section which > >> >> >wasn't marked, mark it with SEC_EXCLUDE and return NULL. Otherwise, > >> >> >keep it. > >> >> > > >> >> >Should it be handled in _bfd_elf_gc_mark_extra_sections? > >> >> > >> >> Thanks for paying attention to these feature requests. > >> >> > >> >> I referenced GNU as and ld requests at > >> >> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93492#c2 > >> >> If we > >> >> > >> >> * implement SHF_LINK_ORDER > >> > > >> >I am not sure if overloading (abusing?) SHF_LINK_ORDER is a good idea. > >> > >> It is an extension, but it is agreed by multiple parties on > >> https://groups.google.com/d/msg/generic-abi/_CbBM6T6WeM/eGF9A0AnAAAJ , > >> including HP-UX and Solaris developers. > >> > >> >> * allow multiple sections with the same name ("unique") > >> > > >> >This is orthogonal to this. I have a question on assembly syntax: > >> > > >> >https://sourceware.org/bugzilla/show_bug.cgi?id=25380#c1 > >> > > >> >> * teach GCC to use SHF_LINK_ORDER and "unique" (see https://gcc.gnu.org/ml/gcc/2020-01/msg00067.html) > >> >> > >> >> An ad-hoc gc marking will be unnecessary. > >> > > >> >We need to scan relocations in _patchable_function_entries section for > >> >references to garbage collected sections. We can either check section > >> >name or a SHF_XXX. But I don't know if SHF_LINK_ORDER is a good > >> >approach. > >> > >> We don't need to if we use multiple __patchable_function_entries > >> sections. Multiple sections are a must due to > >> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93195#c1 (COMDAT) > >> > >> > A symbol table entry with STB_LOCAL binding that is defined relative > >> > to one of a group's sections, and that is contained in a symbol table > >> > section that is not part of the group, must be discarded if the group > >> > members are discarded. References to this symbol table entry from > >> > outside the group are not allowed. > >> > >> The __patchable_function_entries creation logic I implemented in clang: > >> > >> foreach function foo > >> find the first function label defined in foo's section, name it $associated > >> ($associated can have 2 reasonable values, w/ or w/o -ffunction-sections) > >> get or create an id for $associated, say, $unique > >> > >> if foo is in a COMDAT named $comdat > >> .section __patchable_function_entries,"awo",@progbits,$associated,comdat,$comdat,unique,$unique > >> else > >> .section __patchable_function_entries,"awo",@progbits,$associated,unique,$unique > >> > >> This approach uses feature requests I referenced in *direct* links of > >> https://gcc.gnu.org/ml/gcc/2020-01/msg00067.html plus > >> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93492#c2 , > >> and addresses all bugs I filed. > >> > > > >Here is a linker patch to issue an error to avoid corrupt > >linker output. > > > >-- > >H.J. > > A typo in the description. > > - .section __patchable_function_entries,"awo",%progbits,_start > + .section __patchable_function_entries,"aw",%progbits > Fixed. Thanks. -- H.J. --0000000000001ec7ab059da1b3e2 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Issue-an-error-for-GC-on-__patchable_function_entrie.patch" Content-Disposition: attachment; filename="0001-Issue-an-error-for-GC-on-__patchable_function_entrie.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k65rl5ok0 Content-length: 3852 RnJvbSA4NjI4MTE3MTQzZDczNzQzYzZiNmQ1YTNlNDc2MTNkNDg4ODU4YjI2 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhq bC50b29sc0BnbWFpbC5jb20+CkRhdGU6IFN1biwgMiBGZWIgMjAyMCAxNToz MjozNCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIElzc3VlIGFuIGVycm9yIGZv ciBHQyBvbiBfX3BhdGNoYWJsZV9mdW5jdGlvbl9lbnRyaWVzIHNlY3Rpb24K Cl9fcGF0Y2hhYmxlX2Z1bmN0aW9uX2VudHJpZXMgc2VjdGlvbiBpcyBnZW5l cmF0ZWQgYnkgYSBjb21waWxlciB3aXRoCi1mcGF0Y2hhYmxlLWZ1bmN0aW9u LWVudHJ5PVhYLiAgVGhlIGFzc2VtYmx5IGNvZGUgbG9va3MgbGlrZSB0aGlz OgoKLS0tCgkudGV4dAoJLmdsb2JsCV9zdGFydAoJLnR5cGUJX3N0YXJ0LCAl ZnVuY3Rpb24KX3N0YXJ0OgoJLnNlY3Rpb24gX19wYXRjaGFibGVfZnVuY3Rp b25fZW50cmllcywiYXciLCVwcm9nYml0cwoJLmRjLmEJLkxQRkUxCgkudGV4 dAouTFBGRTE6CgkuYnl0ZSAwCi0tLQoKQnV0IC0tZ2Mtc2VjdGlvbnMgd2ls bCBzaWxlbnRseSByZW1vdmUgX19wYXRjaGFibGVfZnVuY3Rpb25fZW50cmll cwpzZWN0aW9uIGFuZCBnZW5lcmF0ZSBjb3JydXB0IHJlc3VsdC4gIFRoZSBs aW5rZXIgYnVnIHdpbGwgYmUgZml4ZWQKYnkgaW1wbGVtZW50aW5nIHRoZSAn bycgc2VjdGlvbiBmbGFnIHdpdGggbGlua2VkLXRvIHNlY3Rpb246CgpodHRw czovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0y NTM4MQoKSW4gdGhlIG1lYW50aW1lLCB0aGlzIHBhdGNoIGRpc2FsbG93cyBn YXJiYWdlIGNvbGxlY3Rpb24gb24KX19wYXRjaGFibGVfZnVuY3Rpb25fZW50 cmllcyBzZWN0aW9uIHdpdGhvdXQgbGlua2VkLXRvIHNlY3Rpb24uCgpiZmQv CgogCVBSIGxkLzI1NDkwCgkqIGVsZmxpbmsuYyAoX2JmZF9lbGZfZ2NfbWFy a19leHRyYV9zZWN0aW9ucyk6IElzc3VlIGFuIGVycm9yCglmb3IgZ2FyYmFn ZSBjb2xsZWN0aW9uIG9uIF9fcGF0Y2hhYmxlX2Z1bmN0aW9uX2VudHJpZXMg c2VjdGlvbgoJd2l0aG91dCBsaW5rZWQtdG8gc2VjdGlvbi4KCmxkLwoKIAlQ UiBsZC8yNTQ5MAoJKiB0ZXN0c3VpdGUvbGQtZWxmL3ByMjU0OTAtMS5kOiBO ZXcgZmlsZS4KCSogdGVzdHN1aXRlL2xkLWVsZi9wcjI1NDkwLTEuZDogTGlr ZXdpc2UuCi0tLQogYmZkL2VsZmxpbmsuYyAgICAgICAgICAgICAgICAgICB8 IDcgKysrKysrKwogbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NDkwLTEuZCB8 IDIgKysKIGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTQ5MC0xLnMgfCA5ICsr KysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspCiBj cmVhdGUgbW9kZSAxMDA2NDQgbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NDkw LTEuZAogY3JlYXRlIG1vZGUgMTAwNjQ0IGxkL3Rlc3RzdWl0ZS9sZC1lbGYv cHIyNTQ5MC0xLnMKCmRpZmYgLS1naXQgYS9iZmQvZWxmbGluay5jIGIvYmZk L2VsZmxpbmsuYwppbmRleCA1MjE3NTI4YTc5Yi4uZTRkOTI5NTJhYWYgMTAw NjQ0Ci0tLSBhL2JmZC9lbGZsaW5rLmMKKysrIGIvYmZkL2VsZmxpbmsuYwpA QCAtMTMzNTAsNiArMTMzNTAsMTMgQEAgX2JmZF9lbGZfZ2NfbWFya19leHRy YV9zZWN0aW9ucyAoc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sCiAJICAg ICAgJiYgKGlzZWMtPmZsYWdzICYgU0VDX0RFQlVHR0lORykKIAkgICAgICAm JiBDT05TVF9TVFJORVEgKGlzZWMtPm5hbWUsICIuZGVidWdfbGluZS4iKSkK IAkgICAgZGVidWdfZnJhZ19zZWVuID0gVFJVRTsKKwkgIGVsc2UgaWYgKHN0 cmNtcCAoYmZkX3NlY3Rpb25fbmFtZSAoaXNlYyksCisJCQkgICAiX19wYXRj aGFibGVfZnVuY3Rpb25fZW50cmllcyIpID09IDAKKwkJICAgJiYgZWxmX2xp bmtlZF90b19zZWN0aW9uIChpc2VjKSA9PSBOVUxMKQorCSAgICAgIGluZm8t PmNhbGxiYWNrcy0+ZWluZm8gKF8oIiVGJVA6ICVwQiglcEEpOiBlcnJvcjog IgorCQkJCQkibmVlZCBsaW5rZWQtdG8gc2VjdGlvbiAiCisJCQkJCSJmb3Ig LS1nYy1zZWN0aW9uc1xuIiksCisJCQkJICAgICAgaXNlYy0+b3duZXIsIGlz ZWMpOwogCX0KIAogICAgICAgLyogSWYgbm8gbm9uLW5vdGUgYWxsb2Mgc2Vj dGlvbiBpbiB0aGlzIGZpbGUgd2lsbCBiZSBrZXB0LCB0aGVuCmRpZmYgLS1n aXQgYS9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU0OTAtMS5kIGIvbGQvdGVz dHN1aXRlL2xkLWVsZi9wcjI1NDkwLTEuZApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uN2NjMmU2YWFhMWMKLS0tIC9kZXYvbnVs bAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU0OTAtMS5kCkBAIC0w LDAgKzEsMiBAQAorI2xkOiAtLWdjLXNlY3Rpb25zIC1lIF9zdGFydAorI2Vy cm9yOiAuKlwoX19wYXRjaGFibGVfZnVuY3Rpb25fZW50cmllc1wpOiBlcnJv cjogbmVlZCBsaW5rZWQtdG8gc2VjdGlvbiBmb3IgLS1nYy1zZWN0aW9ucwpk aWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NDkwLTEucyBi L2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTQ5MC0xLnMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjUxYmExZWE4MDE0Ci0tLSAv ZGV2L251bGwKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NDkwLTEu cwpAQCAtMCwwICsxLDkgQEAKKwkudGV4dAorCS5nbG9ibAlfc3RhcnQKKwku dHlwZQlfc3RhcnQsICVmdW5jdGlvbgorX3N0YXJ0OgorCS5zZWN0aW9uCV9f cGF0Y2hhYmxlX2Z1bmN0aW9uX2VudHJpZXMsImF3IiwlcHJvZ2JpdHMKKwku ZGMuYQkuTFBGRTEKKwkudGV4dAorLkxQRkUxOgorCS5ieXRlIDAKLS0gCjIu MjQuMQoK --0000000000001ec7ab059da1b3e2--