summaryrefslogtreecommitdiff
path: root/scripts/mod
diff options
context:
space:
mode:
authorSam Ravnborg <sam@mars.ravnborg.org>2004-08-15 15:54:27 +0200
committerSam Ravnborg <sam@mars.ravnborg.org>2004-08-15 15:54:27 +0200
commit8f36d53f6f2b3a5758a0b6f894d76051cf94403c (patch)
tree2abc749b27efc8fa4449df369ff78e8740c0fced /scripts/mod
parentdf9b2cbabd37daacece62bcd1be4593960d249d4 (diff)
kbuild: Bogus "has no CRC" in external module builds
From: Pavel Roskin <proski@gnu.org> The recent fixes for the external module build have fixed the major breakage, but they left one annoyance unfixed. If CONFIG_MODVERSIONS is disabled, a warning is printed for every exported symbol that is has no CRC. For instance, I see this when compiling the standalone Orinoco driver on Linux 2.6.6-rc3: *** Warning: "__orinoco_down" [/usr/local/src/orinoco/spectrum_cs.ko] has no CRC! *** Warning: "hermes_struct_init" [/usr/local/src/orinoco/spectrum_cs.ko] has no CRC! *** Warning: "free_orinocodev" [/usr/local/src/orinoco/spectrum_cs.ko] has no CRC! [further warnings skipped] I have found that the "-i" option for modpost is used for external builds, whereas the internal modules use "-o". The "-i" option causes read_dump() in modpost.c to be called. This function sets "modversions" variable under some conditions that I don't understand. The comment before the modversions declarations says: "Are we using CONFIG_MODVERSIONS?" Apparently modpost fails to answer this question. I think it's better to use an explicit option rather than a kludge. The attached patch adds a new option "-m" that is specified if and only if CONFIG_MODVERSIONS is enabled. The patch has been successfully tested both with and without CONFIG_MODVERSIONS. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Diffstat (limited to 'scripts/mod')
-rw-r--r--scripts/mod/modpost.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 662e75b2f780..65072d76a101 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -343,7 +343,6 @@ handle_modversions(struct module *mod, struct elf_info *info,
crc = (unsigned int) sym->st_value;
add_exported_symbol(symname + strlen(CRC_PFX),
mod, &crc);
- modversions = 1;
}
break;
case SHN_UNDEF:
@@ -649,7 +648,6 @@ read_dump(const char *fname)
if (!(mod = find_module(modname))) {
if (is_vmlinux(modname)) {
- modversions = 1;
have_vmlinux = 1;
}
mod = new_module(NOFAIL(strdup(modname)));
@@ -696,11 +694,14 @@ main(int argc, char **argv)
char *dump_read = NULL, *dump_write = NULL;
int opt;
- while ((opt = getopt(argc, argv, "i:o:")) != -1) {
+ while ((opt = getopt(argc, argv, "i:mo:")) != -1) {
switch(opt) {
case 'i':
dump_read = optarg;
break;
+ case 'm':
+ modversions = 1;
+ break;
case 'o':
dump_write = optarg;
break;