diff options
author | Ustyugov Roman <dr_unique@ymg.ru> | 2005-09-23 00:42:11 -0400 |
---|---|---|
committer | Sam Ravnborg <sam@mars.ravnborg.org> | 2005-12-25 18:33:41 -0500 |
commit | f83b5e323f57d6e1f35a839d663e91cebe985e54 (patch) | |
tree | 59e19500a8204abd8e77620b7e80138d5f7fda68 /scripts/Makefile.lib | |
parent | 4d99f93bdaa1ab49188cac67b4aae9180f8e3960 (diff) |
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>
Diffstat (limited to 'scripts/Makefile.lib')
-rw-r--r-- | scripts/Makefile.lib | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 0f81dcfd690..550798f57da 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib | |||
@@ -81,8 +81,10 @@ obj-dirs := $(addprefix $(obj)/,$(obj-dirs)) | |||
81 | # Note: It's possible that one object gets potentially linked into more | 81 | # Note: It's possible that one object gets potentially linked into more |
82 | # than one module. In that case KBUILD_MODNAME will be set to foo_bar, | 82 | # than one module. In that case KBUILD_MODNAME will be set to foo_bar, |
83 | # where foo and bar are the name of the modules. | 83 | # where foo and bar are the name of the modules. |
84 | basename_flags = -DKBUILD_BASENAME=$(subst $(comma),_,$(subst -,_,$(*F))) | 84 | name-fix = $(subst $(comma),_,$(subst -,_,$1)) |
85 | modname_flags = $(if $(filter 1,$(words $(modname))),-DKBUILD_MODNAME=$(subst $(comma),_,$(subst -,_,$(modname)))) | 85 | basename_flags = -D"KBUILD_BASENAME=KBUILD_STR($(call name-fix,$(*F)))" |
86 | modname_flags = $(if $(filter 1,$(words $(modname))),\ | ||
87 | -D"KBUILD_MODNAME=KBUILD_STR($(call name-fix,$(modname)))") | ||
86 | 88 | ||
87 | _c_flags = $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$(*F).o) | 89 | _c_flags = $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$(*F).o) |
88 | _a_flags = $(AFLAGS) $(EXTRA_AFLAGS) $(AFLAGS_$(*F).o) | 90 | _a_flags = $(AFLAGS) $(EXTRA_AFLAGS) $(AFLAGS_$(*F).o) |
@@ -113,7 +115,7 @@ endif | |||
113 | 115 | ||
114 | c_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(CPPFLAGS) \ | 116 | c_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(CPPFLAGS) \ |
115 | $(__c_flags) $(modkern_cflags) \ | 117 | $(__c_flags) $(modkern_cflags) \ |
116 | $(basename_flags) $(modname_flags) | 118 | -D"KBUILD_STR(s)=\#s" $(basename_flags) $(modname_flags) |
117 | 119 | ||
118 | a_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(CPPFLAGS) \ | 120 | a_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(CPPFLAGS) \ |
119 | $(__a_flags) $(modkern_aflags) | 121 | $(__a_flags) $(modkern_aflags) |