Re: [PATCH v8 05/14] x86: conditionally place regular ASM functions into separate sections

From: Nicolas Pitre
Date: Fri Dec 03 2021 - 14:57:53 EST


On Fri, 3 Dec 2021, Peter Zijlstra wrote:

> On Fri, Dec 03, 2021 at 03:10:51PM +0100, Alexander Lobakin wrote:
> > From: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> > Date: Fri, 3 Dec 2021 10:44:10 +0100
> >
> > > On Thu, Dec 02, 2021 at 11:32:05PM +0100, Alexander Lobakin wrote:
> > > > Use the newly introduces macros to create unique separate sections
> > > > for (almost) every "regular" ASM function (i.e. for those which
> > > > aren't explicitly put into a specific one).
> > > > There should be no leftovers as input .text will be size-asserted
> > > > in the LD script generated for FG-KASLR.
> > >
> > > *groan*...
> > >
> > > Please, can't we do something like:
> > >
> > > #define SYM_PUSH_SECTION(name) \
> > > .if section == .text \
> > > .push_section .text.##name \
> > > .else \
> > > .push_section .text \
> > > .endif
> > >
> > > #define SYM_POP_SECTION() \
> > > .pop_section
> > >
> > > and wrap that inside the existing SYM_FUNC_START*() SYM_FUNC_END()
> > > macros.
> >
> > Ah I see. I asked about this in my previous mail and you replied
> > already (: Cool stuff, I'll use it, it simplifies things a lot.
>
> Note, I've no idea if it works. GAS and me aren't really on speaking
> terms. It would be my luck for that to be totally impossible, hjl?

Surely this would do it:

http://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=451133cefa839104


Nicolas