OSDN Git Service

Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 13 Jun 2014 04:29:20 +0000 (21:29 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 13 Jun 2014 04:29:20 +0000 (21:29 -0700)
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

50 files changed:
.gitignore
Documentation/kbuild/modules.txt
scripts/Makefile.asm-generic
scripts/Makefile.host
scripts/basic/fixdep.c
scripts/checkstack.pl
scripts/coccinelle/misc/of_table.cocci [new file with mode: 0644]
scripts/coccinelle/misc/returnvar.cocci [new file with mode: 0644]
scripts/config
scripts/docproc.c
scripts/dtc/.gitignore
scripts/dtc/fstree.c
scripts/dtc/libfdt/fdt_empty_tree.c
scripts/dtc/treesource.c
scripts/headers.sh
scripts/kallsyms.c
scripts/kconfig/Makefile
scripts/kconfig/check.sh
scripts/kconfig/conf.c
scripts/kconfig/gconf.c
scripts/kconfig/lxdialog/checklist.c
scripts/kconfig/lxdialog/inputbox.c
scripts/kconfig/lxdialog/menubox.c
scripts/kconfig/lxdialog/util.c
scripts/kconfig/mconf.c
scripts/kconfig/menu.c
scripts/kconfig/nconf.c
scripts/kconfig/util.c
scripts/kconfig/zconf.l
scripts/kconfig/zconf.lex.c_shipped
scripts/kconfig/zconf.tab.c_shipped
scripts/kconfig/zconf.y
scripts/markup_oops.pl
scripts/mksysmap
scripts/mod/.gitignore
scripts/mod/file2alias.c
scripts/mod/mk_elfconfig.c
scripts/mod/modpost.c
scripts/mod/sumversion.c
scripts/objdiff
scripts/package/Makefile
scripts/package/builddeb
scripts/package/buildtar
scripts/pnmtologo.c
scripts/recordmcount.c
scripts/rt-tester/check-all.sh
scripts/rt-tester/rt-tester.py
scripts/selinux/install_policy.sh
scripts/show_delta
scripts/tags.sh

index 42fa0d5..f4c0b09 100644 (file)
@@ -22,7 +22,6 @@
 *.lst
 *.symtypes
 *.order
-modules.builtin
 *.elf
 *.bin
 *.gz
@@ -33,6 +32,8 @@ modules.builtin
 *.lzo
 *.patch
 *.gcno
+modules.builtin
+Module.symvers
 
 #
 # Top-level generic files
@@ -44,7 +45,6 @@ modules.builtin
 /vmlinuz
 /System.map
 /Module.markers
-/Module.symvers
 
 #
 # Debian directory (make deb-pkg)
index 69372fb..3fb39e0 100644 (file)
@@ -470,7 +470,7 @@ build.
 
        Sometimes, an external module uses exported symbols from
        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.
 
        NOTE: The method with a top-level kbuild file is recommended
index d17e0ea..045e009 100644 (file)
@@ -21,4 +21,3 @@ all: $(patsubst %, $(obj)/%, $(generic-y))
 
 $(obj)/%.h:
        $(call cmd,wrap)
-
index 0f0d6ba..6689364 100644 (file)
@@ -167,4 +167,3 @@ $(host-cshlib): $(obj)/%: $(host-cshobjs) FORCE
 
 targets += $(host-csingle)  $(host-cmulti) $(host-cobjs)\
           $(host-cxxmulti) $(host-cxxobjs) $(host-cshlib) $(host-cshobjs)
-
index 078fe1d..b304068 100644 (file)
@@ -409,10 +409,10 @@ static void print_deps(void)
                exit(2);
        }
        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) {
                fprintf(stderr,"fixdep: %s is empty\n",depfile);
                close(fd);
index 544aa56..c05d586 100755 (executable)
@@ -173,4 +173,3 @@ while (my $line = <STDIN>) {
 
 # Sort output by size (last field)
 print sort { ($b =~ /:\t*(\d+)$/)[0] <=> ($a =~ /:\t*(\d+)$/)[0] } @stack;
-
diff --git a/scripts/coccinelle/misc/of_table.cocci b/scripts/coccinelle/misc/of_table.cocci
new file mode 100644 (file)
index 0000000..3c93404
--- /dev/null
@@ -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)
diff --git a/scripts/coccinelle/misc/returnvar.cocci b/scripts/coccinelle/misc/returnvar.cocci
new file mode 100644 (file)
index 0000000..605955a
--- /dev/null
@@ -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)
index 6804179..026aeb4 100755 (executable)
@@ -223,4 +223,3 @@ while [ "$1" != "" ] ; do
                ;;
        esac
 done
-
index 2b69eaf..e267e62 100644 (file)
@@ -154,7 +154,7 @@ int symfilecnt = 0;
 static void add_new_symbol(struct symfile *sym, char * symname)
 {
        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);
 }
 
@@ -215,7 +215,7 @@ static void find_export_symbols(char * filename)
                        char *p;
                        char *e;
                        if (((p = strstr(line, "EXPORT_SYMBOL_GPL")) != NULL) ||
-                            ((p = strstr(line, "EXPORT_SYMBOL")) != NULL)) {
+                           ((p = strstr(line, "EXPORT_SYMBOL")) != NULL)) {
                                /* Skip EXPORT_SYMBOL{_GPL} */
                                while (isalnum(*p) || *p == '_')
                                        p++;
@@ -291,28 +291,28 @@ static void extfunc(char * filename) { docfunctions(filename, FUNCTION);   }
 static void singfunc(char * filename, char * line)
 {
        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++] = DOCBOOK;
        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++) {
-               if (strcmp(vec[i], FUNCTION))
-                       continue;
+               if (strcmp(vec[i], FUNCTION))
+                       continue;
                consume_symbol(vec[i + 1]);
        }
        vec[idx++] = filename;
@@ -460,14 +460,14 @@ static void parse_file(FILE *infile)
                                        break;
                                case 'D':
                                        while (*s && !isspace(*s)) s++;
-                                        *s = '\0';
-                                        symbolsonly(line+2);
-                                        break;
+                                       *s = '\0';
+                                       symbolsonly(line+2);
+                                       break;
                                case 'F':
                                        /* filename */
                                        while (*s && !isspace(*s)) s++;
                                        *s++ = '\0';
-                                        /* function names */
+                                       /* function names */
                                        while (isspace(*s))
                                                s++;
                                        singlefunctions(line +2, s);
@@ -515,11 +515,11 @@ int main(int argc, char *argv[])
        }
        /* Open file, exit on error */
        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) {
                /* Need to do this in two passes.
index 095acb4..cdabdc9 100644 (file)
@@ -2,4 +2,3 @@ dtc
 dtc-lexer.lex.c
 dtc-parser.tab.c
 dtc-parser.tab.h
-
index f377453..e464727 100644 (file)
@@ -88,4 +88,3 @@ struct boot_info *dt_from_fs(const char *dirname)
 
        return build_boot_info(NULL, tree, guess_boot_cpuid(tree));
 }
-
index f72d13b..f2ae9b7 100644 (file)
@@ -81,4 +81,3 @@ int fdt_create_empty_tree(void *buf, int bufsize)
 
        return fdt_open_into(buf, buf, bufsize);
 }
-
index 33eeba5..5740e69 100644 (file)
@@ -281,4 +281,3 @@ void dt_to_source(FILE *f, struct boot_info *bi)
 
        write_tree_source_node(f, bi->dt, 0);
 }
-
index 978b42b..95ece06 100755 (executable)
@@ -28,5 +28,3 @@ for arch in ${archs}; do
                ;;
        esac
 done
-
-
index 1237dd7..dc7aa45 100644 (file)
@@ -123,7 +123,7 @@ static int read_symbol(FILE *in, struct sym_entry *s)
        }
        if (strlen(str) > KSYM_NAME_LEN) {
                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);
                return -1;
        }
index 573ff3f..9c4d241 100644 (file)
@@ -319,4 +319,3 @@ $(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck
 $(obj)/gconf.glade.h: $(obj)/gconf.glade
        $(Q)intltool-extract --type=gettext/glade --srcdir=$(srctree) \
        $(obj)/gconf.glade
-
index 854d9c7..55b79ba 100755 (executable)
@@ -11,4 +11,3 @@ EOF
 if [ ! "$?" -eq "0"  ]; then
        echo -DKBUILD_NO_NLS;
 fi
-
index d19944f..fef75fc 100644 (file)
@@ -696,7 +696,7 @@ int main(int ac, char **av)
        } else if (input_mode == savedefconfig) {
                if (conf_write_defconfig(defconfig_file)) {
                        fprintf(stderr, _("n*** Error while saving defconfig to: %s\n\n"),
-                               defconfig_file);
+                               defconfig_file);
                        return 1;
                }
        } else if (input_mode != listnewconfig) {
index f2bee70..d0a35b2 100644 (file)
@@ -1404,7 +1404,7 @@ static void display_tree(struct menu *menu)
                    && (tree == tree2))
                        continue;
 /*
-                if (((menu != &rootmenu) && !(menu->flags & MENU_ROOT))
+               if (((menu != &rootmenu) && !(menu->flags & MENU_ROOT))
                    || (view_mode == FULL_VIEW)
                    || (view_mode == SPLIT_VIEW))*/
 
index 3b15c08..8d016fa 100644 (file)
@@ -168,13 +168,13 @@ do_resize:
 
        /* create new window for the list */
        list = subwin(dialog, list_height, list_width, y + box_y + 1,
-                     x + box_x + 1);
+                     x + box_x + 1);
 
        keypad(list, TRUE);
 
        /* draw a box around the list items */
        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 */
        check_x = 0;
index 447a582..d58de1d 100644 (file)
@@ -42,7 +42,7 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected)
  * Display a dialog box for inputing a string
  */
 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 input_x = 0, key = 0, button = -1;
index c93de0b..11ae9ad 100644 (file)
@@ -64,7 +64,7 @@ static int menu_width, item_x;
  * Print menu item
  */
 static void do_print_item(WINDOW * win, const char *item, int line_y,
-                          int selected, int hotkey)
+                         int selected, int hotkey)
 {
        int j;
        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
  */
 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 height, width, menu_height;
index 58a8289..f7abdeb 100644 (file)
@@ -623,7 +623,7 @@ void item_make(const char *fmt, ...)
 void item_add_str(const char *fmt, ...)
 {
        va_list ap;
-        size_t avail;
+       size_t avail;
 
        avail = sizeof(item_cur->node.str) - strlen(item_cur->node.str);
 
index 59184bb..14cea74 100644 (file)
@@ -299,7 +299,7 @@ static void set_config_filename(const char *config_filename)
        int size;
 
        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))
                menu_backtitle[sizeof(menu_backtitle)-1] = '\0';
        set_dialog_backtitle(menu_backtitle);
@@ -1034,4 +1034,3 @@ int main(int ac, char **av)
 
        return res;
 }
-
index 3ac2c9c..a26cc5d 100644 (file)
@@ -258,8 +258,8 @@ static void sym_check_prop(struct symbol *sym)
                                    "config symbol '%s' uses select, but is "
                                    "not boolean or tristate", sym->name);
                        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,
                                    "'%s' has wrong type. 'select' only "
                                    "accept arguments of boolean and "
@@ -268,7 +268,7 @@ static void sym_check_prop(struct symbol *sym)
                case P_RANGE:
                        if (sym->type != S_INT && sym->type != S_HEX)
                                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) ||
                            !menu_validate_number(sym, prop->expr->right.sym))
                                prop_warn(prop, "range is invalid");
index 4fbecd2..984489e 100644 (file)
@@ -1554,4 +1554,3 @@ int main(int ac, char **av)
        endwin();
        return 0;
 }
-
index 6e7fbf1..94f9c83 100644 (file)
@@ -155,5 +155,3 @@ void *xcalloc(size_t nmemb, size_t size)
        fprintf(stderr, "Out of memory.\n");
        exit(1);
 }
-
-
index 1a9f53e..6c62d93 100644 (file)
@@ -27,8 +27,8 @@ static char *text;
 static int text_size, text_asize;
 
 struct buffer {
-        struct buffer *parent;
-        YY_BUFFER_STATE state;
+       struct buffer *parent;
+       YY_BUFFER_STATE state;
 };
 
 struct buffer *current_buf;
index a0521aa..349a7f2 100644 (file)
@@ -789,8 +789,8 @@ static char *text;
 static int text_size, text_asize;
 
 struct buffer {
-        struct buffer *parent;
-        YY_BUFFER_STATE state;
+       struct buffer *parent;
+       YY_BUFFER_STATE state;
 };
 
 struct buffer *current_buf;
index 25ae16a..de5e84e 100644 (file)
@@ -2314,7 +2314,7 @@ void conf_parse(const char *name)
        for_all_symbols(i, sym) {
                if (sym_check_deps(sym))
                        zconfnerrs++;
-        }
+       }
        if (zconfnerrs)
                exit(1);
        sym_set_change_count(1);
index 0653886..0f683cf 100644 (file)
@@ -510,7 +510,7 @@ void conf_parse(const char *name)
        for_all_symbols(i, sym) {
                if (sym_check_deps(sym))
                        zconfnerrs++;
-        }
+       }
        if (zconfnerrs)
                exit(1);
        sym_set_change_count(1);
index 827896f..c21d163 100644 (file)
@@ -367,4 +367,3 @@ OPTION:
 EOT
        exit;
 }
-
index c1b6191..7ada35a 100644 (file)
@@ -42,4 +42,3 @@
 # (At least sparc64 has __crc_ in the middle).
 
 $NM -n $1 | grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' > $2
-
index 33bae0d..3bd11b6 100644 (file)
@@ -2,4 +2,3 @@ elfconfig.h
 mk_elfconfig
 modpost
 devicetable-offsets.h
-
index 1924990..e614ef6 100644 (file)
@@ -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)
 {
-    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);
 
index 639bca7..a4fd71d 100644 (file)
@@ -54,4 +54,3 @@ main(int argc, char **argv)
 
        return 0;
 }
-
index 026543b..9d9c5b9 100644 (file)
@@ -862,7 +862,7 @@ static const char *section_white_list[] =
  * without "ax" / "aw".
  */
 static void check_section(const char *modname, struct elf_info *elf,
-                          Elf_Shdr *sechdr)
+                         Elf_Shdr *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,
                                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 *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,
-                                   Elf_Rela *r, Elf_Sym *sym, const char *fromsec)
+                                  Elf_Rela *r, Elf_Sym *sym, const char *fromsec)
 {
        const char *tosec;
        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:
                /* From ARM ABI: (S + A) | T */
                r->r_addend = (int)(long)
-                             (elf->symtab_start + ELF_R_SYM(r->r_info));
+                             (elf->symtab_start + ELF_R_SYM(r->r_info));
                break;
        case R_ARM_PC24:
        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:
                /* From ARM ABI: ((S + A) | T) - P */
                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;
        default:
                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,
-                         Elf_Shdr *sechdr)
+                        Elf_Shdr *sechdr)
 {
        Elf_Sym  *sym;
        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,
-                        Elf_Shdr *sechdr)
+                       Elf_Shdr *sechdr)
 {
        Elf_Sym *sym;
        Elf_Rel *rel;
@@ -1685,7 +1685,7 @@ static void section_rel(const char *modname, struct elf_info *elf,
  * be discarded and warns about it.
  **/
 static void check_sec_ref(struct module *mod, const char *modname,
-                          struct elf_info *elf)
+                         struct elf_info *elf)
 {
        int i;
        Elf_Shdr *sechdrs = elf->sechdrs;
@@ -1945,7 +1945,7 @@ static int add_versions(struct buffer *b, struct module *mod)
                                             s->name, mod->name);
                                } else {
                                        merror("\"%s\" [%s.ko] undefined!\n",
-                                                 s->name, mod->name);
+                                              s->name, mod->name);
                                        err = 1;
                                }
                        }
index deb2994..944418d 100644 (file)
@@ -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[15] = mctx->byte_count >> 29;
        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);
        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;
                /* Terminate line at first space, to get rid of final ' \' */
                while (*p) {
-                       if (isspace(*p)) {
+                       if (isspace(*p)) {
                                *p = '\0';
                                break;
                        }
index b3e4f10..62e51da 100755 (executable)
 #
 # 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
 fi
 
+TMPD=$SRCTREE/.tmp_objdiff
+
 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
 }
 
+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() {
        [ $# -eq 0 ] && usage
 
@@ -52,20 +74,16 @@ dorecord() {
        CMT="`git rev-parse --short HEAD`"
 
        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
 }
 
@@ -90,12 +108,12 @@ dodiff() {
        DSTD="$TMPD/$DST"
 
        if [ ! -d "$SRCD" ]; then
-               echo "ERROR: $SRCD doesn't exist"
+               echo >&2 "ERROR: $SRCD doesn't exist"
                exit 1
        fi
 
        if [ ! -d "$DSTD" ]; then
-               echo "ERROR: $DSTD doesn't exist"
+               echo >&2 "ERROR: $DSTD doesn't exist"
                exit 1
        fi
 
@@ -114,7 +132,7 @@ doclean() {
                if [ -d "$TMPD/$CMT" ]; then
                        rm -rf $TMPD/$CMT
                else
-                       echo "$CMT not found"
+                       echo >&2 "$CMT not found"
                fi
        fi
 }
@@ -135,7 +153,7 @@ case "$1" in
                doclean $*
                ;;
        *)
-               echo "Unrecognized command '$1'"
+               echo >&2 "Unrecognized command '$1'"
                exit 1
                ;;
 esac
index c5d4733..99ca6e7 100644 (file)
@@ -143,4 +143,3 @@ help: FORCE
        @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-tarxz-src-pkg  - Build $(perf-tar).tar.xz source tarball'
-
index b151b63..b5f08f7 100644 (file)
@@ -35,13 +35,15 @@ create_package() {
        sparc*)
                debarch=sparc ;;
        s390*)
-               debarch=s390 ;;
+               debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;;
        ppc*)
                debarch=powerpc ;;
        parisc*)
                debarch=hppa ;;
        mips*)
                debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el || true) ;;
+       arm64)
+               debarch=arm64 ;;
        arm*)
                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
                                mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module)
                                # 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
-                               objcopy --strip-debug $module
+                               $OBJCOPY --strip-debug $module
                                # 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
                )
        fi
index aa22f94..995c1ea 100644 (file)
@@ -136,4 +136,3 @@ esac
 echo "Tarball successfully created in ${tarball}${file_ext}"
 
 exit 0
-
index 68bb4ef..4718d78 100644 (file)
@@ -512,4 +512,3 @@ int main(int argc, char *argv[])
     }
     exit(0);
 }
-
index e11aa4a..650ecc8 100644 (file)
@@ -487,5 +487,3 @@ main(int argc, char *argv[])
        }
        return !!n_error;
 }
-
-
index 43098af..6b5c83b 100644 (file)
@@ -19,4 +19,3 @@ testit t3-l2-pi.tst
 testit t4-l2-pi-deboost.tst
 testit t5-l4-pi-boost-deboost.tst
 testit t5-l4-pi-boost-deboost-setsched.tst
-
index 34186ca..6d916c2 100644 (file)
@@ -216,5 +216,3 @@ while 1:
 # Normal exit pass
 print "Pass"
 sys.exit(0)
-
-
index 7b9ccf6..f6a0ce7 100644 (file)
@@ -66,4 +66,3 @@ if [ "eq$dodev" != "eq" ]; then
        $SF file_contexts /dev
        mount --move /mnt /dev
 fi
-
index e25732b..5b36500 100755 (executable)
@@ -126,4 +126,3 @@ def main():
                print (convert_line(line, base_time),)
 
 main()
-
index f2c5b00..e6b011f 100755 (executable)
@@ -25,6 +25,9 @@ else
        tree=${srctree}/
 fi
 
+# ignore userspace tools
+ignore="$ignore ( -path ${tree}tools ) -prune -o"
+
 # Find all available archs
 find_all_archs()
 {
@@ -47,7 +50,8 @@ find_arch_sources()
        for i in $archincludedir; do
                prune="$prune -wholename $i -prune -o"
        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
@@ -57,14 +61,15 @@ find_arch_include_sources()
                                        -name include -type d -print);
        if [ -n "$include" ]; then
                archincludedir="$archincludedir $include"
-               find $include $ignore -name "$2" -print;
+               find $include $ignore -name "$2" -not -type l -print;
        fi
 }
 
 # find sources in include/
 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
@@ -73,7 +78,7 @@ find_other_sources()
 {
        find ${tree}* $ignore \
             \( -name include -o -name arch -o -name '.tmp_*' \) -prune -o \
-              -name "$1" -print;
+              -name "$1" -not -type l -print;
 }
 
 find_sources()
@@ -187,6 +192,10 @@ exuberant()
        --regex-c++='/TESTCLEARFLAG_FALSE\(([^,)]*).*/TestClearPage\1/' \
        --regex-c++='/__TESTCLEARFLAG_FALSE\(([^,)]*).*/__TestClearPage\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_WRITE\((\w*).*[1-4]\)/pci_bus_write_config_\1/' \
        --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='/DEFINE_PCI_DEVICE_TABLE\((\w*)/\1/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                              \
        --langdef=kconfig --language-force=kconfig              \
@@ -244,9 +254,14 @@ emacs()
        --regex='/__CLEARPAGEFLAG_NOOP(\([^,)]*\).*/__ClearPage\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='/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                              \
        --regex='/^[ \t]*\(\(menu\)*config\)[ \t]+\([a-zA-Z0-9_]+\)/\3/'
@@ -266,7 +281,7 @@ xtags()
                emacs $1
        else
                all_target_sources | xargs $1 -a
-        fi
+       fi
 }
 
 # Support um (which uses SUBARCH)