[PATCH] Issue an error for GC on __patchable_function_entries section
H.J. Lu
hjl.tools@gmail.com
Sun Feb 2 23:44:00 GMT 2020
More information about the Binutils mailing list
Sun Feb 2 23:44:00 GMT 2020
- Previous message (by thread): [PATCH] x86: Keep __patchable_function_entries sections with --gc-sections
- Next message (by thread): [PATCH] Issue an error for GC on __patchable_function_entries section
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Sat, Feb 1, 2020 at 10:21 AM Fangrui Song <i@maskray.me> wrote: > > On 2020-02-01, H.J. Lu wrote: > >On Sat, Feb 1, 2020 at 9:34 AM Fangrui Song <i@maskray.me> 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. -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-Issue-an-error-for-GC-on-__patchable_function_entrie.patch Type: application/x-patch Size: 2849 bytes Desc: not available URL: <https://sourceware.org/pipermail/binutils/attachments/20200202/abf3b5bd/attachment.bin>
- Previous message (by thread): [PATCH] x86: Keep __patchable_function_entries sections with --gc-sections
- Next message (by thread): [PATCH] Issue an error for GC on __patchable_function_entries section
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Binutils mailing list