[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <9b8f1beb0d444a84ab500ebdac756eba@AcuMS.aculab.com>
Date: Sun, 8 Sep 2024 19:43:59 +0000
From: David Laight <David.Laight@...LAB.COM>
To: 'Peter Zijlstra' <peterz@...radead.org>, Josh Poimboeuf
<jpoimboe@...nel.org>
CC: "live-patching@...r.kernel.org" <live-patching@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"x86@...nel.org" <x86@...nel.org>, Miroslav Benes <mbenes@...e.cz>, "Petr
Mladek" <pmladek@...e.com>, Joe Lawrence <joe.lawrence@...hat.com>, "Jiri
Kosina" <jikos@...nel.org>, Marcos Paulo de Souza <mpdesouza@...e.com>, "Song
Liu" <song@...nel.org>
Subject: RE: [RFC 05/31] x86/compiler: Tweak __UNIQUE_ID naming
From: Peter Zijlstra
> Sent: 03 September 2024 08:57
>
> On Mon, Sep 02, 2024 at 08:59:48PM -0700, Josh Poimboeuf wrote:
> > Add an underscore between the "name" and the counter so tooling can
> > distinguish between the non-unique and unique portions of the symbol
> > name.
> >
> > This will come in handy for "objtool klp diff".
> >
> > Signed-off-by: Josh Poimboeuf <jpoimboe@...nel.org>
> > ---
> > include/linux/compiler.h | 8 ++++++--
> > 1 file changed, 6 insertions(+), 2 deletions(-)
> >
> > diff --git a/include/linux/compiler.h b/include/linux/compiler.h
> > index 8c252e073bd8..d3f100821d45 100644
> > --- a/include/linux/compiler.h
> > +++ b/include/linux/compiler.h
> > @@ -186,7 +186,11 @@ void ftrace_likely_update(struct ftrace_likely_data *f, int val,
> > __asm__ ("" : "=r" (var) : "0" (var))
> > #endif
> >
> > -#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
> > +/* Format: __UNIQUE_ID_<name>_<__COUNTER__> */
> > +#define __UNIQUE_ID(name) \
> > + __PASTE(__UNIQUE_ID_, \
> > + __PASTE(name, \
> > + __PASTE(_, __COUNTER__)))
>
> OK, that's just painful to read; how about so?
>
> __PASTE(__UNIQUE_ID_, \
> __PASTE(name, \
> __PASTE(_, __COUNTER)))
Why not just generate name_nnnnn?
I believe it that the 'prefix' was added to allow multiple unique names be
generated on a single line on versions of gcc that didn't support __COUNTER__
and __LINE__ was used instead.
So prior to that the result would have been __UNIQUE_ID_nnnn with no indication
of the variable name.
In one of the min/max changes I suggested just passing __COUNTER__ through
the required 2 #defines and then just appending it to the variable name.
IIRC Linus liked that idea :-)
Need to find time to write the patch...
After all __PASTE() itself is only really necessary for a K&R C cpp.
Possibly still relevant for .S files - not sure.
(You had to generate a/**/b to get ab when the comment was removed.)
David
-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)
Powered by blists - more mailing lists