]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - scripts/mod/modpost.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux...
[linux-2.6-omap-h63xx.git] / scripts / mod / modpost.c
index 61742771c65dd28341a24fbdf992479350d209a3..f8b42ab0724be194a258a00e4e24f814ad3e7475 100644 (file)
@@ -1200,7 +1200,7 @@ static void report_sec_mismatch(const char *modname, enum mismatch mismatch,
                "annotate %s with a matching annotation.\n",
                from, sec2annotation(fromsec), fromsym, from_p,
                to, sec2annotation(tosec), tosym, to_p,
-               fromsym, tosym, fromsym);
+               tosym, fromsym, tosym);
                break;
        case INIT_TO_EXIT:
                fprintf(stderr,
@@ -1552,6 +1552,10 @@ static void read_symbols(char *modname)
        }
 
        license = get_modinfo(info.modinfo, info.modinfo_len, "license");
+       if (!license && !is_vmlinux(modname))
+               fatal("modpost: missing MODULE_LICENSE() in %s\n"
+                     "see include/linux/module.h for "
+                     "more information\n", modname);
        while (license) {
                if (license_is_gpl_compatible(license))
                        mod->gpl_compatible = 1;
@@ -2015,6 +2019,11 @@ static void write_markers(const char *fname)
        write_if_changed(&buf, fname);
 }
 
+struct ext_sym_list {
+       struct ext_sym_list *next;
+       const char *file;
+};
+
 int main(int argc, char **argv)
 {
        struct module *mod;
@@ -2025,8 +2034,10 @@ int main(int argc, char **argv)
        char *markers_write = NULL;
        int opt;
        int err;
+       struct ext_sym_list *extsym_iter;
+       struct ext_sym_list *extsym_start = NULL;
 
-       while ((opt = getopt(argc, argv, "i:I:msSo:awM:K:")) != -1) {
+       while ((opt = getopt(argc, argv, "i:I:e:cmsSo:awM:K:")) != -1) {
                switch (opt) {
                case 'i':
                        kernel_read = optarg;
@@ -2035,6 +2046,17 @@ int main(int argc, char **argv)
                        module_read = optarg;
                        external_module = 1;
                        break;
+               case 'c':
+                       cross_build = 1;
+                       break;
+               case 'e':
+                       external_module = 1;
+                       extsym_iter =
+                          NOFAIL(malloc(sizeof(*extsym_iter)));
+                       extsym_iter->next = extsym_start;
+                       extsym_iter->file = optarg;
+                       extsym_start = extsym_iter;
+                       break;
                case 'm':
                        modversions = 1;
                        break;
@@ -2068,6 +2090,12 @@ int main(int argc, char **argv)
                read_dump(kernel_read, 1);
        if (module_read)
                read_dump(module_read, 0);
+       while (extsym_start) {
+               read_dump(extsym_start->file, 0);
+               extsym_iter = extsym_start->next;
+               free(extsym_start);
+               extsym_start = extsym_iter;
+       }
 
        while (optind < argc)
                read_symbols(argv[optind++]);