[PATCH] D65478: Create unique, but identically-named ELF sections for explicitly-sectioned functions and globals when using -function-sections and -data-sections.

Peter Collingbourne via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 7 15:51:44 PDT 2019


pcc added a comment.

In D65478#1620027 <https://reviews.llvm.org/D65478#1620027>, @rahmanl wrote:

> In D65478#1620005 <https://reviews.llvm.org/D65478#1620005>, @pcc wrote:
>
> > In D65478#1619990 <https://reviews.llvm.org/D65478#1619990>, @rahmanl wrote:
> >
> > > In D65478#1619713 <https://reviews.llvm.org/D65478#1619713>, @inglorion wrote:
> > >
> > > > Unfortunately, this causes some problems. It looks like the sections are created with different attributes than the original. This causes problems such as sections being writable when the original was read-only, including https://crbug.com/990942 where that causes program crashes. There is some more discussion on that bug report.
> > > >
> > > > I'll revert this to unbreak the Chromium build, and we can come up with a way forward from there.
> > >
> > >
> > > Hi Bob, 
> > >  We plan to gate this feature behind a condition: D65837 <https://reviews.llvm.org/D65837> 
> > >  I think in the Chromium case, what it needs is the -funique-section-names. More precisely, Chromium needs this flag only for the explicitly defined section "protected_memory", but I don't think it hurts to do it globally ( Chromium build may actually be using this flag anyways. Please confirm.)
> > >  If you think that the chromium build could use this flag, I will change D65837 <https://reviews.llvm.org/D65837> to do the check.
> >
> >
> > Chromium is depending on an implementation detail here and the revert is temporary until we can land a compiler feature that will let us avoid the implementation detail dependence. It doesn't seem necessary to change the condition that you've already implemented in D65837 <https://reviews.llvm.org/D65837>.
>
>
> Agreed.
>  However, I was thinking that the implementation detail relies on the assumption that only one section exists of the name "protected_memory" and if we somehow let the programmer specify that a particular section name can only appear once, it would resolve the problem. Enforcing the use of funique-section-names does look overkill.


Yeah, I feel like we should avoid letting this be toggleable though unless we really need to, and if we do add a toggle for it, it should be a separate flag from -funique-section-names.


Repository:
  rL LLVM

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

https://reviews.llvm.org/D65478





More information about the llvm-commits mailing list