summaryrefslogtreecommitdiff
path: root/include/linux/export.h
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2025-04-04 23:04:35 -0700
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2025-04-04 23:04:35 -0700
commit946661e3bef8efa11ba8079d4ebafe6fc3b0aaad (patch)
treea90605abb7bb65503a2d3f93a79e19a01aaa5e89 /include/linux/export.h
parentfd10709e28d2fa9015667aee56d92099fc97aa0d (diff)
parent4d395cb071a343196ca524d3694790f06978fe91 (diff)
downloadlwn-946661e3bef8efa11ba8079d4ebafe6fc3b0aaad.tar.gz
lwn-946661e3bef8efa11ba8079d4ebafe6fc3b0aaad.zip
Merge branch 'next' into for-linus
Prepare input updates for 6.15 merge window.
Diffstat (limited to 'include/linux/export.h')
-rw-r--r--include/linux/export.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/include/linux/export.h b/include/linux/export.h
index 2633df4d31e6..a8c23d945634 100644
--- a/include/linux/export.h
+++ b/include/linux/export.h
@@ -52,9 +52,24 @@
#else
+#ifdef CONFIG_GENDWARFKSYMS
+/*
+ * With CONFIG_GENDWARFKSYMS, ensure the compiler emits debugging
+ * information for all exported symbols, including those defined in
+ * different TUs, by adding a __gendwarfksyms_ptr_<symbol> pointer
+ * that's discarded during the final link.
+ */
+#define __GENDWARFKSYMS_EXPORT(sym) \
+ static typeof(sym) *__gendwarfksyms_ptr_##sym __used \
+ __section(".discard.gendwarfksyms") = &sym;
+#else
+#define __GENDWARFKSYMS_EXPORT(sym)
+#endif
+
#define __EXPORT_SYMBOL(sym, license, ns) \
extern typeof(sym) sym; \
__ADDRESSABLE(sym) \
+ __GENDWARFKSYMS_EXPORT(sym) \
asm(__stringify(___EXPORT_SYMBOL(sym, license, ns)))
#endif