diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | Documentation/dontdiff | 1 | ||||
| -rw-r--r-- | Makefile | 2 | ||||
| -rw-r--r-- | scripts/Makefile.modpost | 15 | ||||
| -rw-r--r-- | scripts/mod/modpost.c | 15 | 
5 files changed, 18 insertions, 16 deletions
| diff --git a/.gitignore b/.gitignore index 3adea59847ce..df8d3146a43f 100644 --- a/.gitignore +++ b/.gitignore @@ -57,6 +57,7 @@ modules.order  /tags  /TAGS  /linux +/modules-only.symvers  /vmlinux  /vmlinux.32  /vmlinux.map diff --git a/Documentation/dontdiff b/Documentation/dontdiff index ac42ad8d430d..910b30a2a7d9 100644 --- a/Documentation/dontdiff +++ b/Documentation/dontdiff @@ -178,6 +178,7 @@ mktables  mktree  mkutf8data  modpost +modules-only.symvers  modules.builtin  modules.builtin.modinfo  modules.nsdeps @@ -1532,7 +1532,7 @@ endif # CONFIG_MODULES  # make distclean Remove editor backup files, patch leftover files and the like  # Directories & files removed with 'make clean' -CLEAN_FILES += include/ksym vmlinux.symvers \ +CLEAN_FILES += include/ksym vmlinux.symvers modules-only.symvers \  	       modules.builtin modules.builtin.modinfo modules.nsdeps \  	       compile_commands.json .thinlto-cache diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost index df57e259fac3..3f5b09a09aef 100644 --- a/scripts/Makefile.modpost +++ b/scripts/Makefile.modpost @@ -68,7 +68,20 @@ else  ifeq ($(KBUILD_EXTMOD),)  input-symdump := vmlinux.symvers -output-symdump := Module.symvers +output-symdump := modules-only.symvers + +quiet_cmd_cat = GEN     $@ +      cmd_cat = cat $(real-prereqs) > $@ + +ifneq ($(wildcard vmlinux.symvers),) + +__modpost: Module.symvers +Module.symvers: vmlinux.symvers modules-only.symvers FORCE +	$(call if_changed,cat) + +targets += Module.symvers + +endif  else diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 24725e50c7b4..10c3fba26f03 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -2423,19 +2423,6 @@ fail:  	fatal("parse error in symbol dump file\n");  } -/* For normal builds always dump all symbols. - * For external modules only dump symbols - * that are not read from kernel Module.symvers. - **/ -static int dump_sym(struct symbol *sym) -{ -	if (!external_module) -		return 1; -	if (sym->module->from_dump) -		return 0; -	return 1; -} -  static void write_dump(const char *fname)  {  	struct buffer buf = { }; @@ -2446,7 +2433,7 @@ static void write_dump(const char *fname)  	for (n = 0; n < SYMBOL_HASH_SIZE ; n++) {  		symbol = symbolhash[n];  		while (symbol) { -			if (dump_sym(symbol)) { +			if (!symbol->module->from_dump) {  				namespace = symbol->namespace;  				buf_printf(&buf, "0x%08x\t%s\t%s\t%s\t%s\n",  					   symbol->crc, symbol->name, |