Re: [PATCH] 2.6.4-rc2: scripts/modpost.c

From: Randy.Dunlap
Date: Fri Mar 05 2004 - 00:31:10 EST



| (This is is a repost - now with a patch for 2.6.4-rc2).
|
| Hi,
|
| as I found out, it's impossible to use the build-chain tool scripts/modpost
| of the 2.6 kernel series to externally build modules from a directory that
| contains the character sequence '.o'. Weird things happen if you try to do
| so.
|
| With a directory structure like on my system here, building the current DVB
| driver in '/home/daniel/cvs.linuxtv.org/dvb-kernel/build-2.6i/' generates a
| file called '/home/daniel/cvs.linuxtv.mod.c' since modpost cuts every
| filename string at the first occurence of '.o', not only the 'trailing .o',
| as the comment says.

The comment and code certainly don't match, and your patch makes sense
to me. However, I can't reproduce the problem that you describe.

I built the kernel image and modules in "www.osdl.org/264rc2/build1",
and all *.mod.c and *.ko ended up there with no problems.
Then I modified modpost.c (from 2.6.4-rc1, without your patch) to
print the "stripped" module names (without the trailing ".o")
and saw a list like this:
modpost: stripped mod.name=[fs/jfs/jfs]

so where are the parent directory names that are causing problems
for you coming from?


Andrew, I applied the patch and didn't have any problems with
'make allyesconfig' like you alluded to.


| Here's the patch for 2.6.4-rc2:
|
|
| --- linux-2.6.4-rc2.orig/scripts/modpost.c 2004-03-04 11:40:21.000000000 +0100
| +++ linux-2.6.4-rc2/scripts/modpost.c 2004-03-04 11:23:08.000000000 +0100
| @@ -63,16 +63,16 @@
| new_module(char *modname)
| {
| struct module *mod;
| - char *p;
| + int len;
|
| mod = NOFAIL(malloc(sizeof(*mod)));
| memset(mod, 0, sizeof(*mod));
| mod->name = NOFAIL(strdup(modname));
|
| /* strip trailing .o */
| - p = strstr(mod->name, ".o");
| - if (p)
| - *p = 0;
| + len = strlen(mod->name);
| + if (len > 2 && mod->name[len-2] == '.' && mod->name[len-1] == 'o')
| + mod->name[len-2] = 0;
|
| /* add to list */
| mod->next = modules;

--
~Randy
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/