[PATCH] D79590: [lld] Add a new output section ".text.unknown" for funtions with unknown hotness info especially in sampleFDO

Wei Mi via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu May 7 15:14:28 PDT 2020


wmi marked an inline comment as done.
wmi added inline comments.


================
Comment at: lld/ELF/Writer.cpp:136
     for (StringRef v :
-         {".text.hot.", ".text.unlikely.", ".text.startup.", ".text.exit."})
+         {".text.hot.", ".text.unknown.", ".text.unlikely.", ".text.startup.", ".text.exit."})
       if (isSectionPrefix(v, s->name))
----------------
MaskRay wrote:
> tmsriram wrote:
> > wmi wrote:
> > > tmsriram wrote:
> > > > The new prefix looks good to me.
> > > > 
> > > > Just curious about input sections that are named just ".text.hot" or ".text.unknown" without the traling period.  This could happen with -fno-unique-section-names I think?  In that case, this handling seems insufficient.  This is related to -keep-text-section-prefix in general. I can take a look at this.
> > > isSectionPrefix seems considering the section name without trailing period (prefix.drop_back())?
> > > 
> > > ```
> > > static bool isSectionPrefix(StringRef prefix, StringRef name) {
> > >   return name.startswith(prefix) || name == prefix.drop_back();
> > > }
> > > ```
> > Ah, thanks!
> I know what you are discussing... (And I mentioned this problem internally previously)
> 
> To prevent a linker change (the GNU ld and gold approach has an small annoying behavior), I created https://reviews.llvm.org/D79600
I am not familiar with linker so I don't know the behavior of GNU ld and gold, but lld seems recognize ".text.hot" and return ".text.hot." for it, so I don't fully understand the intention of D79600, could you explain it a little bit? Thanks.


Repository:
  rLLD LLVM Linker

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D79590/new/

https://reviews.llvm.org/D79590





More information about the llvm-commits mailing list