Nick Desaulniers
unread,Sep 29, 2020, 3:07:20 PM9/29/20Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Sign in to report message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to Andrew Morton, Nick Desaulniers, kbuild test robot, Kees Cook, Nathan Chancellor, Masahiro Yamada, Matthias Maennich, Jessica Yu, Greg Kroah-Hartman, Will Deacon, linux-...@vger.kernel.org, clang-bu...@googlegroups.com
When enabling CONFIG_TRIM_UNUSED_KSYMS, the linker will warn about the
orphan sections:
(".discard.ksym") is being placed in '".discard.ksym"'
repeatedly when linking vmlinux. This is because the stringification
operator, `#`, in the preprocessor escapes strings. GCC and Clang
differ in how they treat section names that contain \".
The portable solution is to not use a string literal with the
preprocessor stringification operator.
Link:
https://bugs.llvm.org/show_bug.cgi?id=42950
Link:
https://github.com/ClangBuiltLinux/linux/issues/1166
Fixes: commit bbda5ec671d3 ("kbuild: simplify dependency generation for CONFIG_TRIM_UNUSED_KSYMS")
Reported-by: kbuild test robot <
l...@intel.com>
Suggested-by: Kees Cook <
kees...@chromium.org>
Signed-off-by: Nick Desaulniers <
ndesau...@google.com>
---
include/linux/export.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/linux/export.h b/include/linux/export.h
index fceb5e855717..8933ff6ad23a 100644
--- a/include/linux/export.h
+++ b/include/linux/export.h
@@ -130,7 +130,7 @@ struct kernel_symbol {
* discarded in the final link stage.
*/
#define __ksym_marker(sym) \
- static int __ksym_marker_##sym[0] __section(".discard.ksym") __used
+ static int __ksym_marker_##sym[0] __section(.discard.ksym) __used
#define __EXPORT_SYMBOL(sym, sec, ns) \
__ksym_marker(sym); \
--
2.28.0.709.gb0816b6eb0-goog