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


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.


Thanks,
Roland

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]