This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH PR other/77609] Let the assembler choose ELF section types for miscellaneous named sections
- From: "Ian Lance Taylor via gcc-patches" <gcc-patches at gcc dot gnu dot org>
- To: Roland McGrath <mcgrathr at google dot com>
- Cc: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>, rguenth at gcc dot gnu dot org
- Date: Mon, 26 Feb 2018 20:11:44 -0800
- Subject: Re: [PATCH PR other/77609] Let the assembler choose ELF section types for miscellaneous named sections
- Authentication-results: sourceware.org; auth=none
- References: <CAB=4xhrks=KVuKKBOxwS9iV9==sdhKmu_9RqopiSeKC-+Hb08g@mail.gmail.com> <CAB=4xhqjPwteqOf7TD-22AG6--wLPGZiSF9XZUb8C_nDvW2S5A@mail.gmail.com> <CAB=4xhqeUHgEBcV5dJHSNL8OMhnF_0EmKsP0Nx1OLQmk0hz3gA@mail.gmail.com>
- Reply-to: Ian Lance Taylor <iant at google dot com>
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;