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 <mcgra...@google.com> wrote:
> ping?
>
> On Thu, Sep 15, 2016 at 4:09 PM, Roland McGrath <mcgra...@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  <<mcgra...@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;

Reply via email to