[llvm] r338968 - Revert "Add a warning if someone attempts to add extra section flags to sections"

Eric Christopher via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 6 23:37:11 PDT 2018


Thanks!

On Mon, Aug 6, 2018, 11:26 PM Hans Wennborg <hans at chromium.org> wrote:

> Merged to 7.0 in r339099.
>
> On Sun, Aug 5, 2018 at 4:23 PM, Eric Christopher via llvm-commits
> <llvm-commits at lists.llvm.org> wrote:
> > Author: echristo
> > Date: Sun Aug  5 07:23:37 2018
> > New Revision: 338968
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=338968&view=rev
> > Log:
> > Revert "Add a warning if someone attempts to add extra section flags to
> sections"
> >
> > There are a bunch of edge cases and inconsistencies in how we're
> emitting sections
> > cause this warning to fire and it needs more work.
> >
> > This reverts commit r335558.
> >
> > Removed:
> >     llvm/trunk/test/MC/ELF/extra-section-flags.s
> > Modified:
> >     llvm/trunk/lib/MC/MCParser/ELFAsmParser.cpp
> >
> > Modified: llvm/trunk/lib/MC/MCParser/ELFAsmParser.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCParser/ELFAsmParser.cpp?rev=338968&r1=338967&r2=338968&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/lib/MC/MCParser/ELFAsmParser.cpp (original)
> > +++ llvm/trunk/lib/MC/MCParser/ELFAsmParser.cpp Sun Aug  5 07:23:37 2018
> > @@ -481,34 +481,6 @@ static bool hasPrefix(StringRef SectionN
> >    return SectionName.startswith(Prefix) || SectionName ==
> Prefix.drop_back();
> >  }
> >
> > -// Return a set of section flags based on the section name that can then
> > -// be augmented later, otherwise return 0 if we don't have any
> reasonable
> > -// defaults.
> > -static unsigned defaultSectionFlags(StringRef SectionName) {
> > -
> > -  if (hasPrefix(SectionName, ".rodata.cst"))
> > -    return ELF::SHF_ALLOC | ELF::SHF_MERGE;
> > -
> > -  if (hasPrefix(SectionName, ".rodata.") || SectionName == ".rodata1")
> > -    return ELF::SHF_ALLOC;
> > -
> > -  if (SectionName == ".fini" || SectionName == ".init" ||
> > -      hasPrefix(SectionName, ".text."))
> > -    return ELF::SHF_ALLOC | ELF::SHF_EXECINSTR;
> > -
> > -  if (hasPrefix(SectionName, ".data.") || SectionName == ".data1" ||
> > -      hasPrefix(SectionName, ".bss.") ||
> > -      hasPrefix(SectionName, ".init_array.") ||
> > -      hasPrefix(SectionName, ".fini_array.") ||
> > -      hasPrefix(SectionName, ".preinit_array."))
> > -    return ELF::SHF_ALLOC | ELF::SHF_WRITE;
> > -
> > -  if (hasPrefix(SectionName, ".tdata.") || hasPrefix(SectionName,
> ".tbss."))
> > -    return ELF::SHF_ALLOC | ELF::SHF_WRITE | ELF::SHF_TLS;
> > -
> > -  return 0;
> > -}
> > -
> >  bool ELFAsmParser::ParseSectionArguments(bool IsPush, SMLoc loc) {
> >    StringRef SectionName;
> >
> > @@ -518,13 +490,27 @@ bool ELFAsmParser::ParseSectionArguments
> >    StringRef TypeName;
> >    int64_t Size = 0;
> >    StringRef GroupName;
> > +  unsigned Flags = 0;
> >    const MCExpr *Subsection = nullptr;
> >    bool UseLastGroup = false;
> >    MCSymbolELF *Associated = nullptr;
> >    int64_t UniqueID = ~0;
> >
> > -  // Set the default section flags first in case no others are given.
> > -  unsigned Flags = defaultSectionFlags(SectionName);
> > +  // Set the defaults first.
> > +  if (hasPrefix(SectionName, ".rodata.") || SectionName == ".rodata1")
> > +    Flags |= ELF::SHF_ALLOC;
> > +  else if (SectionName == ".fini" || SectionName == ".init" ||
> > +           hasPrefix(SectionName, ".text."))
> > +    Flags |= ELF::SHF_ALLOC | ELF::SHF_EXECINSTR;
> > +  else if (hasPrefix(SectionName, ".data.") || SectionName == ".data1"
> ||
> > +           hasPrefix(SectionName, ".bss.") ||
> > +           hasPrefix(SectionName, ".init_array.") ||
> > +           hasPrefix(SectionName, ".fini_array.") ||
> > +           hasPrefix(SectionName, ".preinit_array."))
> > +    Flags |= ELF::SHF_ALLOC | ELF::SHF_WRITE;
> > +  else if (hasPrefix(SectionName, ".tdata.") ||
> > +           hasPrefix(SectionName, ".tbss."))
> > +    Flags |= ELF::SHF_ALLOC | ELF::SHF_WRITE | ELF::SHF_TLS;
> >
> >    if (getLexer().is(AsmToken::Comma)) {
> >      Lex();
> > @@ -552,12 +538,6 @@ bool ELFAsmParser::ParseSectionArguments
> >
> >      if (extraFlags == -1U)
> >        return TokError("unknown flag");
> > -
> > -    // If we found additional section flags on a known section then
> give a
> > -    // warning.
> > -    if (Flags && Flags != extraFlags)
> > -      Warning(loc, "setting incorrect section attributes for " +
> SectionName);
> > -
> >      Flags |= extraFlags;
> >
> >      bool Mergeable = Flags & ELF::SHF_MERGE;
> >
> > Removed: llvm/trunk/test/MC/ELF/extra-section-flags.s
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ELF/extra-section-flags.s?rev=338967&view=auto
> >
> ==============================================================================
> > --- llvm/trunk/test/MC/ELF/extra-section-flags.s (original)
> > +++ llvm/trunk/test/MC/ELF/extra-section-flags.s (removed)
> > @@ -1,12 +0,0 @@
> > -# RUN: llvm-mc -triple x86_64-unknown-unknown -filetype=obj %s -o
> /dev/null 2>&1 | FileCheck %s
> > -
> > -.section .rodata, "ax"
> > -# CHECK: warning: setting incorrect section attributes for .rodata
> > -nop
> > -
> > -.section .rodata, "a"
> > -nop
> > -.section .rodata.cst4, "aM", at progbits,8
> > -nop
> > -# CHECK-NOT: warning:
> > -
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180806/7ed84eec/attachment.html>


More information about the llvm-commits mailing list