소스 검색

Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild

Pull kbuild misc updates from Michal Marek:
 "This is the non-critical part of kbuild for v3.16-rc1:
   - make deb-pkg can do s390x and arm64
   - new patterns in scripts/tags.sh
   - scripts/tags.sh skips userspace tools' sources (which sometimes
     have copies of kernel structures) and symlinks
   - improvements to the objdiff tool
   - two new coccinelle patches
   - other minor fixes"

* 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
  scripts: objdiff: support directories for the augument of record command
  scripts: objdiff: fix a comment
  scripts: objdiff: change the extension of disassembly from .o to .dis
  scripts: objdiff: improve path flexibility for record command
  scripts: objdiff: remove unnecessary code
  scripts: objdiff: direct error messages to stderr
  scripts: objdiff: get the path to .tmp_objdiff more simply
  deb-pkg: Add automatic support for s390x architecture
  coccicheck: Add unneeded return variable test
  kbuild: Fix a typo in documentation
  kbuild: trivial - use tabs for code indent where possible
  kbuild: trivial - remove trailing empty lines
  coccinelle: Check for missing NULL terminators in of_device_id tables
  scripts/tags.sh: ignore symlink'ed source files
  scripts/tags.sh: add regular expression replacement pattern for memcg
  builddeb: add arm64 in the supported architectures
  builddeb: use $OBJCOPY variable instead of objcopy
  scripts/tags.sh: ignore code of user space tools
  scripts/tags.sh: add pattern for DEFINE_HASHTABLE
  .gitignore: ignore Module.symvers in all directories
Linus Torvalds 11 년 전
부모
커밋
c1fdb2d338
50개의 변경된 파일293개의 추가작업 그리고 162개의 파일을 삭제
  1. 2 2
      .gitignore
  2. 1 1
      Documentation/kbuild/modules.txt
  3. 0 1
      scripts/Makefile.asm-generic
  4. 0 1
      scripts/Makefile.host
  5. 4 4
      scripts/basic/fixdep.c
  6. 0 1
      scripts/checkstack.pl
  7. 62 0
      scripts/coccinelle/misc/of_table.cocci
  8. 66 0
      scripts/coccinelle/misc/returnvar.cocci
  9. 0 1
      scripts/config
  10. 28 28
      scripts/docproc.c
  11. 0 1
      scripts/dtc/.gitignore
  12. 0 1
      scripts/dtc/fstree.c
  13. 0 1
      scripts/dtc/libfdt/fdt_empty_tree.c
  14. 0 1
      scripts/dtc/treesource.c
  15. 0 2
      scripts/headers.sh
  16. 1 1
      scripts/kallsyms.c
  17. 0 1
      scripts/kconfig/Makefile
  18. 0 1
      scripts/kconfig/check.sh
  19. 1 1
      scripts/kconfig/conf.c
  20. 1 1
      scripts/kconfig/gconf.c
  21. 2 2
      scripts/kconfig/lxdialog/checklist.c
  22. 1 1
      scripts/kconfig/lxdialog/inputbox.c
  23. 2 2
      scripts/kconfig/lxdialog/menubox.c
  24. 1 1
      scripts/kconfig/lxdialog/util.c
  25. 1 2
      scripts/kconfig/mconf.c
  26. 3 3
      scripts/kconfig/menu.c
  27. 0 1
      scripts/kconfig/nconf.c
  28. 0 2
      scripts/kconfig/util.c
  29. 2 2
      scripts/kconfig/zconf.l
  30. 2 2
      scripts/kconfig/zconf.lex.c_shipped
  31. 1 1
      scripts/kconfig/zconf.tab.c_shipped
  32. 1 1
      scripts/kconfig/zconf.y
  33. 0 1
      scripts/markup_oops.pl
  34. 0 1
      scripts/mksysmap
  35. 0 1
      scripts/mod/.gitignore
  36. 20 22
      scripts/mod/file2alias.c
  37. 0 1
      scripts/mod/mk_elfconfig.c
  38. 15 15
      scripts/mod/modpost.c
  39. 2 2
      scripts/mod/sumversion.c
  40. 46 28
      scripts/objdiff
  41. 0 1
      scripts/package/Makefile
  42. 6 4
      scripts/package/builddeb
  43. 0 1
      scripts/package/buildtar
  44. 0 1
      scripts/pnmtologo.c
  45. 0 2
      scripts/recordmcount.c
  46. 0 1
      scripts/rt-tester/check-all.sh
  47. 0 2
      scripts/rt-tester/rt-tester.py
  48. 0 1
      scripts/selinux/install_policy.sh
  49. 0 1
      scripts/show_delta
  50. 22 7
      scripts/tags.sh

+ 2 - 2
.gitignore

@@ -22,7 +22,6 @@
 *.lst
 *.lst
 *.symtypes
 *.symtypes
 *.order
 *.order
-modules.builtin
 *.elf
 *.elf
 *.bin
 *.bin
 *.gz
 *.gz
@@ -33,6 +32,8 @@ modules.builtin
 *.lzo
 *.lzo
 *.patch
 *.patch
 *.gcno
 *.gcno
+modules.builtin
+Module.symvers
 
 
 #
 #
 # Top-level generic files
 # Top-level generic files
@@ -44,7 +45,6 @@ modules.builtin
 /vmlinuz
 /vmlinuz
 /System.map
 /System.map
 /Module.markers
 /Module.markers
-/Module.symvers
 
 
 #
 #
 # Debian directory (make deb-pkg)
 # Debian directory (make deb-pkg)

+ 1 - 1
Documentation/kbuild/modules.txt

@@ -470,7 +470,7 @@ build.
 
 
 	Sometimes, an external module uses exported symbols from
 	Sometimes, an external module uses exported symbols from
 	another external module. kbuild needs to have full knowledge of
 	another external module. kbuild needs to have full knowledge of
-	all symbols to avoid spliitting out warnings about undefined
+	all symbols to avoid spitting out warnings about undefined
 	symbols. Three solutions exist for this situation.
 	symbols. Three solutions exist for this situation.
 
 
 	NOTE: The method with a top-level kbuild file is recommended
 	NOTE: The method with a top-level kbuild file is recommended

+ 0 - 1
scripts/Makefile.asm-generic

@@ -21,4 +21,3 @@ all: $(patsubst %, $(obj)/%, $(generic-y))
 
 
 $(obj)/%.h:
 $(obj)/%.h:
 	$(call cmd,wrap)
 	$(call cmd,wrap)
-

+ 0 - 1
scripts/Makefile.host

@@ -167,4 +167,3 @@ $(host-cshlib): $(obj)/%: $(host-cshobjs) FORCE
 
 
 targets += $(host-csingle)  $(host-cmulti) $(host-cobjs)\
 targets += $(host-csingle)  $(host-cmulti) $(host-cobjs)\
 	   $(host-cxxmulti) $(host-cxxobjs) $(host-cshlib) $(host-cshobjs)
 	   $(host-cxxmulti) $(host-cxxobjs) $(host-cshlib) $(host-cshobjs)
-

+ 4 - 4
scripts/basic/fixdep.c

@@ -409,10 +409,10 @@ static void print_deps(void)
 		exit(2);
 		exit(2);
 	}
 	}
 	if (fstat(fd, &st) < 0) {
 	if (fstat(fd, &st) < 0) {
-                fprintf(stderr, "fixdep: error fstat'ing depfile: ");
-                perror(depfile);
-                exit(2);
-        }
+		fprintf(stderr, "fixdep: error fstat'ing depfile: ");
+		perror(depfile);
+		exit(2);
+	}
 	if (st.st_size == 0) {
 	if (st.st_size == 0) {
 		fprintf(stderr,"fixdep: %s is empty\n",depfile);
 		fprintf(stderr,"fixdep: %s is empty\n",depfile);
 		close(fd);
 		close(fd);

+ 0 - 1
scripts/checkstack.pl

@@ -173,4 +173,3 @@ while (my $line = <STDIN>) {
 
 
 # Sort output by size (last field)
 # Sort output by size (last field)
 print sort { ($b =~ /:\t*(\d+)$/)[0] <=> ($a =~ /:\t*(\d+)$/)[0] } @stack;
 print sort { ($b =~ /:\t*(\d+)$/)[0] <=> ($a =~ /:\t*(\d+)$/)[0] } @stack;
-

+ 62 - 0
scripts/coccinelle/misc/of_table.cocci

@@ -0,0 +1,62 @@
+/// Make sure of_device_id tables are NULL terminated
+//
+// Keywords: of_table
+// Confidence: Medium
+// Options: --include-headers
+
+virtual patch
+virtual context
+virtual org
+virtual report
+
+@depends on context@
+identifier var, arr;
+expression E;
+@@
+struct of_device_id arr[] = {
+	...,
+	{
+	.var = E,
+*	}
+};
+
+@depends on patch@
+identifier var, arr;
+expression E;
+@@
+struct of_device_id arr[] = {
+	...,
+	{
+	.var = E,
+-	}
++	},
++	{ }
+};
+
+@r depends on org || report@
+position p1;
+identifier var, arr;
+expression E;
+@@
+struct of_device_id arr[] = {
+	...,
+	{
+	.var = E,
+	}
+	@p1
+};
+
+@script:python depends on org@
+p1 << r.p1;
+arr << r.arr;
+@@
+
+cocci.print_main(arr,p1)
+
+@script:python depends on report@
+p1 << r.p1;
+arr << r.arr;
+@@
+
+msg = "%s is not NULL terminated at line %s" % (arr, p1[0].line)
+coccilib.report.print_report(p1[0],msg)

+ 66 - 0
scripts/coccinelle/misc/returnvar.cocci

@@ -0,0 +1,66 @@
+///
+/// Removes unneeded variable used to store return value.
+///
+// Confidence: Moderate
+// Copyright: (C) 2012 Peter Senna Tschudin, INRIA/LIP6.  GPLv2.
+// URL: http://coccinelle.lip6.fr/
+// Comments: Comments on code can be deleted if near code that is removed.
+//           "when strict" can be removed to get more hits, but adds false
+//           positives
+// Options: --no-includes --include-headers
+
+virtual patch
+virtual report
+virtual context
+virtual org
+
+@depends on patch@
+type T;
+constant C;
+identifier ret;
+@@
+- T ret = C;
+... when != ret
+    when strict
+return
+- ret
++ C
+;
+
+@depends on context@
+type T;
+constant C;
+identifier ret;
+@@
+* T ret = C;
+... when != ret
+    when strict
+* return ret;
+
+@r1 depends on report || org@
+type T;
+constant C;
+identifier ret;
+position p1, p2;
+@@
+T ret@p1 = C;
+... when != ret
+    when strict
+return ret@p2;
+
+@script:python depends on report@
+p1 << r1.p1;
+p2 << r1.p2;
+C << r1.C;
+ret << r1.ret;
+@@
+coccilib.report.print_report(p1[0], "Unneeded variable: \"" + ret + "\". Return \"" + C + "\" on line " + p2[0].line)
+
+@script:python depends on org@
+p1 << r1.p1;
+p2 << r1.p2;
+C << r1.C;
+ret << r1.ret;
+@@
+cocci.print_main("unneeded \"" + ret + "\" variable", p1)
+cocci.print_sec("return " + C + " here", p2)

+ 0 - 1
scripts/config

@@ -223,4 +223,3 @@ while [ "$1" != "" ] ; do
 		;;
 		;;
 	esac
 	esac
 done
 done
-

+ 28 - 28
scripts/docproc.c

@@ -154,7 +154,7 @@ int symfilecnt = 0;
 static void add_new_symbol(struct symfile *sym, char * symname)
 static void add_new_symbol(struct symfile *sym, char * symname)
 {
 {
 	sym->symbollist =
 	sym->symbollist =
-          realloc(sym->symbollist, (sym->symbolcnt + 1) * sizeof(char *));
+	  realloc(sym->symbollist, (sym->symbolcnt + 1) * sizeof(char *));
 	sym->symbollist[sym->symbolcnt++].name = strdup(symname);
 	sym->symbollist[sym->symbolcnt++].name = strdup(symname);
 }
 }
 
 
@@ -215,7 +215,7 @@ static void find_export_symbols(char * filename)
 			char *p;
 			char *p;
 			char *e;
 			char *e;
 			if (((p = strstr(line, "EXPORT_SYMBOL_GPL")) != NULL) ||
 			if (((p = strstr(line, "EXPORT_SYMBOL_GPL")) != NULL) ||
-                            ((p = strstr(line, "EXPORT_SYMBOL")) != NULL)) {
+			    ((p = strstr(line, "EXPORT_SYMBOL")) != NULL)) {
 				/* Skip EXPORT_SYMBOL{_GPL} */
 				/* Skip EXPORT_SYMBOL{_GPL} */
 				while (isalnum(*p) || *p == '_')
 				while (isalnum(*p) || *p == '_')
 					p++;
 					p++;
@@ -291,28 +291,28 @@ static void extfunc(char * filename) { docfunctions(filename, FUNCTION);   }
 static void singfunc(char * filename, char * line)
 static void singfunc(char * filename, char * line)
 {
 {
 	char *vec[200]; /* Enough for specific functions */
 	char *vec[200]; /* Enough for specific functions */
-        int i, idx = 0;
-        int startofsym = 1;
+	int i, idx = 0;
+	int startofsym = 1;
 	vec[idx++] = KERNELDOC;
 	vec[idx++] = KERNELDOC;
 	vec[idx++] = DOCBOOK;
 	vec[idx++] = DOCBOOK;
 	vec[idx++] = SHOWNOTFOUND;
 	vec[idx++] = SHOWNOTFOUND;
 
 
-        /* Split line up in individual parameters preceded by FUNCTION */
-        for (i=0; line[i]; i++) {
-                if (isspace(line[i])) {
-                        line[i] = '\0';
-                        startofsym = 1;
-                        continue;
-                }
-                if (startofsym) {
-                        startofsym = 0;
-                        vec[idx++] = FUNCTION;
-                        vec[idx++] = &line[i];
-                }
-        }
+	/* Split line up in individual parameters preceded by FUNCTION */
+	for (i=0; line[i]; i++) {
+		if (isspace(line[i])) {
+			line[i] = '\0';
+			startofsym = 1;
+			continue;
+		}
+		if (startofsym) {
+			startofsym = 0;
+			vec[idx++] = FUNCTION;
+			vec[idx++] = &line[i];
+		}
+	}
 	for (i = 0; i < idx; i++) {
 	for (i = 0; i < idx; i++) {
-        	if (strcmp(vec[i], FUNCTION))
-        		continue;
+		if (strcmp(vec[i], FUNCTION))
+			continue;
 		consume_symbol(vec[i + 1]);
 		consume_symbol(vec[i + 1]);
 	}
 	}
 	vec[idx++] = filename;
 	vec[idx++] = filename;
@@ -460,14 +460,14 @@ static void parse_file(FILE *infile)
 					break;
 					break;
 				case 'D':
 				case 'D':
 					while (*s && !isspace(*s)) s++;
 					while (*s && !isspace(*s)) s++;
-                                        *s = '\0';
-                                        symbolsonly(line+2);
-                                        break;
+					*s = '\0';
+					symbolsonly(line+2);
+					break;
 				case 'F':
 				case 'F':
 					/* filename */
 					/* filename */
 					while (*s && !isspace(*s)) s++;
 					while (*s && !isspace(*s)) s++;
 					*s++ = '\0';
 					*s++ = '\0';
-                                        /* function names */
+					/* function names */
 					while (isspace(*s))
 					while (isspace(*s))
 						s++;
 						s++;
 					singlefunctions(line +2, s);
 					singlefunctions(line +2, s);
@@ -515,11 +515,11 @@ int main(int argc, char *argv[])
 	}
 	}
 	/* Open file, exit on error */
 	/* Open file, exit on error */
 	infile = fopen(argv[2], "r");
 	infile = fopen(argv[2], "r");
-        if (infile == NULL) {
-                fprintf(stderr, "docproc: ");
-                perror(argv[2]);
-                exit(2);
-        }
+	if (infile == NULL) {
+		fprintf(stderr, "docproc: ");
+		perror(argv[2]);
+		exit(2);
+	}
 
 
 	if (strcmp("doc", argv[1]) == 0) {
 	if (strcmp("doc", argv[1]) == 0) {
 		/* Need to do this in two passes.
 		/* Need to do this in two passes.

+ 0 - 1
scripts/dtc/.gitignore

@@ -2,4 +2,3 @@ dtc
 dtc-lexer.lex.c
 dtc-lexer.lex.c
 dtc-parser.tab.c
 dtc-parser.tab.c
 dtc-parser.tab.h
 dtc-parser.tab.h
-

+ 0 - 1
scripts/dtc/fstree.c

@@ -88,4 +88,3 @@ struct boot_info *dt_from_fs(const char *dirname)
 
 
 	return build_boot_info(NULL, tree, guess_boot_cpuid(tree));
 	return build_boot_info(NULL, tree, guess_boot_cpuid(tree));
 }
 }
-

+ 0 - 1
scripts/dtc/libfdt/fdt_empty_tree.c

@@ -81,4 +81,3 @@ int fdt_create_empty_tree(void *buf, int bufsize)
 
 
 	return fdt_open_into(buf, buf, bufsize);
 	return fdt_open_into(buf, buf, bufsize);
 }
 }
-

+ 0 - 1
scripts/dtc/treesource.c

@@ -281,4 +281,3 @@ void dt_to_source(FILE *f, struct boot_info *bi)
 
 
 	write_tree_source_node(f, bi->dt, 0);
 	write_tree_source_node(f, bi->dt, 0);
 }
 }
-

+ 0 - 2
scripts/headers.sh

@@ -28,5 +28,3 @@ for arch in ${archs}; do
 		;;
 		;;
 	esac
 	esac
 done
 done
-
-

+ 1 - 1
scripts/kallsyms.c

@@ -123,7 +123,7 @@ static int read_symbol(FILE *in, struct sym_entry *s)
 	}
 	}
 	if (strlen(str) > KSYM_NAME_LEN) {
 	if (strlen(str) > KSYM_NAME_LEN) {
 		fprintf(stderr, "Symbol %s too long for kallsyms (%zu vs %d).\n"
 		fprintf(stderr, "Symbol %s too long for kallsyms (%zu vs %d).\n"
-                                "Please increase KSYM_NAME_LEN both in kernel and kallsyms.c\n",
+				"Please increase KSYM_NAME_LEN both in kernel and kallsyms.c\n",
 			str, strlen(str), KSYM_NAME_LEN);
 			str, strlen(str), KSYM_NAME_LEN);
 		return -1;
 		return -1;
 	}
 	}

+ 0 - 1
scripts/kconfig/Makefile

@@ -319,4 +319,3 @@ $(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck
 $(obj)/gconf.glade.h: $(obj)/gconf.glade
 $(obj)/gconf.glade.h: $(obj)/gconf.glade
 	$(Q)intltool-extract --type=gettext/glade --srcdir=$(srctree) \
 	$(Q)intltool-extract --type=gettext/glade --srcdir=$(srctree) \
 	$(obj)/gconf.glade
 	$(obj)/gconf.glade
-

+ 0 - 1
scripts/kconfig/check.sh

@@ -11,4 +11,3 @@ EOF
 if [ ! "$?" -eq "0"  ]; then
 if [ ! "$?" -eq "0"  ]; then
 	echo -DKBUILD_NO_NLS;
 	echo -DKBUILD_NO_NLS;
 fi
 fi
-

+ 1 - 1
scripts/kconfig/conf.c

@@ -696,7 +696,7 @@ int main(int ac, char **av)
 	} else if (input_mode == savedefconfig) {
 	} else if (input_mode == savedefconfig) {
 		if (conf_write_defconfig(defconfig_file)) {
 		if (conf_write_defconfig(defconfig_file)) {
 			fprintf(stderr, _("n*** Error while saving defconfig to: %s\n\n"),
 			fprintf(stderr, _("n*** Error while saving defconfig to: %s\n\n"),
-			        defconfig_file);
+				defconfig_file);
 			return 1;
 			return 1;
 		}
 		}
 	} else if (input_mode != listnewconfig) {
 	} else if (input_mode != listnewconfig) {

+ 1 - 1
scripts/kconfig/gconf.c

@@ -1404,7 +1404,7 @@ static void display_tree(struct menu *menu)
 		    && (tree == tree2))
 		    && (tree == tree2))
 			continue;
 			continue;
 /*
 /*
-                if (((menu != &rootmenu) && !(menu->flags & MENU_ROOT))
+		if (((menu != &rootmenu) && !(menu->flags & MENU_ROOT))
 		    || (view_mode == FULL_VIEW)
 		    || (view_mode == FULL_VIEW)
 		    || (view_mode == SPLIT_VIEW))*/
 		    || (view_mode == SPLIT_VIEW))*/
 
 

+ 2 - 2
scripts/kconfig/lxdialog/checklist.c

@@ -168,13 +168,13 @@ int dialog_checklist(const char *title, const char *prompt, int height,
 
 
 	/* create new window for the list */
 	/* create new window for the list */
 	list = subwin(dialog, list_height, list_width, y + box_y + 1,
 	list = subwin(dialog, list_height, list_width, y + box_y + 1,
-	              x + box_x + 1);
+		      x + box_x + 1);
 
 
 	keypad(list, TRUE);
 	keypad(list, TRUE);
 
 
 	/* draw a box around the list items */
 	/* draw a box around the list items */
 	draw_box(dialog, box_y, box_x, list_height + 2, list_width + 2,
 	draw_box(dialog, box_y, box_x, list_height + 2, list_width + 2,
-	         dlg.menubox_border.atr, dlg.menubox.atr);
+		 dlg.menubox_border.atr, dlg.menubox.atr);
 
 
 	/* Find length of longest item in order to center checklist */
 	/* Find length of longest item in order to center checklist */
 	check_x = 0;
 	check_x = 0;

+ 1 - 1
scripts/kconfig/lxdialog/inputbox.c

@@ -42,7 +42,7 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected)
  * Display a dialog box for inputing a string
  * Display a dialog box for inputing a string
  */
  */
 int dialog_inputbox(const char *title, const char *prompt, int height, int width,
 int dialog_inputbox(const char *title, const char *prompt, int height, int width,
-                    const char *init)
+		    const char *init)
 {
 {
 	int i, x, y, box_y, box_x, box_width;
 	int i, x, y, box_y, box_x, box_width;
 	int input_x = 0, key = 0, button = -1;
 	int input_x = 0, key = 0, button = -1;

+ 2 - 2
scripts/kconfig/lxdialog/menubox.c

@@ -64,7 +64,7 @@ static int menu_width, item_x;
  * Print menu item
  * Print menu item
  */
  */
 static void do_print_item(WINDOW * win, const char *item, int line_y,
 static void do_print_item(WINDOW * win, const char *item, int line_y,
-                          int selected, int hotkey)
+			  int selected, int hotkey)
 {
 {
 	int j;
 	int j;
 	char *menu_item = malloc(menu_width + 1);
 	char *menu_item = malloc(menu_width + 1);
@@ -182,7 +182,7 @@ static void do_scroll(WINDOW *win, int *scroll, int n)
  * Display a menu for choosing among a number of options
  * Display a menu for choosing among a number of options
  */
  */
 int dialog_menu(const char *title, const char *prompt,
 int dialog_menu(const char *title, const char *prompt,
-                const void *selected, int *s_scroll)
+		const void *selected, int *s_scroll)
 {
 {
 	int i, j, x, y, box_x, box_y;
 	int i, j, x, y, box_x, box_y;
 	int height, width, menu_height;
 	int height, width, menu_height;

+ 1 - 1
scripts/kconfig/lxdialog/util.c

@@ -623,7 +623,7 @@ void item_make(const char *fmt, ...)
 void item_add_str(const char *fmt, ...)
 void item_add_str(const char *fmt, ...)
 {
 {
 	va_list ap;
 	va_list ap;
-        size_t avail;
+	size_t avail;
 
 
 	avail = sizeof(item_cur->node.str) - strlen(item_cur->node.str);
 	avail = sizeof(item_cur->node.str) - strlen(item_cur->node.str);
 
 

+ 1 - 2
scripts/kconfig/mconf.c

@@ -299,7 +299,7 @@ static void set_config_filename(const char *config_filename)
 	int size;
 	int size;
 
 
 	size = snprintf(menu_backtitle, sizeof(menu_backtitle),
 	size = snprintf(menu_backtitle, sizeof(menu_backtitle),
-	                "%s - %s", config_filename, rootmenu.prompt->text);
+			"%s - %s", config_filename, rootmenu.prompt->text);
 	if (size >= sizeof(menu_backtitle))
 	if (size >= sizeof(menu_backtitle))
 		menu_backtitle[sizeof(menu_backtitle)-1] = '\0';
 		menu_backtitle[sizeof(menu_backtitle)-1] = '\0';
 	set_dialog_backtitle(menu_backtitle);
 	set_dialog_backtitle(menu_backtitle);
@@ -1034,4 +1034,3 @@ int main(int ac, char **av)
 
 
 	return res;
 	return res;
 }
 }
-

+ 3 - 3
scripts/kconfig/menu.c

@@ -258,8 +258,8 @@ static void sym_check_prop(struct symbol *sym)
 				    "config symbol '%s' uses select, but is "
 				    "config symbol '%s' uses select, but is "
 				    "not boolean or tristate", sym->name);
 				    "not boolean or tristate", sym->name);
 			else if (sym2->type != S_UNKNOWN &&
 			else if (sym2->type != S_UNKNOWN &&
-			         sym2->type != S_BOOLEAN &&
-			         sym2->type != S_TRISTATE)
+				 sym2->type != S_BOOLEAN &&
+				 sym2->type != S_TRISTATE)
 				prop_warn(prop,
 				prop_warn(prop,
 				    "'%s' has wrong type. 'select' only "
 				    "'%s' has wrong type. 'select' only "
 				    "accept arguments of boolean and "
 				    "accept arguments of boolean and "
@@ -268,7 +268,7 @@ static void sym_check_prop(struct symbol *sym)
 		case P_RANGE:
 		case P_RANGE:
 			if (sym->type != S_INT && sym->type != S_HEX)
 			if (sym->type != S_INT && sym->type != S_HEX)
 				prop_warn(prop, "range is only allowed "
 				prop_warn(prop, "range is only allowed "
-				                "for int or hex symbols");
+						"for int or hex symbols");
 			if (!menu_validate_number(sym, prop->expr->left.sym) ||
 			if (!menu_validate_number(sym, prop->expr->left.sym) ||
 			    !menu_validate_number(sym, prop->expr->right.sym))
 			    !menu_validate_number(sym, prop->expr->right.sym))
 				prop_warn(prop, "range is invalid");
 				prop_warn(prop, "range is invalid");

+ 0 - 1
scripts/kconfig/nconf.c

@@ -1554,4 +1554,3 @@ int main(int ac, char **av)
 	endwin();
 	endwin();
 	return 0;
 	return 0;
 }
 }
-

+ 0 - 2
scripts/kconfig/util.c

@@ -155,5 +155,3 @@ void *xcalloc(size_t nmemb, size_t size)
 	fprintf(stderr, "Out of memory.\n");
 	fprintf(stderr, "Out of memory.\n");
 	exit(1);
 	exit(1);
 }
 }
-
-

+ 2 - 2
scripts/kconfig/zconf.l

@@ -27,8 +27,8 @@ static char *text;
 static int text_size, text_asize;
 static int text_size, text_asize;
 
 
 struct buffer {
 struct buffer {
-        struct buffer *parent;
-        YY_BUFFER_STATE state;
+	struct buffer *parent;
+	YY_BUFFER_STATE state;
 };
 };
 
 
 struct buffer *current_buf;
 struct buffer *current_buf;

+ 2 - 2
scripts/kconfig/zconf.lex.c_shipped

@@ -789,8 +789,8 @@ static char *text;
 static int text_size, text_asize;
 static int text_size, text_asize;
 
 
 struct buffer {
 struct buffer {
-        struct buffer *parent;
-        YY_BUFFER_STATE state;
+	struct buffer *parent;
+	YY_BUFFER_STATE state;
 };
 };
 
 
 struct buffer *current_buf;
 struct buffer *current_buf;

+ 1 - 1
scripts/kconfig/zconf.tab.c_shipped

@@ -2314,7 +2314,7 @@ void conf_parse(const char *name)
 	for_all_symbols(i, sym) {
 	for_all_symbols(i, sym) {
 		if (sym_check_deps(sym))
 		if (sym_check_deps(sym))
 			zconfnerrs++;
 			zconfnerrs++;
-        }
+	}
 	if (zconfnerrs)
 	if (zconfnerrs)
 		exit(1);
 		exit(1);
 	sym_set_change_count(1);
 	sym_set_change_count(1);

+ 1 - 1
scripts/kconfig/zconf.y

@@ -510,7 +510,7 @@ void conf_parse(const char *name)
 	for_all_symbols(i, sym) {
 	for_all_symbols(i, sym) {
 		if (sym_check_deps(sym))
 		if (sym_check_deps(sym))
 			zconfnerrs++;
 			zconfnerrs++;
-        }
+	}
 	if (zconfnerrs)
 	if (zconfnerrs)
 		exit(1);
 		exit(1);
 	sym_set_change_count(1);
 	sym_set_change_count(1);

+ 0 - 1
scripts/markup_oops.pl

@@ -367,4 +367,3 @@ OPTION:
 EOT
 EOT
 	exit;
 	exit;
 }
 }
-

+ 0 - 1
scripts/mksysmap

@@ -42,4 +42,3 @@
 # (At least sparc64 has __crc_ in the middle).
 # (At least sparc64 has __crc_ in the middle).
 
 
 $NM -n $1 | grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' > $2
 $NM -n $1 | grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' > $2
-

+ 0 - 1
scripts/mod/.gitignore

@@ -2,4 +2,3 @@ elfconfig.h
 mk_elfconfig
 mk_elfconfig
 modpost
 modpost
 devicetable-offsets.h
 devicetable-offsets.h
-

+ 20 - 22
scripts/mod/file2alias.c

@@ -644,28 +644,26 @@ ADD_TO_DEVTABLE("pcmcia", pcmcia_device_id, do_pcmcia_entry);
 
 
 static int do_of_entry (const char *filename, void *symval, char *alias)
 static int do_of_entry (const char *filename, void *symval, char *alias)
 {
 {
-    int len;
-    char *tmp;
-    DEF_FIELD_ADDR(symval, of_device_id, name);
-    DEF_FIELD_ADDR(symval, of_device_id, type);
-    DEF_FIELD_ADDR(symval, of_device_id, compatible);
-
-    len = sprintf (alias, "of:N%sT%s",
-                    (*name)[0] ? *name : "*",
-                    (*type)[0] ? *type : "*");
-
-    if (compatible[0])
-        sprintf (&alias[len], "%sC%s",
-                     (*type)[0] ? "*" : "",
-                     *compatible);
-
-    /* Replace all whitespace with underscores */
-    for (tmp = alias; tmp && *tmp; tmp++)
-        if (isspace (*tmp))
-            *tmp = '_';
-
-    add_wildcard(alias);
-    return 1;
+	int len;
+	char *tmp;
+	DEF_FIELD_ADDR(symval, of_device_id, name);
+	DEF_FIELD_ADDR(symval, of_device_id, type);
+	DEF_FIELD_ADDR(symval, of_device_id, compatible);
+
+	len = sprintf(alias, "of:N%sT%s", (*name)[0] ? *name : "*",
+		      (*type)[0] ? *type : "*");
+
+	if (compatible[0])
+		sprintf(&alias[len], "%sC%s", (*type)[0] ? "*" : "",
+			*compatible);
+
+	/* Replace all whitespace with underscores */
+	for (tmp = alias; tmp && *tmp; tmp++)
+		if (isspace (*tmp))
+			*tmp = '_';
+
+	add_wildcard(alias);
+	return 1;
 }
 }
 ADD_TO_DEVTABLE("of", of_device_id, do_of_entry);
 ADD_TO_DEVTABLE("of", of_device_id, do_of_entry);
 
 

+ 0 - 1
scripts/mod/mk_elfconfig.c

@@ -54,4 +54,3 @@ main(int argc, char **argv)
 
 
 	return 0;
 	return 0;
 }
 }
-

+ 15 - 15
scripts/mod/modpost.c

@@ -862,7 +862,7 @@ static const char *section_white_list[] =
  * without "ax" / "aw".
  * without "ax" / "aw".
  */
  */
 static void check_section(const char *modname, struct elf_info *elf,
 static void check_section(const char *modname, struct elf_info *elf,
-                          Elf_Shdr *sechdr)
+			  Elf_Shdr *sechdr)
 {
 {
 	const char *sec = sech_name(elf, sechdr);
 	const char *sec = sech_name(elf, sechdr);
 
 
@@ -1296,12 +1296,12 @@ static void print_section_list(const char * const list[20])
  */
  */
 static void report_sec_mismatch(const char *modname,
 static void report_sec_mismatch(const char *modname,
 				const struct sectioncheck *mismatch,
 				const struct sectioncheck *mismatch,
-                                const char *fromsec,
-                                unsigned long long fromaddr,
-                                const char *fromsym,
-                                int from_is_func,
-                                const char *tosec, const char *tosym,
-                                int to_is_func)
+				const char *fromsec,
+				unsigned long long fromaddr,
+				const char *fromsym,
+				int from_is_func,
+				const char *tosec, const char *tosym,
+				int to_is_func)
 {
 {
 	const char *from, *from_p;
 	const char *from, *from_p;
 	const char *to, *to_p;
 	const char *to, *to_p;
@@ -1441,7 +1441,7 @@ static void report_sec_mismatch(const char *modname,
 }
 }
 
 
 static void check_section_mismatch(const char *modname, struct elf_info *elf,
 static void check_section_mismatch(const char *modname, struct elf_info *elf,
-                                   Elf_Rela *r, Elf_Sym *sym, const char *fromsec)
+				   Elf_Rela *r, Elf_Sym *sym, const char *fromsec)
 {
 {
 	const char *tosec;
 	const char *tosec;
 	const struct sectioncheck *mismatch;
 	const struct sectioncheck *mismatch;
@@ -1528,7 +1528,7 @@ static int addend_arm_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r)
 	case R_ARM_ABS32:
 	case R_ARM_ABS32:
 		/* From ARM ABI: (S + A) | T */
 		/* From ARM ABI: (S + A) | T */
 		r->r_addend = (int)(long)
 		r->r_addend = (int)(long)
-		              (elf->symtab_start + ELF_R_SYM(r->r_info));
+			      (elf->symtab_start + ELF_R_SYM(r->r_info));
 		break;
 		break;
 	case R_ARM_PC24:
 	case R_ARM_PC24:
 	case R_ARM_CALL:
 	case R_ARM_CALL:
@@ -1538,8 +1538,8 @@ static int addend_arm_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r)
 	case R_ARM_THM_JUMP19:
 	case R_ARM_THM_JUMP19:
 		/* From ARM ABI: ((S + A) | T) - P */
 		/* From ARM ABI: ((S + A) | T) - P */
 		r->r_addend = (int)(long)(elf->hdr +
 		r->r_addend = (int)(long)(elf->hdr +
-		              sechdr->sh_offset +
-		              (r->r_offset - sechdr->sh_addr));
+			      sechdr->sh_offset +
+			      (r->r_offset - sechdr->sh_addr));
 		break;
 		break;
 	default:
 	default:
 		return 1;
 		return 1;
@@ -1571,7 +1571,7 @@ static int addend_mips_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r)
 }
 }
 
 
 static void section_rela(const char *modname, struct elf_info *elf,
 static void section_rela(const char *modname, struct elf_info *elf,
-                         Elf_Shdr *sechdr)
+			 Elf_Shdr *sechdr)
 {
 {
 	Elf_Sym  *sym;
 	Elf_Sym  *sym;
 	Elf_Rela *rela;
 	Elf_Rela *rela;
@@ -1615,7 +1615,7 @@ static void section_rela(const char *modname, struct elf_info *elf,
 }
 }
 
 
 static void section_rel(const char *modname, struct elf_info *elf,
 static void section_rel(const char *modname, struct elf_info *elf,
-                        Elf_Shdr *sechdr)
+			Elf_Shdr *sechdr)
 {
 {
 	Elf_Sym *sym;
 	Elf_Sym *sym;
 	Elf_Rel *rel;
 	Elf_Rel *rel;
@@ -1685,7 +1685,7 @@ static void section_rel(const char *modname, struct elf_info *elf,
  * be discarded and warns about it.
  * be discarded and warns about it.
  **/
  **/
 static void check_sec_ref(struct module *mod, const char *modname,
 static void check_sec_ref(struct module *mod, const char *modname,
-                          struct elf_info *elf)
+			  struct elf_info *elf)
 {
 {
 	int i;
 	int i;
 	Elf_Shdr *sechdrs = elf->sechdrs;
 	Elf_Shdr *sechdrs = elf->sechdrs;
@@ -1945,7 +1945,7 @@ static int add_versions(struct buffer *b, struct module *mod)
 					     s->name, mod->name);
 					     s->name, mod->name);
 				} else {
 				} else {
 					merror("\"%s\" [%s.ko] undefined!\n",
 					merror("\"%s\" [%s.ko] undefined!\n",
-					          s->name, mod->name);
+					       s->name, mod->name);
 					err = 1;
 					err = 1;
 				}
 				}
 			}
 			}

+ 2 - 2
scripts/mod/sumversion.c

@@ -214,7 +214,7 @@ static void md4_final_ascii(struct md4_ctx *mctx, char *out, unsigned int len)
 	mctx->block[14] = mctx->byte_count << 3;
 	mctx->block[14] = mctx->byte_count << 3;
 	mctx->block[15] = mctx->byte_count >> 29;
 	mctx->block[15] = mctx->byte_count >> 29;
 	le32_to_cpu_array(mctx->block, (sizeof(mctx->block) -
 	le32_to_cpu_array(mctx->block, (sizeof(mctx->block) -
-	                  sizeof(uint64_t)) / sizeof(uint32_t));
+			  sizeof(uint64_t)) / sizeof(uint32_t));
 	md4_transform(mctx->hash, mctx->block);
 	md4_transform(mctx->hash, mctx->block);
 	cpu_to_le32_array(mctx->hash, sizeof(mctx->hash) / sizeof(uint32_t));
 	cpu_to_le32_array(mctx->hash, sizeof(mctx->hash) / sizeof(uint32_t));
 
 
@@ -367,7 +367,7 @@ static int parse_source_files(const char *objfile, struct md4_ctx *md)
 			break;
 			break;
 		/* Terminate line at first space, to get rid of final ' \' */
 		/* Terminate line at first space, to get rid of final ' \' */
 		while (*p) {
 		while (*p) {
-                       if (isspace(*p)) {
+			if (isspace(*p)) {
 				*p = '\0';
 				*p = '\0';
 				break;
 				break;
 			}
 			}

+ 46 - 28
scripts/objdiff

@@ -25,25 +25,47 @@
 #
 #
 # Note: 'make mrproper' will also remove .tmp_objdiff
 # Note: 'make mrproper' will also remove .tmp_objdiff
 
 
-GIT_DIR="`git rev-parse --git-dir`"
+SRCTREE=$(cd $(git rev-parse --show-toplevel 2>/dev/null); pwd)
 
 
-if [ -d "$GIT_DIR" ]; then
-	TMPD="${GIT_DIR%git}tmp_objdiff"
-
-	[ -d "$TMPD" ] || mkdir "$TMPD"
-else
-	echo "ERROR: git directory not found."
+if [ -z "$SRCTREE" ]; then
+	echo >&2 "ERROR: Not a git repository."
 	exit 1
 	exit 1
 fi
 fi
 
 
+TMPD=$SRCTREE/.tmp_objdiff
+
 usage() {
 usage() {
-	echo "Usage: $0 <command> <args>"
-	echo "  record    <list of object files>"
-	echo "  diff      <commitA> <commitB>"
-	echo "  clean     all | <commit>"
+	echo >&2 "Usage: $0 <command> <args>"
+	echo >&2 "  record    <list of object files or directories>"
+	echo >&2 "  diff      <commitA> <commitB>"
+	echo >&2 "  clean     all | <commit>"
 	exit 1
 	exit 1
 }
 }
 
 
+get_output_dir() {
+	dir=${1%/*}
+
+	if [ "$dir" = "$1" ]; then
+		dir=.
+	fi
+
+	dir=$(cd $dir; pwd)
+
+	echo $TMPD/$CMT${dir#$SRCTREE}
+}
+
+do_objdump() {
+	dir=$(get_output_dir $1)
+	base=${1##*/}
+	dis=$dir/${base%.o}.dis
+
+	[ ! -d "$dir" ] && mkdir -p $dir
+
+	# remove addresses for a cleaner diff
+	# http://dummdida.tumblr.com/post/60924060451/binary-diff-between-libc-from-scientificlinux-and
+	$OBJDUMP -D $1 | sed "s/^[[:space:]]\+[0-9a-f]\+//" > $dis
+}
+
 dorecord() {
 dorecord() {
 	[ $# -eq 0 ] && usage
 	[ $# -eq 0 ] && usage
 
 
@@ -52,20 +74,16 @@ dorecord() {
 	CMT="`git rev-parse --short HEAD`"
 	CMT="`git rev-parse --short HEAD`"
 
 
 	OBJDUMP="${CROSS_COMPILE}objdump"
 	OBJDUMP="${CROSS_COMPILE}objdump"
-	OBJDIFFD="$TMPD/$CMT"
-
-	[ ! -d "$OBJDIFFD" ] && mkdir -p "$OBJDIFFD"
 
 
-	for f in $FILES; do
-		dn="${f%/*}"
-		bn="${f##*/}"
-
-		[ ! -d "$OBJDIFFD/$dn" ] && mkdir -p "$OBJDIFFD/$dn"
-
-		# remove addresses for a more clear diff
-		# http://dummdida.tumblr.com/post/60924060451/binary-diff-between-libc-from-scientificlinux-and
-		$OBJDUMP -D "$f" | sed "s/^[[:space:]]\+[0-9a-f]\+//" \
-			>"$OBJDIFFD/$dn/$bn"
+	for d in $FILES; do
+		if [ -d "$d" ]; then
+			for f in $(find $d -name '*.o')
+			do
+				do_objdump $f
+			done
+		else
+			do_objdump $d
+		fi
 	done
 	done
 }
 }
 
 
@@ -90,12 +108,12 @@ dodiff() {
 	DSTD="$TMPD/$DST"
 	DSTD="$TMPD/$DST"
 
 
 	if [ ! -d "$SRCD" ]; then
 	if [ ! -d "$SRCD" ]; then
-		echo "ERROR: $SRCD doesn't exist"
+		echo >&2 "ERROR: $SRCD doesn't exist"
 		exit 1
 		exit 1
 	fi
 	fi
 
 
 	if [ ! -d "$DSTD" ]; then
 	if [ ! -d "$DSTD" ]; then
-		echo "ERROR: $DSTD doesn't exist"
+		echo >&2 "ERROR: $DSTD doesn't exist"
 		exit 1
 		exit 1
 	fi
 	fi
 
 
@@ -114,7 +132,7 @@ doclean() {
 		if [ -d "$TMPD/$CMT" ]; then
 		if [ -d "$TMPD/$CMT" ]; then
 			rm -rf $TMPD/$CMT
 			rm -rf $TMPD/$CMT
 		else
 		else
-			echo "$CMT not found"
+			echo >&2 "$CMT not found"
 		fi
 		fi
 	fi
 	fi
 }
 }
@@ -135,7 +153,7 @@ case "$1" in
 		doclean $*
 		doclean $*
 		;;
 		;;
 	*)
 	*)
-		echo "Unrecognized command '$1'"
+		echo >&2 "Unrecognized command '$1'"
 		exit 1
 		exit 1
 		;;
 		;;
 esac
 esac

+ 0 - 1
scripts/package/Makefile

@@ -143,4 +143,3 @@ help: FORCE
 	@echo '  perf-targz-src-pkg  - Build $(perf-tar).tar.gz source tarball'
 	@echo '  perf-targz-src-pkg  - Build $(perf-tar).tar.gz source tarball'
 	@echo '  perf-tarbz2-src-pkg - Build $(perf-tar).tar.bz2 source tarball'
 	@echo '  perf-tarbz2-src-pkg - Build $(perf-tar).tar.bz2 source tarball'
 	@echo '  perf-tarxz-src-pkg  - Build $(perf-tar).tar.xz source tarball'
 	@echo '  perf-tarxz-src-pkg  - Build $(perf-tar).tar.xz source tarball'
-

+ 6 - 4
scripts/package/builddeb

@@ -35,13 +35,15 @@ create_package() {
 	sparc*)
 	sparc*)
 		debarch=sparc ;;
 		debarch=sparc ;;
 	s390*)
 	s390*)
-		debarch=s390 ;;
+		debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;;
 	ppc*)
 	ppc*)
 		debarch=powerpc ;;
 		debarch=powerpc ;;
 	parisc*)
 	parisc*)
 		debarch=hppa ;;
 		debarch=hppa ;;
 	mips*)
 	mips*)
 		debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el || true) ;;
 		debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el || true) ;;
+	arm64)
+		debarch=arm64 ;;
 	arm*)
 	arm*)
 		debarch=arm$(grep -q CONFIG_AEABI=y $KCONFIG_CONFIG && echo el || true) ;;
 		debarch=arm$(grep -q CONFIG_AEABI=y $KCONFIG_CONFIG && echo el || true) ;;
 	*)
 	*)
@@ -155,11 +157,11 @@ if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then
 			for module in $(find lib/modules/ -name *.ko); do
 			for module in $(find lib/modules/ -name *.ko); do
 				mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module)
 				mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module)
 				# only keep debug symbols in the debug file
 				# only keep debug symbols in the debug file
-				objcopy --only-keep-debug $module $dbg_dir/usr/lib/debug/$module
+				$OBJCOPY --only-keep-debug $module $dbg_dir/usr/lib/debug/$module
 				# strip original module from debug symbols
 				# strip original module from debug symbols
-				objcopy --strip-debug $module
+				$OBJCOPY --strip-debug $module
 				# then add a link to those
 				# then add a link to those
-				objcopy --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $module
+				$OBJCOPY --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $module
 			done
 			done
 		)
 		)
 	fi
 	fi

+ 0 - 1
scripts/package/buildtar

@@ -136,4 +136,3 @@ esac
 echo "Tarball successfully created in ${tarball}${file_ext}"
 echo "Tarball successfully created in ${tarball}${file_ext}"
 
 
 exit 0
 exit 0
-

+ 0 - 1
scripts/pnmtologo.c

@@ -512,4 +512,3 @@ int main(int argc, char *argv[])
     }
     }
     exit(0);
     exit(0);
 }
 }
-

+ 0 - 2
scripts/recordmcount.c

@@ -487,5 +487,3 @@ main(int argc, char *argv[])
 	}
 	}
 	return !!n_error;
 	return !!n_error;
 }
 }
-
-

+ 0 - 1
scripts/rt-tester/check-all.sh

@@ -19,4 +19,3 @@ testit t3-l2-pi.tst
 testit t4-l2-pi-deboost.tst
 testit t4-l2-pi-deboost.tst
 testit t5-l4-pi-boost-deboost.tst
 testit t5-l4-pi-boost-deboost.tst
 testit t5-l4-pi-boost-deboost-setsched.tst
 testit t5-l4-pi-boost-deboost-setsched.tst
-

+ 0 - 2
scripts/rt-tester/rt-tester.py

@@ -216,5 +216,3 @@ while 1:
 # Normal exit pass
 # Normal exit pass
 print "Pass"
 print "Pass"
 sys.exit(0)
 sys.exit(0)
-
-

+ 0 - 1
scripts/selinux/install_policy.sh

@@ -66,4 +66,3 @@ if [ "eq$dodev" != "eq" ]; then
 	$SF file_contexts /dev
 	$SF file_contexts /dev
 	mount --move /mnt /dev
 	mount --move /mnt /dev
 fi
 fi
-

+ 0 - 1
scripts/show_delta

@@ -126,4 +126,3 @@ def main():
 		print (convert_line(line, base_time),)
 		print (convert_line(line, base_time),)
 
 
 main()
 main()
-

+ 22 - 7
scripts/tags.sh

@@ -25,6 +25,9 @@ else
 	tree=${srctree}/
 	tree=${srctree}/
 fi
 fi
 
 
+# ignore userspace tools
+ignore="$ignore ( -path ${tree}tools ) -prune -o"
+
 # Find all available archs
 # Find all available archs
 find_all_archs()
 find_all_archs()
 {
 {
@@ -47,7 +50,8 @@ find_arch_sources()
 	for i in $archincludedir; do
 	for i in $archincludedir; do
 		prune="$prune -wholename $i -prune -o"
 		prune="$prune -wholename $i -prune -o"
 	done
 	done
-	find ${tree}arch/$1 $ignore $subarchprune $prune -name "$2" -print;
+	find ${tree}arch/$1 $ignore $subarchprune $prune -name "$2" \
+		-not -type l -print;
 }
 }
 
 
 # find sources in arch/$1/include
 # find sources in arch/$1/include
@@ -57,14 +61,15 @@ find_arch_include_sources()
 					-name include -type d -print);
 					-name include -type d -print);
 	if [ -n "$include" ]; then
 	if [ -n "$include" ]; then
 		archincludedir="$archincludedir $include"
 		archincludedir="$archincludedir $include"
-		find $include $ignore -name "$2" -print;
+		find $include $ignore -name "$2" -not -type l -print;
 	fi
 	fi
 }
 }
 
 
 # find sources in include/
 # find sources in include/
 find_include_sources()
 find_include_sources()
 {
 {
-	find ${tree}include $ignore -name config -prune -o -name "$1" -print;
+	find ${tree}include $ignore -name config -prune -o -name "$1" \
+		-not -type l -print;
 }
 }
 
 
 # find sources in rest of tree
 # find sources in rest of tree
@@ -73,7 +78,7 @@ find_other_sources()
 {
 {
 	find ${tree}* $ignore \
 	find ${tree}* $ignore \
 	     \( -name include -o -name arch -o -name '.tmp_*' \) -prune -o \
 	     \( -name include -o -name arch -o -name '.tmp_*' \) -prune -o \
-	       -name "$1" -print;
+	       -name "$1" -not -type l -print;
 }
 }
 
 
 find_sources()
 find_sources()
@@ -187,6 +192,10 @@ exuberant()
 	--regex-c++='/TESTCLEARFLAG_FALSE\(([^,)]*).*/TestClearPage\1/' \
 	--regex-c++='/TESTCLEARFLAG_FALSE\(([^,)]*).*/TestClearPage\1/' \
 	--regex-c++='/__TESTCLEARFLAG_FALSE\(([^,)]*).*/__TestClearPage\1/' \
 	--regex-c++='/__TESTCLEARFLAG_FALSE\(([^,)]*).*/__TestClearPage\1/' \
 	--regex-c++='/_PE\(([^,)]*).*/PEVENT_ERRNO__\1/'		\
 	--regex-c++='/_PE\(([^,)]*).*/PEVENT_ERRNO__\1/'		\
+	--regex-c++='/TESTPCGFLAG\(([^,)]*).*/PageCgroup\1/'		\
+	--regex-c++='/SETPCGFLAG\(([^,)]*).*/SetPageCgroup\1/'		\
+	--regex-c++='/CLEARPCGFLAG\(([^,)]*).*/ClearPageCgroup\1/'	\
+	--regex-c++='/TESTCLEARPCGFLAG\(([^,)]*).*/TestClearPageCgroup\1/' \
 	--regex-c='/PCI_OP_READ\((\w*).*[1-4]\)/pci_bus_read_config_\1/' \
 	--regex-c='/PCI_OP_READ\((\w*).*[1-4]\)/pci_bus_read_config_\1/' \
 	--regex-c='/PCI_OP_WRITE\((\w*).*[1-4]\)/pci_bus_write_config_\1/' \
 	--regex-c='/PCI_OP_WRITE\((\w*).*[1-4]\)/pci_bus_write_config_\1/' \
 	--regex-c='/DEFINE_(MUTEX|SEMAPHORE|SPINLOCK)\((\w*)/\2/v/'	\
 	--regex-c='/DEFINE_(MUTEX|SEMAPHORE|SPINLOCK)\((\w*)/\2/v/'	\
@@ -201,7 +210,8 @@ exuberant()
 	--regex-c='/DECLARE_(TASKLET|WORK|DELAYED_WORK)\((\w*)/\2/v/'	\
 	--regex-c='/DECLARE_(TASKLET|WORK|DELAYED_WORK)\((\w*)/\2/v/'	\
 	--regex-c='/DEFINE_PCI_DEVICE_TABLE\((\w*)/\1/v/'		\
 	--regex-c='/DEFINE_PCI_DEVICE_TABLE\((\w*)/\1/v/'		\
 	--regex-c='/(^\s)OFFSET\((\w*)/\2/v/'				\
 	--regex-c='/(^\s)OFFSET\((\w*)/\2/v/'				\
-	--regex-c='/(^\s)DEFINE\((\w*)/\2/v/'
+	--regex-c='/(^\s)DEFINE\((\w*)/\2/v/'				\
+	--regex-c='/DEFINE_HASHTABLE\((\w*)/\1/v/'
 
 
 	all_kconfigs | xargs $1 -a                              \
 	all_kconfigs | xargs $1 -a                              \
 	--langdef=kconfig --language-force=kconfig              \
 	--langdef=kconfig --language-force=kconfig              \
@@ -244,9 +254,14 @@ emacs()
 	--regex='/__CLEARPAGEFLAG_NOOP(\([^,)]*\).*/__ClearPage\1/' \
 	--regex='/__CLEARPAGEFLAG_NOOP(\([^,)]*\).*/__ClearPage\1/' \
 	--regex='/TESTCLEARFLAG_FALSE(\([^,)]*\).*/TestClearPage\1/' \
 	--regex='/TESTCLEARFLAG_FALSE(\([^,)]*\).*/TestClearPage\1/' \
 	--regex='/__TESTCLEARFLAG_FALSE(\([^,)]*\).*/__TestClearPage\1/' \
 	--regex='/__TESTCLEARFLAG_FALSE(\([^,)]*\).*/__TestClearPage\1/' \
+	--regex='/TESTPCGFLAG\(([^,)]*).*/PageCgroup\1/'	\
+	--regex='/SETPCGFLAG\(([^,)]*).*/SetPageCgroup\1/'	\
+	--regex='/CLEARPCGFLAG\(([^,)]*).*/ClearPageCgroup\1/'	\
+	--regex='/TESTCLEARPCGFLAG\(([^,)]*).*/TestClearPageCgroup\1/' \
 	--regex='/_PE(\([^,)]*\).*/PEVENT_ERRNO__\1/'		\
 	--regex='/_PE(\([^,)]*\).*/PEVENT_ERRNO__\1/'		\
 	--regex='/PCI_OP_READ(\([a-z]*[a-z]\).*[1-4])/pci_bus_read_config_\1/' \
 	--regex='/PCI_OP_READ(\([a-z]*[a-z]\).*[1-4])/pci_bus_read_config_\1/' \
-	--regex='/PCI_OP_WRITE(\([a-z]*[a-z]\).*[1-4])/pci_bus_write_config_\1/'
+	--regex='/PCI_OP_WRITE(\([a-z]*[a-z]\).*[1-4])/pci_bus_write_config_\1/'\
+	--regex='/DEFINE_HASHTABLE\((\w*)/\1/v/'
 
 
 	all_kconfigs | xargs $1 -a                              \
 	all_kconfigs | xargs $1 -a                              \
 	--regex='/^[ \t]*\(\(menu\)*config\)[ \t]+\([a-zA-Z0-9_]+\)/\3/'
 	--regex='/^[ \t]*\(\(menu\)*config\)[ \t]+\([a-zA-Z0-9_]+\)/\3/'
@@ -266,7 +281,7 @@ xtags()
 		emacs $1
 		emacs $1
 	else
 	else
 		all_target_sources | xargs $1 -a
 		all_target_sources | xargs $1 -a
-        fi
+	fi
 }
 }
 
 
 # Support um (which uses SUBARCH)
 # Support um (which uses SUBARCH)