From 09f1536e9fe832dd4dab09d6e2324aee728b4a1f Mon Sep 17 00:00:00 2001 From: Richard Hacker Date: Thu, 28 Feb 2008 09:40:52 +0100 Subject: [PATCH] --- yaml --- r: 92987 b: refs/heads/master c: 2d04b5ae1bf527201a7505c9be7526c43ebd2930 h: refs/heads/master i: 92985: cb604ab2dbec852878c8b60b5755239125e4d36d 92983: acc1fc9776654776f0b04a80594fa6f83d454888 v: v3 --- [refs] | 2 +- trunk/scripts/mod/modpost.c | 23 ++++++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index c806e8810486..92d98267cc47 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 35bb5b1e0e84cfa1a8906f7e6a77f391ff315791 +refs/heads/master: 2d04b5ae1bf527201a7505c9be7526c43ebd2930 diff --git a/trunk/scripts/mod/modpost.c b/trunk/scripts/mod/modpost.c index 843f6fa517cc..f8b42ab0724b 100644 --- a/trunk/scripts/mod/modpost.c +++ b/trunk/scripts/mod/modpost.c @@ -2019,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; @@ -2029,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:cmsSo:awM:K:")) != -1) { + while ((opt = getopt(argc, argv, "i:I:e:cmsSo:awM:K:")) != -1) { switch (opt) { case 'i': kernel_read = optarg; @@ -2042,6 +2049,14 @@ int main(int argc, char **argv) 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; @@ -2075,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++]);