RE: [RFC 05/31] x86/compiler: Tweak __UNIQUE_ID naming

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxx>
> > ---
> >  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)






[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux Kernel]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux