Commit c1fdb2d3 authored by Linus Torvalds's avatar Linus Torvalds

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
parents 1700ff82 7fa0e6db
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
*.lst *.lst
*.symtypes *.symtypes
*.order *.order
modules.builtin
*.elf *.elf
*.bin *.bin
*.gz *.gz
...@@ -33,6 +32,8 @@ modules.builtin ...@@ -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 ...@@ -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)
......
...@@ -470,7 +470,7 @@ build. ...@@ -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
......
...@@ -21,4 +21,3 @@ all: $(patsubst %, $(obj)/%, $(generic-y)) ...@@ -21,4 +21,3 @@ all: $(patsubst %, $(obj)/%, $(generic-y))
$(obj)/%.h: $(obj)/%.h:
$(call cmd,wrap) $(call cmd,wrap)
...@@ -167,4 +167,3 @@ $(host-cshlib): $(obj)/%: $(host-cshobjs) FORCE ...@@ -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)
...@@ -409,10 +409,10 @@ static void print_deps(void) ...@@ -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: "); fprintf(stderr, "fixdep: error fstat'ing depfile: ");
perror(depfile); perror(depfile);
exit(2); 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);
......
...@@ -173,4 +173,3 @@ while (my $line = <STDIN>) { ...@@ -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;
/// 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)
///
/// 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)
...@@ -223,4 +223,3 @@ while [ "$1" != "" ] ; do ...@@ -223,4 +223,3 @@ while [ "$1" != "" ] ; do
;; ;;
esac esac
done done
...@@ -154,7 +154,7 @@ int symfilecnt = 0; ...@@ -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) ...@@ -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); } ...@@ -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 i, idx = 0;
int startofsym = 1; 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 */ /* Split line up in individual parameters preceded by FUNCTION */
for (i=0; line[i]; i++) { for (i=0; line[i]; i++) {
if (isspace(line[i])) { if (isspace(line[i])) {
line[i] = '\0'; line[i] = '\0';
startofsym = 1; startofsym = 1;
continue; continue;
} }
if (startofsym) { if (startofsym) {
startofsym = 0; startofsym = 0;
vec[idx++] = FUNCTION; vec[idx++] = FUNCTION;
vec[idx++] = &line[i]; vec[idx++] = &line[i];
} }
} }
for (i = 0; i < idx; i++) { for (i = 0; i < idx; i++) {
if (strcmp(vec[i], FUNCTION)) if (strcmp(vec[i], FUNCTION))
continue; 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) ...@@ -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'; *s = '\0';
symbolsonly(line+2); symbolsonly(line+2);
break; 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[]) ...@@ -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) { if (infile == NULL) {
fprintf(stderr, "docproc: "); fprintf(stderr, "docproc: ");
perror(argv[2]); perror(argv[2]);
exit(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.
......
...@@ -2,4 +2,3 @@ dtc ...@@ -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
...@@ -88,4 +88,3 @@ struct boot_info *dt_from_fs(const char *dirname) ...@@ -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));
} }
...@@ -81,4 +81,3 @@ int fdt_create_empty_tree(void *buf, int bufsize) ...@@ -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);
} }
...@@ -281,4 +281,3 @@ void dt_to_source(FILE *f, struct boot_info *bi) ...@@ -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);
} }
...@@ -28,5 +28,3 @@ for arch in ${archs}; do ...@@ -28,5 +28,3 @@ for arch in ${archs}; do
;; ;;
esac esac
done done
...@@ -123,7 +123,7 @@ static int read_symbol(FILE *in, struct sym_entry *s) ...@@ -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;
} }
......
...@@ -319,4 +319,3 @@ $(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck ...@@ -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
...@@ -11,4 +11,3 @@ EOF ...@@ -11,4 +11,3 @@ EOF
if [ ! "$?" -eq "0" ]; then if [ ! "$?" -eq "0" ]; then
echo -DKBUILD_NO_NLS; echo -DKBUILD_NO_NLS;
fi fi
...@@ -696,7 +696,7 @@ int main(int ac, char **av) ...@@ -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) {
......
...@@ -1404,7 +1404,7 @@ static void display_tree(struct menu *menu) ...@@ -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))*/
......
...@@ -168,13 +168,13 @@ int dialog_checklist(const char *title, const char *prompt, int height, ...@@ -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;
......
...@@ -42,7 +42,7 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected) ...@@ -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;
......
...@@ -64,7 +64,7 @@ static int menu_width, item_x; ...@@ -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) ...@@ -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;
......
...@@ -623,7 +623,7 @@ void item_make(const char *fmt, ...) ...@@ -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);
......
...@@ -299,7 +299,7 @@ static void set_config_filename(const char *config_filename) ...@@ -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) ...@@ -1034,4 +1034,3 @@ int main(int ac, char **av)
return res; return res;
} }
...@@ -258,8 +258,8 @@ static void sym_check_prop(struct symbol *sym) ...@@ -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_BOOLEAN &&
sym2->type != S_TRISTATE) 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) ...@@ -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");
......
...@@ -1554,4 +1554,3 @@ int main(int ac, char **av) ...@@ -1554,4 +1554,3 @@ int main(int ac, char **av)
endwin(); endwin();
return 0; return 0;
} }
...@@ -155,5 +155,3 @@ void *xcalloc(size_t nmemb, size_t size) ...@@ -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);
} }
...@@ -27,8 +27,8 @@ static char *text; ...@@ -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; struct buffer *parent;
YY_BUFFER_STATE state; YY_BUFFER_STATE state;
}; };
struct buffer *current_buf; struct buffer *current_buf;
......
...@@ -789,8 +789,8 @@ static char *text; ...@@ -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; struct buffer *parent;
YY_BUFFER_STATE state; YY_BUFFER_STATE state;
}; };
struct buffer *current_buf; struct buffer *current_buf;
......
...@@ -2314,7 +2314,7 @@ void conf_parse(const char *name) ...@@ -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);
......
...@@ -510,7 +510,7 @@ void conf_parse(const char *name) ...@@ -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);
......
...@@ -367,4 +367,3 @@ OPTION: ...@@ -367,4 +367,3 @@ OPTION:
EOT EOT
exit; exit;
} }
...@@ -42,4 +42,3 @@ ...@@ -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
...@@ -2,4 +2,3 @@ elfconfig.h ...@@ -2,4 +2,3 @@ elfconfig.h
mk_elfconfig mk_elfconfig
modpost modpost
devicetable-offsets.h devicetable-offsets.h
...@@ -644,28 +644,26 @@ ADD_TO_DEVTABLE("pcmcia", pcmcia_device_id, do_pcmcia_entry); ...@@ -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; int len;
char *tmp; char *tmp;
DEF_FIELD_ADDR(symval, of_device_id, name); DEF_FIELD_ADDR(symval, of_device_id, name);
DEF_FIELD_ADDR(symval, of_device_id, type); DEF_FIELD_ADDR(symval, of_device_id, type);
DEF_FIELD_ADDR(symval, of_device_id, compatible); DEF_FIELD_ADDR(symval, of_device_id, compatible);
len = sprintf (alias, "of:N%sT%s", len = sprintf(alias, "of:N%sT%s", (*name)[0] ? *name : "*",
(*name)[0] ? *name : "*", (*type)[0] ? *type : "*");
(*type)[0] ? *type : "*");
if (compatible[0])
if (compatible[0]) sprintf(&alias[len], "%sC%s", (*type)[0] ? "*" : "",
sprintf (&alias[len], "%sC%s", *compatible);
(*type)[0] ? "*" : "",
*compatible); /* Replace all whitespace with underscores */
for (tmp = alias; tmp && *tmp; tmp++)
/* Replace all whitespace with underscores */ if (isspace (*tmp))
for (tmp = alias; tmp && *tmp; tmp++) *tmp = '_';
if (isspace (*tmp))
*tmp = '_'; add_wildcard(alias);
return 1;
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);
......
...@@ -54,4 +54,3 @@ main(int argc, char **argv) ...@@ -54,4 +54,3 @@ main(int argc, char **argv)
return 0; return 0;
} }
...@@ -862,7 +862,7 @@ static const char *section_white_list[] = ...@@ -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]) ...@@ -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, const char *fromsec,
unsigned long long fromaddr, unsigned long long fromaddr,
const char *fromsym, const char *fromsym,
int from_is_func, int from_is_func,
const char *tosec, const char *tosym, const char *tosec, const char *tosym,
int to_is_func) 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, ...@@ -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) ...@@ -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) ...@@ -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 + sechdr->sh_offset +
(r->r_offset - sechdr->sh_addr)); (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) ...@@ -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, ...@@ -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, ...@@ -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) ...@@ -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;
} }
} }
......
...@@ -214,7 +214,7 @@ static void md4_final_ascii(struct md4_ctx *mctx, char *out, unsigned int len) ...@@ -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) ...@@ -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;
} }
......
...@@ -25,25 +25,47 @@ ...@@ -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 if [ -z "$SRCTREE" ]; then
TMPD="${GIT_DIR%git}tmp_objdiff" echo >&2 "ERROR: Not a git repository."
[ -d "$TMPD" ] || mkdir "$TMPD"
else
echo "ERROR: git directory not found."
exit 1 exit 1
fi fi
TMPD=$SRCTREE/.tmp_objdiff
usage() { usage() {
echo "Usage: $0 <command> <args>" echo >&2 "Usage: $0 <command> <args>"
echo " record <list of object files>" echo >&2 " record <list of object files or directories>"
echo " diff <commitA> <commitB>" echo >&2 " diff <commitA> <commitB>"
echo " clean all | <commit>" 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() { ...@@ -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 for d in $FILES; do
dn="${f%/*}" if [ -d "$d" ]; then
bn="${f##*/}" for f in $(find $d -name '*.o')
do
[ ! -d "$OBJDIFFD/$dn" ] && mkdir -p "$OBJDIFFD/$dn" do_objdump $f
done
# remove addresses for a more clear diff else
# http://dummdida.tumblr.com/post/60924060451/binary-diff-between-libc-from-scientificlinux-and do_objdump $d
$OBJDUMP -D "$f" | sed "s/^[[:space:]]\+[0-9a-f]\+//" \ fi
>"$OBJDIFFD/$dn/$bn"
done done
} }
...@@ -90,12 +108,12 @@ dodiff() { ...@@ -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() { ...@@ -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 ...@@ -135,7 +153,7 @@ case "$1" in
doclean $* doclean $*
;; ;;
*) *)
echo "Unrecognized command '$1'" echo >&2 "Unrecognized command '$1'"
exit 1 exit 1
;; ;;
esac esac
...@@ -143,4 +143,3 @@ help: FORCE ...@@ -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'
...@@ -35,13 +35,15 @@ create_package() { ...@@ -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 ...@@ -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
......
...@@ -136,4 +136,3 @@ esac ...@@ -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
...@@ -512,4 +512,3 @@ int main(int argc, char *argv[]) ...@@ -512,4 +512,3 @@ int main(int argc, char *argv[])
} }
exit(0); exit(0);
} }
...@@ -487,5 +487,3 @@ main(int argc, char *argv[]) ...@@ -487,5 +487,3 @@ main(int argc, char *argv[])
} }
return !!n_error; return !!n_error;
} }
...@@ -19,4 +19,3 @@ testit t3-l2-pi.tst ...@@ -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
...@@ -216,5 +216,3 @@ while 1: ...@@ -216,5 +216,3 @@ while 1:
# Normal exit pass # Normal exit pass
print "Pass" print "Pass"
sys.exit(0) sys.exit(0)
...@@ -66,4 +66,3 @@ if [ "eq$dodev" != "eq" ]; then ...@@ -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
...@@ -126,4 +126,3 @@ def main(): ...@@ -126,4 +126,3 @@ def main():
print (convert_line(line, base_time),) print (convert_line(line, base_time),)
main() main()
...@@ -25,6 +25,9 @@ else ...@@ -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() ...@@ -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() ...@@ -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() ...@@ -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() ...@@ -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() ...@@ -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() ...@@ -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() ...@@ -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)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment