Re: [PATCH] treewide: Remove stringification from __alias macro definition
On Fri, Oct 30, 2020 at 4:07 AM Joe Perches wrote: > > Like the old __section macro, the __alias macro uses macro # stringification > to create quotes around the symbol name used in the __attribute__. Hmm... isn't this V2? It seems none of the Acks/Reviews were picked up, did something major change? Cheers, Miguel
Re: [PATCH] treewide: Remove stringification from __alias macro definition
On Thu, Oct 29, 2020 at 08:07:31PM -0700, Joe Perches wrote: > Like the old __section macro, the __alias macro uses macro # stringification > to create quotes around the symbol name used in the __attribute__. > > This can cause differences between gcc and clang when the stringification > itself contains a quote character. So avoid these differences by always > using quotes to define the aliased symbol. > > Remove the stringification and add quotes and when necessary a stringification > when existing uses have a ## concatenation. > > Signed-off-by: Joe Perches Reviewed-by: Nathan Chancellor > --- > > Unlike the __section macro conversion in commit 33def8498fdd > ("treewide: Convert macro and uses of __section(foo) to __section("foo")") > this one was done by hand. > > No other use of __alias exists in the kernel. > > This patch does _not_ convert any uses of __attribute__((alias(""))) > so it should not cause any compilation issues. > > arch/x86/boot/compressed/string.c | 6 +++--- > arch/x86/include/asm/syscall_wrapper.h | 2 +- > drivers/firmware/efi/runtime-wrappers.c | 2 +- > include/linux/compiler_attributes.h | 2 +- > kernel/kcsan/core.c | 10 +- > lib/crc32.c | 4 ++-- > lib/crypto/aes.c| 4 ++-- > mm/kasan/generic.c | 8 > 8 files changed, 19 insertions(+), 19 deletions(-) > > diff --git a/arch/x86/boot/compressed/string.c > b/arch/x86/boot/compressed/string.c > index 81fc1eaa3229..d38b122f51ef 100644 > --- a/arch/x86/boot/compressed/string.c > +++ b/arch/x86/boot/compressed/string.c > @@ -75,7 +75,7 @@ void *memcpy(void *dest, const void *src, size_t n) > } > > #ifdef CONFIG_KASAN > -extern void *__memset(void *s, int c, size_t n) __alias(memset); > -extern void *__memmove(void *dest, const void *src, size_t n) > __alias(memmove); > -extern void *__memcpy(void *dest, const void *src, size_t n) __alias(memcpy); > +extern void *__memset(void *s, int c, size_t n) __alias("memset"); > +extern void *__memmove(void *dest, const void *src, size_t n) > __alias("memmove"); > +extern void *__memcpy(void *dest, const void *src, size_t n) > __alias("memcpy"); > #endif > diff --git a/arch/x86/include/asm/syscall_wrapper.h > b/arch/x86/include/asm/syscall_wrapper.h > index a84333adeef2..f19d1bbbff3d 100644 > --- a/arch/x86/include/asm/syscall_wrapper.h > +++ b/arch/x86/include/asm/syscall_wrapper.h > @@ -69,7 +69,7 @@ extern long __ia32_sys_ni_syscall(const struct pt_regs > *regs); > long __##abi##_##name(const struct pt_regs *regs); \ > ALLOW_ERROR_INJECTION(__##abi##_##name, ERRNO); \ > long __##abi##_##name(const struct pt_regs *regs) \ > - __alias(__do_##name); > + __alias("__do_" #name); > > #define __SYS_STUBx(abi, name, ...) \ > long __##abi##_##name(const struct pt_regs *regs); \ > diff --git a/drivers/firmware/efi/runtime-wrappers.c > b/drivers/firmware/efi/runtime-wrappers.c > index 1410beaef5c3..14e380ac65d4 100644 > --- a/drivers/firmware/efi/runtime-wrappers.c > +++ b/drivers/firmware/efi/runtime-wrappers.c > @@ -162,7 +162,7 @@ static DEFINE_SEMAPHORE(efi_runtime_lock); > * Expose the EFI runtime lock to the UV platform > */ > #ifdef CONFIG_X86_UV > -extern struct semaphore __efi_uv_runtime_lock __alias(efi_runtime_lock); > +extern struct semaphore __efi_uv_runtime_lock __alias("efi_runtime_lock"); > #endif > > /* > diff --git a/include/linux/compiler_attributes.h > b/include/linux/compiler_attributes.h > index ea7b756b1c8f..4819512c9abd 100644 > --- a/include/linux/compiler_attributes.h > +++ b/include/linux/compiler_attributes.h > @@ -42,7 +42,7 @@ > /* > * gcc: > https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-alias-function-attribute > */ > -#define __alias(symbol) __attribute__((__alias__(#symbol))) > +#define __alias(symbol) __attribute__((__alias__(symbol))) > > /* > * gcc: > https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-aligned-function-attribute > diff --git a/kernel/kcsan/core.c b/kernel/kcsan/core.c > index 3994a217bde7..465f6cfc317c 100644 > --- a/kernel/kcsan/core.c > +++ b/kernel/kcsan/core.c > @@ -814,7 +814,7 @@ EXPORT_SYMBOL(__kcsan_check_access); > } \ > EXPORT_SYMBOL(__tsan_read##size); \ > void __tsan_unaligned_read##size(void *ptr)\ > - __alias(__tsan_read##size);\ > + __alias("__tsan_read" #size); \ > EXPORT_SYMBOL(__tsan_unaligned_read##size);\ > void __tsan_write##size(void *ptr);
[PATCH] treewide: Remove stringification from __alias macro definition
Like the old __section macro, the __alias macro uses macro # stringification to create quotes around the symbol name used in the __attribute__. This can cause differences between gcc and clang when the stringification itself contains a quote character. So avoid these differences by always using quotes to define the aliased symbol. Remove the stringification and add quotes and when necessary a stringification when existing uses have a ## concatenation. Signed-off-by: Joe Perches --- Unlike the __section macro conversion in commit 33def8498fdd ("treewide: Convert macro and uses of __section(foo) to __section("foo")") this one was done by hand. No other use of __alias exists in the kernel. This patch does _not_ convert any uses of __attribute__((alias(""))) so it should not cause any compilation issues. arch/x86/boot/compressed/string.c | 6 +++--- arch/x86/include/asm/syscall_wrapper.h | 2 +- drivers/firmware/efi/runtime-wrappers.c | 2 +- include/linux/compiler_attributes.h | 2 +- kernel/kcsan/core.c | 10 +- lib/crc32.c | 4 ++-- lib/crypto/aes.c| 4 ++-- mm/kasan/generic.c | 8 8 files changed, 19 insertions(+), 19 deletions(-) diff --git a/arch/x86/boot/compressed/string.c b/arch/x86/boot/compressed/string.c index 81fc1eaa3229..d38b122f51ef 100644 --- a/arch/x86/boot/compressed/string.c +++ b/arch/x86/boot/compressed/string.c @@ -75,7 +75,7 @@ void *memcpy(void *dest, const void *src, size_t n) } #ifdef CONFIG_KASAN -extern void *__memset(void *s, int c, size_t n) __alias(memset); -extern void *__memmove(void *dest, const void *src, size_t n) __alias(memmove); -extern void *__memcpy(void *dest, const void *src, size_t n) __alias(memcpy); +extern void *__memset(void *s, int c, size_t n) __alias("memset"); +extern void *__memmove(void *dest, const void *src, size_t n) __alias("memmove"); +extern void *__memcpy(void *dest, const void *src, size_t n) __alias("memcpy"); #endif diff --git a/arch/x86/include/asm/syscall_wrapper.h b/arch/x86/include/asm/syscall_wrapper.h index a84333adeef2..f19d1bbbff3d 100644 --- a/arch/x86/include/asm/syscall_wrapper.h +++ b/arch/x86/include/asm/syscall_wrapper.h @@ -69,7 +69,7 @@ extern long __ia32_sys_ni_syscall(const struct pt_regs *regs); long __##abi##_##name(const struct pt_regs *regs); \ ALLOW_ERROR_INJECTION(__##abi##_##name, ERRNO); \ long __##abi##_##name(const struct pt_regs *regs) \ - __alias(__do_##name); + __alias("__do_" #name); #define __SYS_STUBx(abi, name, ...)\ long __##abi##_##name(const struct pt_regs *regs); \ diff --git a/drivers/firmware/efi/runtime-wrappers.c b/drivers/firmware/efi/runtime-wrappers.c index 1410beaef5c3..14e380ac65d4 100644 --- a/drivers/firmware/efi/runtime-wrappers.c +++ b/drivers/firmware/efi/runtime-wrappers.c @@ -162,7 +162,7 @@ static DEFINE_SEMAPHORE(efi_runtime_lock); * Expose the EFI runtime lock to the UV platform */ #ifdef CONFIG_X86_UV -extern struct semaphore __efi_uv_runtime_lock __alias(efi_runtime_lock); +extern struct semaphore __efi_uv_runtime_lock __alias("efi_runtime_lock"); #endif /* diff --git a/include/linux/compiler_attributes.h b/include/linux/compiler_attributes.h index ea7b756b1c8f..4819512c9abd 100644 --- a/include/linux/compiler_attributes.h +++ b/include/linux/compiler_attributes.h @@ -42,7 +42,7 @@ /* * gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-alias-function-attribute */ -#define __alias(symbol) __attribute__((__alias__(#symbol))) +#define __alias(symbol) __attribute__((__alias__(symbol))) /* * gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-aligned-function-attribute diff --git a/kernel/kcsan/core.c b/kernel/kcsan/core.c index 3994a217bde7..465f6cfc317c 100644 --- a/kernel/kcsan/core.c +++ b/kernel/kcsan/core.c @@ -814,7 +814,7 @@ EXPORT_SYMBOL(__kcsan_check_access); } \ EXPORT_SYMBOL(__tsan_read##size); \ void __tsan_unaligned_read##size(void *ptr)\ - __alias(__tsan_read##size);\ + __alias("__tsan_read" #size); \ EXPORT_SYMBOL(__tsan_unaligned_read##size);\ void __tsan_write##size(void *ptr);\ void __tsan_write##size(void *ptr) \ @@ -823,7 +823,7 @@ EXPORT_SYMBOL(__kcsan_check_access); } \ EXPORT_SYMBOL(__tsan_write##size);