From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 44765 invoked by alias); 2 Feb 2020 23:44:26 -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 44756 invoked by uid 89); 2 Feb 2020 23:44:25 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.1 spammy=H*f:sk:CAMe9rO, HX-Received:sk:s16mr14 X-HELO: mail-ot1-f65.google.com Received: from mail-ot1-f65.google.com (HELO mail-ot1-f65.google.com) (209.85.210.65) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 02 Feb 2020 23:44:23 +0000 Received: by mail-ot1-f65.google.com with SMTP id b18so12005068otp.0 for ; Sun, 02 Feb 2020 15:44:23 -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=1vJcmZ+WDEAksOb8k17G6pBRysNrXuXTrn+A8h1BOzc=; b=tuAcR960IjYfSRp0bjfGXWYL+q4nUwPVAKTqWmCJXFckiSZ6urYE34gOSWKP9Xd/5k abfinBswZHnT8nyjEwbeVz/UdOysO4iHao7QJ2rn7Rep2GHK+5UvXNV7ihljG2KopdML oU1SK8hGtjCCMk/RBw/Y6qEY8u1eoE7LEyW1voQnXNMkm/2KNX1BwwvWlxvrvJOqFaY0 5msR7WQa3vBr8liAmiECgmbpcbcIfr3lWDuC0VDJbrDHv9UBsVhITZJW3/tfOdM46d6z YIQBSwa9xe70mEK4j7NI4J7K46QSHvoY9N/5tKygTnxpb1kxosv/yL/WWSe/Hrn4lelf FUbQ== MIME-Version: 1.0 References: <20200201162613.2023476-1-hjl.tools@gmail.com> <20200201173429.ep5siwkbhz5osehk@google.com> <20200201182148.722e4cc57xy2vyxb@gmail.com> In-Reply-To: <20200201182148.722e4cc57xy2vyxb@gmail.com> From: "H.J. Lu" Date: Sun, 02 Feb 2020 23:44:00 -0000 Message-ID: Subject: [PATCH] Issue an error for GC on __patchable_function_entries section To: Fangrui Song Cc: Binutils Content-Type: multipart/mixed; boundary="000000000000d7e65e059da06266" X-IsSubscribed: yes X-SW-Source: 2020-02/txt/msg00021.txt.bz2 --000000000000d7e65e059da06266 Content-Type: text/plain; charset="UTF-8" Content-length: 2964 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. --000000000000d7e65e059da06266 Content-Type: application/x-patch; 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_k65o76uh0 Content-length: 3864 RnJvbSAyN2MxYWY2M2I2YjRhNjllZmJkMGRiYWVmZjkxMmQwNjlhMTk5N2Q0 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhq bC50b29sc0BnbWFpbC5jb20+CkRhdGU6IFN1biwgMiBGZWIgMjAyMCAxNToz MjozNCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIElzc3VlIGFuIGVycm9yIGZv ciBHQyBvbiBfX3BhdGNoYWJsZV9mdW5jdGlvbl9lbnRyaWVzIHNlY3Rpb24K Cl9fcGF0Y2hhYmxlX2Z1bmN0aW9uX2VudHJpZXMgc2VjdGlvbiBpcyBnZW5l cmF0ZWQgYnkgYSBjb21waWxlciB3aXRoCi1mcGF0Y2hhYmxlLWZ1bmN0aW9u LWVudHJ5PVhYLiAgVGhlIGFzc2VtYmx5IGNvZGUgbG9va3MgbGlrZSB0aGlz OgoKLS0tCgkudGV4dAoJLmdsb2JsCV9zdGFydAoJLnR5cGUJX3N0YXJ0LCAl ZnVuY3Rpb24KX3N0YXJ0OgoJLnNlY3Rpb24gX19wYXRjaGFibGVfZnVuY3Rp b25fZW50cmllcywiYXdvIiwlcHJvZ2JpdHMsX3N0YXJ0CgkuZGMuYQkuTFBG RTEKCS50ZXh0Ci5MUEZFMToKCS5ieXRlIDAKLS0tCgpCdXQgLS1nYy1zZWN0 aW9ucyB3aWxsIHNpbGVudGx5IHJlbW92ZSBfX3BhdGNoYWJsZV9mdW5jdGlv bl9lbnRyaWVzCnNlY3Rpb24gYW5kIGdlbmVyYXRlIGNvcnJ1cHQgcmVzdWx0 LiAgVGhlIGxpbmtlciBidWcgd2lsbCBiZSBmaXhlZApieSBpbXBsZW1lbnRp bmcgdGhlICdvJyBzZWN0aW9uIGZsYWcgd2l0aCBsaW5rZWQtdG8gc2VjdGlv bjoKCmh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcu Y2dpP2lkPTI1MzgxCgpJbiB0aGUgbWVhbnRpbWUsIHRoaXMgcGF0Y2ggZGlz YWxsb3dzIGdhcmJhZ2UgY29sbGVjdGlvbiBvbgpfX3BhdGNoYWJsZV9mdW5j dGlvbl9lbnRyaWVzIHNlY3Rpb24gd2l0aG91dCBsaW5rZWQtdG8gc2VjdGlv bi4KCmJmZC8KCiAJUFIgbGQvMjU0OTAKCSogZWxmbGluay5jIChfYmZkX2Vs Zl9nY19tYXJrX2V4dHJhX3NlY3Rpb25zKTogSXNzdWUgYW4gZXJyb3IKCWZv ciBnYXJiYWdlIGNvbGxlY3Rpb24gb24gX19wYXRjaGFibGVfZnVuY3Rpb25f ZW50cmllcyBzZWN0aW9uCgl3aXRob3V0IGxpbmtlZC10byBzZWN0aW9uLgoK bGQvCgogCVBSIGxkLzI1NDkwCgkqIHRlc3RzdWl0ZS9sZC1lbGYvcHIyNTQ5 MC0xLmQ6IE5ldyBmaWxlLgoJKiB0ZXN0c3VpdGUvbGQtZWxmL3ByMjU0OTAt MS5kOiBMaWtld2lzZS4KLS0tCiBiZmQvZWxmbGluay5jICAgICAgICAgICAg ICAgICAgIHwgNyArKysrKysrCiBsZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU0 OTAtMS5kIHwgMiArKwogbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NDkwLTEu cyB8IDkgKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlv bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsZC90ZXN0c3VpdGUvbGQtZWxm L3ByMjU0OTAtMS5kCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGQvdGVzdHN1aXRl L2xkLWVsZi9wcjI1NDkwLTEucwoKZGlmZiAtLWdpdCBhL2JmZC9lbGZsaW5r LmMgYi9iZmQvZWxmbGluay5jCmluZGV4IDUyMTc1MjhhNzliLi5lNGQ5Mjk1 MmFhZiAxMDA2NDQKLS0tIGEvYmZkL2VsZmxpbmsuYworKysgYi9iZmQvZWxm bGluay5jCkBAIC0xMzM1MCw2ICsxMzM1MCwxMyBAQCBfYmZkX2VsZl9nY19t YXJrX2V4dHJhX3NlY3Rpb25zIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5m bywKIAkgICAgICAmJiAoaXNlYy0+ZmxhZ3MgJiBTRUNfREVCVUdHSU5HKQog CSAgICAgICYmIENPTlNUX1NUUk5FUSAoaXNlYy0+bmFtZSwgIi5kZWJ1Z19s aW5lLiIpKQogCSAgICBkZWJ1Z19mcmFnX3NlZW4gPSBUUlVFOworCSAgZWxz ZSBpZiAoc3RyY21wIChiZmRfc2VjdGlvbl9uYW1lIChpc2VjKSwKKwkJCSAg ICJfX3BhdGNoYWJsZV9mdW5jdGlvbl9lbnRyaWVzIikgPT0gMAorCQkgICAm JiBlbGZfbGlua2VkX3RvX3NlY3Rpb24gKGlzZWMpID09IE5VTEwpCisJICAg ICAgaW5mby0+Y2FsbGJhY2tzLT5laW5mbyAoXygiJUYlUDogJXBCKCVwQSk6 IGVycm9yOiAiCisJCQkJCSJuZWVkIGxpbmtlZC10byBzZWN0aW9uICIKKwkJ CQkJImZvciAtLWdjLXNlY3Rpb25zXG4iKSwKKwkJCQkgICAgICBpc2VjLT5v d25lciwgaXNlYyk7CiAJfQogCiAgICAgICAvKiBJZiBubyBub24tbm90ZSBh bGxvYyBzZWN0aW9uIGluIHRoaXMgZmlsZSB3aWxsIGJlIGtlcHQsIHRoZW4K ZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTQ5MC0xLmQg Yi9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU0OTAtMS5kCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43Y2MyZTZhYWExYwotLS0g L2Rldi9udWxsCisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTQ5MC0x LmQKQEAgLTAsMCArMSwyIEBACisjbGQ6IC0tZ2Mtc2VjdGlvbnMgLWUgX3N0 YXJ0CisjZXJyb3I6IC4qXChfX3BhdGNoYWJsZV9mdW5jdGlvbl9lbnRyaWVz XCk6IGVycm9yOiBuZWVkIGxpbmtlZC10byBzZWN0aW9uIGZvciAtLWdjLXNl Y3Rpb25zCmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU0 OTAtMS5zIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NDkwLTEucwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTFiYTFlYTgw MTQKLS0tIC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL3By MjU0OTAtMS5zCkBAIC0wLDAgKzEsOSBAQAorCS50ZXh0CisJLmdsb2JsCV9z dGFydAorCS50eXBlCV9zdGFydCwgJWZ1bmN0aW9uCitfc3RhcnQ6CisJLnNl Y3Rpb24JX19wYXRjaGFibGVfZnVuY3Rpb25fZW50cmllcywiYXciLCVwcm9n Yml0cworCS5kYy5hCS5MUEZFMQorCS50ZXh0CisuTFBGRTE6CisJLmJ5dGUg MAotLSAKMi4yNC4xCgo= --000000000000d7e65e059da06266--