aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-11-15 17:06:38 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2013-11-15 17:06:38 -0500
commit762fb1ddd561aac5b14afac19287672b99242811 (patch)
treecd52819d17e3d73d18f8b45cbcf602a731c1d420
parentf13399f033ae3d49e1808bacabd83d116844c94e (diff)
parent480f439c3db0d45d817d66caf3fa8e81a6fac01a (diff)
Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
Pull kbuild changes from Michal Marek: - LTO fixes, but the kallsyms part had to be reverted - Pass -Werror=implicit-int and -Werror=strict-prototypes to the compiler by default - snprintf fix in modpost - remove GREP_OPTIONS from the environment to be immune against exotic grep option settings * 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild: kallsyms: Revert back to 128 max symbol length Kbuild: Ignore GREP_OPTIONS env variable scripts: kallsyms: Use %zu to print 'size_t' scripts/bloat-o-meter: use .startswith rather than fragile slicing scripts/bloat-o-meter: ignore changes in the size of linux_banner kbuild: replace unbounded sprintf call in modpost kbuild, bloat-o-meter: fix static detection Kbuild: Handle longer symbols in kallsyms.c kbuild: Increase kallsyms max symbol length Makefile: enable -Werror=implicit-int and -Werror=strict-prototypes by default
-rw-r--r--Makefile9
-rwxr-xr-xscripts/bloat-o-meter7
-rw-r--r--scripts/kallsyms.c6
-rw-r--r--scripts/mod/sumversion.c2
4 files changed, 20 insertions, 4 deletions
diff --git a/Makefile b/Makefile
index 606a66cdcdb8..920ad07180c9 100644
--- a/Makefile
+++ b/Makefile
@@ -22,6 +22,9 @@ LC_COLLATE=C
22LC_NUMERIC=C 22LC_NUMERIC=C
23export LC_COLLATE LC_NUMERIC 23export LC_COLLATE LC_NUMERIC
24 24
25# Avoid interference with shell env settings
26unexport GREP_OPTIONS
27
25# We are using a recursive build, so we need to do a little thinking 28# We are using a recursive build, so we need to do a little thinking
26# to get the ordering right. 29# to get the ordering right.
27# 30#
@@ -659,6 +662,12 @@ KBUILD_CFLAGS += $(call cc-option,-fno-strict-overflow)
659# conserve stack if available 662# conserve stack if available
660KBUILD_CFLAGS += $(call cc-option,-fconserve-stack) 663KBUILD_CFLAGS += $(call cc-option,-fconserve-stack)
661 664
665# disallow errors like 'EXPORT_GPL(foo);' with missing header
666KBUILD_CFLAGS += $(call cc-option,-Werror=implicit-int)
667
668# require functions to have arguments in prototypes, not empty 'int foo()'
669KBUILD_CFLAGS += $(call cc-option,-Werror=strict-prototypes)
670
662# use the deterministic mode of AR if available 671# use the deterministic mode of AR if available
663KBUILD_ARFLAGS := $(call ar-option,D) 672KBUILD_ARFLAGS := $(call ar-option,D)
664 673
diff --git a/scripts/bloat-o-meter b/scripts/bloat-o-meter
index 6129020c41a9..549d0ab8c662 100755
--- a/scripts/bloat-o-meter
+++ b/scripts/bloat-o-meter
@@ -19,9 +19,10 @@ def getsizes(file):
19 size, type, name = l[:-1].split() 19 size, type, name = l[:-1].split()
20 if type in "tTdDbBrR": 20 if type in "tTdDbBrR":
21 # strip generated symbols 21 # strip generated symbols
22 if name[:6] == "__mod_": continue 22 if name.startswith("__mod_"): continue
23 # function names begin with '.' on 64-bit powerpc 23 if name == "linux_banner": continue
24 if "." in name[1:]: name = "static." + name.split(".")[0] 24 # statics and some other optimizations adds random .NUMBER
25 name = re.sub(r'\.[0-9]+', '', name)
25 sym[name] = sym.get(name, 0) + int(size, 16) 26 sym[name] = sym.get(name, 0) + int(size, 16)
26 return sym 27 return sym
27 28
diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c
index 9a11f9f799f4..10085de886fe 100644
--- a/scripts/kallsyms.c
+++ b/scripts/kallsyms.c
@@ -115,6 +115,12 @@ static int read_symbol(FILE *in, struct sym_entry *s)
115 fprintf(stderr, "Read error or end of file.\n"); 115 fprintf(stderr, "Read error or end of file.\n");
116 return -1; 116 return -1;
117 } 117 }
118 if (strlen(str) > KSYM_NAME_LEN) {
119 fprintf(stderr, "Symbol %s too long for kallsyms (%zu vs %d).\n"
120 "Please increase KSYM_NAME_LEN both in kernel and kallsyms.c\n",
121 str, strlen(str), KSYM_NAME_LEN);
122 return -1;
123 }
118 124
119 sym = str; 125 sym = str;
120 /* skip prefix char */ 126 /* skip prefix char */
diff --git a/scripts/mod/sumversion.c b/scripts/mod/sumversion.c
index 9dfcd6d988da..deb2994b04c4 100644
--- a/scripts/mod/sumversion.c
+++ b/scripts/mod/sumversion.c
@@ -416,7 +416,7 @@ void get_src_version(const char *modname, char sum[], unsigned sumlen)
416 basename = strrchr(modname, '/') + 1; 416 basename = strrchr(modname, '/') + 1;
417 else 417 else
418 basename = modname; 418 basename = modname;
419 sprintf(filelist, "%s/%.*s.mod", modverdir, 419 snprintf(filelist, sizeof(filelist), "%s/%.*s.mod", modverdir,
420 (int) strlen(basename) - 2, basename); 420 (int) strlen(basename) - 2, basename);
421 421
422 file = grab_file(filelist, &len); 422 file = grab_file(filelist, &len);