This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH PR other/77609] Let the assembler choose ELF section types for miscellaneous named sections


On Sat, Feb 24, 2018 at 1:54 AM, Roland McGrath via gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
> Anybody want to look at this?
>
> It rebases identically on today's trunk.  I'd like to commit it to
> trunk and gcc-7-branch and gcc-6-branch ideally.

You are recreating the conditions used in
default_elf_asm_named_section, so I think you ought to have comments
referring back and forth between them.

This is OK with the two additional comments.

Ian



> On Thu, Sep 22, 2016 at 1:15 PM, Roland McGrath <mcgrathr@google.com> wrote:
>> ping?
>>
>> On Thu, Sep 15, 2016 at 4:09 PM, Roland McGrath <mcgrathr@google.com> wrote:
>>> This fixes https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77609 (which I've
>>> just filed).
>>>
>>> OK for trunk?
>>>
>>> I'm not sure if this kind of fix is appropriate for gcc-6-branch or not,
>>> but I'd like to backport it there too if it is acceptable.
>>>
>>>
>>> Thanks,
>>> Roland
>>>
>>>
>>> gcc/
>>> 2016-09-15  Roland McGrath  <<mcgrathr@google.com>
>>>
>>>         PR other/77609
>>>         * varasm.c (default_section_type_flags): Set SECTION_NOTYPE for
>>>         any section for which we don't know a specific type it should have,
>>>         regardless of name.  Previously this was done only for the exact
>>>         names ".init_array", ".fini_array", and ".preinit_array".
>>>
>>> diff --git a/gcc/varasm.c b/gcc/varasm.c
>>> index 00a9b30..0d7ea38 100644
>>> --- a/gcc/varasm.c
>>> +++ b/gcc/varasm.c
>>> @@ -6210,15 +6210,20 @@ default_section_type_flags (tree decl, const
>>> char *name, int reloc)
>>>        || strncmp (name, ".gnu.linkonce.tb.", 17) == 0)
>>>      flags |= SECTION_TLS | SECTION_BSS;
>>>
>>> -  /* These three sections have special ELF types.  They are neither
>>> -     SHT_PROGBITS nor SHT_NOBITS, so when changing sections we don't
>>> -     want to print a section type (@progbits or @nobits).  If someone
>>> -     is silly enough to emit code or TLS variables to one of these
>>> -     sections, then don't handle them specially.  */
>>> -  if (!(flags & (SECTION_CODE | SECTION_BSS | SECTION_TLS))
>>> -      && (strcmp (name, ".init_array") == 0
>>> -         || strcmp (name, ".fini_array") == 0
>>> -         || strcmp (name, ".preinit_array") == 0))
>>> +  /* Various sections have special ELF types that the assembler will
>>> +     assign by default based on the name.  They are neither SHT_PROGBITS
>>> +     nor SHT_NOBITS, so when changing sections we don't want to print a
>>> +     section type (@progbits or @nobits).  Rather than duplicating the
>>> +     assembler's knowledge of what those special name patterns are, just
>>> +     let the assembler choose the type if we don't know a specific
>>> +     reason to set it to something other than the default.  SHT_PROGBITS
>>> +     is the default for sections whose name is not specially known to
>>> +     the assembler, so it does no harm to leave the choice to the
>>> +     assembler when @progbits is the best thing we know to use.  If
>>> +     someone is silly enough to emit code or TLS variables to one of
>>> +     these sections, then don't handle them specially.  */
>>> +  if (!(flags & (SECTION_CODE | SECTION_BSS | SECTION_TLS | SECTION_ENTSIZE))
>>> +      && !(HAVE_COMDAT_GROUP && (flags & SECTION_LINKONCE)))
>>>      flags |= SECTION_NOTYPE;
>>>
>>>    return flags;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]