public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Sam Ravnborg <sam@ravnborg.org>
To: linux-kernel@vger.kernel.org
Subject: [PATCH 16/26] kbuild: set correct KBUILD_MODNAME when using well known kernel symbols as module names
Date: Tue, 3 Jan 2006 14:25:26 +0100	[thread overview]
Message-ID: <11362947263806@foobar.com> (raw)
In-Reply-To: <20060103132035.GA17485@mars.ravnborg.org>

From: Ustyugov Roman <dr_unique@ymg.ru>
Date: 1127450531 +0400

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>

---

 include/linux/spinlock.h |    3 +--
 scripts/Makefile.lib     |    8 +++++---
 scripts/mod/modpost.c    |    3 +--
 3 files changed, 7 insertions(+), 7 deletions(-)

f83b5e323f57d6e1f35a839d663e91cebe985e54
diff --git a/include/linux/spinlock.h b/include/linux/spinlock.h
index 0e9682c..799be67 100644
--- a/include/linux/spinlock.h
+++ b/include/linux/spinlock.h
@@ -59,8 +59,7 @@
 /*
  * Must define these before including other files, inline functions need them
  */
-#define LOCK_SECTION_NAME                       \
-        ".text.lock." __stringify(KBUILD_BASENAME)
+#define LOCK_SECTION_NAME ".text.lock."KBUILD_BASENAME
 
 #define LOCK_SECTION_START(extra)               \
         ".subsection 1\n\t"                     \
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 0f81dcf..550798f 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -81,8 +81,10 @@ obj-dirs	:= $(addprefix $(obj)/,$(obj-di
 # Note: It's possible that one object gets potentially linked into more
 #       than one module. In that case KBUILD_MODNAME will be set to foo_bar,
 #       where foo and bar are the name of the modules.
-basename_flags = -DKBUILD_BASENAME=$(subst $(comma),_,$(subst -,_,$(*F)))
-modname_flags  = $(if $(filter 1,$(words $(modname))),-DKBUILD_MODNAME=$(subst $(comma),_,$(subst -,_,$(modname))))
+name-fix = $(subst $(comma),_,$(subst -,_,$1))
+basename_flags = -D"KBUILD_BASENAME=KBUILD_STR($(call name-fix,$(*F)))"
+modname_flags  = $(if $(filter 1,$(words $(modname))),\
+                 -D"KBUILD_MODNAME=KBUILD_STR($(call name-fix,$(modname)))")
 
 _c_flags       = $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$(*F).o)
 _a_flags       = $(AFLAGS) $(EXTRA_AFLAGS) $(AFLAGS_$(*F).o)
@@ -113,7 +115,7 @@ endif
 
 c_flags        = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(CPPFLAGS) \
 		 $(__c_flags) $(modkern_cflags) \
-		 $(basename_flags) $(modname_flags)
+		 -D"KBUILD_STR(s)=\#s" $(basename_flags) $(modname_flags)
 
 a_flags        = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(CPPFLAGS) \
 		 $(__a_flags) $(modkern_aflags)
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 8ce5a63..f70ff13 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -539,10 +539,9 @@ add_header(struct buffer *b, struct modu
 	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)
-- 
1.0.6


  parent reply	other threads:[~2006-01-03 13:29 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-01-03 13:20 [PATCH] kbuild + kconfig updates for 2.6.16-rc Sam Ravnborg
2006-01-03 13:25 ` [PATCH 07/26] kconfig: make lxdialog/menubox.c more readable Sam Ravnborg
2006-01-03 13:25 ` [PATCH 05/26] kconfig: Left aling menu items in menuconfig Sam Ravnborg
2006-01-03 13:25 ` [PATCH 10/26] kbuild: remove the deprecated check_gcc Sam Ravnborg
2006-01-03 13:25 ` [PATCH 14/26] kbuild: Add ctags support for function prototypes and external variable declarations Sam Ravnborg
2006-01-03 13:25 ` [PATCH 03/26] kconfig: lxdialog is now sparse clean Sam Ravnborg
2006-01-03 13:25 ` [PATCH 04/26] kconfig: Add print_title helper in lxdialog Sam Ravnborg
2006-01-03 13:25 ` [PATCH 12/26] kbuild: document INSTALL_MOD_PATH in 'make help' Sam Ravnborg
2006-01-03 13:25 ` [PATCH 02/26] kconfig: fixup after Lindent Sam Ravnborg
2006-01-03 13:25 ` [PATCH 11/26] kbuild: patch to Documentation/kbuild/modules.txt Sam Ravnborg
2006-01-03 13:25 ` [PATCH 06/26] kconfig: Fix indention when using menuconfig in text-onle consoles Sam Ravnborg
2006-01-03 13:25 ` [PATCH 09/26] kconfig: move lxdialog to scripts/kconfig/lxdialog Sam Ravnborg
2006-01-03 13:25 ` [PATCH 13/26] kbuild: Fix crc-error warning on modules Sam Ravnborg
2006-01-03 13:25 ` [PATCH 08/26] kconfig: truncate too long menu lines in menuconfig Sam Ravnborg
2006-01-03 13:25 ` [PATCH 22/26] gitignore: asm-offsets.h Sam Ravnborg
2006-01-03 13:25 ` Sam Ravnborg [this message]
2006-01-03 13:25 ` [PATCH 25/26] kconfig: Remove support for lxdialog --checklist Sam Ravnborg
2006-01-03 13:25 ` [PATCH 19/26] kbuild: remove EXPERIMENTAL tag from Module versioning Sam Ravnborg
2006-01-03 13:25 ` [PATCH 21/26] kbuild: always run 'make silentoldconfig' when tree is cleaned Sam Ravnborg
2006-01-03 13:25 ` [PATCH 24/26] gitignore: misc files Sam Ravnborg
2006-01-03 13:25 ` [PATCH 15/26] kbuild: escape '#' in .target.cmd files Sam Ravnborg
2006-01-03 13:25 ` [PATCH 23/26] gitignore: x86_64 files Sam Ravnborg
2006-01-03 16:39   ` Andi Kleen
2006-01-03 17:15     ` Sam Ravnborg
2006-01-03 17:26       ` Andi Kleen
2006-01-03 17:42         ` Olaf Hering
2006-01-03 19:24         ` Sam Ravnborg
2006-01-03 19:14     ` Brian Gerst
2006-01-03 13:25 ` [PATCH 26/26] gitignore: ignore more generated files Sam Ravnborg
2006-01-03 13:25 ` [PATCH 17/26] kbuild: Fix genksyms handling of DEFINE_PER_CPU(struct foo_s *, bar); Sam Ravnborg
2006-01-03 14:46   ` Jan Engelhardt
2006-01-03 14:49     ` Sam Ravnborg
2006-01-03 14:51       ` Jan Engelhardt
2006-01-04 19:01   ` Robin Holt
2006-01-04 19:19     ` Sam Ravnborg
2006-01-03 13:25 ` [PATCH 20/26] kbuild: tags file generation fixup Sam Ravnborg
2006-01-03 15:02 ` [PATCH] kbuild + kconfig updates for 2.6.16-rc Sam Ravnborg
2006-01-03 15:05   ` [PATCH 1/1] kbuild: tar-pkg with out-out-tree building Sam Ravnborg

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=11362947263806@foobar.com \
    --to=sam@ravnborg.org \
    --cc=linux-kernel@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox