diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-15 17:06:38 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-15 17:06:38 -0500 |
commit | 762fb1ddd561aac5b14afac19287672b99242811 (patch) | |
tree | cd52819d17e3d73d18f8b45cbcf602a731c1d420 | |
parent | f13399f033ae3d49e1808bacabd83d116844c94e (diff) | |
parent | 480f439c3db0d45d817d66caf3fa8e81a6fac01a (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-- | Makefile | 9 | ||||
-rwxr-xr-x | scripts/bloat-o-meter | 7 | ||||
-rw-r--r-- | scripts/kallsyms.c | 6 | ||||
-rw-r--r-- | scripts/mod/sumversion.c | 2 |
4 files changed, 20 insertions, 4 deletions
@@ -22,6 +22,9 @@ LC_COLLATE=C | |||
22 | LC_NUMERIC=C | 22 | LC_NUMERIC=C |
23 | export LC_COLLATE LC_NUMERIC | 23 | export LC_COLLATE LC_NUMERIC |
24 | 24 | ||
25 | # Avoid interference with shell env settings | ||
26 | unexport 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 |
660 | KBUILD_CFLAGS += $(call cc-option,-fconserve-stack) | 663 | KBUILD_CFLAGS += $(call cc-option,-fconserve-stack) |
661 | 664 | ||
665 | # disallow errors like 'EXPORT_GPL(foo);' with missing header | ||
666 | KBUILD_CFLAGS += $(call cc-option,-Werror=implicit-int) | ||
667 | |||
668 | # require functions to have arguments in prototypes, not empty 'int foo()' | ||
669 | KBUILD_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 |
663 | KBUILD_ARFLAGS := $(call ar-option,D) | 672 | KBUILD_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); |