mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-21 14:11:20 +00:00
kbuild: set correct KBUILD_MODNAME when using well known kernel symbols as module names
This patch fixes a problem when we use well known kernel symbols as module names. For example, if module source name is current.c, idle_stack.c or etc., we have a bad KBUILD_MODNAME value. For example, KBUILD_MODNAME will be "get_current()" instead of "current", or "(init_thread_union.stack)" instead of "idle_task". The trick is to define a stringify macro on the commandline - named KBUILD_STR for namespace reasons - and then to stringify the module name. There are a few uses of KBUILD_MODNAME throughout the tree but the usage is for debug and will not be harmed by this change so left untouched for now. While at it KBUILD_BASENAME was changed too. Any spinlock usage in the unix module would have created wrong section names without it. Usage in spinlock.h fixed so it no longer stringify KBUILD_BASENAME. Original patch from Ustyogov Roman - all bugs introduced by me. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
This commit is contained in:
parent
4d99f93bda
commit
f83b5e323f
3 changed files with 7 additions and 7 deletions
|
@ -539,10 +539,9 @@ add_header(struct buffer *b, struct module *mod)
|
|||
buf_printf(b, "\n");
|
||||
buf_printf(b, "MODULE_INFO(vermagic, VERMAGIC_STRING);\n");
|
||||
buf_printf(b, "\n");
|
||||
buf_printf(b, "#undef unix\n"); /* We have a module called "unix" */
|
||||
buf_printf(b, "struct module __this_module\n");
|
||||
buf_printf(b, "__attribute__((section(\".gnu.linkonce.this_module\"))) = {\n");
|
||||
buf_printf(b, " .name = __stringify(KBUILD_MODNAME),\n");
|
||||
buf_printf(b, " .name = KBUILD_MODNAME,\n");
|
||||
if (mod->has_init)
|
||||
buf_printf(b, " .init = init_module,\n");
|
||||
if (mod->has_cleanup)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue