From: Arnd Bergmann <arnd@arndb.de>
To: linux-kernel <linux-kernel@vger.kernel.org>
Cc: linux-arch@vger.kernel.org, Matthew Wilcox <matthew@wil.cx>,
David Woodhouse <dwmw2@infradead.org>,
Al Viro <viro@zeniv.linux.org.uk>,
Rusty Russell <rusty@rustcorp.com.au>,
linuxppc-dev@ozlabs.org
Subject: [RFC 1/3] add support for exporting symbols from .S files
Date: Mon, 11 Aug 2008 16:18:07 +0200 [thread overview]
Message-ID: <200808111618.08206.arnd@arndb.de> (raw)
In-Reply-To: <200808111606.44103.arnd@arndb.de>
This makes it possible to export symbols from assembly files, instead
of having to export them through an extra ksyms.c file.
I found this nicer to implement using a gas macro than a cpp macro.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
--- a/include/linux/module.h
+++ b/include/linux/module.h
@@ -1,5 +1,7 @@
#ifndef _LINUX_MODULE_H
#define _LINUX_MODULE_H
+
+#ifndef __ASSEMBLY__
/*
* Dynamic loading of modules into the kernel.
*
@@ -605,4 +607,54 @@ static inline void module_remove_modinfo_attrs(struct module *mod)
#define __MODULE_STRING(x) __stringify(x)
+#else /* __ASSEMBLY__ */
+#include <asm/types.h>
+
+#ifdef CONFIG_MODULES
+.macro __EXPORT_SYMBOL sym section symtab strtab
+ .section \section,"a",@progbits
+ .type \symtab, @object
+ .ifeq BITS_PER_LONG-32
+ .align 3
+\symtab:
+ .long \sym
+ .long \strtab
+ .else
+ .align 4
+\symtab:
+ .quad \sym
+ .quad \strtab
+ .endif
+ .size \symtab,.-\symtab
+ .previous
+
+ .section __ksymtab_strings,"a",@progbits
+ .type \strtab, @object
+\strtab:
+ .string "\sym"
+ .size \strtab,.-\strtab
+ .previous
+ .endm
+
+#define EXPORT_SYMBOL(sym) \
+ __EXPORT_SYMBOL sym,__ksymtab,__ksymtab_ ## sym,__kstrtab_ ## sym
+#define EXPORT_SYMBOL_GPL(sym) \
+ __EXPORT_SYMBOL sym,__ksymtab_gpl,__ksymtab_ ## sym,__kstrtab_ ## sym
+#define EXPORT_SYMBOL_GPL_FUTURE(sym) \
+ __EXPORT_SYMBOL sym,__ksymtab_gpl_future,__ksymtab_ ## sym,__kstrtab_ ## sym
+#define EXPORT_UNUSED_SYMBOL(sym) \
+ __EXPORT_SYMBOL sym,__ksymtab_unused,__ksymtab_ ## sym,__kstrtab_ ## sym
+#define EXPORT_UNUSED_SYMBOL_GPL(sym) \
+ __EXPORT_SYMBOL sym,__ksymtab_unused_gpl,__ksymtab_ ## sym,__kstrtab_ ## sym
+
+#else /* CONFIG_MODULES... */
+#define EXPORT_SYMBOL(sym)
+#define EXPORT_SYMBOL_GPL(sym)
+#define EXPORT_SYMBOL_GPL_FUTURE(sym)
+#define EXPORT_UNUSED_SYMBOL(sym)
+#define EXPORT_UNUSED_SYMBOL_GPL(sym)
+#endif /* !CONFIG_MODULES... */
+
+#endif /* __ASSEMBLY__ */
+
#endif /* _LINUX_MODULE_H */
WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@arndb.de>
To: "linux-kernel" <linux-kernel@vger.kernel.org>
Cc: linux-arch@vger.kernel.org, Matthew Wilcox <matthew@wil.cx>,
Rusty Russell <rusty@rustcorp.com.au>,
linuxppc-dev@ozlabs.org, Al Viro <viro@zeniv.linux.org.uk>,
David Woodhouse <dwmw2@infradead.org>
Subject: [RFC 1/3] add support for exporting symbols from .S files
Date: Mon, 11 Aug 2008 16:18:07 +0200 [thread overview]
Message-ID: <200808111618.08206.arnd@arndb.de> (raw)
In-Reply-To: <200808111606.44103.arnd@arndb.de>
This makes it possible to export symbols from assembly files, instead
of having to export them through an extra ksyms.c file.
I found this nicer to implement using a gas macro than a cpp macro.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
--- a/include/linux/module.h
+++ b/include/linux/module.h
@@ -1,5 +1,7 @@
#ifndef _LINUX_MODULE_H
#define _LINUX_MODULE_H
+
+#ifndef __ASSEMBLY__
/*
* Dynamic loading of modules into the kernel.
*
@@ -605,4 +607,54 @@ static inline void module_remove_modinfo_attrs(struct module *mod)
#define __MODULE_STRING(x) __stringify(x)
+#else /* __ASSEMBLY__ */
+#include <asm/types.h>
+
+#ifdef CONFIG_MODULES
+.macro __EXPORT_SYMBOL sym section symtab strtab
+ .section \section,"a",@progbits
+ .type \symtab, @object
+ .ifeq BITS_PER_LONG-32
+ .align 3
+\symtab:
+ .long \sym
+ .long \strtab
+ .else
+ .align 4
+\symtab:
+ .quad \sym
+ .quad \strtab
+ .endif
+ .size \symtab,.-\symtab
+ .previous
+
+ .section __ksymtab_strings,"a",@progbits
+ .type \strtab, @object
+\strtab:
+ .string "\sym"
+ .size \strtab,.-\strtab
+ .previous
+ .endm
+
+#define EXPORT_SYMBOL(sym) \
+ __EXPORT_SYMBOL sym,__ksymtab,__ksymtab_ ## sym,__kstrtab_ ## sym
+#define EXPORT_SYMBOL_GPL(sym) \
+ __EXPORT_SYMBOL sym,__ksymtab_gpl,__ksymtab_ ## sym,__kstrtab_ ## sym
+#define EXPORT_SYMBOL_GPL_FUTURE(sym) \
+ __EXPORT_SYMBOL sym,__ksymtab_gpl_future,__ksymtab_ ## sym,__kstrtab_ ## sym
+#define EXPORT_UNUSED_SYMBOL(sym) \
+ __EXPORT_SYMBOL sym,__ksymtab_unused,__ksymtab_ ## sym,__kstrtab_ ## sym
+#define EXPORT_UNUSED_SYMBOL_GPL(sym) \
+ __EXPORT_SYMBOL sym,__ksymtab_unused_gpl,__ksymtab_ ## sym,__kstrtab_ ## sym
+
+#else /* CONFIG_MODULES... */
+#define EXPORT_SYMBOL(sym)
+#define EXPORT_SYMBOL_GPL(sym)
+#define EXPORT_SYMBOL_GPL_FUTURE(sym)
+#define EXPORT_UNUSED_SYMBOL(sym)
+#define EXPORT_UNUSED_SYMBOL_GPL(sym)
+#endif /* !CONFIG_MODULES... */
+
+#endif /* __ASSEMBLY__ */
+
#endif /* _LINUX_MODULE_H */
next prev parent reply other threads:[~2008-08-11 14:39 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-11 14:06 RFC: killing ksyms.c Arnd Bergmann
2008-08-11 14:17 ` [RFC 2/3] powerpc: export all symbols from the definition file Arnd Bergmann
2008-08-11 14:17 ` Arnd Bergmann
2008-08-11 14:53 ` Geert Uytterhoeven
2008-08-11 14:53 ` Geert Uytterhoeven
2008-08-11 15:27 ` Arnd Bergmann
2008-08-11 15:27 ` Arnd Bergmann
2008-08-11 14:18 ` Arnd Bergmann [this message]
2008-08-11 14:18 ` [RFC 1/3] add support for exporting symbols from .S files Arnd Bergmann
2008-08-11 14:56 ` David Woodhouse
2008-08-11 14:56 ` David Woodhouse
2008-08-12 2:03 ` Rusty Russell
2008-08-12 2:03 ` Rusty Russell
2008-08-12 6:43 ` Stephen Rothwell
2008-08-12 6:43 ` Stephen Rothwell
2008-08-12 13:58 ` Arnd Bergmann
2008-08-12 13:58 ` Arnd Bergmann
2008-08-11 14:25 ` [RFC 3/3] powerpc: remove ppc_ksyms.c Arnd Bergmann
2008-08-11 14:25 ` Arnd Bergmann
2008-08-11 15:03 ` RFC: killing ksyms.c Adrian Bunk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200808111618.08206.arnd@arndb.de \
--to=arnd@arndb.de \
--cc=dwmw2@infradead.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@ozlabs.org \
--cc=matthew@wil.cx \
--cc=rusty@rustcorp.com.au \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.