diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-23 18:37:02 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-23 18:37:02 -0400 |
commit | c37efa932598de5e30330a1414e34d9e082e0d9e (patch) | |
tree | 1e3b782d257fa39a54f583af3dc7c32d7cffc67d /scripts | |
parent | 9e12a7e7d89ad813d01092890010cf67d0f914bd (diff) | |
parent | abe1ee3a221d53778c3e58747bbec6e518e5471b (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next
* git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next: (30 commits)
Use macros for .data.page_aligned section.
Use macros for .bss.page_aligned section.
Use new __init_task_data macro in arch init_task.c files.
kbuild: Don't define ALIGN and ENTRY when preprocessing linker scripts.
arm, cris, mips, sparc, powerpc, um, xtensa: fix build with bash 4.0
kbuild: add static to prototypes
kbuild: fail build if recordmcount.pl fails
kbuild: set -fconserve-stack option for gcc 4.5
kbuild: echo the record_mcount command
gconfig: disable "typeahead find" search in treeviews
kbuild: fix cc1 options check to ensure we do not use -fPIC when compiling
checkincludes.pl: add option to remove duplicates in place
markup_oops: use modinfo to avoid confusion with underscored module names
checkincludes.pl: provide usage helper
checkincludes.pl: close file as soon as we're done with it
ctags: usability fix
kernel hacking: move STRIP_ASM_SYMS from General
gitignore usr/initramfs_data.cpio.bz2 and usr/initramfs_data.cpio.lzma
kbuild: Check if linker supports the -X option
kbuild: introduce ld-option
...
Fix trivial conflict in scripts/basic/fixdep.c
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/Kbuild.include | 16 | ||||
-rw-r--r-- | scripts/Makefile.build | 6 | ||||
-rw-r--r-- | scripts/basic/docproc.c | 34 | ||||
-rw-r--r-- | scripts/basic/fixdep.c | 26 | ||||
-rw-r--r-- | scripts/basic/hash.c | 4 | ||||
-rwxr-xr-x | scripts/checkincludes.pl | 71 | ||||
-rw-r--r-- | scripts/kconfig/conf.c | 24 | ||||
-rw-r--r-- | scripts/kconfig/confdata.c | 2 | ||||
-rw-r--r-- | scripts/kconfig/expr.c | 6 | ||||
-rw-r--r-- | scripts/kconfig/gconf.c | 21 | ||||
-rw-r--r-- | scripts/kconfig/gconf.glade | 4 | ||||
-rw-r--r-- | scripts/kconfig/kxgettext.c | 4 | ||||
-rw-r--r-- | scripts/kconfig/lkc_proto.h | 2 | ||||
-rw-r--r-- | scripts/kconfig/mconf.c | 78 | ||||
-rw-r--r-- | scripts/kconfig/menu.c | 84 | ||||
-rw-r--r-- | scripts/kconfig/qconf.cc | 10 | ||||
-rw-r--r-- | scripts/kconfig/symbol.c | 6 | ||||
-rw-r--r-- | scripts/markup_oops.pl | 5 | ||||
-rwxr-xr-x | scripts/tags.sh | 3 |
19 files changed, 235 insertions, 171 deletions
diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include index c29be8f90248..4f9c1908593b 100644 --- a/scripts/Kbuild.include +++ b/scripts/Kbuild.include | |||
@@ -83,11 +83,12 @@ TMPOUT := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/) | |||
83 | # is automatically cleaned up. | 83 | # is automatically cleaned up. |
84 | try-run = $(shell set -e; \ | 84 | try-run = $(shell set -e; \ |
85 | TMP="$(TMPOUT).$$$$.tmp"; \ | 85 | TMP="$(TMPOUT).$$$$.tmp"; \ |
86 | TMPO="$(TMPOUT).$$$$.o"; \ | ||
86 | if ($(1)) >/dev/null 2>&1; \ | 87 | if ($(1)) >/dev/null 2>&1; \ |
87 | then echo "$(2)"; \ | 88 | then echo "$(2)"; \ |
88 | else echo "$(3)"; \ | 89 | else echo "$(3)"; \ |
89 | fi; \ | 90 | fi; \ |
90 | rm -f "$$TMP") | 91 | rm -f "$$TMP" "$$TMPO") |
91 | 92 | ||
92 | # as-option | 93 | # as-option |
93 | # Usage: cflags-y += $(call as-option,-Wa$(comma)-isa=foo,) | 94 | # Usage: cflags-y += $(call as-option,-Wa$(comma)-isa=foo,) |
@@ -105,12 +106,12 @@ as-instr = $(call try-run,\ | |||
105 | # Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586) | 106 | # Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586) |
106 | 107 | ||
107 | cc-option = $(call try-run,\ | 108 | cc-option = $(call try-run,\ |
108 | $(CC) $(KBUILD_CFLAGS) $(1) -c -xc /dev/null -o "$$TMP",$(1),$(2)) | 109 | $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -xc /dev/null -o "$$TMP",$(1),$(2)) |
109 | 110 | ||
110 | # cc-option-yn | 111 | # cc-option-yn |
111 | # Usage: flag := $(call cc-option-yn,-march=winchip-c6) | 112 | # Usage: flag := $(call cc-option-yn,-march=winchip-c6) |
112 | cc-option-yn = $(call try-run,\ | 113 | cc-option-yn = $(call try-run,\ |
113 | $(CC) $(KBUILD_CFLAGS) $(1) -c -xc /dev/null -o "$$TMP",y,n) | 114 | $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -xc /dev/null -o "$$TMP",y,n) |
114 | 115 | ||
115 | # cc-option-align | 116 | # cc-option-align |
116 | # Prefix align with either -falign or -malign | 117 | # Prefix align with either -falign or -malign |
@@ -130,10 +131,15 @@ cc-fullversion = $(shell $(CONFIG_SHELL) \ | |||
130 | # Usage: EXTRA_CFLAGS += $(call cc-ifversion, -lt, 0402, -O1) | 131 | # Usage: EXTRA_CFLAGS += $(call cc-ifversion, -lt, 0402, -O1) |
131 | cc-ifversion = $(shell [ $(call cc-version, $(CC)) $(1) $(2) ] && echo $(3)) | 132 | cc-ifversion = $(shell [ $(call cc-version, $(CC)) $(1) $(2) ] && echo $(3)) |
132 | 133 | ||
134 | # cc-ldoption | ||
135 | # Usage: ldflags += $(call cc-ldoption, -Wl$(comma)--hash-style=both) | ||
136 | cc-ldoption = $(call try-run,\ | ||
137 | $(CC) $(1) -nostdlib -xc /dev/null -o "$$TMP",$(1),$(2)) | ||
138 | |||
133 | # ld-option | 139 | # ld-option |
134 | # Usage: ldflags += $(call ld-option, -Wl$(comma)--hash-style=both) | 140 | # Usage: LDFLAGS += $(call ld-option, -X) |
135 | ld-option = $(call try-run,\ | 141 | ld-option = $(call try-run,\ |
136 | $(CC) $(1) -nostdlib -xc /dev/null -o "$$TMP",$(1),$(2)) | 142 | $(CC) /dev/null -c -o "$$TMPO" ; $(LD) $(1) "$$TMPO" -o "$$TMP",$(1),$(2)) |
137 | 143 | ||
138 | ###### | 144 | ###### |
139 | 145 | ||
diff --git a/scripts/Makefile.build b/scripts/Makefile.build index 5c4b7a400c18..341b58902ffc 100644 --- a/scripts/Makefile.build +++ b/scripts/Makefile.build | |||
@@ -206,7 +206,7 @@ cmd_modversions = \ | |||
206 | endif | 206 | endif |
207 | 207 | ||
208 | ifdef CONFIG_FTRACE_MCOUNT_RECORD | 208 | ifdef CONFIG_FTRACE_MCOUNT_RECORD |
209 | cmd_record_mcount = perl $(srctree)/scripts/recordmcount.pl "$(ARCH)" \ | 209 | cmd_record_mcount = set -e ; perl $(srctree)/scripts/recordmcount.pl "$(ARCH)" \ |
210 | "$(if $(CONFIG_64BIT),64,32)" \ | 210 | "$(if $(CONFIG_64BIT),64,32)" \ |
211 | "$(OBJDUMP)" "$(OBJCOPY)" "$(CC)" "$(LD)" "$(NM)" "$(RM)" "$(MV)" \ | 211 | "$(OBJDUMP)" "$(OBJCOPY)" "$(CC)" "$(LD)" "$(NM)" "$(RM)" "$(MV)" \ |
212 | "$(if $(part-of-module),1,0)" "$(@)"; | 212 | "$(if $(part-of-module),1,0)" "$(@)"; |
@@ -216,6 +216,7 @@ define rule_cc_o_c | |||
216 | $(call echo-cmd,checksrc) $(cmd_checksrc) \ | 216 | $(call echo-cmd,checksrc) $(cmd_checksrc) \ |
217 | $(call echo-cmd,cc_o_c) $(cmd_cc_o_c); \ | 217 | $(call echo-cmd,cc_o_c) $(cmd_cc_o_c); \ |
218 | $(cmd_modversions) \ | 218 | $(cmd_modversions) \ |
219 | $(call echo-cmd,record_mcount) \ | ||
219 | $(cmd_record_mcount) \ | 220 | $(cmd_record_mcount) \ |
220 | scripts/basic/fixdep $(depfile) $@ '$(call make-cmd,cc_o_c)' > \ | 221 | scripts/basic/fixdep $(depfile) $@ '$(call make-cmd,cc_o_c)' > \ |
221 | $(dot-target).tmp; \ | 222 | $(dot-target).tmp; \ |
@@ -269,7 +270,8 @@ targets += $(extra-y) $(MAKECMDGOALS) $(always) | |||
269 | # Linker scripts preprocessor (.lds.S -> .lds) | 270 | # Linker scripts preprocessor (.lds.S -> .lds) |
270 | # --------------------------------------------------------------------------- | 271 | # --------------------------------------------------------------------------- |
271 | quiet_cmd_cpp_lds_S = LDS $@ | 272 | quiet_cmd_cpp_lds_S = LDS $@ |
272 | cmd_cpp_lds_S = $(CPP) $(cpp_flags) -D__ASSEMBLY__ -o $@ $< | 273 | cmd_cpp_lds_S = $(CPP) $(cpp_flags) -P -C -U$(ARCH) \ |
274 | -D__ASSEMBLY__ -DLINKER_SCRIPT -o $@ $< | ||
273 | 275 | ||
274 | $(obj)/%.lds: $(src)/%.lds.S FORCE | 276 | $(obj)/%.lds: $(src)/%.lds.S FORCE |
275 | $(call if_changed_dep,cpp_lds_S) | 277 | $(call if_changed_dep,cpp_lds_S) |
diff --git a/scripts/basic/docproc.c b/scripts/basic/docproc.c index 99ca7a698687..79ab973fb43a 100644 --- a/scripts/basic/docproc.c +++ b/scripts/basic/docproc.c | |||
@@ -71,7 +71,7 @@ FILELINE * docsection; | |||
71 | 71 | ||
72 | static char *srctree, *kernsrctree; | 72 | static char *srctree, *kernsrctree; |
73 | 73 | ||
74 | void usage (void) | 74 | static void usage (void) |
75 | { | 75 | { |
76 | fprintf(stderr, "Usage: docproc {doc|depend} file\n"); | 76 | fprintf(stderr, "Usage: docproc {doc|depend} file\n"); |
77 | fprintf(stderr, "Input is read from file.tmpl. Output is sent to stdout\n"); | 77 | fprintf(stderr, "Input is read from file.tmpl. Output is sent to stdout\n"); |
@@ -84,7 +84,7 @@ void usage (void) | |||
84 | /* | 84 | /* |
85 | * Execute kernel-doc with parameters given in svec | 85 | * Execute kernel-doc with parameters given in svec |
86 | */ | 86 | */ |
87 | void exec_kernel_doc(char **svec) | 87 | static void exec_kernel_doc(char **svec) |
88 | { | 88 | { |
89 | pid_t pid; | 89 | pid_t pid; |
90 | int ret; | 90 | int ret; |
@@ -129,7 +129,7 @@ struct symfile | |||
129 | struct symfile symfilelist[MAXFILES]; | 129 | struct symfile symfilelist[MAXFILES]; |
130 | int symfilecnt = 0; | 130 | int symfilecnt = 0; |
131 | 131 | ||
132 | void add_new_symbol(struct symfile *sym, char * symname) | 132 | static void add_new_symbol(struct symfile *sym, char * symname) |
133 | { | 133 | { |
134 | sym->symbollist = | 134 | sym->symbollist = |
135 | realloc(sym->symbollist, (sym->symbolcnt + 1) * sizeof(char *)); | 135 | realloc(sym->symbollist, (sym->symbolcnt + 1) * sizeof(char *)); |
@@ -137,14 +137,14 @@ void add_new_symbol(struct symfile *sym, char * symname) | |||
137 | } | 137 | } |
138 | 138 | ||
139 | /* Add a filename to the list */ | 139 | /* Add a filename to the list */ |
140 | struct symfile * add_new_file(char * filename) | 140 | static struct symfile * add_new_file(char * filename) |
141 | { | 141 | { |
142 | symfilelist[symfilecnt++].filename = strdup(filename); | 142 | symfilelist[symfilecnt++].filename = strdup(filename); |
143 | return &symfilelist[symfilecnt - 1]; | 143 | return &symfilelist[symfilecnt - 1]; |
144 | } | 144 | } |
145 | 145 | ||
146 | /* Check if file already are present in the list */ | 146 | /* Check if file already are present in the list */ |
147 | struct symfile * filename_exist(char * filename) | 147 | static struct symfile * filename_exist(char * filename) |
148 | { | 148 | { |
149 | int i; | 149 | int i; |
150 | for (i=0; i < symfilecnt; i++) | 150 | for (i=0; i < symfilecnt; i++) |
@@ -157,20 +157,20 @@ struct symfile * filename_exist(char * filename) | |||
157 | * List all files referenced within the template file. | 157 | * List all files referenced within the template file. |
158 | * Files are separated by tabs. | 158 | * Files are separated by tabs. |
159 | */ | 159 | */ |
160 | void adddep(char * file) { printf("\t%s", file); } | 160 | static void adddep(char * file) { printf("\t%s", file); } |
161 | void adddep2(char * file, char * line) { line = line; adddep(file); } | 161 | static void adddep2(char * file, char * line) { line = line; adddep(file); } |
162 | void noaction(char * line) { line = line; } | 162 | static void noaction(char * line) { line = line; } |
163 | void noaction2(char * file, char * line) { file = file; line = line; } | 163 | static void noaction2(char * file, char * line) { file = file; line = line; } |
164 | 164 | ||
165 | /* Echo the line without further action */ | 165 | /* Echo the line without further action */ |
166 | void printline(char * line) { printf("%s", line); } | 166 | static void printline(char * line) { printf("%s", line); } |
167 | 167 | ||
168 | /* | 168 | /* |
169 | * Find all symbols in filename that are exported with EXPORT_SYMBOL & | 169 | * Find all symbols in filename that are exported with EXPORT_SYMBOL & |
170 | * EXPORT_SYMBOL_GPL (& EXPORT_SYMBOL_GPL_FUTURE implicitly). | 170 | * EXPORT_SYMBOL_GPL (& EXPORT_SYMBOL_GPL_FUTURE implicitly). |
171 | * All symbols located are stored in symfilelist. | 171 | * All symbols located are stored in symfilelist. |
172 | */ | 172 | */ |
173 | void find_export_symbols(char * filename) | 173 | static void find_export_symbols(char * filename) |
174 | { | 174 | { |
175 | FILE * fp; | 175 | FILE * fp; |
176 | struct symfile *sym; | 176 | struct symfile *sym; |
@@ -227,7 +227,7 @@ void find_export_symbols(char * filename) | |||
227 | * intfunc uses -nofunction | 227 | * intfunc uses -nofunction |
228 | * extfunc uses -function | 228 | * extfunc uses -function |
229 | */ | 229 | */ |
230 | void docfunctions(char * filename, char * type) | 230 | static void docfunctions(char * filename, char * type) |
231 | { | 231 | { |
232 | int i,j; | 232 | int i,j; |
233 | int symcnt = 0; | 233 | int symcnt = 0; |
@@ -258,15 +258,15 @@ void docfunctions(char * filename, char * type) | |||
258 | fflush(stdout); | 258 | fflush(stdout); |
259 | free(vec); | 259 | free(vec); |
260 | } | 260 | } |
261 | void intfunc(char * filename) { docfunctions(filename, NOFUNCTION); } | 261 | static void intfunc(char * filename) { docfunctions(filename, NOFUNCTION); } |
262 | void extfunc(char * filename) { docfunctions(filename, FUNCTION); } | 262 | static void extfunc(char * filename) { docfunctions(filename, FUNCTION); } |
263 | 263 | ||
264 | /* | 264 | /* |
265 | * Document specific function(s) in a file. | 265 | * Document specific function(s) in a file. |
266 | * Call kernel-doc with the following parameters: | 266 | * Call kernel-doc with the following parameters: |
267 | * kernel-doc -docbook -function function1 [-function function2] | 267 | * kernel-doc -docbook -function function1 [-function function2] |
268 | */ | 268 | */ |
269 | void singfunc(char * filename, char * line) | 269 | static void singfunc(char * filename, char * line) |
270 | { | 270 | { |
271 | char *vec[200]; /* Enough for specific functions */ | 271 | char *vec[200]; /* Enough for specific functions */ |
272 | int i, idx = 0; | 272 | int i, idx = 0; |
@@ -297,7 +297,7 @@ void singfunc(char * filename, char * line) | |||
297 | * Call kernel-doc with the following parameters: | 297 | * Call kernel-doc with the following parameters: |
298 | * kernel-doc -docbook -function "doc section" filename | 298 | * kernel-doc -docbook -function "doc section" filename |
299 | */ | 299 | */ |
300 | void docsect(char *filename, char *line) | 300 | static void docsect(char *filename, char *line) |
301 | { | 301 | { |
302 | char *vec[6]; /* kerneldoc -docbook -function "section" file NULL */ | 302 | char *vec[6]; /* kerneldoc -docbook -function "section" file NULL */ |
303 | char *s; | 303 | char *s; |
@@ -324,7 +324,7 @@ void docsect(char *filename, char *line) | |||
324 | * 5) Lines containing !P | 324 | * 5) Lines containing !P |
325 | * 6) Default lines - lines not matching the above | 325 | * 6) Default lines - lines not matching the above |
326 | */ | 326 | */ |
327 | void parse_file(FILE *infile) | 327 | static void parse_file(FILE *infile) |
328 | { | 328 | { |
329 | char line[MAXLINESZ]; | 329 | char line[MAXLINESZ]; |
330 | char * s; | 330 | char * s; |
diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c index 8ab448611680..6bf21f83837d 100644 --- a/scripts/basic/fixdep.c +++ b/scripts/basic/fixdep.c | |||
@@ -124,7 +124,7 @@ char *target; | |||
124 | char *depfile; | 124 | char *depfile; |
125 | char *cmdline; | 125 | char *cmdline; |
126 | 126 | ||
127 | void usage(void) | 127 | static void usage(void) |
128 | { | 128 | { |
129 | fprintf(stderr, "Usage: fixdep <depfile> <target> <cmdline>\n"); | 129 | fprintf(stderr, "Usage: fixdep <depfile> <target> <cmdline>\n"); |
130 | exit(1); | 130 | exit(1); |
@@ -133,7 +133,7 @@ void usage(void) | |||
133 | /* | 133 | /* |
134 | * Print out the commandline prefixed with cmd_<target filename> := | 134 | * Print out the commandline prefixed with cmd_<target filename> := |
135 | */ | 135 | */ |
136 | void print_cmdline(void) | 136 | static void print_cmdline(void) |
137 | { | 137 | { |
138 | printf("cmd_%s := %s\n\n", target, cmdline); | 138 | printf("cmd_%s := %s\n\n", target, cmdline); |
139 | } | 139 | } |
@@ -146,7 +146,7 @@ int len_config = 0; | |||
146 | * Grow the configuration string to a desired length. | 146 | * Grow the configuration string to a desired length. |
147 | * Usually the first growth is plenty. | 147 | * Usually the first growth is plenty. |
148 | */ | 148 | */ |
149 | void grow_config(int len) | 149 | static void grow_config(int len) |
150 | { | 150 | { |
151 | while (len_config + len > size_config) { | 151 | while (len_config + len > size_config) { |
152 | if (size_config == 0) | 152 | if (size_config == 0) |
@@ -162,7 +162,7 @@ void grow_config(int len) | |||
162 | /* | 162 | /* |
163 | * Lookup a value in the configuration string. | 163 | * Lookup a value in the configuration string. |
164 | */ | 164 | */ |
165 | int is_defined_config(const char * name, int len) | 165 | static int is_defined_config(const char * name, int len) |
166 | { | 166 | { |
167 | const char * pconfig; | 167 | const char * pconfig; |
168 | const char * plast = str_config + len_config - len; | 168 | const char * plast = str_config + len_config - len; |
@@ -178,7 +178,7 @@ int is_defined_config(const char * name, int len) | |||
178 | /* | 178 | /* |
179 | * Add a new value to the configuration string. | 179 | * Add a new value to the configuration string. |
180 | */ | 180 | */ |
181 | void define_config(const char * name, int len) | 181 | static void define_config(const char * name, int len) |
182 | { | 182 | { |
183 | grow_config(len + 1); | 183 | grow_config(len + 1); |
184 | 184 | ||
@@ -190,7 +190,7 @@ void define_config(const char * name, int len) | |||
190 | /* | 190 | /* |
191 | * Clear the set of configuration strings. | 191 | * Clear the set of configuration strings. |
192 | */ | 192 | */ |
193 | void clear_config(void) | 193 | static void clear_config(void) |
194 | { | 194 | { |
195 | len_config = 0; | 195 | len_config = 0; |
196 | define_config("", 0); | 196 | define_config("", 0); |
@@ -199,7 +199,7 @@ void clear_config(void) | |||
199 | /* | 199 | /* |
200 | * Record the use of a CONFIG_* word. | 200 | * Record the use of a CONFIG_* word. |
201 | */ | 201 | */ |
202 | void use_config(char *m, int slen) | 202 | static void use_config(char *m, int slen) |
203 | { | 203 | { |
204 | char s[PATH_MAX]; | 204 | char s[PATH_MAX]; |
205 | char *p; | 205 | char *p; |
@@ -220,7 +220,7 @@ void use_config(char *m, int slen) | |||
220 | printf(" $(wildcard include/config/%s.h) \\\n", s); | 220 | printf(" $(wildcard include/config/%s.h) \\\n", s); |
221 | } | 221 | } |
222 | 222 | ||
223 | void parse_config_file(char *map, size_t len) | 223 | static void parse_config_file(char *map, size_t len) |
224 | { | 224 | { |
225 | int *end = (int *) (map + len); | 225 | int *end = (int *) (map + len); |
226 | /* start at +1, so that p can never be < map */ | 226 | /* start at +1, so that p can never be < map */ |
@@ -254,7 +254,7 @@ void parse_config_file(char *map, size_t len) | |||
254 | } | 254 | } |
255 | 255 | ||
256 | /* test is s ends in sub */ | 256 | /* test is s ends in sub */ |
257 | int strrcmp(char *s, char *sub) | 257 | static int strrcmp(char *s, char *sub) |
258 | { | 258 | { |
259 | int slen = strlen(s); | 259 | int slen = strlen(s); |
260 | int sublen = strlen(sub); | 260 | int sublen = strlen(sub); |
@@ -265,7 +265,7 @@ int strrcmp(char *s, char *sub) | |||
265 | return memcmp(s + slen - sublen, sub, sublen); | 265 | return memcmp(s + slen - sublen, sub, sublen); |
266 | } | 266 | } |
267 | 267 | ||
268 | void do_config_file(char *filename) | 268 | static void do_config_file(char *filename) |
269 | { | 269 | { |
270 | struct stat st; | 270 | struct stat st; |
271 | int fd; | 271 | int fd; |
@@ -296,7 +296,7 @@ void do_config_file(char *filename) | |||
296 | close(fd); | 296 | close(fd); |
297 | } | 297 | } |
298 | 298 | ||
299 | void parse_dep_file(void *map, size_t len) | 299 | static void parse_dep_file(void *map, size_t len) |
300 | { | 300 | { |
301 | char *m = map; | 301 | char *m = map; |
302 | char *end = m + len; | 302 | char *end = m + len; |
@@ -336,7 +336,7 @@ void parse_dep_file(void *map, size_t len) | |||
336 | printf("$(deps_%s):\n", target); | 336 | printf("$(deps_%s):\n", target); |
337 | } | 337 | } |
338 | 338 | ||
339 | void print_deps(void) | 339 | static void print_deps(void) |
340 | { | 340 | { |
341 | struct stat st; | 341 | struct stat st; |
342 | int fd; | 342 | int fd; |
@@ -368,7 +368,7 @@ void print_deps(void) | |||
368 | close(fd); | 368 | close(fd); |
369 | } | 369 | } |
370 | 370 | ||
371 | void traps(void) | 371 | static void traps(void) |
372 | { | 372 | { |
373 | static char test[] __attribute__((aligned(sizeof(int)))) = "CONF"; | 373 | static char test[] __attribute__((aligned(sizeof(int)))) = "CONF"; |
374 | int *p = (int *)test; | 374 | int *p = (int *)test; |
diff --git a/scripts/basic/hash.c b/scripts/basic/hash.c index 3299ad7fc8c0..2ef5d3f666b8 100644 --- a/scripts/basic/hash.c +++ b/scripts/basic/hash.c | |||
@@ -21,7 +21,7 @@ static void usage(void) | |||
21 | * http://www.cse.yorku.ca/~oz/hash.html | 21 | * http://www.cse.yorku.ca/~oz/hash.html |
22 | */ | 22 | */ |
23 | 23 | ||
24 | unsigned int djb2_hash(char *str) | 24 | static unsigned int djb2_hash(char *str) |
25 | { | 25 | { |
26 | unsigned long hash = 5381; | 26 | unsigned long hash = 5381; |
27 | int c; | 27 | int c; |
@@ -34,7 +34,7 @@ unsigned int djb2_hash(char *str) | |||
34 | return (unsigned int)(hash & ((1 << DYNAMIC_DEBUG_HASH_BITS) - 1)); | 34 | return (unsigned int)(hash & ((1 << DYNAMIC_DEBUG_HASH_BITS) - 1)); |
35 | } | 35 | } |
36 | 36 | ||
37 | unsigned int r5_hash(char *str) | 37 | static unsigned int r5_hash(char *str) |
38 | { | 38 | { |
39 | unsigned long hash = 0; | 39 | unsigned long hash = 0; |
40 | int c; | 40 | int c; |
diff --git a/scripts/checkincludes.pl b/scripts/checkincludes.pl index 8e6b716c191c..676ddc07d6fa 100755 --- a/scripts/checkincludes.pl +++ b/scripts/checkincludes.pl | |||
@@ -1,24 +1,85 @@ | |||
1 | #!/usr/bin/perl | 1 | #!/usr/bin/perl |
2 | # | 2 | # |
3 | # checkincludes: Find files included more than once in (other) files. | 3 | # checkincludes: find/remove files included more than once |
4 | # | ||
4 | # Copyright abandoned, 2000, Niels Kristian Bech Jensen <nkbj@image.dk>. | 5 | # Copyright abandoned, 2000, Niels Kristian Bech Jensen <nkbj@image.dk>. |
6 | # Copyright 2009 Luis R. Rodriguez <mcgrof@gmail.com> | ||
7 | # | ||
8 | # This script checks for duplicate includes. It also has support | ||
9 | # to remove them in place. Note that this will not take into | ||
10 | # consideration macros so you should run this only if you know | ||
11 | # you do have real dups and do not have them under #ifdef's. You | ||
12 | # could also just review the results. | ||
13 | |||
14 | sub usage { | ||
15 | print "Usage: checkincludes.pl [-r]\n"; | ||
16 | print "By default we just warn of duplicates\n"; | ||
17 | print "To remove duplicated includes in place use -r\n"; | ||
18 | exit 1; | ||
19 | } | ||
20 | |||
21 | my $remove = 0; | ||
22 | |||
23 | if ($#ARGV < 0) { | ||
24 | usage(); | ||
25 | } | ||
26 | |||
27 | if ($#ARGV >= 1) { | ||
28 | if ($ARGV[0] =~ /^-/) { | ||
29 | if ($ARGV[0] eq "-r") { | ||
30 | $remove = 1; | ||
31 | shift; | ||
32 | } else { | ||
33 | usage(); | ||
34 | } | ||
35 | } | ||
36 | } | ||
5 | 37 | ||
6 | foreach $file (@ARGV) { | 38 | foreach $file (@ARGV) { |
7 | open(FILE, $file) or die "Cannot open $file: $!.\n"; | 39 | open(FILE, $file) or die "Cannot open $file: $!.\n"; |
8 | 40 | ||
9 | my %includedfiles = (); | 41 | my %includedfiles = (); |
42 | my @file_lines = (); | ||
10 | 43 | ||
11 | while (<FILE>) { | 44 | while (<FILE>) { |
12 | if (m/^\s*#\s*include\s*[<"](\S*)[>"]/o) { | 45 | if (m/^\s*#\s*include\s*[<"](\S*)[>"]/o) { |
13 | ++$includedfiles{$1}; | 46 | ++$includedfiles{$1}; |
14 | } | 47 | } |
48 | push(@file_lines, $_); | ||
15 | } | 49 | } |
16 | 50 | ||
17 | foreach $filename (keys %includedfiles) { | 51 | close(FILE); |
18 | if ($includedfiles{$filename} > 1) { | 52 | |
19 | print "$file: $filename is included more than once.\n"; | 53 | if (!$remove) { |
54 | foreach $filename (keys %includedfiles) { | ||
55 | if ($includedfiles{$filename} > 1) { | ||
56 | print "$file: $filename is included more than once.\n"; | ||
57 | } | ||
20 | } | 58 | } |
59 | next; | ||
21 | } | 60 | } |
22 | 61 | ||
62 | open(FILE,">$file") || die("Cannot write to $file: $!"); | ||
63 | |||
64 | my $dups = 0; | ||
65 | foreach (@file_lines) { | ||
66 | if (m/^\s*#\s*include\s*[<"](\S*)[>"]/o) { | ||
67 | foreach $filename (keys %includedfiles) { | ||
68 | if ($1 eq $filename) { | ||
69 | if ($includedfiles{$filename} > 1) { | ||
70 | $includedfiles{$filename}--; | ||
71 | $dups++; | ||
72 | } else { | ||
73 | print FILE $_; | ||
74 | } | ||
75 | } | ||
76 | } | ||
77 | } else { | ||
78 | print FILE $_; | ||
79 | } | ||
80 | } | ||
81 | if ($dups > 0) { | ||
82 | print "$file: removed $dups duplicate includes\n"; | ||
83 | } | ||
23 | close(FILE); | 84 | close(FILE); |
24 | } | 85 | } |
diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c index 3baaaecd6b13..9960d1c303f8 100644 --- a/scripts/kconfig/conf.c +++ b/scripts/kconfig/conf.c | |||
@@ -38,14 +38,14 @@ static int conf_cnt; | |||
38 | static char line[128]; | 38 | static char line[128]; |
39 | static struct menu *rootEntry; | 39 | static struct menu *rootEntry; |
40 | 40 | ||
41 | static char nohelp_text[] = N_("Sorry, no help available for this option yet.\n"); | 41 | static void print_help(struct menu *menu) |
42 | |||
43 | static const char *get_help(struct menu *menu) | ||
44 | { | 42 | { |
45 | if (menu_has_help(menu)) | 43 | struct gstr help = str_new(); |
46 | return _(menu_get_help(menu)); | 44 | |
47 | else | 45 | menu_get_ext_help(menu, &help); |
48 | return nohelp_text; | 46 | |
47 | printf("\n%s\n", str_get(&help)); | ||
48 | str_free(&help); | ||
49 | } | 49 | } |
50 | 50 | ||
51 | static void strip(char *str) | 51 | static void strip(char *str) |
@@ -121,7 +121,7 @@ static int conf_askvalue(struct symbol *sym, const char *def) | |||
121 | return 1; | 121 | return 1; |
122 | } | 122 | } |
123 | 123 | ||
124 | int conf_string(struct menu *menu) | 124 | static int conf_string(struct menu *menu) |
125 | { | 125 | { |
126 | struct symbol *sym = menu->sym; | 126 | struct symbol *sym = menu->sym; |
127 | const char *def; | 127 | const char *def; |
@@ -140,7 +140,7 @@ int conf_string(struct menu *menu) | |||
140 | case '?': | 140 | case '?': |
141 | /* print help */ | 141 | /* print help */ |
142 | if (line[1] == '\n') { | 142 | if (line[1] == '\n') { |
143 | printf("\n%s\n", get_help(menu)); | 143 | print_help(menu); |
144 | def = NULL; | 144 | def = NULL; |
145 | break; | 145 | break; |
146 | } | 146 | } |
@@ -220,7 +220,7 @@ static int conf_sym(struct menu *menu) | |||
220 | if (sym_set_tristate_value(sym, newval)) | 220 | if (sym_set_tristate_value(sym, newval)) |
221 | return 0; | 221 | return 0; |
222 | help: | 222 | help: |
223 | printf("\n%s\n", get_help(menu)); | 223 | print_help(menu); |
224 | } | 224 | } |
225 | } | 225 | } |
226 | 226 | ||
@@ -307,7 +307,7 @@ static int conf_choice(struct menu *menu) | |||
307 | fgets(line, 128, stdin); | 307 | fgets(line, 128, stdin); |
308 | strip(line); | 308 | strip(line); |
309 | if (line[0] == '?') { | 309 | if (line[0] == '?') { |
310 | printf("\n%s\n", get_help(menu)); | 310 | print_help(menu); |
311 | continue; | 311 | continue; |
312 | } | 312 | } |
313 | if (!line[0]) | 313 | if (!line[0]) |
@@ -331,7 +331,7 @@ static int conf_choice(struct menu *menu) | |||
331 | if (!child) | 331 | if (!child) |
332 | continue; | 332 | continue; |
333 | if (line[strlen(line) - 1] == '?') { | 333 | if (line[strlen(line) - 1] == '?') { |
334 | printf("\n%s\n", get_help(child)); | 334 | print_help(child); |
335 | continue; | 335 | continue; |
336 | } | 336 | } |
337 | sym_set_choice_value(sym, child->sym); | 337 | sym_set_choice_value(sym, child->sym); |
diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c index a04da3459f0f..b55e72ff2fc6 100644 --- a/scripts/kconfig/confdata.c +++ b/scripts/kconfig/confdata.c | |||
@@ -560,7 +560,7 @@ int conf_write(const char *name) | |||
560 | return 0; | 560 | return 0; |
561 | } | 561 | } |
562 | 562 | ||
563 | int conf_split_config(void) | 563 | static int conf_split_config(void) |
564 | { | 564 | { |
565 | const char *name; | 565 | const char *name; |
566 | char path[128]; | 566 | char path[128]; |
diff --git a/scripts/kconfig/expr.c b/scripts/kconfig/expr.c index 579ece4fa584..edd3f39a080a 100644 --- a/scripts/kconfig/expr.c +++ b/scripts/kconfig/expr.c | |||
@@ -348,7 +348,7 @@ struct expr *expr_trans_bool(struct expr *e) | |||
348 | /* | 348 | /* |
349 | * e1 || e2 -> ? | 349 | * e1 || e2 -> ? |
350 | */ | 350 | */ |
351 | struct expr *expr_join_or(struct expr *e1, struct expr *e2) | 351 | static struct expr *expr_join_or(struct expr *e1, struct expr *e2) |
352 | { | 352 | { |
353 | struct expr *tmp; | 353 | struct expr *tmp; |
354 | struct symbol *sym1, *sym2; | 354 | struct symbol *sym1, *sym2; |
@@ -412,7 +412,7 @@ struct expr *expr_join_or(struct expr *e1, struct expr *e2) | |||
412 | return NULL; | 412 | return NULL; |
413 | } | 413 | } |
414 | 414 | ||
415 | struct expr *expr_join_and(struct expr *e1, struct expr *e2) | 415 | static struct expr *expr_join_and(struct expr *e1, struct expr *e2) |
416 | { | 416 | { |
417 | struct expr *tmp; | 417 | struct expr *tmp; |
418 | struct symbol *sym1, *sym2; | 418 | struct symbol *sym1, *sym2; |
@@ -1098,6 +1098,8 @@ void expr_fprint(struct expr *e, FILE *out) | |||
1098 | static void expr_print_gstr_helper(void *data, struct symbol *sym, const char *str) | 1098 | static void expr_print_gstr_helper(void *data, struct symbol *sym, const char *str) |
1099 | { | 1099 | { |
1100 | str_append((struct gstr*)data, str); | 1100 | str_append((struct gstr*)data, str); |
1101 | if (sym) | ||
1102 | str_printf((struct gstr*)data, " [=%s]", sym_get_string_value(sym)); | ||
1101 | } | 1103 | } |
1102 | 1104 | ||
1103 | void expr_gstr_print(struct expr *e, struct gstr *gs) | 1105 | void expr_gstr_print(struct expr *e, struct gstr *gs) |
diff --git a/scripts/kconfig/gconf.c b/scripts/kconfig/gconf.c index 199b22bb49e2..65464366fe38 100644 --- a/scripts/kconfig/gconf.c +++ b/scripts/kconfig/gconf.c | |||
@@ -456,19 +456,9 @@ static void text_insert_help(struct menu *menu) | |||
456 | GtkTextBuffer *buffer; | 456 | GtkTextBuffer *buffer; |
457 | GtkTextIter start, end; | 457 | GtkTextIter start, end; |
458 | const char *prompt = _(menu_get_prompt(menu)); | 458 | const char *prompt = _(menu_get_prompt(menu)); |
459 | gchar *name; | 459 | struct gstr help = str_new(); |
460 | const char *help; | ||
461 | 460 | ||
462 | help = menu_get_help(menu); | 461 | menu_get_ext_help(menu, &help); |
463 | |||
464 | /* Gettextize if the help text not empty */ | ||
465 | if ((help != 0) && (help[0] != 0)) | ||
466 | help = _(help); | ||
467 | |||
468 | if (menu->sym && menu->sym->name) | ||
469 | name = g_strdup_printf(menu->sym->name); | ||
470 | else | ||
471 | name = g_strdup(""); | ||
472 | 462 | ||
473 | buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w)); | 463 | buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w)); |
474 | gtk_text_buffer_get_bounds(buffer, &start, &end); | 464 | gtk_text_buffer_get_bounds(buffer, &start, &end); |
@@ -478,14 +468,11 @@ static void text_insert_help(struct menu *menu) | |||
478 | gtk_text_buffer_get_end_iter(buffer, &end); | 468 | gtk_text_buffer_get_end_iter(buffer, &end); |
479 | gtk_text_buffer_insert_with_tags(buffer, &end, prompt, -1, tag1, | 469 | gtk_text_buffer_insert_with_tags(buffer, &end, prompt, -1, tag1, |
480 | NULL); | 470 | NULL); |
481 | gtk_text_buffer_insert_at_cursor(buffer, " ", 1); | ||
482 | gtk_text_buffer_get_end_iter(buffer, &end); | ||
483 | gtk_text_buffer_insert_with_tags(buffer, &end, name, -1, tag1, | ||
484 | NULL); | ||
485 | gtk_text_buffer_insert_at_cursor(buffer, "\n\n", 2); | 471 | gtk_text_buffer_insert_at_cursor(buffer, "\n\n", 2); |
486 | gtk_text_buffer_get_end_iter(buffer, &end); | 472 | gtk_text_buffer_get_end_iter(buffer, &end); |
487 | gtk_text_buffer_insert_with_tags(buffer, &end, help, -1, tag2, | 473 | gtk_text_buffer_insert_with_tags(buffer, &end, str_get(&help), -1, tag2, |
488 | NULL); | 474 | NULL); |
475 | str_free(&help); | ||
489 | } | 476 | } |
490 | 477 | ||
491 | 478 | ||
diff --git a/scripts/kconfig/gconf.glade b/scripts/kconfig/gconf.glade index 803233fdd6dd..b1c86c19292c 100644 --- a/scripts/kconfig/gconf.glade +++ b/scripts/kconfig/gconf.glade | |||
@@ -547,7 +547,7 @@ | |||
547 | <property name="headers_visible">True</property> | 547 | <property name="headers_visible">True</property> |
548 | <property name="rules_hint">False</property> | 548 | <property name="rules_hint">False</property> |
549 | <property name="reorderable">False</property> | 549 | <property name="reorderable">False</property> |
550 | <property name="enable_search">True</property> | 550 | <property name="enable_search">False</property> |
551 | <signal name="cursor_changed" handler="on_treeview2_cursor_changed" last_modification_time="Sun, 12 Jan 2003 15:58:22 GMT"/> | 551 | <signal name="cursor_changed" handler="on_treeview2_cursor_changed" last_modification_time="Sun, 12 Jan 2003 15:58:22 GMT"/> |
552 | <signal name="button_press_event" handler="on_treeview1_button_press_event" last_modification_time="Sun, 12 Jan 2003 16:03:52 GMT"/> | 552 | <signal name="button_press_event" handler="on_treeview1_button_press_event" last_modification_time="Sun, 12 Jan 2003 16:03:52 GMT"/> |
553 | <signal name="key_press_event" handler="on_treeview2_key_press_event" last_modification_time="Sun, 12 Jan 2003 16:11:44 GMT"/> | 553 | <signal name="key_press_event" handler="on_treeview2_key_press_event" last_modification_time="Sun, 12 Jan 2003 16:11:44 GMT"/> |
@@ -582,7 +582,7 @@ | |||
582 | <property name="headers_visible">True</property> | 582 | <property name="headers_visible">True</property> |
583 | <property name="rules_hint">False</property> | 583 | <property name="rules_hint">False</property> |
584 | <property name="reorderable">False</property> | 584 | <property name="reorderable">False</property> |
585 | <property name="enable_search">True</property> | 585 | <property name="enable_search">False</property> |
586 | <signal name="cursor_changed" handler="on_treeview2_cursor_changed" last_modification_time="Sun, 12 Jan 2003 15:57:55 GMT"/> | 586 | <signal name="cursor_changed" handler="on_treeview2_cursor_changed" last_modification_time="Sun, 12 Jan 2003 15:57:55 GMT"/> |
587 | <signal name="button_press_event" handler="on_treeview2_button_press_event" last_modification_time="Sun, 12 Jan 2003 15:57:58 GMT"/> | 587 | <signal name="button_press_event" handler="on_treeview2_button_press_event" last_modification_time="Sun, 12 Jan 2003 15:57:58 GMT"/> |
588 | <signal name="key_press_event" handler="on_treeview2_key_press_event" last_modification_time="Sun, 12 Jan 2003 15:58:01 GMT"/> | 588 | <signal name="key_press_event" handler="on_treeview2_key_press_event" last_modification_time="Sun, 12 Jan 2003 15:58:01 GMT"/> |
diff --git a/scripts/kconfig/kxgettext.c b/scripts/kconfig/kxgettext.c index 8d9ce22b0fc5..dcc3fcc0cc9a 100644 --- a/scripts/kconfig/kxgettext.c +++ b/scripts/kconfig/kxgettext.c | |||
@@ -166,7 +166,7 @@ static int message__add(const char *msg, char *option, char *file, int lineno) | |||
166 | return rc; | 166 | return rc; |
167 | } | 167 | } |
168 | 168 | ||
169 | void menu_build_message_list(struct menu *menu) | 169 | static void menu_build_message_list(struct menu *menu) |
170 | { | 170 | { |
171 | struct menu *child; | 171 | struct menu *child; |
172 | 172 | ||
@@ -211,7 +211,7 @@ static void message__print_gettext_msgid_msgstr(struct message *self) | |||
211 | "msgstr \"\"\n", self->msg); | 211 | "msgstr \"\"\n", self->msg); |
212 | } | 212 | } |
213 | 213 | ||
214 | void menu__xgettext(void) | 214 | static void menu__xgettext(void) |
215 | { | 215 | { |
216 | struct message *m = message__list; | 216 | struct message *m = message__list; |
217 | 217 | ||
diff --git a/scripts/kconfig/lkc_proto.h b/scripts/kconfig/lkc_proto.h index 8e69461313d1..ffeb532b2cff 100644 --- a/scripts/kconfig/lkc_proto.h +++ b/scripts/kconfig/lkc_proto.h | |||
@@ -17,6 +17,8 @@ P(menu_get_root_menu,struct menu *,(struct menu *menu)); | |||
17 | P(menu_get_parent_menu,struct menu *,(struct menu *menu)); | 17 | P(menu_get_parent_menu,struct menu *,(struct menu *menu)); |
18 | P(menu_has_help,bool,(struct menu *menu)); | 18 | P(menu_has_help,bool,(struct menu *menu)); |
19 | P(menu_get_help,const char *,(struct menu *menu)); | 19 | P(menu_get_help,const char *,(struct menu *menu)); |
20 | P(get_symbol_str,void,(struct gstr *r, struct symbol *sym)); | ||
21 | P(menu_get_ext_help,void,(struct menu *menu, struct gstr *help)); | ||
20 | 22 | ||
21 | /* symbol.c */ | 23 | /* symbol.c */ |
22 | P(symbol_hash,struct symbol *,[SYMBOL_HASHSIZE]); | 24 | P(symbol_hash,struct symbol *,[SYMBOL_HASHSIZE]); |
diff --git a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c index 25b60bc117f7..d82953573588 100644 --- a/scripts/kconfig/mconf.c +++ b/scripts/kconfig/mconf.c | |||
@@ -199,8 +199,6 @@ inputbox_instructions_string[] = N_( | |||
199 | setmod_text[] = N_( | 199 | setmod_text[] = N_( |
200 | "This feature depends on another which has been configured as a module.\n" | 200 | "This feature depends on another which has been configured as a module.\n" |
201 | "As a result, this feature will be built as a module."), | 201 | "As a result, this feature will be built as a module."), |
202 | nohelp_text[] = N_( | ||
203 | "There is no help available for this kernel option.\n"), | ||
204 | load_config_text[] = N_( | 202 | load_config_text[] = N_( |
205 | "Enter the name of the configuration file you wish to load. " | 203 | "Enter the name of the configuration file you wish to load. " |
206 | "Accept the name shown to restore the configuration you " | 204 | "Accept the name shown to restore the configuration you " |
@@ -284,66 +282,6 @@ static void show_textbox(const char *title, const char *text, int r, int c); | |||
284 | static void show_helptext(const char *title, const char *text); | 282 | static void show_helptext(const char *title, const char *text); |
285 | static void show_help(struct menu *menu); | 283 | static void show_help(struct menu *menu); |
286 | 284 | ||
287 | static void get_prompt_str(struct gstr *r, struct property *prop) | ||
288 | { | ||
289 | int i, j; | ||
290 | struct menu *submenu[8], *menu; | ||
291 | |||
292 | str_printf(r, _("Prompt: %s\n"), _(prop->text)); | ||
293 | str_printf(r, _(" Defined at %s:%d\n"), prop->menu->file->name, | ||
294 | prop->menu->lineno); | ||
295 | if (!expr_is_yes(prop->visible.expr)) { | ||
296 | str_append(r, _(" Depends on: ")); | ||
297 | expr_gstr_print(prop->visible.expr, r); | ||
298 | str_append(r, "\n"); | ||
299 | } | ||
300 | menu = prop->menu->parent; | ||
301 | for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) | ||
302 | submenu[i++] = menu; | ||
303 | if (i > 0) { | ||
304 | str_printf(r, _(" Location:\n")); | ||
305 | for (j = 4; --i >= 0; j += 2) { | ||
306 | menu = submenu[i]; | ||
307 | str_printf(r, "%*c-> %s", j, ' ', _(menu_get_prompt(menu))); | ||
308 | if (menu->sym) { | ||
309 | str_printf(r, " (%s [=%s])", menu->sym->name ? | ||
310 | menu->sym->name : _("<choice>"), | ||
311 | sym_get_string_value(menu->sym)); | ||
312 | } | ||
313 | str_append(r, "\n"); | ||
314 | } | ||
315 | } | ||
316 | } | ||
317 | |||
318 | static void get_symbol_str(struct gstr *r, struct symbol *sym) | ||
319 | { | ||
320 | bool hit; | ||
321 | struct property *prop; | ||
322 | |||
323 | if (sym && sym->name) | ||
324 | str_printf(r, "Symbol: %s [=%s]\n", sym->name, | ||
325 | sym_get_string_value(sym)); | ||
326 | for_all_prompts(sym, prop) | ||
327 | get_prompt_str(r, prop); | ||
328 | hit = false; | ||
329 | for_all_properties(sym, prop, P_SELECT) { | ||
330 | if (!hit) { | ||
331 | str_append(r, " Selects: "); | ||
332 | hit = true; | ||
333 | } else | ||
334 | str_printf(r, " && "); | ||
335 | expr_gstr_print(prop->expr, r); | ||
336 | } | ||
337 | if (hit) | ||
338 | str_append(r, "\n"); | ||
339 | if (sym->rev_dep.expr) { | ||
340 | str_append(r, _(" Selected by: ")); | ||
341 | expr_gstr_print(sym->rev_dep.expr, r); | ||
342 | str_append(r, "\n"); | ||
343 | } | ||
344 | str_append(r, "\n\n"); | ||
345 | } | ||
346 | |||
347 | static struct gstr get_relations_str(struct symbol **sym_arr) | 285 | static struct gstr get_relations_str(struct symbol **sym_arr) |
348 | { | 286 | { |
349 | struct symbol *sym; | 287 | struct symbol *sym; |
@@ -699,19 +637,9 @@ static void show_helptext(const char *title, const char *text) | |||
699 | static void show_help(struct menu *menu) | 637 | static void show_help(struct menu *menu) |
700 | { | 638 | { |
701 | struct gstr help = str_new(); | 639 | struct gstr help = str_new(); |
702 | struct symbol *sym = menu->sym; | 640 | |
703 | 641 | menu_get_ext_help(menu, &help); | |
704 | if (menu_has_help(menu)) | 642 | |
705 | { | ||
706 | if (sym->name) { | ||
707 | str_printf(&help, "CONFIG_%s:\n\n", sym->name); | ||
708 | str_append(&help, _(menu_get_help(menu))); | ||
709 | str_append(&help, "\n"); | ||
710 | } | ||
711 | } else { | ||
712 | str_append(&help, nohelp_text); | ||
713 | } | ||
714 | get_symbol_str(&help, sym); | ||
715 | show_helptext(_(menu_get_prompt(menu)), str_get(&help)); | 643 | show_helptext(_(menu_get_prompt(menu)), str_get(&help)); |
716 | str_free(&help); | 644 | str_free(&help); |
717 | } | 645 | } |
diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c index 07ff8d105c9d..059a2465c574 100644 --- a/scripts/kconfig/menu.c +++ b/scripts/kconfig/menu.c | |||
@@ -9,6 +9,9 @@ | |||
9 | #define LKC_DIRECT_LINK | 9 | #define LKC_DIRECT_LINK |
10 | #include "lkc.h" | 10 | #include "lkc.h" |
11 | 11 | ||
12 | static const char nohelp_text[] = N_( | ||
13 | "There is no help available for this kernel option.\n"); | ||
14 | |||
12 | struct menu rootmenu; | 15 | struct menu rootmenu; |
13 | static struct menu **last_entry_ptr; | 16 | static struct menu **last_entry_ptr; |
14 | 17 | ||
@@ -74,7 +77,7 @@ void menu_end_menu(void) | |||
74 | current_menu = current_menu->parent; | 77 | current_menu = current_menu->parent; |
75 | } | 78 | } |
76 | 79 | ||
77 | struct expr *menu_check_dep(struct expr *e) | 80 | static struct expr *menu_check_dep(struct expr *e) |
78 | { | 81 | { |
79 | if (!e) | 82 | if (!e) |
80 | return e; | 83 | return e; |
@@ -184,7 +187,7 @@ static int menu_range_valid_sym(struct symbol *sym, struct symbol *sym2) | |||
184 | (sym2->type == S_UNKNOWN && sym_string_valid(sym, sym2->name)); | 187 | (sym2->type == S_UNKNOWN && sym_string_valid(sym, sym2->name)); |
185 | } | 188 | } |
186 | 189 | ||
187 | void sym_check_prop(struct symbol *sym) | 190 | static void sym_check_prop(struct symbol *sym) |
188 | { | 191 | { |
189 | struct property *prop; | 192 | struct property *prop; |
190 | struct symbol *sym2; | 193 | struct symbol *sym2; |
@@ -451,3 +454,80 @@ const char *menu_get_help(struct menu *menu) | |||
451 | else | 454 | else |
452 | return ""; | 455 | return ""; |
453 | } | 456 | } |
457 | |||
458 | static void get_prompt_str(struct gstr *r, struct property *prop) | ||
459 | { | ||
460 | int i, j; | ||
461 | struct menu *submenu[8], *menu; | ||
462 | |||
463 | str_printf(r, _("Prompt: %s\n"), _(prop->text)); | ||
464 | str_printf(r, _(" Defined at %s:%d\n"), prop->menu->file->name, | ||
465 | prop->menu->lineno); | ||
466 | if (!expr_is_yes(prop->visible.expr)) { | ||
467 | str_append(r, _(" Depends on: ")); | ||
468 | expr_gstr_print(prop->visible.expr, r); | ||
469 | str_append(r, "\n"); | ||
470 | } | ||
471 | menu = prop->menu->parent; | ||
472 | for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) | ||
473 | submenu[i++] = menu; | ||
474 | if (i > 0) { | ||
475 | str_printf(r, _(" Location:\n")); | ||
476 | for (j = 4; --i >= 0; j += 2) { | ||
477 | menu = submenu[i]; | ||
478 | str_printf(r, "%*c-> %s", j, ' ', _(menu_get_prompt(menu))); | ||
479 | if (menu->sym) { | ||
480 | str_printf(r, " (%s [=%s])", menu->sym->name ? | ||
481 | menu->sym->name : _("<choice>"), | ||
482 | sym_get_string_value(menu->sym)); | ||
483 | } | ||
484 | str_append(r, "\n"); | ||
485 | } | ||
486 | } | ||
487 | } | ||
488 | |||
489 | void get_symbol_str(struct gstr *r, struct symbol *sym) | ||
490 | { | ||
491 | bool hit; | ||
492 | struct property *prop; | ||
493 | |||
494 | if (sym && sym->name) | ||
495 | str_printf(r, "Symbol: %s [=%s]\n", sym->name, | ||
496 | sym_get_string_value(sym)); | ||
497 | for_all_prompts(sym, prop) | ||
498 | get_prompt_str(r, prop); | ||
499 | hit = false; | ||
500 | for_all_properties(sym, prop, P_SELECT) { | ||
501 | if (!hit) { | ||
502 | str_append(r, " Selects: "); | ||
503 | hit = true; | ||
504 | } else | ||
505 | str_printf(r, " && "); | ||
506 | expr_gstr_print(prop->expr, r); | ||
507 | } | ||
508 | if (hit) | ||
509 | str_append(r, "\n"); | ||
510 | if (sym->rev_dep.expr) { | ||
511 | str_append(r, _(" Selected by: ")); | ||
512 | expr_gstr_print(sym->rev_dep.expr, r); | ||
513 | str_append(r, "\n"); | ||
514 | } | ||
515 | str_append(r, "\n\n"); | ||
516 | } | ||
517 | |||
518 | void menu_get_ext_help(struct menu *menu, struct gstr *help) | ||
519 | { | ||
520 | struct symbol *sym = menu->sym; | ||
521 | |||
522 | if (menu_has_help(menu)) { | ||
523 | if (sym->name) { | ||
524 | str_printf(help, "CONFIG_%s:\n\n", sym->name); | ||
525 | str_append(help, _(menu_get_help(menu))); | ||
526 | str_append(help, "\n"); | ||
527 | } | ||
528 | } else { | ||
529 | str_append(help, nohelp_text); | ||
530 | } | ||
531 | if (sym) | ||
532 | get_symbol_str(help, sym); | ||
533 | } | ||
diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc index ce7d508c7520..00c51507cfcc 100644 --- a/scripts/kconfig/qconf.cc +++ b/scripts/kconfig/qconf.cc | |||
@@ -1042,12 +1042,10 @@ void ConfigInfoView::menuInfo(void) | |||
1042 | if (showDebug()) | 1042 | if (showDebug()) |
1043 | debug = debug_info(sym); | 1043 | debug = debug_info(sym); |
1044 | 1044 | ||
1045 | help = menu_get_help(menu); | 1045 | struct gstr help_gstr = str_new(); |
1046 | /* Gettextize if the help text not empty */ | 1046 | menu_get_ext_help(menu, &help_gstr); |
1047 | if (help.isEmpty()) | 1047 | help = print_filter(str_get(&help_gstr)); |
1048 | help = print_filter(menu_get_help(menu)); | 1048 | str_free(&help_gstr); |
1049 | else | ||
1050 | help = print_filter(_(menu_get_help(menu))); | ||
1051 | } else if (menu->prompt) { | 1049 | } else if (menu->prompt) { |
1052 | head += "<big><b>"; | 1050 | head += "<big><b>"; |
1053 | head += print_filter(_(menu->prompt->text)); | 1051 | head += print_filter(_(menu->prompt->text)); |
diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c index 18f3e5c33634..6c8fbbb66ebc 100644 --- a/scripts/kconfig/symbol.c +++ b/scripts/kconfig/symbol.c | |||
@@ -36,7 +36,7 @@ tristate modules_val; | |||
36 | 36 | ||
37 | struct expr *sym_env_list; | 37 | struct expr *sym_env_list; |
38 | 38 | ||
39 | void sym_add_default(struct symbol *sym, const char *def) | 39 | static void sym_add_default(struct symbol *sym, const char *def) |
40 | { | 40 | { |
41 | struct property *prop = prop_alloc(P_DEFAULT, sym); | 41 | struct property *prop = prop_alloc(P_DEFAULT, sym); |
42 | 42 | ||
@@ -125,7 +125,7 @@ struct property *sym_get_default_prop(struct symbol *sym) | |||
125 | return NULL; | 125 | return NULL; |
126 | } | 126 | } |
127 | 127 | ||
128 | struct property *sym_get_range_prop(struct symbol *sym) | 128 | static struct property *sym_get_range_prop(struct symbol *sym) |
129 | { | 129 | { |
130 | struct property *prop; | 130 | struct property *prop; |
131 | 131 | ||
@@ -943,7 +943,7 @@ const char *prop_get_type_name(enum prop_type type) | |||
943 | return "unknown"; | 943 | return "unknown"; |
944 | } | 944 | } |
945 | 945 | ||
946 | void prop_add_env(const char *env) | 946 | static void prop_add_env(const char *env) |
947 | { | 947 | { |
948 | struct symbol *sym, *sym2; | 948 | struct symbol *sym, *sym2; |
949 | struct property *prop; | 949 | struct property *prop; |
diff --git a/scripts/markup_oops.pl b/scripts/markup_oops.pl index 89774011965d..5f0fcb712e29 100644 --- a/scripts/markup_oops.pl +++ b/scripts/markup_oops.pl | |||
@@ -184,10 +184,7 @@ if ($target eq "0") { | |||
184 | 184 | ||
185 | # if it's a module, we need to find the .ko file and calculate a load offset | 185 | # if it's a module, we need to find the .ko file and calculate a load offset |
186 | if ($module ne "") { | 186 | if ($module ne "") { |
187 | my $dir = dirname($filename); | 187 | my $modulefile = `modinfo $module | grep '^filename:' | awk '{ print \$2 }'`; |
188 | $dir = $dir . "/"; | ||
189 | my $mod = $module . ".ko"; | ||
190 | my $modulefile = `find $dir -name $mod | head -1`; | ||
191 | chomp($modulefile); | 188 | chomp($modulefile); |
192 | $filename = $modulefile; | 189 | $filename = $modulefile; |
193 | if ($filename eq "") { | 190 | if ($filename eq "") { |
diff --git a/scripts/tags.sh b/scripts/tags.sh index 4a34ec591e8c..d52f7a01557c 100755 --- a/scripts/tags.sh +++ b/scripts/tags.sh | |||
@@ -101,7 +101,8 @@ exuberant() | |||
101 | -I ____cacheline_aligned_in_smp \ | 101 | -I ____cacheline_aligned_in_smp \ |
102 | -I ____cacheline_internodealigned_in_smp \ | 102 | -I ____cacheline_internodealigned_in_smp \ |
103 | -I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL \ | 103 | -I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL \ |
104 | --extra=+f --c-kinds=+px \ | 104 | -I DEFINE_TRACE,EXPORT_TRACEPOINT_SYMBOL,EXPORT_TRACEPOINT_SYMBOL_GPL \ |
105 | --extra=+f --c-kinds=-px \ | ||
105 | --regex-asm='/^ENTRY\(([^)]*)\).*/\1/' \ | 106 | --regex-asm='/^ENTRY\(([^)]*)\).*/\1/' \ |
106 | --regex-c='/^SYSCALL_DEFINE[[:digit:]]?\(([^,)]*).*/sys_\1/' | 107 | --regex-c='/^SYSCALL_DEFINE[[:digit:]]?\(([^,)]*).*/sys_\1/' |
107 | 108 | ||